diff --git a/cps/admin.py b/cps/admin.py index 1d4b5a84..633ee0f2 100644 --- a/cps/admin.py +++ b/cps/admin.py @@ -31,13 +31,13 @@ from datetime import datetime, timedelta from babel import Locale as LC from babel.dates import format_datetime -from flask import Blueprint, flash, redirect, url_for, abort, request, make_response, send_from_directory, g +from flask import Blueprint, flash, redirect, url_for, abort, request, make_response, send_from_directory, g, Response from flask_login import login_required, current_user, logout_user, confirm_login from flask_babel import gettext as _ from sqlalchemy import and_ from sqlalchemy.orm.attributes import flag_modified from sqlalchemy.exc import IntegrityError, OperationalError, InvalidRequestError -from sqlalchemy.sql.expression import func, or_ +from sqlalchemy.sql.expression import func, or_, text from . import constants, logger, helper, services from .cli import filepicker @@ -46,7 +46,7 @@ from .helper import check_valid_domain, send_test_mail, reset_password, generate valid_email, check_username from .gdriveutils import is_gdrive_ready, gdrive_support from .render_template import render_title_template, get_sidebar_config -from . import debug_info +from . import debug_info, _BABEL_TRANSLATIONS try: from functools import wraps @@ -224,11 +224,23 @@ def edit_user_table(): languages = calibre_db.speaking_language() translations = babel.list_translations() + [LC('en')] allUser = ub.session.query(ub.User) + tags = calibre_db.session.query(db.Tags)\ + .join(db.books_tags_link)\ + .join(db.Books)\ + .filter(calibre_db.common_filters()) \ + .group_by(text('books_tags_link.tag'))\ + .order_by(db.Tags.name).all() + if config.config_restricted_column: + custom_values = calibre_db.session.query(db.cc_classes[config.config_restricted_column]).all() + else: + custom_values = [] if not config.config_anonbrowse: allUser = allUser.filter(ub.User.role.op('&')(constants.ROLE_ANONYMOUS) != constants.ROLE_ANONYMOUS) return render_title_template("user_table.html", users=allUser.all(), + tags=tags, + custom_values=custom_values, translations=translations, languages=languages, visiblility=visibility, @@ -237,26 +249,41 @@ def edit_user_table(): title=_(u"Edit Users"), page="usertable") + @admi.route("/ajax/listusers") @login_required @admin_required def list_users(): - off = request.args.get("offset") or 0 - limit = request.args.get("limit") or 10 + off = int(request.args.get("offset") or 0) + limit = int(request.args.get("limit") or 10) search = request.args.get("search") + sort = request.args.get("sort", "id") + order = request.args.get("order", "").lower() + state = None + if sort == "state": + state = json.loads(request.args.get("state", "[]")) + + if sort != "state" and order: + order = text(sort + " " + order) + elif not state: + order = ub.User.id.asc() + all_user = ub.session.query(ub.User) if not config.config_anonbrowse: all_user = all_user.filter(ub.User.role.op('&')(constants.ROLE_ANONYMOUS) != constants.ROLE_ANONYMOUS) - total_count = all_user.count() + + total_count = filtered_count = all_user.count() + if search: - users = all_user.filter(or_(func.lower(ub.User.name).ilike("%" + search + "%"), + all_user = all_user.filter(or_(func.lower(ub.User.name).ilike("%" + search + "%"), func.lower(ub.User.kindle_mail).ilike("%" + search + "%"), - func.lower(ub.User.email).ilike("%" + search + "%")))\ - .offset(off).limit(limit).all() - filtered_count = len(users) + func.lower(ub.User.email).ilike("%" + search + "%"))) + if state: + users = calibre_db.get_checkbox_sorted(all_user.all(), state, off, limit, request.args.get("order", "").lower()) else: - users = all_user.offset(off).limit(limit).all() - filtered_count = total_count + users = all_user.order_by(order).offset(off).limit(limit).all() + if search: + filtered_count = len(users) for user in users: if user.default_language == "all": @@ -270,12 +297,38 @@ def list_users(): response.headers["Content-Type"] = "application/json; charset=utf-8" return response -@admi.route("/ajax/deleteuser") +@admi.route("/ajax/deleteuser", methods=['POST']) @login_required @admin_required def delete_user(): - # ToDo User delete check also not last one - return "" + user_ids = request.form.to_dict(flat=False) + users = None + if "userid[]" in user_ids: + users = ub.session.query(ub.User).filter(ub.User.id.in_(user_ids['userid[]'])).all() + elif "userid" in user_ids: + users = ub.session.query(ub.User).filter(ub.User.id == user_ids['userid'][0]).all() + count = 0 + errors = list() + success = list() + if not users: + log.error("User not found") + return Response(json.dumps({'type': "danger", 'message': _("User not found")}), mimetype='application/json') + for user in users: + try: + message = _delete_user(user) + count += 1 + except Exception as ex: + log.error(ex) + errors.append({'type': "danger", 'message': str(ex)}) + + if count == 1: + log.info("User {} deleted".format(user_ids)) + success = [{'type': "success", 'message': message}] + elif count > 1: + log.info("Users {} deleted".format(user_ids)) + success = [{'type': "success", 'message': _("{} users deleted successfully").format(count)}] + success.extend(errors) + return Response(json.dumps(success), mimetype='application/json') @admi.route("/ajax/getlocale") @login_required @@ -295,7 +348,7 @@ def table_get_locale(): def table_get_default_lang(): languages = calibre_db.speaking_language() ret = list() - ret.append({'value':'all','text':_('Show All')}) + ret.append({'value': 'all', 'text': _('Show All')}) for lang in languages: ret.append({'value': lang.lang_code, 'text': lang.name}) return json.dumps(ret) @@ -316,52 +369,89 @@ def edit_list_user(param): if "pk[]" in vals: users = all_user.filter(ub.User.id.in_(vals['pk[]'])).all() else: - return "" + return _("Malformed request"), 400 if 'field_index' in vals: vals['field_index'] = vals['field_index'][0] if 'value' in vals: vals['value'] = vals['value'][0] - else: - return "" + elif not ('value[]' in vals): + return _("Malformed request"), 400 for user in users: try: - vals['value'] = vals['value'].strip() - if param == 'name': - if user.name == "Guest": - raise Exception(_("Guest Name can't be changed")) - user.name = check_username(vals['value']) - elif param =='email': - user.email = check_email(vals['value']) - elif param == 'kindle_mail': - user.kindle_mail = valid_email(vals['value']) if vals['value'] else "" - elif param == 'role': - if vals['value'] == 'true': - user.role |= int(vals['field_index']) + if param in ['denied_tags', 'allowed_tags', 'allowed_column_value', 'denied_column_value']: + if 'value[]' in vals: + setattr(user, param, prepare_tags(user, vals['action'][0], param, vals['value[]'])) else: - if int(vals['field_index']) == constants.ROLE_ADMIN: - if not ub.session.query(ub.User).\ - filter(ub.User.role.op('&')(constants.ROLE_ADMIN) == constants.ROLE_ADMIN, - ub.User.id != user.id).count(): - return _(u"No admin user remaining, can't remove admin role", nick=user.name), 400 - user.role &= ~int(vals['field_index']) - elif param == 'sidebar_view': - if vals['value'] == 'true': - user.sidebar_view |= int(vals['field_index']) + setattr(user, param, vals['value'].strip()) + else: + vals['value'] = vals['value'].strip() + if param == 'name': + if user.name == "Guest": + raise Exception(_("Guest Name can't be changed")) + user.name = check_username(vals['value']) + elif param =='email': + user.email = check_email(vals['value']) + elif param == 'kindle_mail': + user.kindle_mail = valid_email(vals['value']) if vals['value'] else "" + elif param.endswith('role'): + value = int(vals['field_index']) + if user.name == "Guest" and value in \ + [constants.ROLE_ADMIN, constants.ROLE_PASSWD, constants.ROLE_EDIT_SHELFS]: + raise Exception(_("Guest can't have this role")) + # check for valid value, last on checks for power of 2 value + if value > 0 and value <= constants.ROLE_VIEWER and (value & value-1 == 0 or value == 1): + if vals['value'] == 'true': + user.role |= value + elif vals['value'] == 'false': + if value == constants.ROLE_ADMIN: + if not ub.session.query(ub.User).\ + filter(ub.User.role.op('&')(constants.ROLE_ADMIN) == constants.ROLE_ADMIN, + ub.User.id != user.id).count(): + return Response( + json.dumps([{'type': "danger", + 'message':_(u"No admin user remaining, can't remove admin role", + nick=user.name)}]), mimetype='application/json') + user.role &= ~value + else: + raise Exception(_("Value has to be true or false")) + else: + raise Exception(_("Invalid role")) + elif param.startswith('sidebar'): + value = int(vals['field_index']) + if user.name == "Guest" and value == constants.SIDEBAR_READ_AND_UNREAD: + raise Exception(_("Guest can't have this view")) + # check for valid value, last on checks for power of 2 value + if value > 0 and value <= constants.SIDEBAR_LIST and (value & value-1 == 0 or value == 1): + if vals['value'] == 'true': + user.sidebar_view |= value + elif vals['value'] == 'false': + user.sidebar_view &= ~value + else: + raise Exception(_("Value has to be true or false")) + else: + raise Exception(_("Invalid view")) + elif param == 'locale': + if user.name == "Guest": + raise Exception(_("Guest's Locale is determined automatically and can't be set")) + if vals['value'] in _BABEL_TRANSLATIONS: + user.locale = vals['value'] + else: + raise Exception(_("No Valid Locale Given")) + elif param == 'default_language': + languages = calibre_db.session.query(db.Languages) \ + .join(db.books_languages_link) \ + .join(db.Books) \ + .filter(calibre_db.common_filters()) \ + .group_by(text('books_languages_link.lang_code')).all() + lang_codes = [lang.lang_code for lang in languages] + ["all"] + if vals['value'] in lang_codes: + user.default_language = vals['value'] + else: + raise Exception(_("No Valid Book Language Given")) else: - user.sidebar_view &= ~int(vals['field_index']) - elif param == 'denied_tags': - user.denied_tags = vals['value'] - elif param == 'allowed_tags': - user.allowed_tags = vals['value'] - elif param == 'allowed_column_value': - user.allowed_column_value = vals['value'] - elif param == 'denied_column_value': - user.denied_column_value = vals['value'] - elif param == 'locale': - user.locale = vals['value'] - elif param == 'default_language': - user.default_language = vals['value'] + return _("Parameter not found"), 400 except Exception as ex: + log.debug_or_exception(ex) return str(ex), 400 ub.session_commit() return "" @@ -383,6 +473,21 @@ def update_table_settings(): return "Invalid request", 400 return "" +def check_valid_read_column(column): + if column != "0": + if not calibre_db.session.query(db.Custom_Columns).filter(db.Custom_Columns.id == column) \ + .filter(and_(db.Custom_Columns.datatype == 'bool', db.Custom_Columns.mark_for_delete == 0)).all(): + return False + return True + +def check_valid_restricted_column(column): + if column != "0": + if not calibre_db.session.query(db.Custom_Columns).filter(db.Custom_Columns.id == column) \ + .filter(and_(db.Custom_Columns.datatype == 'text', db.Custom_Columns.mark_for_delete == 0)).all(): + return False + return True + + @admi.route("/admin/viewconfig", methods=["POST"]) @login_required @@ -398,12 +503,23 @@ def update_view_configuration(): if _config_string("config_title_regex"): calibre_db.update_title_sort(config) + if not check_valid_read_column(to_save.get("config_read_column", "0")): + flash(_(u"Invalid Read Column"), category="error") + log.debug("Invalid Read column") + return view_configuration() _config_int("config_read_column") + + if not check_valid_restricted_column(to_save.get("config_restricted_column", "0")): + flash(_(u"Invalid Restricted Column"), category="error") + log.debug("Invalid Restricted Column") + return view_configuration() + _config_int("config_restricted_column") + _config_int("config_theme") _config_int("config_random_books") _config_int("config_books_per_page") _config_int("config_authors_max") - _config_int("config_restricted_column") + config.config_default_role = constants.selected_roles(to_save) config.config_default_role &= ~constants.ROLE_ANONYMOUS @@ -414,6 +530,7 @@ def update_view_configuration(): config.save() flash(_(u"Calibre-Web configuration updated"), category="success") + log.debug("Calibre-Web configuration updated") before_request() return view_configuration() @@ -437,6 +554,8 @@ def load_dialogtexts(element_id): texts["main"] = _('Are you sure you want to change visible book languages for selected user(s)?') elif element_id == "role": texts["main"] = _('Are you sure you want to change the selected role for the selected user(s)?') + elif element_id == "restrictions": + texts["main"] = _('Are you sure you want to change the selected restrictions for the selected user(s)?') elif element_id == "sidebar_view": texts["main"] = _('Are you sure you want to change the selected visibility restrictions for the selected user(s)?') return json.dumps(texts) @@ -583,6 +702,26 @@ def restriction_deletion(element, list_func): return ','.join(elementlist) +def prepare_tags(user, action, tags_name, id_list): + if "tags" in tags_name: + tags = calibre_db.session.query(db.Tags).filter(db.Tags.id.in_(id_list)).all() + if not tags: + raise Exception(_("Tag not found")) + new_tags_list = [x.name for x in tags] + else: + tags = calibre_db.session.query(db.cc_classes[config.config_restricted_column])\ + .filter(db.cc_classes[config.config_restricted_column].id.in_(id_list)).all() + new_tags_list = [x.value for x in tags] + saved_tags_list = user.__dict__[tags_name].split(",") if len(user.__dict__[tags_name]) else [] + if action == "remove": + saved_tags_list = [x for x in saved_tags_list if x not in new_tags_list] + elif action == "add": + saved_tags_list.extend(x for x in new_tags_list if x not in saved_tags_list) + else: + raise Exception(_("Invalid Action")) + return ",".join(saved_tags_list) + + @admi.route("/ajax/addrestriction/", defaults={"user_id": 0}, methods=['POST']) @admi.route("/ajax/addrestriction//", methods=['POST']) @login_required @@ -610,10 +749,10 @@ def add_restriction(res_type, user_id): usr = current_user if 'submit_allow' in element: usr.allowed_tags = restriction_addition(element, usr.list_allowed_tags) - ub.session_commit("Changed allowed tags of user {} to {}".format(usr.name, usr.list_allowed_tags)) + ub.session_commit("Changed allowed tags of user {} to {}".format(usr.name, usr.list_allowed_tags())) elif 'submit_deny' in element: usr.denied_tags = restriction_addition(element, usr.list_denied_tags) - ub.session_commit("Changed denied tags of user {} to {}".format(usr.name, usr.list_denied_tags)) + ub.session_commit("Changed denied tags of user {} to {}".format(usr.name, usr.list_denied_tags())) if res_type == 3: # CustomC per user if isinstance(user_id, int): usr = ub.session.query(ub.User).filter(ub.User.id == int(user_id)).first() @@ -622,11 +761,11 @@ def add_restriction(res_type, user_id): if 'submit_allow' in element: usr.allowed_column_value = restriction_addition(element, usr.list_allowed_column_values) ub.session_commit("Changed allowed columns of user {} to {}".format(usr.name, - usr.list_allowed_column_values)) + usr.list_allowed_column_values())) elif 'submit_deny' in element: usr.denied_column_value = restriction_addition(element, usr.list_denied_column_values) ub.session_commit("Changed denied columns of user {} to {}".format(usr.name, - usr.list_denied_column_values)) + usr.list_denied_column_values())) return "" @@ -824,6 +963,7 @@ def pathchooser(): def basic_configuration(): logout_user() if request.method == "POST": + log.debug("Basic Configuration send") return _configuration_update_helper(configured=filepicker) return _configuration_result(configured=filepicker) @@ -862,7 +1002,10 @@ def _configuration_gdrive_helper(to_save): ) # always show google drive settings, but in case of error deny support - config.config_use_google_drive = (not gdrive_error) and ("config_use_google_drive" in to_save) + new_gdrive_value = (not gdrive_error) and ("config_use_google_drive" in to_save) + if config.config_use_google_drive and not new_gdrive_value: + config.config_google_drive_watch_changes_response = {} + config.config_use_google_drive = new_gdrive_value if _config_string(to_save, "config_google_drive_folder"): gdriveutils.deleteDatabaseOnChange() return gdrive_error @@ -1079,7 +1222,8 @@ def _configuration_update_helper(configured): return _configuration_result(unrar_status, gdrive_error, configured) except (OperationalError, InvalidRequestError): ub.session.rollback() - _configuration_result(_(u"Settings DB is not Writeable"), gdrive_error, configured) + log.error("Settings DB is not Writeable") + _configuration_result(_("Settings DB is not Writeable"), gdrive_error, configured) try: metadata_db = os.path.join(config.config_calibre_dir, "metadata.db") @@ -1111,15 +1255,16 @@ def _configuration_result(error_flash=None, gdrive_error=None, configured=True): if gdrive_error is None: gdrive_error = gdriveutils.get_error_text() if gdrive_error: + log.error(gdrive_error) gdrive_error = _(gdrive_error) else: - # if config.config_use_google_drive and\ if not gdrive_authenticate and gdrive_support: gdrivefolders = gdriveutils.listRootFolders() show_back_button = current_user.is_authenticated show_login_button = config.db_configured and not current_user.is_authenticated if error_flash: + log.error(error_flash) config.load() flash(error_flash, category="error") show_login_button = False @@ -1172,30 +1317,46 @@ def _handle_new_user(to_save, content, languages, translations, kobo_support): ub.session.add(content) ub.session.commit() flash(_(u"User '%(user)s' created", user=content.name), category="success") + log.debug("User {} created".format(content.name)) return redirect(url_for('admin.admin')) except IntegrityError: ub.session.rollback() - flash(_(u"Found an existing account for this e-mail address or name."), category="error") + log.error("Found an existing account for {} or {}".format(content.name, content.email)) + flash(_("Found an existing account for this e-mail address or name."), category="error") except OperationalError: ub.session.rollback() - flash(_(u"Settings DB is not Writeable"), category="error") + log.error("Settings DB is not Writeable") + flash(_("Settings DB is not Writeable"), category="error") + +def _delete_user(content): + if ub.session.query(ub.User).filter(ub.User.role.op('&')(constants.ROLE_ADMIN) == constants.ROLE_ADMIN, + ub.User.id != content.id).count(): + if content.name != "Guest": + ub.session.query(ub.User).filter(ub.User.id == content.id).delete() + ub.session_commit() + log.info(u"User {} deleted".format(content.name)) + return(_(u"User '%(nick)s' deleted", nick=content.name)) + else: + log.warning(_(u"Can't delete Guest User")) + raise Exception(_(u"Can't delete Guest User")) + else: + log.warning(u"No admin user remaining, can't delete user") + raise Exception(_(u"No admin user remaining, can't delete user")) def _handle_edit_user(to_save, content, languages, translations, kobo_support): if to_save.get("delete"): - if ub.session.query(ub.User).filter(ub.User.role.op('&')(constants.ROLE_ADMIN) == constants.ROLE_ADMIN, - ub.User.id != content.id).count(): - ub.session.query(ub.User).filter(ub.User.id == content.id).delete() - ub.session_commit() - flash(_(u"User '%(nick)s' deleted", nick=content.name), category="success") - return redirect(url_for('admin.admin')) - else: - flash(_(u"No admin user remaining, can't delete user", nick=content.name), category="error") - return redirect(url_for('admin.admin')) + try: + flash(_delete_user(content), category="success") + except Exception as ex: + log.error(ex) + flash(str(ex), category="error") + return redirect(url_for('admin.admin')) else: if not ub.session.query(ub.User).filter(ub.User.role.op('&')(constants.ROLE_ADMIN) == constants.ROLE_ADMIN, ub.User.id != content.id).count() and 'admin_role' not in to_save: - flash(_(u"No admin user remaining, can't remove admin role", nick=content.name), category="error") + log.warning("No admin user remaining, can't remove admin role from {}".format(content.name)) + flash(_("No admin user remaining, can't remove admin role"), category="error") return redirect(url_for('admin.admin')) if to_save.get("password"): content.password = generate_password_hash(to_save["password"]) @@ -1235,6 +1396,7 @@ def _handle_edit_user(to_save, content, languages, translations, kobo_support): if to_save.get("kindle_mail") != content.kindle_mail: content.kindle_mail = valid_email(to_save["kindle_mail"]) if to_save["kindle_mail"] else "" except Exception as ex: + log.error(ex) flash(str(ex), category="error") return render_title_template("user_edit.html", translations=translations, @@ -1249,12 +1411,15 @@ def _handle_edit_user(to_save, content, languages, translations, kobo_support): try: ub.session_commit() flash(_(u"User '%(nick)s' updated", nick=content.name), category="success") - except IntegrityError: + except IntegrityError as ex: ub.session.rollback() - flash(_(u"An unknown error occured."), category="error") + log.error("An unknown error occurred while changing user: {}".format(str(ex))) + flash(_(u"An unknown error occurred."), category="error") except OperationalError: ub.session.rollback() - flash(_(u"Settings DB is not Writeable"), category="error") + log.error("Settings DB is not Writeable") + flash(_("Settings DB is not Writeable"), category="error") + return "" @admi.route("/admin/user/new", methods=["GET", "POST"]) @@ -1318,7 +1483,8 @@ def update_mailsettings(): config.save() except (OperationalError, InvalidRequestError): ub.session.rollback() - flash(_(u"Settings DB is not Writeable"), category="error") + log.error("Settings DB is not Writeable") + flash(_("Settings DB is not Writeable"), category="error") return edit_mailsettings() if to_save.get("test"): @@ -1350,7 +1516,9 @@ def edit_user(user_id): kobo_support = feature_support['kobo'] and config.config_kobo_sync if request.method == "POST": to_save = request.form.to_dict() - _handle_edit_user(to_save, content, languages, translations, kobo_support) + resp = _handle_edit_user(to_save, content, languages, translations, kobo_support) + if resp: + return resp return render_title_template("user_edit.html", translations=translations, languages=languages, diff --git a/cps/cli.py b/cps/cli.py index 07b719d2..d7dc596b 100644 --- a/cps/cli.py +++ b/cps/cli.py @@ -71,7 +71,7 @@ if args.c: if os.path.isfile(args.c): certfilepath = args.c else: - print("Certfilepath is invalid. Exiting...") + print("Certfile path is invalid. Exiting...") sys.exit(1) if args.c == "": @@ -81,7 +81,7 @@ if args.k: if os.path.isfile(args.k): keyfilepath = args.k else: - print("Keyfilepath is invalid. Exiting...") + print("Keyfile path is invalid. Exiting...") sys.exit(1) if (args.k and not args.c) or (not args.k and args.c): @@ -91,29 +91,29 @@ if (args.k and not args.c) or (not args.k and args.c): if args.k == "": keyfilepath = "" -# handle and check ipadress argument -ipadress = args.i or None -if ipadress: +# handle and check ip address argument +ip_address = args.i or None +if ip_address: try: # try to parse the given ip address with socket if hasattr(socket, 'inet_pton'): - if ':' in ipadress: - socket.inet_pton(socket.AF_INET6, ipadress) + if ':' in ip_address: + socket.inet_pton(socket.AF_INET6, ip_address) else: - socket.inet_pton(socket.AF_INET, ipadress) + socket.inet_pton(socket.AF_INET, ip_address) else: # on windows python < 3.4, inet_pton is not available # inet_atom only handles IPv4 addresses - socket.inet_aton(ipadress) + socket.inet_aton(ip_address) except socket.error as err: - print(ipadress, ':', err) + print(ip_address, ':', err) sys.exit(1) # handle and check user password argument user_credentials = args.s or None if user_credentials and ":" not in user_credentials: - print("No valid username:password format") + print("No valid 'username:password' format") sys.exit(3) -# Handles enableing of filepicker +# Handles enabling of filepicker filepicker = args.f or None diff --git a/cps/config_sql.py b/cps/config_sql.py index 2ab0e3d6..ef90aee4 100644 --- a/cps/config_sql.py +++ b/cps/config_sql.py @@ -20,16 +20,18 @@ from __future__ import division, print_function, unicode_literals import os import sys +import json -from sqlalchemy import exc, Column, String, Integer, SmallInteger, Boolean, BLOB, JSON +from sqlalchemy import Column, String, Integer, SmallInteger, Boolean, BLOB, JSON from sqlalchemy.exc import OperationalError +from sqlalchemy.sql.expression import text try: - # Compability with sqlalchemy 2.0 + # Compatibility with sqlalchemy 2.0 from sqlalchemy.orm import declarative_base except ImportError: from sqlalchemy.ext.declarative import declarative_base -from . import constants, cli, logger, ub +from . import constants, cli, logger log = logger.create() @@ -190,7 +192,7 @@ class _ConfigSQL(object): @staticmethod def get_config_ipaddress(): - return cli.ipadress or "" + return cli.ip_address or "" def _has_role(self, role_flag): return constants.has_flag(self.config_default_role, role_flag) @@ -260,7 +262,6 @@ class _ConfigSQL(object): """ new_value = dictionary.get(field, default) if new_value is None: - # log.debug("_ConfigSQL set_from_dictionary field '%s' not found", field) return False if field not in self.__dict__: @@ -277,7 +278,6 @@ class _ConfigSQL(object): if current_value == new_value: return False - # log.debug("_ConfigSQL set_from_dictionary '%s' = %r (was %r)", field, new_value, current_value) setattr(self, field, new_value) return True @@ -358,7 +358,7 @@ def _migrate_table(session, orm_class): if column_name[0] != '_': try: session.query(column).first() - except exc.OperationalError as err: + except OperationalError as err: log.debug("%s: %s", column_name, err.args[0]) if column.default is not None: if sys.version_info < (3, 0): @@ -368,20 +368,23 @@ def _migrate_table(session, orm_class): column_default = "" else: if isinstance(column.default.arg, bool): - column_default = ("DEFAULT %r" % int(column.default.arg)) + column_default = "DEFAULT {}".format(int(column.default.arg)) else: - column_default = ("DEFAULT '%r'" % column.default.arg) + column_default = "DEFAULT `{}`".format(column.default.arg) if isinstance(column.type, JSON): column_type = "JSON" else: column_type = column.type - alter_table = "ALTER TABLE %s ADD COLUMN `%s` %s %s" % (orm_class.__tablename__, + alter_table = text("ALTER TABLE %s ADD COLUMN `%s` %s %s" % (orm_class.__tablename__, column_name, column_type, - column_default) + column_default)) log.debug(alter_table) session.execute(alter_table) changed = True + except json.decoder.JSONDecodeError as e: + log.error("Database corrupt column: {}".format(column_name)) + log.debug(e) if changed: try: diff --git a/cps/db.py b/cps/db.py index 5cb04ed3..66c289dd 100644 --- a/cps/db.py +++ b/cps/db.py @@ -33,7 +33,7 @@ from sqlalchemy.orm.collections import InstrumentedList from sqlalchemy.ext.declarative import DeclarativeMeta from sqlalchemy.exc import OperationalError try: - # Compability with sqlalchemy 2.0 + # Compatibility with sqlalchemy 2.0 from sqlalchemy.orm import declarative_base except ImportError: from sqlalchemy.ext.declarative import declarative_base @@ -44,6 +44,7 @@ from flask_login import current_user from babel import Locale as LC from babel.core import UnknownLocaleError from flask_babel import gettext as _ +from flask import flash from . import logger, ub, isoLanguages from .pagination import Pagination @@ -121,6 +122,8 @@ class Identifiers(Base): return u"Douban" elif format_type == "goodreads": return u"Goodreads" + elif format_type == "babelio": + return u"Babelio" elif format_type == "google": return u"Google Books" elif format_type == "kobo": @@ -148,6 +151,8 @@ class Identifiers(Base): return u"https://dx.doi.org/{0}".format(self.val) elif format_type == "goodreads": return u"https://www.goodreads.com/book/show/{0}".format(self.val) + elif format_type == "babelio": + return u"https://www.babelio.com/livres/titre/{0}".format(self.val) elif format_type == "douban": return u"https://book.douban.com/subject/{0}".format(self.val) elif format_type == "google": @@ -393,7 +398,7 @@ class AlchemyEncoder(json.JSONEncoder): if isinstance(o.__class__, DeclarativeMeta): # an SQLAlchemy class fields = {} - for field in [x for x in dir(o) if not x.startswith('_') and x != 'metadata']: + for field in [x for x in dir(o) if not x.startswith('_') and x != 'metadata' and x!="password"]: if field == 'books': continue data = o.__getattribute__(field) @@ -602,20 +607,46 @@ class CalibreDB(): neg_content_tags_filter = false() if negtags_list == [''] else Books.tags.any(Tags.name.in_(negtags_list)) pos_content_tags_filter = true() if postags_list == [''] else Books.tags.any(Tags.name.in_(postags_list)) if self.config.config_restricted_column: - pos_cc_list = current_user.allowed_column_value.split(',') - pos_content_cc_filter = true() if pos_cc_list == [''] else \ - getattr(Books, 'custom_column_' + str(self.config.config_restricted_column)). \ - any(cc_classes[self.config.config_restricted_column].value.in_(pos_cc_list)) - neg_cc_list = current_user.denied_column_value.split(',') - neg_content_cc_filter = false() if neg_cc_list == [''] else \ - getattr(Books, 'custom_column_' + str(self.config.config_restricted_column)). \ - any(cc_classes[self.config.config_restricted_column].value.in_(neg_cc_list)) + try: + pos_cc_list = current_user.allowed_column_value.split(',') + pos_content_cc_filter = true() if pos_cc_list == [''] else \ + getattr(Books, 'custom_column_' + str(self.config.config_restricted_column)). \ + any(cc_classes[self.config.config_restricted_column].value.in_(pos_cc_list)) + neg_cc_list = current_user.denied_column_value.split(',') + neg_content_cc_filter = false() if neg_cc_list == [''] else \ + getattr(Books, 'custom_column_' + str(self.config.config_restricted_column)). \ + any(cc_classes[self.config.config_restricted_column].value.in_(neg_cc_list)) + except (KeyError, AttributeError): + pos_content_cc_filter = false() + neg_content_cc_filter = true() + log.error(u"Custom Column No.%d is not existing in calibre database", + self.config.config_restricted_column) + flash(_("Custom Column No.%(column)d is not existing in calibre database", + column=self.config.config_restricted_column), + category="error") + else: pos_content_cc_filter = true() neg_content_cc_filter = false() return and_(lang_filter, pos_content_tags_filter, ~neg_content_tags_filter, pos_content_cc_filter, ~neg_content_cc_filter, archived_filter) + @staticmethod + def get_checkbox_sorted(inputlist, state, offset, limit, order): + outcome = list() + elementlist = {ele.id: ele for ele in inputlist} + for entry in state: + try: + outcome.append(elementlist[entry]) + except KeyError: + pass + del elementlist[entry] + for entry in elementlist: + outcome.append(elementlist[entry]) + if order == "asc": + outcome.reverse() + return outcome[offset:offset + limit] + # Fill indexpage with all requested data from database def fill_indexpage(self, page, pagesize, database, db_filter, order, *join): return self.fill_indexpage_with_archived_books(page, pagesize, database, db_filter, order, False, *join) @@ -689,23 +720,33 @@ class CalibreDB(): return self.session.query(Books) \ .filter(and_(Books.authors.any(and_(*q)), func.lower(Books.title).ilike("%" + title + "%"))).first() - # read search results from calibre-database and return it (function is used for feed and simple search - def get_search_results(self, term, offset=None, order=None, limit=None): - order = order or [Books.sort] - pagination = None + def search_query(self, term, *join): term.strip().lower() self.session.connection().connection.connection.create_function("lower", 1, lcase) q = list() authorterms = re.split("[, ]+", term) for authorterm in authorterms: q.append(Books.authors.any(func.lower(Authors.name).ilike("%" + authorterm + "%"))) - result = self.session.query(Books).filter(self.common_filters(True)).filter( + query = self.session.query(Books) + if len(join) == 3: + query = query.outerjoin(join[0], join[1]).outerjoin(join[2]) + elif len(join) == 2: + query = query.outerjoin(join[0], join[1]) + elif len(join) == 1: + query = query.outerjoin(join[0]) + return query.filter(self.common_filters(True)).filter( or_(Books.tags.any(func.lower(Tags.name).ilike("%" + term + "%")), Books.series.any(func.lower(Series.name).ilike("%" + term + "%")), Books.authors.any(and_(*q)), Books.publishers.any(func.lower(Publishers.name).ilike("%" + term + "%")), func.lower(Books.title).ilike("%" + term + "%") - )).order_by(*order).all() + )) + + # read search results from calibre-database and return it (function is used for feed and simple search + def get_search_results(self, term, offset=None, order=None, limit=None, *join): + order = order or [Books.sort] + pagination = None + result = self.search_query(term, *join).order_by(*order).all() result_count = len(result) if offset != None and limit != None: offset = int(offset) diff --git a/cps/editbooks.py b/cps/editbooks.py index cb8388ef..45e0f9fe 100644 --- a/cps/editbooks.py +++ b/cps/editbooks.py @@ -229,14 +229,14 @@ def modify_identifiers(input_identifiers, db_identifiers, db_session): @editbook.route("/ajax/delete/") @login_required def delete_book_from_details(book_id): - return Response(delete_book(book_id,"", True), mimetype='application/json') + return Response(delete_book(book_id, "", True), mimetype='application/json') @editbook.route("/delete/", defaults={'book_format': ""}) @editbook.route("/delete//") @login_required def delete_book_ajax(book_id, book_format): - return delete_book(book_id,book_format, False) + return delete_book(book_id, book_format, False) def delete_whole_book(book_id, book): @@ -315,19 +315,19 @@ def delete_book(book_id, book_format, jsonResponse): result, error = helper.delete_book(book, config.config_calibre_dir, book_format=book_format.upper()) if not result: if jsonResponse: - return json.dumps({"location": url_for("editbook.edit_book"), - "type": "alert", + return json.dumps([{"location": url_for("editbook.edit_book", book_id=book_id), + "type": "danger", "format": "", - "error": error}), + "message": error}]) else: flash(error, category="error") return redirect(url_for('editbook.edit_book', book_id=book_id)) if error: if jsonResponse: - warning = {"location": url_for("editbook.edit_book"), + warning = {"location": url_for("editbook.edit_book", book_id=book_id), "type": "warning", "format": "", - "error": error} + "message": error} else: flash(error, category="warning") if not book_format: @@ -339,6 +339,15 @@ def delete_book(book_id, book_format, jsonResponse): except Exception as ex: log.debug_or_exception(ex) calibre_db.session.rollback() + if jsonResponse: + return json.dumps([{"location": url_for("editbook.edit_book", book_id=book_id), + "type": "danger", + "format": "", + "message": ex}]) + else: + flash(str(ex), category="error") + return redirect(url_for('editbook.edit_book', book_id=book_id)) + else: # book not found log.error('Book with id "%s" could not be deleted: not found', book_id) @@ -1176,6 +1185,6 @@ def merge_list_book(): element.format, element.uncompressed_size, to_name)) - delete_book(from_book.id,"", True) # json_resp = + delete_book(from_book.id,"", True) return json.dumps({'success': True}) return "" diff --git a/cps/gdriveutils.py b/cps/gdriveutils.py index a98d0b66..7c8c23b0 100644 --- a/cps/gdriveutils.py +++ b/cps/gdriveutils.py @@ -29,7 +29,7 @@ from sqlalchemy import Column, UniqueConstraint from sqlalchemy import String, Integer from sqlalchemy.orm import sessionmaker, scoped_session try: - # Compability with sqlalchemy 2.0 + # Compatibility with sqlalchemy 2.0 from sqlalchemy.orm import declarative_base except ImportError: from sqlalchemy.ext.declarative import declarative_base @@ -221,7 +221,7 @@ def listRootFolders(): drive = getDrive(Gdrive.Instance().drive) folder = "'root' in parents and mimeType = 'application/vnd.google-apps.folder' and trashed = false" fileList = drive.ListFile({'q': folder}).GetList() - except (ServerNotFoundError, ssl.SSLError) as e: + except (ServerNotFoundError, ssl.SSLError, RefreshError) as e: log.info("GDrive Error %s" % e) fileList = [] return fileList @@ -257,7 +257,12 @@ def getEbooksFolderId(drive=None): log.error('Error gDrive, root ID not found') gDriveId.path = '/' session.merge(gDriveId) - session.commit() + try: + session.commit() + except OperationalError as ex: + log.error("gdrive.db DB is not Writeable") + log.debug('Database error: %s', ex) + session.rollback() return gDriveId.gdrive_id @@ -272,37 +277,42 @@ def getFile(pathId, fileName, drive): def getFolderId(path, drive): # drive = getDrive(drive) - currentFolderId = getEbooksFolderId(drive) - sqlCheckPath = path if path[-1] == '/' else path + '/' - storedPathName = session.query(GdriveId).filter(GdriveId.path == sqlCheckPath).first() + try: + currentFolderId = getEbooksFolderId(drive) + sqlCheckPath = path if path[-1] == '/' else path + '/' + storedPathName = session.query(GdriveId).filter(GdriveId.path == sqlCheckPath).first() - if not storedPathName: - dbChange = False - s = path.split('/') - for i, x in enumerate(s): - if len(x) > 0: - currentPath = "/".join(s[:i+1]) - if currentPath[-1] != '/': - currentPath = currentPath + '/' - storedPathName = session.query(GdriveId).filter(GdriveId.path == currentPath).first() - if storedPathName: - currentFolderId = storedPathName.gdrive_id - else: - currentFolder = getFolderInFolder(currentFolderId, x, drive) - if currentFolder: - gDriveId = GdriveId() - gDriveId.gdrive_id = currentFolder['id'] - gDriveId.path = currentPath - session.merge(gDriveId) - dbChange = True - currentFolderId = currentFolder['id'] + if not storedPathName: + dbChange = False + s = path.split('/') + for i, x in enumerate(s): + if len(x) > 0: + currentPath = "/".join(s[:i+1]) + if currentPath[-1] != '/': + currentPath = currentPath + '/' + storedPathName = session.query(GdriveId).filter(GdriveId.path == currentPath).first() + if storedPathName: + currentFolderId = storedPathName.gdrive_id else: - currentFolderId = None - break - if dbChange: - session.commit() - else: - currentFolderId = storedPathName.gdrive_id + currentFolder = getFolderInFolder(currentFolderId, x, drive) + if currentFolder: + gDriveId = GdriveId() + gDriveId.gdrive_id = currentFolder['id'] + gDriveId.path = currentPath + session.merge(gDriveId) + dbChange = True + currentFolderId = currentFolder['id'] + else: + currentFolderId = None + break + if dbChange: + session.commit() + else: + currentFolderId = storedPathName.gdrive_id + except OperationalError as ex: + log.error("gdrive.db DB is not Writeable") + log.debug('Database error: %s', ex) + session.rollback() return currentFolderId @@ -346,7 +356,7 @@ def moveGdriveFolderRemote(origin_file, target_folder): addParents=gFileTargetDir['id'], removeParents=previous_parents, fields='id, parents').execute() - # if previous_parents has no childs anymore, delete original fileparent + # if previous_parents has no children anymore, delete original fileparent if len(children['items']) == 1: deleteDatabaseEntry(previous_parents) drive.auth.service.files().delete(fileId=previous_parents).execute() @@ -507,9 +517,10 @@ def deleteDatabaseOnChange(): try: session.query(GdriveId).delete() session.commit() - except (OperationalError, InvalidRequestError): + except (OperationalError, InvalidRequestError) as ex: session.rollback() - log.info(u"GDrive DB is not Writeable") + log.debug('Database error: %s', ex) + log.error(u"GDrive DB is not Writeable") def updateGdriveCalibreFromLocal(): @@ -524,13 +535,23 @@ def updateDatabaseOnEdit(ID,newPath): storedPathName = session.query(GdriveId).filter(GdriveId.gdrive_id == ID).first() if storedPathName: storedPathName.path = sqlCheckPath - session.commit() + try: + session.commit() + except OperationalError as ex: + log.error("gdrive.db DB is not Writeable") + log.debug('Database error: %s', ex) + session.rollback() # Deletes the hashes in database of deleted book def deleteDatabaseEntry(ID): session.query(GdriveId).filter(GdriveId.gdrive_id == ID).delete() - session.commit() + try: + session.commit() + except OperationalError as ex: + log.error("gdrive.db DB is not Writeable") + log.debug('Database error: %s', ex) + session.rollback() # Gets cover file from gdrive @@ -547,7 +568,12 @@ def get_cover_via_gdrive(cover_path): permissionAdded = PermissionAdded() permissionAdded.gdrive_id = df['id'] session.add(permissionAdded) - session.commit() + try: + session.commit() + except OperationalError as ex: + log.error("gdrive.db DB is not Writeable") + log.debug('Database error: %s', ex) + session.rollback() return df.metadata.get('webContentLink') else: return None diff --git a/cps/helper.py b/cps/helper.py index f1c32ea0..8495687c 100644 --- a/cps/helper.py +++ b/cps/helper.py @@ -693,6 +693,7 @@ def do_download_file(book, book_format, client, data, headers): # ToDo Check headers parameter for element in headers: response.headers[element[0]] = element[1] + log.info('Downloading file: {}'.format(os.path.join(filename, data.name + "." + book_format))) return response ################################## @@ -732,7 +733,6 @@ def json_serial(obj): 'seconds': obj.seconds, 'microseconds': obj.microseconds, } - # return obj.isoformat() raise TypeError("Type %s not serializable" % type(obj)) @@ -795,8 +795,8 @@ def tags_filters(): # checks if domain is in database (including wildcards) # example SELECT * FROM @TABLE WHERE 'abcdefg' LIKE Name; # from https://code.luasoftware.com/tutorials/flask/execute-raw-sql-in-flask-sqlalchemy/ +# in all calls the email address is checked for validity def check_valid_domain(domain_text): - # domain_text = domain_text.split('@', 1)[-1].lower() sql = "SELECT * FROM registration WHERE (:domain LIKE domain and allow = 1);" result = ub.session.query(ub.Registration).from_statement(text(sql)).params(domain=domain_text).all() if not len(result): @@ -830,6 +830,7 @@ def get_download_link(book_id, book_format, client): if book: data1 = calibre_db.get_book_format(book.id, book_format.upper()) else: + log.error("Book id {} not found for downloading".format(book_id)) abort(404) if data1: # collect downloaded books only for registered user and not for anonymous user diff --git a/cps/logger.py b/cps/logger.py index b204de31..e2747f53 100644 --- a/cps/logger.py +++ b/cps/logger.py @@ -62,11 +62,11 @@ class _Logger(logging.Logger): def debug_no_auth(self, message, *args, **kwargs): + message = message.strip("\r\n") if message.startswith("send: AUTH"): - self.debug(message[:16], stacklevel=2, *args, **kwargs) + self.debug(message[:16], *args, **kwargs) else: - self.debug(message, stacklevel=2, *args, **kwargs) - + self.debug(message, *args, **kwargs) def get(name=None): @@ -153,11 +153,11 @@ def setup(log_file, log_level=None): file_handler.baseFilename = log_file else: try: - file_handler = RotatingFileHandler(log_file, maxBytes=50000, backupCount=2, encoding='utf-8') + file_handler = RotatingFileHandler(log_file, maxBytes=100000, backupCount=2, encoding='utf-8') except IOError: if log_file == DEFAULT_LOG_FILE: raise - file_handler = RotatingFileHandler(DEFAULT_LOG_FILE, maxBytes=50000, backupCount=2, encoding='utf-8') + file_handler = RotatingFileHandler(DEFAULT_LOG_FILE, maxBytes=100000, backupCount=2, encoding='utf-8') log_file = "" file_handler.setFormatter(FORMATTER) diff --git a/cps/oauth_bb.py b/cps/oauth_bb.py index 5d909d91..c8cc2e3e 100644 --- a/cps/oauth_bb.py +++ b/cps/oauth_bb.py @@ -30,6 +30,7 @@ from flask_babel import gettext as _ from flask_dance.consumer import oauth_authorized, oauth_error from flask_dance.contrib.github import make_github_blueprint, github from flask_dance.contrib.google import make_google_blueprint, google +from oauthlib.oauth2 import TokenExpiredError, InvalidGrantError from flask_login import login_user, current_user, login_required from sqlalchemy.orm.exc import NoResultFound @@ -146,6 +147,7 @@ def bind_oauth_or_register(provider_id, provider_user_id, redirect_url, provider ub.session.add(oauth_entry) ub.session.commit() flash(_(u"Link to %(oauth)s Succeeded", oauth=provider_name), category="success") + log.info("Link to {} Succeeded".format(provider_name)) return redirect(url_for('web.profile')) except Exception as ex: log.debug_or_exception(ex) @@ -194,6 +196,7 @@ def unlink_oauth(provider): ub.session.commit() logout_oauth_user() flash(_(u"Unlink to %(oauth)s Succeeded", oauth=oauth_check[provider]), category="success") + log.info("Unlink to {} Succeeded".format(oauth_check[provider])) except Exception as ex: log.debug_or_exception(ex) ub.session.rollback() @@ -257,11 +260,13 @@ if ub.oauth_support: def github_logged_in(blueprint, token): if not token: flash(_(u"Failed to log in with GitHub."), category="error") + log.error("Failed to log in with GitHub") return False resp = blueprint.session.get("/user") if not resp.ok: flash(_(u"Failed to fetch user info from GitHub."), category="error") + log.error("Failed to fetch user info from GitHub") return False github_info = resp.json() @@ -273,11 +278,13 @@ if ub.oauth_support: def google_logged_in(blueprint, token): if not token: flash(_(u"Failed to log in with Google."), category="error") + log.error("Failed to log in with Google") return False resp = blueprint.session.get("/oauth2/v2/userinfo") if not resp.ok: flash(_(u"Failed to fetch user info from Google."), category="error") + log.error("Failed to fetch user info from Google") return False google_info = resp.json() @@ -318,11 +325,16 @@ if ub.oauth_support: def github_login(): if not github.authorized: return redirect(url_for('github.login')) - account_info = github.get('/user') - if account_info.ok: - account_info_json = account_info.json() - return bind_oauth_or_register(oauthblueprints[0]['id'], account_info_json['id'], 'github.login', 'github') - flash(_(u"GitHub Oauth error, please retry later."), category="error") + try: + account_info = github.get('/user') + if account_info.ok: + account_info_json = account_info.json() + return bind_oauth_or_register(oauthblueprints[0]['id'], account_info_json['id'], 'github.login', 'github') + flash(_(u"GitHub Oauth error, please retry later."), category="error") + log.error("GitHub Oauth error, please retry later") + except (InvalidGrantError, TokenExpiredError) as e: + flash(_(u"GitHub Oauth error: {}").format(e), category="error") + log.error(e) return redirect(url_for('web.login')) @@ -337,11 +349,16 @@ def github_login_unlink(): def google_login(): if not google.authorized: return redirect(url_for("google.login")) - resp = google.get("/oauth2/v2/userinfo") - if resp.ok: - account_info_json = resp.json() - return bind_oauth_or_register(oauthblueprints[1]['id'], account_info_json['id'], 'google.login', 'google') - flash(_(u"Google Oauth error, please retry later."), category="error") + try: + resp = google.get("/oauth2/v2/userinfo") + if resp.ok: + account_info_json = resp.json() + return bind_oauth_or_register(oauthblueprints[1]['id'], account_info_json['id'], 'google.login', 'google') + flash(_(u"Google Oauth error, please retry later."), category="error") + log.error("Google Oauth error, please retry later") + except (InvalidGrantError, TokenExpiredError) as e: + flash(_(u"Google Oauth error: {}").format(e), category="error") + log.error(e) return redirect(url_for('web.login')) diff --git a/cps/opds.py b/cps/opds.py index 85a978a7..e444302a 100644 --- a/cps/opds.py +++ b/cps/opds.py @@ -546,8 +546,8 @@ def check_auth(username, password): if bool(user and check_password_hash(str(user.password), password)): return True else: - ipAdress = request.headers.get('X-Forwarded-For', request.remote_addr) - log.warning('OPDS Login failed for user "%s" IP-address: %s', username.decode('utf-8'), ipAdress) + ip_Address = request.headers.get('X-Forwarded-For', request.remote_addr) + log.warning('OPDS Login failed for user "%s" IP-address: %s', username.decode('utf-8'), ip_Address) return False diff --git a/cps/services/__init__.py b/cps/services/__init__.py index efd55621..e6e5954c 100644 --- a/cps/services/__init__.py +++ b/cps/services/__init__.py @@ -49,5 +49,5 @@ except ImportError as err: try: from . import gmail except ImportError as err: - log.debug("Cannot import Gmail, sending books via G-Mail Accounts will not work: %s", err) + log.debug("Cannot import gmail, sending books via Gmail Oauth2 Verification will not work: %s", err) gmail = None diff --git a/cps/services/gmail.py b/cps/services/gmail.py index 9524dd75..9380121a 100644 --- a/cps/services/gmail.py +++ b/cps/services/gmail.py @@ -53,6 +53,7 @@ def setup_gmail(token): 'expiry': creds.expiry.isoformat(), 'email': user_info } + return {} def get_user_info(credentials): user_info_service = build(serviceName='oauth2', version='v2',credentials=credentials) @@ -60,6 +61,7 @@ def get_user_info(credentials): return user_info.get('email', "") def send_messsage(token, msg): + log.debug("Start sending email via Gmail") creds = Credentials( token=token['token'], refresh_token=token['refresh_token'], @@ -78,3 +80,4 @@ def send_messsage(token, msg): body = {'raw': raw} (service.users().messages().send(userId='me', body=body).execute()) + log.debug("Email send successfully via Gmail") diff --git a/cps/services/worker.py b/cps/services/worker.py index 8433e408..1baf25fe 100644 --- a/cps/services/worker.py +++ b/cps/services/worker.py @@ -45,7 +45,7 @@ class ImprovedQueue(queue.Queue): with self.mutex: return list(self.queue) -#Class for all worker tasks in the background +# Class for all worker tasks in the background class WorkerThread(threading.Thread): _instance = None @@ -69,6 +69,7 @@ class WorkerThread(threading.Thread): def add(cls, user, task): ins = cls.getInstance() ins.num += 1 + log.debug("Add Task for user: {}: {}".format(user, task)) ins.queue.put(QueuedTask( num=ins.num, user=user, diff --git a/cps/shelf.py b/cps/shelf.py index 68e8331b..a58e6d5c 100644 --- a/cps/shelf.py +++ b/cps/shelf.py @@ -99,12 +99,14 @@ def add_to_shelf(shelf_id, book_id): ub.session.commit() except (OperationalError, InvalidRequestError): ub.session.rollback() + log.error("Settings DB is not Writeable") flash(_(u"Settings DB is not Writeable"), category="error") if "HTTP_REFERER" in request.environ: return redirect(request.environ["HTTP_REFERER"]) else: return redirect(url_for('web.index')) if not xhr: + log.debug("Book has been added to shelf: {}".format(shelf.name)) flash(_(u"Book has been added to shelf: %(sname)s", sname=shelf.name), category="success") if "HTTP_REFERER" in request.environ: return redirect(request.environ["HTTP_REFERER"]) @@ -123,6 +125,7 @@ def search_to_shelf(shelf_id): return redirect(url_for('web.index')) if not check_shelf_edit_permissions(shelf): + log.warning("You are not allowed to add a book to the the shelf: {}".format(shelf.name)) flash(_(u"You are not allowed to add a book to the the shelf: %(name)s", name=shelf.name), category="error") return redirect(url_for('web.index')) @@ -140,7 +143,7 @@ def search_to_shelf(shelf_id): books_for_shelf = ub.searched_ids[current_user.id] if not books_for_shelf: - log.error("Books are already part of %s", shelf.name) + log.error("Books are already part of {}".format(shelf.name)) flash(_(u"Books are already part of the shelf: %(name)s", name=shelf.name), category="error") return redirect(url_for('web.index')) @@ -156,8 +159,10 @@ def search_to_shelf(shelf_id): flash(_(u"Books have been added to shelf: %(sname)s", sname=shelf.name), category="success") except (OperationalError, InvalidRequestError): ub.session.rollback() - flash(_(u"Settings DB is not Writeable"), category="error") + log.error("Settings DB is not Writeable") + flash(_("Settings DB is not Writeable"), category="error") else: + log.error("Could not add books to shelf: {}".format(shelf.name)) flash(_(u"Could not add books to shelf: %(sname)s", sname=shelf.name), category="error") return redirect(url_for('web.index')) @@ -168,7 +173,7 @@ def remove_from_shelf(shelf_id, book_id): xhr = request.headers.get('X-Requested-With') == 'XMLHttpRequest' shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first() if shelf is None: - log.error("Invalid shelf specified: %s", shelf_id) + log.error("Invalid shelf specified: {}".format(shelf_id)) if not xhr: return redirect(url_for('web.index')) return "Invalid shelf specified", 400 @@ -197,7 +202,8 @@ def remove_from_shelf(shelf_id, book_id): ub.session.commit() except (OperationalError, InvalidRequestError): ub.session.rollback() - flash(_(u"Settings DB is not Writeable"), category="error") + log.error("Settings DB is not Writeable") + flash(_("Settings DB is not Writeable"), category="error") if "HTTP_REFERER" in request.environ: return redirect(request.environ["HTTP_REFERER"]) else: @@ -211,6 +217,7 @@ def remove_from_shelf(shelf_id, book_id): return "", 204 else: if not xhr: + log.warning("You are not allowed to remove a book from shelf: {}".format(shelf.name)) flash(_(u"Sorry you are not allowed to remove a book from this shelf: %(sname)s", sname=shelf.name), category="error") return redirect(url_for('web.index')) @@ -258,7 +265,8 @@ def create_edit_shelf(shelf, title, page, shelf_id=False): except (OperationalError, InvalidRequestError) as ex: ub.session.rollback() log.debug_or_exception(ex) - flash(_(u"Settings DB is not Writeable"), category="error") + log.error("Settings DB is not Writeable") + flash(_("Settings DB is not Writeable"), category="error") except Exception as ex: ub.session.rollback() log.debug_or_exception(ex) @@ -278,6 +286,7 @@ def check_shelf_is_unique(shelf, to_save, shelf_id=False): .first() is None if not is_shelf_name_unique: + log.error("A public shelf with the name '{}' already exists.".format(to_save["title"])) flash(_(u"A public shelf with the name '%(title)s' already exists.", title=to_save["title"]), category="error") else: @@ -288,6 +297,7 @@ def check_shelf_is_unique(shelf, to_save, shelf_id=False): .first() is None if not is_shelf_name_unique: + log.error("A private shelf with the name '{}' already exists.".format(to_save["title"])) flash(_(u"A private shelf with the name '%(title)s' already exists.", title=to_save["title"]), category="error") return is_shelf_name_unique @@ -311,7 +321,8 @@ def delete_shelf(shelf_id): delete_shelf_helper(cur_shelf) except InvalidRequestError: ub.session.rollback() - flash(_(u"Settings DB is not Writeable"), category="error") + log.error("Settings DB is not Writeable") + flash(_("Settings DB is not Writeable"), category="error") return redirect(url_for('web.index')) @@ -345,7 +356,8 @@ def order_shelf(shelf_id): ub.session.commit() except (OperationalError, InvalidRequestError): ub.session.rollback() - flash(_(u"Settings DB is not Writeable"), category="error") + log.error("Settings DB is not Writeable") + flash(_("Settings DB is not Writeable"), category="error") shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first() result = list() @@ -415,7 +427,8 @@ def render_show_shelf(shelf_type, shelf_id, page_no, sort_param): ub.session.commit() except (OperationalError, InvalidRequestError): ub.session.rollback() - flash(_(u"Settings DB is not Writeable"), category="error") + log.error("Settings DB is not Writeable") + flash(_("Settings DB is not Writeable"), category="error") return render_title_template(page, entries=result, diff --git a/cps/static/css/kthoom.css b/cps/static/css/kthoom.css index 233cfe94..267a2a84 100644 --- a/cps/static/css/kthoom.css +++ b/cps/static/css/kthoom.css @@ -84,15 +84,24 @@ body { #progress .bar-load, #progress .bar-read { display: flex; - align-items: flex-end; - justify-content: flex-end; position: absolute; top: 0; - left: 0; bottom: 0; transition: width 150ms ease-in-out; } +#progress .from-left { + left: 0; + align-items: flex-end; + justify-content: flex-end; +} + +#progress .from-right { + right: 0; + align-items: flex-start; + justify-content: flex-start; +} + #progress .bar-load { color: #000; background-color: #ccc; diff --git a/cps/static/css/main.css b/cps/static/css/main.css index e97497de..adbfbfdf 100644 --- a/cps/static/css/main.css +++ b/cps/static/css/main.css @@ -15,6 +15,10 @@ body { overflow: hidden; } +.myselect { + overflow: visible !important; +} + #main { position: absolute; width: 100%; diff --git a/cps/static/js/details.js b/cps/static/js/details.js index 395518cb..81c1a395 100644 --- a/cps/static/js/details.js +++ b/cps/static/js/details.js @@ -22,7 +22,21 @@ $(function() { }); $("#have_read_cb").on("change", function() { - $(this).closest("form").submit(); + $.post({ + url: this.closest("form").action, + error: function(response) { + var data = [{type:"danger", message:response.responseText}] + $("#flash_success").remove(); + $("#flash_danger").remove(); + if (!jQuery.isEmptyObject(data)) { + data.forEach(function (item) { + $(".navbar").after('
' + + '
' + item.message + '
' + + '
'); + }); + } + } + }); }); $(function() { diff --git a/cps/static/js/kthoom.js b/cps/static/js/kthoom.js index 56038fc6..f6c1e4d7 100644 --- a/cps/static/js/kthoom.js +++ b/cps/static/js/kthoom.js @@ -171,7 +171,10 @@ kthoom.ImageFile = function(file) { function initProgressClick() { $("#progress").click(function(e) { - var page = Math.max(1, Math.ceil((e.offsetX / $(this).width()) * totalImages)) - 1; + var offset = $(this).offset(); + var x = e.pageX - offset.left; + var rate = settings.direction === 0 ? x / $(this).width() : 1 - x / $(this).width(); + var page = Math.max(1, Math.ceil(rate * totalImages)) - 1; currentImage = page; updatePage(); }); @@ -285,6 +288,22 @@ function updatePage() { } function updateProgress(loadPercentage) { + if (settings.direction === 0) { + $("#progress .bar-read") + .removeClass("from-right") + .addClass("from-left"); + $("#progress .bar-load") + .removeClass("from-right") + .addClass("from-left"); + } else { + $("#progress .bar-read") + .removeClass("from-left") + .addClass("from-right"); + $("#progress .bar-load") + .removeClass("from-left") + .addClass("from-right"); + } + // Set the load/unzip progress if it's passed in if (loadPercentage) { $("#progress .bar-load").css({ width: loadPercentage + "%" }); @@ -526,18 +545,17 @@ function keyHandler(evt) { break; case kthoom.Key.SPACE: var container = $("#mainContent"); - var atTop = container.scrollTop() === 0; - var atBottom = container.scrollTop() >= container[0].scrollHeight - container.height(); + // var atTop = container.scrollTop() === 0; + // var atBottom = container.scrollTop() >= container[0].scrollHeight - container.height(); - if (evt.shiftKey && atTop) { + if (evt.shiftKey) { evt.preventDefault(); // If it's Shift + Space and the container is at the top of the page - showLeftPage(); - } else if (!evt.shiftKey && atBottom) { + showPrevPage(); + } else { evt.preventDefault(); // If you're at the bottom of the page and you only pressed space - showRightPage(); - container.scrollTop(0); + showNextPage(); } break; default: diff --git a/cps/static/js/main.js b/cps/static/js/main.js index 11ce6ed1..927b65ac 100644 --- a/cps/static/js/main.js +++ b/cps/static/js/main.js @@ -114,18 +114,22 @@ $(document).ready(function() { } }); +$(".session").click(function() { + window.sessionStorage.setItem("back", window.location.pathname); +}); + +$("#back").click(function() { + var loc = sessionStorage.getItem("back"); + if (!loc) { + loc = $(this).data("back"); + } + sessionStorage.removeItem("back"); + window.location.href = loc; + +}); + function confirmDialog(id, dialogid, dataValue, yesFn, noFn) { var $confirm = $("#" + dialogid); - $confirm.modal('show'); - $.ajax({ - method:"get", - dataType: "json", - url: getPath() + "/ajax/loaddialogtexts/" + id, - success: function success(data) { - $("#header-"+ dialogid).html(data.header); - $("#text-"+ dialogid).html(data.main); - } - }); $("#btnConfirmYes-"+ dialogid).off('click').click(function () { yesFn(dataValue); $confirm.modal("hide"); @@ -136,16 +140,27 @@ function confirmDialog(id, dialogid, dataValue, yesFn, noFn) { } $confirm.modal("hide"); }); + $.ajax({ + method:"get", + dataType: "json", + url: getPath() + "/ajax/loaddialogtexts/" + id, + success: function success(data) { + $("#header-"+ dialogid).html(data.header); + $("#text-"+ dialogid).html(data.main); + } + }); + $confirm.modal('show'); } $("#delete_confirm").click(function() { //get data-id attribute of the clicked element var deleteId = $(this).data("delete-id"); var bookFormat = $(this).data("delete-format"); + var ajaxResponse = $(this).data("ajax"); if (bookFormat) { window.location.href = getPath() + "/delete/" + deleteId + "/" + bookFormat; } else { - if ($(this).data("delete-format")) { + if (ajaxResponse) { path = getPath() + "/ajax/delete/" + deleteId; $.ajax({ method:"get", @@ -163,6 +178,19 @@ $("#delete_confirm").click(function() { } }); + $("#books-table").bootstrapTable("refresh"); + /*$.ajax({ + method:"get", + url: window.location.pathname + "/../../ajax/listbooks", + async: true, + timeout: 900, + success:function(data) { + + + $("#book-table").bootstrapTable("load", data); + loadSuccess(); + } + });*/ } }); } else { @@ -187,6 +215,7 @@ $("#deleteModal").on("show.bs.modal", function(e) { } $(e.currentTarget).find("#delete_confirm").data("delete-id", bookId); $(e.currentTarget).find("#delete_confirm").data("delete-format", bookfomat); + $(e.currentTarget).find("#delete_confirm").data("ajax", $(e.relatedTarget).data("ajax")); }); diff --git a/cps/static/js/table.js b/cps/static/js/table.js index 96901d0b..10f82d17 100644 --- a/cps/static/js/table.js +++ b/cps/static/js/table.js @@ -19,9 +19,9 @@ /* global getPath, confirmDialog */ var selections = []; +var reload = false; $(function() { - $("#books-table").on("check.bs.table check-all.bs.table uncheck.bs.table uncheck-all.bs.table", function (e, rowsAfter, rowsBefore) { var rows = rowsAfter; @@ -117,6 +117,7 @@ $(function() { $("#books-table").bootstrapTable({ sidePagination: "server", + queryParams: queryParams, pagination: true, paginationLoop: false, paginationDetailHAlign: " hidden", @@ -176,7 +177,6 @@ $(function() { }, }); - $("#domain_allow_submit").click(function(event) { event.preventDefault(); $("#domain_add_allow").ajaxForm(); @@ -318,7 +318,6 @@ $(function() { }, url: getPath() + "/ajax/listrestriction/" + type + "/" + userId, rowStyle: function(row) { - // console.log('Reihe :' + row + " Index :" + index); if (row.id.charAt(0) === "a") { return {classes: "bg-primary"}; } else { @@ -387,7 +386,6 @@ $(function() { var target = $(e.relatedTarget).attr('id'); var dataId; $(e.relatedTarget).one('focus', function(e){$(this).blur();}); - //$(e.relatedTarget).blur(); if ($(e.relatedTarget).hasClass("button_head")) { dataId = $('#user-table').bootstrapTable('getSelections').map(a => a.id); } else { @@ -422,6 +420,7 @@ $(function() { $("#user-table").bootstrapTable({ sidePagination: "server", + queryParams: queryParams, pagination: true, paginationLoop: false, paginationDetailHAlign: " hidden", @@ -452,38 +451,13 @@ $(function() { $(this).next().text(elText); }); }, - onLoadSuccess: function () { - var guest = $(".editable[data-name='name'][data-value='Guest']"); - guest.editable("disable"); - $(".editable[data-name='locale'][data-pk='"+guest.data("pk")+"']").editable("disable"); - $("input[data-name='admin_role'][data-pk='"+guest.data("pk")+"']").prop("disabled", true); - $("input[data-name='passwd_role'][data-pk='"+guest.data("pk")+"']").prop("disabled", true); - $("input[data-name='edit_shelf_role'][data-pk='"+guest.data("pk")+"']").prop("disabled", true); - // ToDo: Disable delete - + onPostHeader () { + move_header_elements(); }, - - // eslint-disable-next-line no-unused-vars - /*onEditableSave: function (field, row, oldvalue, $el) { - if (field === "title" || field === "authors") { - $.ajax({ - method:"get", - dataType: "json", - url: window.location.pathname + "/../../ajax/sort_value/" + field + "/" + row.id, - success: function success(data) { - var key = Object.keys(data)[0]; - $("#books-table").bootstrapTable("updateCellByUniqueId", { - id: row.id, - field: key, - value: data[key] - }); - // console.log(data); - } - }); - } - },*/ - // eslint-disable-next-line no-unused-vars - onColumnSwitch: function (field, checked) { + onLoadSuccess: function () { + loadSuccess(); + }, + onColumnSwitch: function () { var visible = $("#user-table").bootstrapTable("getVisibleColumns"); var hidden = $("#user-table").bootstrapTable("getHiddenColumns"); var st = ""; @@ -501,31 +475,10 @@ $(function() { url: window.location.pathname + "/../../ajax/user_table_settings", data: "{" + st + "}", }); + handle_header_buttons(); }, }); - $("#user_delete_selection").click(function() { - $("#user-table").bootstrapTable("uncheckAll"); - }); - - function user_handle (userId) { - $.ajax({ - method:"post", - url: window.location.pathname + "/../../ajax/deleteuser", - data: {"userid":userId} - }); - $.ajax({ - method:"get", - url: window.location.pathname + "/../../ajax/listusers", - async: true, - timeout: 900, - success:function(data) { - $("#user-table").bootstrapTable("load", data); - } - }); - } - - $("#user-table").on("click-cell.bs.table", function (field, value, row, $element) { if (value === "denied_column_value") { ConfirmDialog("btndeluser", "GeneralDeleteModal", $element.id, user_handle); @@ -545,29 +498,39 @@ $(function() { }); var func = $.inArray(e.type, ["check", "check-all"]) > -1 ? "union" : "difference"; selections = window._[func](selections, ids); - if (selections.length < 1) { - $("#user_delete_selection").addClass("disabled"); - $("#user_delete_selection").attr("aria-disabled", true); - $(".check_head").attr("aria-disabled", true); - $(".check_head").attr("disabled", true); - $(".check_head").prop('checked', false); - $(".button_head").attr("aria-disabled", true); - $(".button_head").addClass("disabled"); - $(".header_select").attr("disabled", true); - } else { - $("#user_delete_selection").removeClass("disabled"); - $("#user_delete_selection").attr("aria-disabled", false); - $(".check_head").attr("aria-disabled", false); - $(".check_head").removeAttr("disabled"); - $(".button_head").attr("aria-disabled", false); - $(".button_head").removeClass("disabled"); - $(".header_select").removeAttr("disabled"); - } - + handle_header_buttons(); }); }); - +function handle_header_buttons () { + if (selections.length < 1) { + $("#user_delete_selection").addClass("disabled"); + $("#user_delete_selection").attr("aria-disabled", true); + $(".check_head").attr("aria-disabled", true); + $(".check_head").attr("disabled", true); + $(".check_head").prop('checked', false); + $(".button_head").attr("aria-disabled", true); + $(".button_head").addClass("disabled"); + $(".multi_head").attr("aria-disabled", true); + $(".multi_head").addClass("hidden"); + $(".multi_selector").attr("aria-disabled", true); + $(".multi_selector").attr("disabled", true); + $(".header_select").attr("disabled", true); + } else { + $("#user_delete_selection").removeClass("disabled"); + $("#user_delete_selection").attr("aria-disabled", false); + $(".check_head").attr("aria-disabled", false); + $(".check_head").removeAttr("disabled"); + $(".button_head").attr("aria-disabled", false); + $(".button_head").removeClass("disabled"); + $(".multi_head").attr("aria-disabled", false); + $(".multi_head").removeClass("hidden"); + $(".multi_selector").attr("aria-disabled", false); + $(".multi_selector").removeAttr("disabled"); + $('.multi_selector').selectpicker('refresh'); + $(".header_select").removeAttr("disabled"); + } +} /* Function for deleting domain restrictions */ function TableActions (value, row) { return [ @@ -578,10 +541,6 @@ function TableActions (value, row) { ].join(""); } -function editEntry(param) -{ - console.log(param); -} /* Function for deleting domain restrictions */ function RestrictionActions (value, row) { return [ @@ -600,10 +559,10 @@ function EbookActions (value, row) { ].join(""); } -/* Function for deleting books */ +/* Function for deleting Users */ function UserActions (value, row) { return [ - "
", + "
", "", "
" ].join(""); @@ -618,46 +577,160 @@ function responseHandler(res) { } function singleUserFormatter(value, row) { - return '' + this.buttontext + '' + return '' + this.buttontext + '' } function checkboxFormatter(value, row, index){ if(value & this.column) - return ''; + return ''; else - return ''; + return ''; +} + +/* Do some hiding disabling after user list is loaded */ +function loadSuccess() { + var guest = $(".editable[data-name='name'][data-value='Guest']"); + guest.editable("disable"); + $("input:radio.check_head:checked").each(function() { + $(this).prop('checked', false); + }); + $(".header_select").each(function() { + $(this).prop("selectedIndex", 0); + }); + $(".header_select").each(function() { + $(this).prop("selectedIndex", 0); + }); + $('.multi_selector').selectpicker('deselectAll'); + $('.multi_selector').selectpicker('refresh'); + $(".editable[data-name='locale'][data-pk='"+guest.data("pk")+"']").editable("disable"); + $(".editable[data-name='locale'][data-pk='"+guest.data("pk")+"']").hide(); + $("input[data-name='admin_role'][data-pk='"+guest.data("pk")+"']").prop("disabled", true); + $("input[data-name='passwd_role'][data-pk='"+guest.data("pk")+"']").prop("disabled", true); + $("input[data-name='edit_shelf_role'][data-pk='"+guest.data("pk")+"']").prop("disabled", true); + $("input[data-name='sidebar_read_and_unread'][data-pk='"+guest.data("pk")+"']").prop("disabled", true); + $(".user-remove[data-pk='"+guest.data("pk")+"']").hide(); +} + +function move_header_elements() { + $(".header_select").each(function () { + var item = $(this).parent(); + var parent = item.parent().parent(); + if (parent.prop('nodeName') === "TH") { + item.prependTo(parent); + } + }); + $(".form-check").each(function () { + var item = $(this).parent(); + var parent = item.parent().parent(); + if (parent.prop('nodeName') === "TH") { + item.prependTo(parent); + } + }); + $(".multi_select").each(function () { + var item = $(this); + var parent = item.parent().parent(); + if (parent.prop('nodeName') === "TH") { + item.prependTo(parent); + item.addClass("myselect"); + } + }); + $(".multi_selector").selectpicker(); + + if (! $._data($(".multi_head").get(0), "events") ) { + // Functions have to be here, otherwise the callbacks are not fired if visible columns are changed + $(".multi_head").on("click", function () { + var val = $(this).data("set"); + var field = $(this).data("name"); + var result = $('#user-table').bootstrapTable('getSelections').map(a => a.id); + var values = $("#" + field).val(); + confirmDialog( + "restrictions", + "GeneralChangeModal", + 0, + function () { + $.ajax({ + method: "post", + url: window.location.pathname + "/../../ajax/editlistusers/" + field, + data: {"pk": result, "value": values, "action": val}, + success: function (data) { + handleListServerResponse(data); + }, + error: function (data) { + handleListServerResponse([{type: "danger", message: data.responseText}]) + }, + }); + } + ); + }); + } + + $("#user_delete_selection").click(function () { + $("#user-table").bootstrapTable("uncheckAll"); + }); + $("#select_locale").on("change", function () { + selectHeader(this, "locale"); + }); + $("#select_default_language").on("change", function () { + selectHeader(this, "default_language"); + }); + + if (! $._data($(".check_head").get(0), "events") ) { + $(".check_head").on("change", function () { + var val = $(this).data("set"); + var name = $(this).data("name"); + var data = $(this).data("val"); + checkboxHeader(val, name, data); + }); + } + if (! $._data($(".button_head").get(0), "events") ) { + $(".button_head").on("click", function () { + var result = $('#user-table').bootstrapTable('getSelections').map(a => a.id); + confirmDialog( + "btndeluser", + "GeneralDeleteModal", + 0, + function () { + $.ajax({ + method: "post", + url: window.location.pathname + "/../../ajax/deleteuser", + data: {"userid": result}, + success: function (data) { + selections = selections.filter((el) => !result.includes(el)); + handleListServerResponse(data); + }, + error: function (data) { + handleListServerResponse([{type: "danger", message: data.responseText}]) + }, + }); + } + ); + }); + } +} + +function handleListServerResponse (data) { + $("#flash_success").remove(); + $("#flash_danger").remove(); + if (!jQuery.isEmptyObject(data)) { + data.forEach(function(item) { + $(".navbar").after('
' + + '
' + item.message + '
' + + '
'); + }); + } + $("#user-table").bootstrapTable("refresh"); } function checkboxChange(checkbox, userId, field, field_index) { $.ajax({ - method:"post", + method: "post", url: window.location.pathname + "/../../ajax/editlistusers/" + field, - data: {"pk":userId, "field_index":field_index, "value": checkbox.checked} - /*
- -
*/ - /*
Text to show
*/ + data: {"pk": userId, "field_index": field_index, "value": checkbox.checked}, + error: function(data) { + handleListServerResponse([{type:"danger", message:data.responseText}]) + }, + success: handleListServerResponse }); - $.ajax({ - method:"get", - url: window.location.pathname + "/../../ajax/listusers", - async: true, - timeout: 900, - success:function(data) { - $("#user-table").bootstrapTable("load", data); - } - }); -} -function deactivateHeaderButtons(e) { - $("#user_delete_selection").addClass("disabled"); - $("#user_delete_selection").attr("aria-disabled", true); - $(".check_head").attr("aria-disabled", true); - $(".check_head").attr("disabled", true); - $(".check_head").prop('checked', false); - $(".button_head").attr("aria-disabled", true); - $(".button_head").addClass("disabled"); - $(".header_select").attr("disabled", true); } function selectHeader(element, field) { @@ -668,19 +741,13 @@ function selectHeader(element, field) { method: "post", url: window.location.pathname + "/../../ajax/editlistusers/" + field, data: {"pk": result, "value": element.value}, - success: function () { - $.ajax({ - method: "get", - url: window.location.pathname + "/../../ajax/listusers", - async: true, - timeout: 900, - success: function (data) { - $("#user-table").bootstrapTable("load", data); - deactivateHeaderButtons(); - } - }); - } + error: function (data) { + handleListServerResponse([{type:"danger", message:data.responseText}]) + }, + success: handleListServerResponse, }); + },function() { + $(element).prop("selectedIndex", 0); }); } } @@ -692,46 +759,58 @@ function checkboxHeader(CheckboxState, field, field_index) { method: "post", url: window.location.pathname + "/../../ajax/editlistusers/" + field, data: {"pk": result, "field_index": field_index, "value": CheckboxState}, - success: function () { - $.ajax({ - method: "get", - url: window.location.pathname + "/../../ajax/listusers", - async: true, - timeout: 900, - success: function (data) { - $("#user-table").bootstrapTable("load", data); - $("#user_delete_selection").addClass("disabled"); - $("#user_delete_selection").attr("aria-disabled", true); - $(".check_head").attr("aria-disabled", true); - $(".check_head").attr("disabled", true); - $(".check_head").prop('checked', false); - $(".button_head").attr("aria-disabled", true); - $(".button_head").addClass("disabled"); - $(".header_select").attr("disabled", true); - } - }); - } + error: function (data) { + handleListServerResponse([{type:"danger", message:data.responseText}]) + }, + success: function (data) { + handleListServerResponse (data, true) + }, + }); + },function() { + $("input:radio.check_head:checked").each(function() { + $(this).prop('checked', false); }); }); } +function deleteUser(a,id){ + confirmDialog( + "btndeluser", + "GeneralDeleteModal", + 0, + function() { + $.ajax({ + method:"post", + url: window.location.pathname + "/../../ajax/deleteuser", + data: {"userid":id}, + success: function (data) { + userId = parseInt(id, 10); + selections = selections.filter(item => item !== userId); + handleListServerResponse(data); + }, + error: function (data) { + handleListServerResponse([{type:"danger", message:data.responseText}]) + }, + }); + } + ); +} + +function queryParams(params) +{ + params.state = JSON.stringify(selections); + return params; +} + +function storeLocation() { + window.sessionStorage.setItem("back", window.location.pathname); +} + function user_handle (userId) { $.ajax({ method:"post", url: window.location.pathname + "/../../ajax/deleteuser", data: {"userid":userId} }); - $.ajax({ - method:"get", - url: window.location.pathname + "/../../ajax/listusers", - async: true, - timeout: 900, - success:function(data) { - $("#user-table").bootstrapTable("load", data); - } - }); -} - -function test(){ - console.log("hello"); + $("#user-table").bootstrapTable("refresh"); } diff --git a/cps/tasks/mail.py b/cps/tasks/mail.py index 8d2d4188..f19231ec 100644 --- a/cps/tasks/mail.py +++ b/cps/tasks/mail.py @@ -134,9 +134,9 @@ class TaskEmail(CalibreTask): return message def run(self, worker_thread): - # create MIME message - msg = self.prepare_message() try: + # create MIME message + msg = self.prepare_message() if self.settings['mail_server_type'] == 0: self.send_standard_email(msg) else: @@ -173,6 +173,7 @@ class TaskEmail(CalibreTask): org_smtpstderr = smtplib.stderr smtplib.stderr = logger.StderrLogger('worker.smtp') + log.debug("Start sending email") if use_ssl == 2: self.asyncSMTP = EmailSSL(self.settings["mail_server"], self.settings["mail_port"], timeout=timeout) @@ -195,11 +196,11 @@ class TaskEmail(CalibreTask): self.asyncSMTP.sendmail(self.settings["mail_from"], self.recipent, fp.getvalue()) self.asyncSMTP.quit() self._handleSuccess() + log.debug("Email send successfully") if sys.version_info < (3, 0): smtplib.stderr = org_smtpstderr - def send_gmail_email(self, message): return gmail.send_messsage(self.settings.get('mail_gmail_token', None), message) @@ -258,3 +259,6 @@ class TaskEmail(CalibreTask): @property def name(self): return "Email" + + def __str__(self): + return "{}, {}".format(self.name, self.subject) diff --git a/cps/templates/admin.html b/cps/templates/admin.html index 5226151e..c06b7e72 100644 --- a/cps/templates/admin.html +++ b/cps/templates/admin.html @@ -26,7 +26,7 @@ {% for user in allUser %} {% if not user.role_anonymous() or config.config_anonbrowse %} - {{user.name}} + {{user.name}} {{user.email}} {{user.kindle_mail}} {{user.downloads.count()}} diff --git a/cps/templates/book_table.html b/cps/templates/book_table.html index 6a31c235..bb167ad3 100644 --- a/cps/templates/book_table.html +++ b/cps/templates/book_table.html @@ -1,6 +1,7 @@ {% extends "layout.html" %} -{% macro text_table_row(parameter, edit_text, show_text, validate) -%} - {% endif %} - {{ text_table_row('title', _('Enter Title'),_('Title'), true) }} - {{ text_table_row('sort', _('Enter Title Sort'),_('Title Sort'), false) }} - {{ text_table_row('author_sort', _('Enter Author Sort'),_('Author Sort'), false) }} - {{ text_table_row('authors', _('Enter Authors'),_('Authors'), true) }} - {{ text_table_row('tags', _('Enter Categories'),_('Categories'), false) }} - {{ text_table_row('series', _('Enter Series'),_('Series'), false) }} + {{ text_table_row('title', _('Enter Title'),_('Title'), true, true) }} + {{ text_table_row('sort', _('Enter Title Sort'),_('Title Sort'), false, true) }} + {{ text_table_row('author_sort', _('Enter Author Sort'),_('Author Sort'), false, true) }} + {{ text_table_row('authors', _('Enter Authors'),_('Authors'), true, true) }} + {{ text_table_row('tags', _('Enter Categories'),_('Categories'), false, true) }} + {{ text_table_row('series', _('Enter Series'),_('Series'), false, true) }} {{_('Series Index')}} - {{ text_table_row('languages', _('Enter Languages'),_('Languages'), false) }} + {{ text_table_row('languages', _('Enter Languages'),_('Languages'), false, true) }} - {{ text_table_row('publishers', _('Enter Publishers'),_('Publishers'), false) }} + {{ text_table_row('publishers', _('Enter Publishers'),_('Publishers'), false, true) }} {% if g.user.role_delete_books() and g.user.role_edit()%} {{_('Delete')}} {% endif %} diff --git a/cps/templates/email_edit.html b/cps/templates/email_edit.html index 8b92a248..59978ea9 100644 --- a/cps/templates/email_edit.html +++ b/cps/templates/email_edit.html @@ -12,7 +12,7 @@
@@ -20,7 +20,7 @@ {% if content.mail_gmail_token == {} %} {% else %} - + {% endif %}
@@ -66,7 +66,7 @@ {% if feature_support['gmail'] %} {% endif %} - {{_('Back')}} + {{_('Back')}} {% if g.allow_registration %}
diff --git a/cps/templates/layout.html b/cps/templates/layout.html index d4e0800e..6e68204c 100644 --- a/cps/templates/layout.html +++ b/cps/templates/layout.html @@ -92,7 +92,7 @@ {% for message in get_flashed_messages(with_categories=True) %} {%if message[0] == "error" %}
-
{{ message[1] }}
+
{{ message[1] }}
{%endif%} {%if message[0] == "info" %} diff --git a/cps/templates/readcbr.html b/cps/templates/readcbr.html index 35943b34..5723947e 100644 --- a/cps/templates/readcbr.html +++ b/cps/templates/readcbr.html @@ -60,12 +60,12 @@ Fullscreen
-
+
Loading...
-
+
diff --git a/cps/templates/user_edit.html b/cps/templates/user_edit.html index e2b184fc..846ad978 100644 --- a/cps/templates/user_edit.html +++ b/cps/templates/user_edit.html @@ -129,7 +129,7 @@
{{_('Save')}}
{% if not profile %} - {{_('Cancel')}} +
{{_('Cancel')}}
{% endif %} {% if g.user and g.user.role_admin() and not profile and not new_user and not content.role_anonymous() %}
{{_('Delete User')}}
diff --git a/cps/templates/user_table.html b/cps/templates/user_table.html index e7ddf156..93c1e5ce 100644 --- a/cps/templates/user_table.html +++ b/cps/templates/user_table.html @@ -1,5 +1,5 @@ {% extends "layout.html" %} -{% macro user_table_row(parameter, edit_text, show_text, validate, button=False, id=0) -%} +{% macro user_table_row(parameter, edit_text, show_text, validate, elements=False) -%} - {% if button %} -
+ {% if elements %} +
+ +
+
+ +
+
+ +
+
+
{% endif %} {{ show_text }} @@ -23,15 +37,17 @@ data-visible="{{element.get(array_field)}}" data-column="{{value.get(array_field)}}" data-formatter="checkboxFormatter"> -
- +
+
+ + {{_('Deny')}} + +
+
+ + {{_('Allow')}} +
-
-
{{show_text}} @@ -48,14 +64,14 @@ data-editable-source={{url}} {% if validate %}data-edit-validate="{{ _('This Field is Required') }}"{% endif %}>
- + {% for language in languages %} {% endfor %} -

- +
{{ show_text }} {%- endmacro %} @@ -71,13 +87,13 @@ data-editable-source={{url}} {% if validate %}data-edit-validate="{{ _('This Field is Required') }}"{% endif %}>
- {% for translation in translations %} {% endfor %} -

+
{{ show_text }} {%- endmacro %} @@ -86,6 +102,7 @@ {% block header %} + {% endblock %} {% block body %}

{{_(title)}}

@@ -106,20 +123,21 @@ {{ user_table_row('kindle_mail', _('Enter Kindle E-mail Address'), _('Kindle E-mail'), false) }} {{ user_select_translations('locale', url_for('admin.table_get_locale'), _('Locale'), true) }} {{ user_select_languages('default_language', url_for('admin.table_get_default_lang'), _('Visible Book Languages'), true) }} - {{ user_table_row('denied_tags', _("Edit Denied Tags"), _("Denied Tags"), false, true, 0) }} - {{ user_table_row('allowed_tags', _("Edit Allowed Tags"), _("Allowed Tags"), false, true, 1) }} - {{ user_table_row('allowed_column_value', _("Edit Allowed Column Values"), _("Allowed Column Values"), false, true, 2) }} - {{ user_table_row('denied_column_value', _("Edit Denied Column Values"), _("Denied Columns Values"), false, true, 3) }} + {{ user_table_row('denied_tags', _("Edit Denied Tags"), _("Denied Tags"), false, tags) }} + {{ user_table_row('allowed_tags', _("Edit Allowed Tags"), _("Allowed Tags"), false, tags) }} + {{ user_table_row('allowed_column_value', _("Edit Allowed Column Values"), _("Allowed Column Values"), false, custom_values) }} + {{ user_table_row('denied_column_value', _("Edit Denied Column Values"), _("Denied Columns Values"), false, custom_values) }} {{ user_checkbox_row("role", "admin_role", _('Admin'), visiblility, all_roles)}} - {{ user_checkbox_row("role", "download_role",_('Upload'), visiblility, all_roles)}} - {{ user_checkbox_row("role", "upload_role", _('Download'), visiblility, all_roles)}} - {{ user_checkbox_row("role", "edit_role", _('Edit'), visiblility, all_roles)}} {{ user_checkbox_row("role", "passwd_role", _('Change Password'), visiblility, all_roles)}} - {{ user_checkbox_row("role", "edit_shelf_role", _('Edit Public Shelfs'), visiblility, all_roles)}} - {{ user_checkbox_row("role", "delete_role", _('Delete'), visiblility, all_roles)}} + {{ user_checkbox_row("role", "upload_role",_('Upload'), visiblility, all_roles)}} + {{ user_checkbox_row("role", "download_role", _('Download'), visiblility, all_roles)}} {{ user_checkbox_row("role", "viewer_role", _('View'), visiblility, all_roles)}} + {{ user_checkbox_row("role", "edit_role", _('Edit'), visiblility, all_roles)}} + {{ user_checkbox_row("role", "delete_role", _('Delete'), visiblility, all_roles)}} + {{ user_checkbox_row("role", "edit_shelf_role", _('Edit Public Shelfs'), visiblility, all_roles)}} {{ user_checkbox_row("sidebar_view", "detail_random", _('Show Random Books in Detail View'), visiblility, sidebar_settings)}} {{ user_checkbox_row("sidebar_view", "sidebar_language", _('Show language selection'), visiblility, sidebar_settings)}} + {{ user_checkbox_row("sidebar_view", "sidebar_read_and_unread", _('Show read/unread selection'), visiblility, sidebar_settings)}} {{ user_checkbox_row("sidebar_view", "sidebar_series", _('Show series selection'), visiblility, sidebar_settings)}} {{ user_checkbox_row("sidebar_view", "sidebar_category", _('Show category selection'), visiblility, sidebar_settings)}} {{ user_checkbox_row("sidebar_view", "sidebar_random", _('Show random books'), visiblility, sidebar_settings)}} @@ -136,6 +154,9 @@ + {% endblock %} {% block modal %} {{ delete_confirm_modal() }} @@ -146,7 +167,7 @@ + - {% endblock %} + diff --git a/cps/translations/cs/LC_MESSAGES/messages.mo b/cps/translations/cs/LC_MESSAGES/messages.mo index ba12cdde..24edf010 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 c37925e1..82adc54c 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: 2021-03-27 12:16+0100\n" +"POT-Creation-Date: 2021-05-01 16:33+0200\n" "PO-Revision-Date: 2020-06-09 21:11+0100\n" "Last-Translator: Lukas Heroudek \n" "Language: cs_CZ\n" @@ -15,7 +15,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" +"Generated-By: Babel 2.8.0\n" #: cps/about.py:43 msgid "installed" @@ -29,310 +29,405 @@ msgstr "není nainstalováno" msgid "Statistics" msgstr "Statistika" -#: cps/admin.py:149 +#: cps/admin.py:151 msgid "Server restarted, please reload page" msgstr "Server restartován, znovu načtěte stránku" -#: cps/admin.py:151 +#: cps/admin.py:153 msgid "Performing shutdown of server, please close window" msgstr "Vypínám server, zavřete okno" -#: cps/admin.py:159 +#: cps/admin.py:161 msgid "Reconnect successful" msgstr "Úspěšně obnovené připojení" -#: cps/admin.py:162 +#: cps/admin.py:164 msgid "Unknown command" msgstr "Neznámý příkaz" -#: cps/admin.py:172 cps/editbooks.py:662 cps/editbooks.py:674 -#: cps/editbooks.py:777 cps/editbooks.py:779 cps/editbooks.py:806 -#: cps/editbooks.py:822 cps/updater.py:521 cps/uploader.py:94 +#: cps/admin.py:174 cps/editbooks.py:668 cps/editbooks.py:682 +#: cps/editbooks.py:821 cps/editbooks.py:823 cps/editbooks.py:850 +#: cps/editbooks.py:866 cps/updater.py:555 cps/uploader.py:94 #: cps/uploader.py:104 msgid "Unknown" msgstr "Neznámý" -#: cps/admin.py:193 +#: cps/admin.py:195 msgid "Admin page" msgstr "Stránka správce" -#: cps/admin.py:215 +#: cps/admin.py:217 msgid "UI Configuration" msgstr "Konfigurace uživatelského rozhraní" -#: cps/admin.py:247 cps/admin.py:936 +#: cps/admin.py:249 cps/templates/admin.html:46 +#, fuzzy +msgid "Edit Users" +msgstr "Uživatel admin" + +#: cps/admin.py:290 +#, fuzzy +msgid "all" +msgstr "Vše" + +#: cps/admin.py:315 cps/admin.py:1486 +msgid "User not found" +msgstr "Uživatel nenalezen" + +#: cps/admin.py:329 +msgid "{} users deleted successfully" +msgstr "" + +#: cps/admin.py:351 cps/templates/user_edit.html:44 +#: cps/templates/user_table.html:69 +msgid "Show All" +msgstr "Zobrazit vše" + +#: cps/admin.py:372 cps/admin.py:378 +msgid "Malformed request" +msgstr "" + +#: cps/admin.py:390 cps/admin.py:1368 +msgid "Guest Name can't be changed" +msgstr "" + +#: cps/admin.py:400 +msgid "Guest can't have this role" +msgstr "" + +#: cps/admin.py:412 cps/admin.py:1333 +msgid "No admin user remaining, can't remove admin role" +msgstr "Nezbývá žádný správce, nelze odebrat roli správce" + +#: cps/admin.py:416 cps/admin.py:430 +msgid "Value has to be true or false" +msgstr "" + +#: cps/admin.py:418 +msgid "Invalid role" +msgstr "" + +#: cps/admin.py:422 +msgid "Guest can't have this view" +msgstr "" + +#: cps/admin.py:432 +msgid "Invalid view" +msgstr "" + +#: cps/admin.py:435 +msgid "Guest's Locale is determined automatically and can't be set" +msgstr "" + +#: cps/admin.py:439 +msgid "No Valid Locale Given" +msgstr "" + +#: cps/admin.py:450 +msgid "No Valid Book Language Given" +msgstr "" + +#: cps/admin.py:452 +msgid "Parameter not found" +msgstr "" + +#: cps/admin.py:506 cps/admin.py:1219 msgid "Calibre-Web configuration updated" msgstr "Konfigurace Calibre-Web aktualizována" -#: cps/admin.py:258 +#: cps/admin.py:518 msgid "Do you really want to delete the Kobo Token?" msgstr "Opravdu chcete odstranit Kobo token?" -#: cps/admin.py:260 +#: cps/admin.py:520 msgid "Do you really want to delete this domain?" msgstr "" -#: cps/admin.py:262 +#: cps/admin.py:522 msgid "Do you really want to delete this user?" msgstr "" -#: cps/admin.py:264 cps/templates/shelf.html:90 +#: cps/admin.py:524 cps/templates/shelf.html:90 msgid "Are you sure you want to delete this shelf?" msgstr "Jste si jisti, že chcete odstranit tuto polici?" -#: cps/admin.py:510 cps/admin.py:516 cps/admin.py:526 cps/admin.py:536 -#: cps/templates/modal_dialogs.html:29 +#: cps/admin.py:526 +#, fuzzy +msgid "Are you sure you want to change locales of selected user(s)?" +msgstr "Jste si jisti, že chcete odstranit tuto polici?" + +#: cps/admin.py:528 +msgid "Are you sure you want to change visible book languages for selected user(s)?" +msgstr "" + +#: cps/admin.py:530 +msgid "Are you sure you want to change the selected role for the selected user(s)?" +msgstr "" + +#: cps/admin.py:532 +#, fuzzy +msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" +msgstr "Jste si jisti, že chcete odstranit tuto polici?" + +#: cps/admin.py:534 +msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:683 +msgid "Tag not found" +msgstr "" + +#: cps/admin.py:695 +msgid "Invalid Action" +msgstr "" + +#: cps/admin.py:800 cps/admin.py:806 cps/admin.py:816 cps/admin.py:826 +#: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:43 msgid "Deny" msgstr "Zakázat" -#: cps/admin.py:512 cps/admin.py:518 cps/admin.py:528 cps/admin.py:538 -#: cps/templates/modal_dialogs.html:28 +#: cps/admin.py:802 cps/admin.py:808 cps/admin.py:818 cps/admin.py:828 +#: cps/templates/modal_dialogs.html:28 cps/templates/user_table.html:48 msgid "Allow" msgstr "Povolit" -#: cps/admin.py:681 +#: cps/admin.py:971 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json není nakonfigurováno pro webové aplikace" -#: cps/admin.py:723 +#: cps/admin.py:1016 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "Umístění zápisového souboru není platné. Určete prosím platnou polohu" -#: cps/admin.py:729 +#: cps/admin.py:1022 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "Umístění zápisového souboru pro přístup není platné. Určete prosím platnou polohu" -#: cps/admin.py:738 +#: cps/admin.py:1052 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "Prosím zadejte LDAP poskytovatele, port, DN a Identifikátor objektu uživatele" -#: cps/admin.py:752 cps/admin.py:760 +#: cps/admin.py:1067 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "Filtr objektů skupiny LDAP musí mít jeden “%s” formátový identifikátor" -#: cps/admin.py:755 cps/admin.py:763 +#: cps/admin.py:1070 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "Filtr objektů skupiny LDAP má nesrovnatelnou závorku" -#: cps/admin.py:768 +#: cps/admin.py:1075 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "Filtr uživatelských objektů LDAP musí mít jeden “%s” formátový identifikátor" -#: cps/admin.py:771 +#: cps/admin.py:1078 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "Filtr uživatelských objektů LDAP má nesrovnatelnou závorku" -#: cps/admin.py:779 +#: cps/admin.py:1086 #, python-format msgid "LDAP Member User Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:782 +#: cps/admin.py:1089 msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:790 +#: cps/admin.py:1097 msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:841 +#: cps/admin.py:1123 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "Umístění souboru klíčů není platné, zadejte prosím správnou cestu" -#: cps/admin.py:847 +#: cps/admin.py:1129 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "Umístění certifikátu není platné, zadejte prosím správnou cestu" -#: cps/admin.py:917 cps/admin.py:1024 cps/admin.py:1047 cps/admin.py:1168 -#: cps/shelf.py:102 cps/shelf.py:159 cps/shelf.py:200 cps/shelf.py:261 -#: cps/shelf.py:314 cps/shelf.py:348 cps/shelf.py:418 +#: cps/admin.py:1200 cps/admin.py:1303 cps/admin.py:1395 cps/admin.py:1461 +#: cps/shelf.py:103 cps/shelf.py:163 cps/shelf.py:206 cps/shelf.py:269 +#: cps/shelf.py:325 cps/shelf.py:360 cps/shelf.py:431 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:929 +#: cps/admin.py:1212 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "Umístění databáze není platné, opravte prosím cestu" -#: cps/admin.py:933 +#: cps/admin.py:1216 msgid "DB is not Writeable" msgstr "Databáze není zapisovatelná" -#: cps/admin.py:972 +#: cps/admin.py:1256 msgid "Basic Configuration" msgstr "Základní konfigurace" -#: cps/admin.py:987 cps/web.py:1358 +#: cps/admin.py:1272 cps/web.py:1417 msgid "Please fill out all fields!" msgstr "Vyplňte všechna pole!" -#: cps/admin.py:990 cps/admin.py:1002 cps/admin.py:1008 cps/admin.py:1138 -msgid "Add new user" -msgstr "Přidat nového uživatele" - -#: cps/admin.py:999 cps/web.py:1496 +#: cps/admin.py:1280 msgid "E-mail is not from valid domain" msgstr "E-mail není z platné domény" -#: cps/admin.py:1006 cps/admin.py:1021 -msgid "Found an existing account for this e-mail address or nickname." -msgstr "Byl nalezen existující účet pro tuto e-mailovou adresu nebo přezdívku." +#: cps/admin.py:1284 cps/admin.py:1414 +msgid "Add new user" +msgstr "Přidat nového uživatele" -#: cps/admin.py:1017 +#: cps/admin.py:1293 #, python-format msgid "User '%(user)s' created" msgstr "Uživatel '%(user)s' vytvořen" -#: cps/admin.py:1031 +#: cps/admin.py:1299 +#, fuzzy +msgid "Found an existing account for this e-mail address or name." +msgstr "Byl nalezen existující účet pro tuto e-mailovou adresu nebo přezdívku." + +#: cps/admin.py:1312 #, python-format msgid "User '%(nick)s' deleted" msgstr "Uživatel '%(nick)s' smazán" -#: cps/admin.py:1034 +#: cps/admin.py:1314 cps/admin.py:1315 +msgid "Can't delete Guest User" +msgstr "" + +#: cps/admin.py:1318 msgid "No admin user remaining, can't delete user" msgstr "Nezbývá žádný správce, nemůžete jej odstranit" -#: cps/admin.py:1041 -#, python-format -msgid "User '%(nick)s' updated" -msgstr "Uživatel '%(nick)s' aktualizován" - -#: cps/admin.py:1044 -msgid "An unknown error occured." -msgstr "Došlo k neznámé chybě." - -#: cps/admin.py:1056 -msgid "No admin user remaining, can't remove admin role" -msgstr "Nezbývá žádný správce, nelze odebrat roli správce" - -#: cps/admin.py:1092 cps/web.py:1554 -msgid "Found an existing account for this e-mail address." -msgstr "Byl nalezen existující účet pro tuto e-mailovou adresu." - -#: cps/admin.py:1101 cps/admin.py:1115 cps/admin.py:1209 cps/web.py:1516 +#: cps/admin.py:1383 cps/admin.py:1504 #, python-format msgid "Edit User %(nick)s" msgstr "Upravit uživatele %(nick)s" -#: cps/admin.py:1107 cps/web.py:1509 -msgid "This username is already taken" -msgstr "Zadané uživatelské jméno je již použito" +#: cps/admin.py:1387 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "Uživatel '%(nick)s' aktualizován" -#: cps/admin.py:1147 cps/templates/admin.html:78 +#: cps/admin.py:1391 +#, fuzzy +msgid "An unknown error occurred." +msgstr "Došlo k neznámé chybě." + +#: cps/admin.py:1423 cps/templates/admin.html:94 msgid "Edit E-mail Server Settings" msgstr "Změnit SMTP nastavení" -#: cps/admin.py:1175 +#: cps/admin.py:1442 +msgid "G-Mail Account Verification Successful" +msgstr "" + +#: cps/admin.py:1468 #, python-format msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" msgstr "" -#: cps/admin.py:1178 +#: cps/admin.py:1471 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Při odesílání zkušebního e-mailu došlo k chybě: %(res)s" -#: cps/admin.py:1180 +#: cps/admin.py:1473 msgid "Please configure your e-mail address first..." msgstr "Prvně nastavte svou e-mailovou adresu..." -#: cps/admin.py:1182 +#: cps/admin.py:1475 msgid "E-mail server settings updated" msgstr "Nastavení e-mailového serveru aktualizováno" -#: cps/admin.py:1193 -msgid "User not found" -msgstr "Uživatel nenalezen" - -#: cps/admin.py:1220 +#: cps/admin.py:1516 #, python-format msgid "Password for user %(user)s reset" msgstr "Heslo pro uživatele %(user)s resetováno" -#: cps/admin.py:1223 cps/web.py:1388 cps/web.py:1452 +#: cps/admin.py:1519 cps/web.py:1442 cps/web.py:1503 msgid "An unknown error occurred. Please try again later." msgstr "Neznámá chyba. Opakujte prosím později." -#: cps/admin.py:1226 cps/web.py:1320 +#: cps/admin.py:1522 cps/web.py:1382 msgid "Please configure the SMTP mail settings first..." msgstr "Nejprve nakonfigurujte nastavení pošty SMTP..." -#: cps/admin.py:1237 +#: cps/admin.py:1533 msgid "Logfile viewer" msgstr "Prohlížeč log souborů" -#: cps/admin.py:1303 +#: cps/admin.py:1599 msgid "Requesting update package" msgstr "Požadování balíčku aktualizace" -#: cps/admin.py:1304 +#: cps/admin.py:1600 msgid "Downloading update package" msgstr "Stahování balíčku aktualizace" -#: cps/admin.py:1305 +#: cps/admin.py:1601 msgid "Unzipping update package" msgstr "Rozbalování balíčku aktualizace" -#: cps/admin.py:1306 +#: cps/admin.py:1602 msgid "Replacing files" msgstr "Nahrazování souborů" -#: cps/admin.py:1307 +#: cps/admin.py:1603 msgid "Database connections are closed" msgstr "Databázová připojení jsou uzavřena" -#: cps/admin.py:1308 +#: cps/admin.py:1604 msgid "Stopping server" msgstr "Zastavuji server" -#: cps/admin.py:1309 +#: cps/admin.py:1605 msgid "Update finished, please press okay and reload page" msgstr "Aktualizace dokončena, klepněte na tlačítko OK a znovu načtěte stránku" -#: cps/admin.py:1310 cps/admin.py:1311 cps/admin.py:1312 cps/admin.py:1313 -#: cps/admin.py:1314 +#: cps/admin.py:1606 cps/admin.py:1607 cps/admin.py:1608 cps/admin.py:1609 +#: cps/admin.py:1610 msgid "Update failed:" msgstr "Aktualizace selhala:" -#: cps/admin.py:1310 cps/updater.py:337 cps/updater.py:532 cps/updater.py:534 +#: cps/admin.py:1606 cps/updater.py:356 cps/updater.py:566 cps/updater.py:568 msgid "HTTP Error" msgstr "HTTP chyba" -#: cps/admin.py:1311 cps/updater.py:339 cps/updater.py:536 +#: cps/admin.py:1607 cps/updater.py:358 cps/updater.py:570 msgid "Connection error" msgstr "Chyba připojení" -#: cps/admin.py:1312 cps/updater.py:341 cps/updater.py:538 +#: cps/admin.py:1608 cps/updater.py:360 cps/updater.py:572 msgid "Timeout while establishing connection" msgstr "Vypršel časový limit při navazování spojení" -#: cps/admin.py:1313 cps/updater.py:343 cps/updater.py:540 +#: cps/admin.py:1609 cps/updater.py:362 cps/updater.py:574 msgid "General error" msgstr "Všeobecná chyba" -#: cps/admin.py:1314 +#: cps/admin.py:1610 msgid "Update File Could Not be Saved in Temp Dir" msgstr "Aktualizační soubor nemohl být uložen do Temp Dir" -#: cps/admin.py:1376 +#: cps/admin.py:1671 msgid "Failed to Create at Least One LDAP User" msgstr "Nepodařilo se vytvořit nejméně jednoho uživatele LDAP" -#: cps/admin.py:1389 +#: cps/admin.py:1684 #, python-format msgid "Error: %(ldaperror)s" msgstr "Chyba: %(ldaperror)s" -#: cps/admin.py:1393 +#: cps/admin.py:1688 msgid "Error: No user returned in response of LDAP server" msgstr "Chyba: Žádná reakce od uživatele LDAP serveru" -#: cps/admin.py:1426 +#: cps/admin.py:1721 msgid "At Least One LDAP User Not Found in Database" msgstr "Nejméně jeden uživatel LDAP nenalezen v databázi" -#: cps/admin.py:1428 +#: cps/admin.py:1723 msgid "{} User Successfully Imported" msgstr "" @@ -344,98 +439,98 @@ msgstr "není nakonfigurováno" msgid "Execution permissions missing" msgstr "Chybí povolení k exekuci" -#: cps/editbooks.py:267 cps/editbooks.py:269 +#: cps/editbooks.py:294 cps/editbooks.py:296 msgid "Book Format Successfully Deleted" msgstr "Formát knihy úspěšně smazán" -#: cps/editbooks.py:276 cps/editbooks.py:278 +#: cps/editbooks.py:303 cps/editbooks.py:305 msgid "Book Successfully Deleted" msgstr "Kniha úspěšně smazána" -#: cps/editbooks.py:325 cps/editbooks.py:646 cps/web.py:1598 cps/web.py:1634 -#: cps/web.py:1705 +#: cps/editbooks.py:361 cps/editbooks.py:724 cps/web.py:1627 cps/web.py:1663 +#: cps/web.py:1734 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Chyba otevírání eknihy. Soubor neexistuje nebo není přístupný" -#: cps/editbooks.py:359 +#: cps/editbooks.py:395 msgid "edit metadata" msgstr "upravit metadata" -#: cps/editbooks.py:434 +#: cps/editbooks.py:473 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s není platným jazykem" -#: cps/editbooks.py:556 cps/editbooks.py:905 +#: cps/editbooks.py:595 cps/editbooks.py:936 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Soubor s příponou '%(ext)s' nelze odeslat na tento server" -#: cps/editbooks.py:560 cps/editbooks.py:909 +#: cps/editbooks.py:599 cps/editbooks.py:940 msgid "File to be uploaded must have an extension" msgstr "Soubor, který má být odeslán musí mít příponu" -#: cps/editbooks.py:572 +#: cps/editbooks.py:611 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Nepodařilo se vytvořit cestu %(path)s (oprávnění odepřeno)." -#: cps/editbooks.py:577 +#: cps/editbooks.py:616 #, python-format msgid "Failed to store file %(file)s." msgstr "Uložení souboru %(file)s se nezdařilo." -#: cps/editbooks.py:595 cps/editbooks.py:972 cps/web.py:1559 +#: cps/editbooks.py:634 cps/editbooks.py:1027 cps/web.py:1588 #, python-format msgid "Database error: %(error)s." msgstr "Chyba databáze: %(error)s." -#: cps/editbooks.py:599 +#: cps/editbooks.py:638 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Formát souboru %(ext)s přidán do %(book)s" -#: cps/editbooks.py:726 +#: cps/editbooks.py:775 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:763 +#: cps/editbooks.py:807 msgid "Metadata successfully updated" msgstr "Metadata úspěšně aktualizována" -#: cps/editbooks.py:772 +#: cps/editbooks.py:816 msgid "Error editing book, please check logfile for details" msgstr "Chyba při úpravách knihy, zkontrolujte prosím log pro podrobnosti" -#: cps/editbooks.py:810 +#: cps/editbooks.py:854 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Nahraná kniha pravděpodobně existuje v knihovně, zvažte prosím změnu před nahráním nové: " -#: cps/editbooks.py:917 +#: cps/editbooks.py:948 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "Soubor %(filename)s nemohl být uložen do dočasného adresáře" -#: cps/editbooks.py:947 +#: cps/editbooks.py:967 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "Nepodařilo se přesunout soubor obalu %(file)s: %(error)s" -#: cps/editbooks.py:958 +#: cps/editbooks.py:1013 #, python-format msgid "File %(file)s uploaded" msgstr "Soubor %(file)s nahrán" -#: cps/editbooks.py:984 +#: cps/editbooks.py:1039 msgid "Source or destination format for conversion missing" msgstr "Chybí zdrojový nebo cílový formát pro převod" -#: cps/editbooks.py:992 +#: cps/editbooks.py:1047 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Kniha byla úspěšně zařazena do fronty pro převod do %(book_format)s" -#: cps/editbooks.py:996 +#: cps/editbooks.py:1051 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Při převodu této knihy došlo k chybě: %(res)s" @@ -543,55 +638,68 @@ msgstr "Soubor %(file)s nenalezen na Google Drive" msgid "Book path %(path)s not found on Google Drive" msgstr "Cesta ke knize %(path)s nebyla nalezena na Google Drive" -#: cps/helper.py:576 +#: cps/helper.py:511 +#, fuzzy +msgid "Found an existing account for this e-mail address" +msgstr "Byl nalezen existující účet pro tuto e-mailovou adresu." + +#: cps/helper.py:519 +msgid "This username is already taken" +msgstr "Zadané uživatelské jméno je již použito" + +#: cps/helper.py:529 +msgid "Invalid e-mail address format" +msgstr "" + +#: cps/helper.py:602 msgid "Error Downloading Cover" msgstr "Chyba stahování obalu" -#: cps/helper.py:579 +#: cps/helper.py:605 msgid "Cover Format Error" msgstr "Chyba formátu obalu" -#: cps/helper.py:589 +#: cps/helper.py:615 msgid "Failed to create path for cover" msgstr "Vytvoření cesty obalu selhalo" -#: cps/helper.py:605 +#: cps/helper.py:631 msgid "Cover-file is not a valid image file, or could not be stored" msgstr "Soubor obalu není platný, nebo nelze uložit" -#: cps/helper.py:616 +#: cps/helper.py:642 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" msgstr "" -#: cps/helper.py:629 +#: cps/helper.py:655 msgid "Only jpg/jpeg files are supported as coverfile" msgstr "Pouze jpg/jpeg jsou podporované soubory pro obal" -#: cps/helper.py:680 +#: cps/helper.py:707 msgid "Unrar binary file not found" msgstr "Unrar binární soubor nenalezen" -#: cps/helper.py:694 +#: cps/helper.py:721 msgid "Error excecuting UnRar" msgstr "Chyba provádění UnRar" -#: cps/helper.py:743 +#: cps/helper.py:769 msgid "Waiting" msgstr "Čekám" -#: cps/helper.py:745 +#: cps/helper.py:771 msgid "Failed" msgstr "Selhalo" -#: cps/helper.py:747 +#: cps/helper.py:773 msgid "Started" msgstr "Spuštěno" -#: cps/helper.py:749 +#: cps/helper.py:775 msgid "Finished" msgstr "Dokončeno" -#: cps/helper.py:751 +#: cps/helper.py:777 msgid "Unknown Status" msgstr "Neznámý stav" @@ -603,65 +711,82 @@ msgstr "Pro získání platného api_endpoint pro zařízení Kobo, přístupte msgid "Kobo Setup" msgstr "Kobo nastavení" -#: cps/oauth_bb.py:76 +#: cps/oauth_bb.py:78 #, python-format msgid "Register with %(provider)s" msgstr "Registrovat s %(provider)s" -#: cps/oauth_bb.py:137 cps/remotelogin.py:133 cps/web.py:1424 +#: cps/oauth_bb.py:139 cps/remotelogin.py:133 cps/web.py:1475 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "nyní jste přihlášen jako: '%(nickname)s'" -#: cps/oauth_bb.py:147 +#: cps/oauth_bb.py:149 #, python-format msgid "Link to %(oauth)s Succeeded" msgstr "Připojení k %(oauth)s úspěšné" -#: cps/oauth_bb.py:153 +#: cps/oauth_bb.py:156 msgid "Login failed, No User Linked With OAuth Account" msgstr "Přihlášení selhalo, žádný uživatel s OAuth účtem" -#: cps/oauth_bb.py:195 +#: cps/oauth_bb.py:198 #, python-format msgid "Unlink to %(oauth)s Succeeded" msgstr "Odpojení od %(oauth)s úspěšné" -#: cps/oauth_bb.py:199 +#: cps/oauth_bb.py:203 #, python-format msgid "Unlink to %(oauth)s Failed" msgstr "Odpojení od %(oauth)s selhalo" -#: cps/oauth_bb.py:202 +#: cps/oauth_bb.py:206 #, python-format msgid "Not Linked to %(oauth)s" msgstr "" -#: cps/oauth_bb.py:259 +#: cps/oauth_bb.py:262 msgid "Failed to log in with GitHub." msgstr "Přihlášení pomocí GitHub selhalo." -#: cps/oauth_bb.py:264 +#: cps/oauth_bb.py:268 msgid "Failed to fetch user info from GitHub." msgstr "Nepodařilo se načíst informace o uživateli z GitHub." -#: cps/oauth_bb.py:275 +#: cps/oauth_bb.py:280 msgid "Failed to log in with Google." msgstr "Přihlášení pomocí Google selhalo." -#: cps/oauth_bb.py:280 +#: cps/oauth_bb.py:286 msgid "Failed to fetch user info from Google." msgstr "Nepodařilo se načíst informace o uživateli z Google." -#: cps/oauth_bb.py:312 +#: cps/oauth_bb.py:333 msgid "GitHub Oauth error, please retry later." msgstr "GitHub Oauth chyba, prosím opakujte později." -#: cps/oauth_bb.py:331 +#: cps/oauth_bb.py:336 +msgid "GitHub Oauth error: {}" +msgstr "" + +#: cps/oauth_bb.py:357 msgid "Google Oauth error, please retry later." msgstr "Google Oauth chyba, prosím opakujte později." -#: cps/remotelogin.py:65 cps/web.py:1471 +#: cps/oauth_bb.py:360 +msgid "Google Oauth error: {}" +msgstr "" + +#: cps/opds.py:110 cps/opds.py:199 cps/opds.py:276 cps/opds.py:328 +#: cps/templates/grid.html:14 cps/templates/list.html:14 +msgid "All" +msgstr "Vše" + +#: cps/opds.py:385 +msgid "{} Stars" +msgstr "" + +#: cps/remotelogin.py:65 cps/web.py:1522 msgid "login" msgstr "přihlásit se" @@ -677,7 +802,7 @@ msgstr "Token vypršel" msgid "Success! Please return to your device" msgstr "Úspěch! Vraťte se prosím do zařízení" -#: cps/render_template.py:39 cps/web.py:415 +#: cps/render_template.py:39 cps/web.py:414 msgid "Books" msgstr "Knihy" @@ -685,7 +810,7 @@ msgstr "Knihy" msgid "Show recent books" msgstr "Zobrazit nedávné knihy" -#: cps/render_template.py:42 cps/templates/index.xml:18 +#: cps/render_template.py:42 cps/templates/index.xml:25 msgid "Hot Books" msgstr "Žhavé knihy" @@ -693,127 +818,130 @@ msgstr "Žhavé knihy" msgid "Show Hot Books" msgstr "Zobrazit žhavé knihy" -#: cps/render_template.py:45 +#: cps/render_template.py:46 cps/render_template.py:51 msgid "Downloaded Books" msgstr "" -#: cps/render_template.py:47 +#: cps/render_template.py:48 cps/render_template.py:53 +#: cps/templates/user_table.html:151 msgid "Show Downloaded Books" msgstr "" -#: cps/render_template.py:50 cps/templates/index.xml:25 cps/web.py:425 +#: cps/render_template.py:56 cps/templates/index.xml:32 cps/web.py:424 msgid "Top Rated Books" msgstr "Nejlépe hodnocené knihy" -#: cps/render_template.py:52 +#: cps/render_template.py:58 cps/templates/user_table.html:145 msgid "Show Top Rated Books" msgstr "Zobrazit nejlépe hodnocené knihy" -#: cps/render_template.py:53 cps/templates/index.xml:47 -#: cps/templates/index.xml:51 cps/web.py:642 +#: cps/render_template.py:59 cps/templates/index.xml:54 +#: cps/templates/index.xml:58 cps/web.py:650 msgid "Read Books" msgstr "Přečtené knihy" -#: cps/render_template.py:55 +#: cps/render_template.py:61 msgid "Show read and unread" msgstr "Zobrazit prečtené a nepřečtené" -#: cps/render_template.py:57 cps/templates/index.xml:54 -#: cps/templates/index.xml:58 cps/web.py:645 +#: cps/render_template.py:63 cps/templates/index.xml:61 +#: cps/templates/index.xml:65 cps/web.py:653 msgid "Unread Books" msgstr "Nepřečtené knihy" -#: cps/render_template.py:59 +#: cps/render_template.py:65 msgid "Show unread" msgstr "Zobrazit nepřečtené" -#: cps/render_template.py:60 +#: cps/render_template.py:66 msgid "Discover" msgstr "Objevte" -#: cps/render_template.py:62 +#: cps/render_template.py:68 cps/templates/user_table.html:143 +#: cps/templates/user_table.html:146 msgid "Show random books" msgstr "Zobrazit náhodné knihy" -#: cps/render_template.py:63 cps/templates/book_table.html:50 -#: cps/templates/index.xml:76 cps/web.py:950 +#: cps/render_template.py:69 cps/templates/book_table.html:51 +#: cps/templates/index.xml:83 cps/web.py:1024 msgid "Categories" msgstr "Kategorie" -#: cps/render_template.py:65 +#: cps/render_template.py:71 cps/templates/user_table.html:142 msgid "Show category selection" msgstr "Zobrazit výběr kategorie" -#: cps/render_template.py:66 cps/templates/book_edit.html:84 -#: cps/templates/book_table.html:51 cps/templates/index.xml:83 -#: cps/templates/search_form.html:62 cps/web.py:854 cps/web.py:864 +#: cps/render_template.py:72 cps/templates/book_edit.html:84 +#: cps/templates/book_table.html:52 cps/templates/index.xml:90 +#: cps/templates/search_form.html:62 cps/web.py:921 cps/web.py:931 msgid "Series" msgstr "Série" -#: cps/render_template.py:68 +#: cps/render_template.py:74 cps/templates/user_table.html:141 msgid "Show series selection" msgstr "Zobrazit výběr sérií" -#: cps/render_template.py:69 cps/templates/book_table.html:49 -#: cps/templates/index.xml:62 +#: cps/render_template.py:75 cps/templates/book_table.html:50 +#: cps/templates/index.xml:69 msgid "Authors" msgstr "Autoři" -#: cps/render_template.py:71 +#: cps/render_template.py:77 cps/templates/user_table.html:144 msgid "Show author selection" msgstr "Zobrazit výběr autora" -#: cps/render_template.py:73 cps/templates/book_table.html:55 -#: cps/templates/index.xml:69 cps/web.py:833 +#: cps/render_template.py:79 cps/templates/book_table.html:56 +#: cps/templates/index.xml:76 cps/web.py:898 msgid "Publishers" msgstr "Vydavatelé" -#: cps/render_template.py:75 +#: cps/render_template.py:81 cps/templates/user_table.html:147 msgid "Show publisher selection" msgstr "Zobrazit výběr vydavatele" -#: cps/render_template.py:76 cps/templates/book_table.html:53 -#: cps/templates/index.xml:90 cps/templates/search_form.html:100 cps/web.py:929 +#: cps/render_template.py:82 cps/templates/book_table.html:54 +#: cps/templates/index.xml:97 cps/templates/search_form.html:100 +#: cps/web.py:1001 msgid "Languages" msgstr "Jazyky" -#: cps/render_template.py:79 +#: cps/render_template.py:85 cps/templates/user_table.html:139 msgid "Show language selection" msgstr "Zobrazit výběr jazyka" -#: cps/render_template.py:80 cps/templates/index.xml:97 +#: cps/render_template.py:86 cps/templates/index.xml:104 msgid "Ratings" msgstr "Hodnocení" -#: cps/render_template.py:82 +#: cps/render_template.py:88 cps/templates/user_table.html:148 msgid "Show ratings selection" msgstr "Zobrazit výběr hodnocení" -#: cps/render_template.py:83 cps/templates/index.xml:105 +#: cps/render_template.py:89 cps/templates/index.xml:112 msgid "File formats" msgstr "Formáty souborů" -#: cps/render_template.py:85 +#: cps/render_template.py:91 cps/templates/user_table.html:149 msgid "Show file formats selection" msgstr "Zobrazit výběr formátů" -#: cps/render_template.py:87 cps/web.py:669 +#: cps/render_template.py:93 cps/web.py:677 msgid "Archived Books" msgstr "Archivované knihy" -#: cps/render_template.py:89 +#: cps/render_template.py:95 cps/templates/user_table.html:150 msgid "Show archived books" msgstr "Zobrazit archivované knihy" -#: cps/render_template.py:91 cps/web.py:743 +#: cps/render_template.py:97 cps/web.py:751 msgid "Books List" msgstr "" -#: cps/render_template.py:93 +#: cps/render_template.py:99 cps/templates/user_table.html:152 msgid "Show Books List" msgstr "" -#: cps/shelf.py:69 cps/shelf.py:122 +#: cps/shelf.py:69 cps/shelf.py:124 msgid "Invalid shelf specified" msgstr "Zadána neplatná police" @@ -827,303 +955,307 @@ msgstr "Lituji, nejste oprávněni přidat knihu do police: %(shelfname)s" msgid "Book is already part of the shelf: %(shelfname)s" msgstr "Kniha je již součástí police: %(shelfname)s" -#: cps/shelf.py:108 +#: cps/shelf.py:110 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Kniha byla přidána do police: %(sname)s" -#: cps/shelf.py:126 +#: cps/shelf.py:129 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Nejste oprávněni přidat knihu do police: %(name)s" -#: cps/shelf.py:144 +#: cps/shelf.py:147 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "Knihy jsou již součástí police: %(name)s" -#: cps/shelf.py:156 +#: cps/shelf.py:159 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "Knihy byly přidány do police: %(sname)s" -#: cps/shelf.py:161 +#: cps/shelf.py:166 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "Nelze přidat knihy do police: %(sname)s" -#: cps/shelf.py:206 +#: cps/shelf.py:212 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Kniha byla odebrána z police: %(sname)s" -#: cps/shelf.py:214 +#: cps/shelf.py:221 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Lituji, nejste oprávněni odebrat knihu z této police: %(sname)s" -#: cps/shelf.py:224 cps/templates/layout.html:140 +#: cps/shelf.py:231 cps/templates/layout.html:140 msgid "Create a Shelf" msgstr "Vytvořit polici" -#: cps/shelf.py:231 +#: cps/shelf.py:238 msgid "Edit a shelf" msgstr "Upravit polici" -#: cps/shelf.py:249 +#: cps/shelf.py:256 #, python-format msgid "Shelf %(title)s created" msgstr "Police %(title)s vytvořena" -#: cps/shelf.py:252 +#: cps/shelf.py:259 #, python-format msgid "Shelf %(title)s changed" msgstr "Police %(title)s změněna" -#: cps/shelf.py:265 +#: cps/shelf.py:273 msgid "There was an error" msgstr "Došlo k chybě" -#: cps/shelf.py:281 +#: cps/shelf.py:290 #, python-format msgid "A public shelf with the name '%(title)s' already exists." msgstr "Veřejná police s názvem '%(title)s' již existuje." -#: cps/shelf.py:291 +#: cps/shelf.py:301 #, python-format msgid "A private shelf with the name '%(title)s' already exists." msgstr "Osobní police s názvem ‘%(title)s’ již existuje." -#: cps/shelf.py:358 +#: cps/shelf.py:370 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Změnit pořadí Police: '%(name)s'" -#: cps/shelf.py:423 +#: cps/shelf.py:436 #, python-format msgid "Shelf: '%(name)s'" msgstr "Police: '%(name)s'" -#: cps/shelf.py:427 +#: cps/shelf.py:440 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Chyba otevírání police. Police neexistuje nebo není přístupná" -#: cps/updater.py:355 cps/updater.py:366 cps/updater.py:418 cps/updater.py:432 +#: cps/updater.py:374 cps/updater.py:385 cps/updater.py:485 cps/updater.py:500 msgid "Unexpected data while reading update information" msgstr "Neočekávaná data při čtení informací o aktualizaci" -#: cps/updater.py:362 cps/updater.py:424 +#: cps/updater.py:381 cps/updater.py:492 msgid "No update available. You already have the latest version installed" msgstr "Aktualizace není k dispozici. Máte nainstalovanou nejnovější verzi" -#: cps/updater.py:379 +#: cps/updater.py:399 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "Nová aktualizace k dispozici. Klepnutím na tlačítko níže aktualizujte na nejnovější verzi." -#: cps/updater.py:397 +#: cps/updater.py:417 msgid "Could not fetch update information" msgstr "Nelze získat informace o aktualizaci" -#: cps/updater.py:411 -msgid "No release information available" -msgstr "Nejsou k dispozici žádné informace o verzi" +#: cps/updater.py:427 +msgid "Click on the button below to update to the latest stable version." +msgstr "Klepnutím na tlačítko níže aktualizujte na nejnovější stabilní verzi." -#: cps/updater.py:468 cps/updater.py:479 cps/updater.py:498 +#: cps/updater.py:436 cps/updater.py:450 cps/updater.py:461 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "Nová aktualizace k dispozici. Klepnutím na tlačítko níže aktualizujte na verzi: %(version)s" -#: cps/updater.py:489 -msgid "Click on the button below to update to the latest stable version." -msgstr "Klepnutím na tlačítko níže aktualizujte na nejnovější stabilní verzi." +#: cps/updater.py:478 +msgid "No release information available" +msgstr "Nejsou k dispozici žádné informace o verzi" -#: cps/templates/index.html:5 cps/web.py:435 +#: cps/templates/index.html:5 cps/web.py:434 msgid "Discover (Random Books)" msgstr "Objevte (Náhodné knihy)" -#: cps/web.py:461 +#: cps/web.py:460 msgid "Hot Books (Most Downloaded)" msgstr "Žhavé knihy (Nejstahovanější)" -#: cps/web.py:489 +#: cps/web.py:493 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:503 +#: cps/web.py:508 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Jejda! Vybraná kniha není k dispozici. Soubor neexistuje nebo není přístupný" -#: cps/web.py:517 +#: cps/web.py:522 #, python-format msgid "Author: %(name)s" msgstr "Autoři: %(name)s" -#: cps/web.py:531 +#: cps/web.py:537 #, python-format msgid "Publisher: %(name)s" msgstr "Vydavatel: %(name)s" -#: cps/web.py:544 +#: cps/web.py:550 #, python-format msgid "Series: %(serie)s" msgstr "Série: %(serie)s" -#: cps/web.py:557 +#: cps/web.py:563 #, python-format msgid "Rating: %(rating)s stars" msgstr "Hodnocení: %(rating)s stars" -#: cps/web.py:570 +#: cps/web.py:576 #, python-format msgid "File format: %(format)s" msgstr "Soubor formátů: %(format)s" -#: cps/web.py:584 +#: cps/web.py:592 #, python-format msgid "Category: %(name)s" msgstr "Kategorie: %(name)s" -#: cps/web.py:603 +#: cps/web.py:611 #, python-format msgid "Language: %(name)s" msgstr "Jazyky: %(name)s" -#: cps/web.py:633 +#: cps/web.py:641 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "Vlastní sloupec %(column)d neexistuje v databázi" -#: cps/templates/layout.html:56 cps/web.py:703 cps/web.py:1248 +#: cps/templates/layout.html:56 cps/web.py:711 cps/web.py:1314 msgid "Advanced Search" msgstr "Rozšířené hledání" #: cps/templates/book_edit.html:214 cps/templates/feed.xml:33 #: cps/templates/index.xml:11 cps/templates/layout.html:45 #: cps/templates/layout.html:48 cps/templates/search_form.html:194 -#: cps/web.py:715 cps/web.py:987 +#: cps/web.py:723 cps/web.py:1061 msgid "Search" msgstr "Hledat" -#: cps/web.py:882 +#: cps/templates/admin.html:16 cps/web.py:876 +msgid "Downloads" +msgstr "Stáhnutí" + +#: cps/web.py:952 msgid "Ratings list" msgstr "Seznam hodnocení" -#: cps/web.py:901 +#: cps/web.py:973 msgid "File formats list" msgstr "Seznam formátů" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:964 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1038 msgid "Tasks" msgstr "Úlohy" -#: cps/web.py:1108 +#: cps/web.py:1182 msgid "Published after " msgstr "Vydáno po " -#: cps/web.py:1115 +#: cps/web.py:1189 msgid "Published before " msgstr "Vydáno před " -#: cps/web.py:1145 +#: cps/web.py:1211 #, python-format msgid "Rating <= %(rating)s" msgstr "Hodnocení <= %(rating)s" -#: cps/web.py:1147 +#: cps/web.py:1213 #, python-format msgid "Rating >= %(rating)s" msgstr "Hodnocení >= %(rating)s" -#: cps/web.py:1149 +#: cps/web.py:1215 #, python-format msgid "Read Status = %(status)s" msgstr "" -#: cps/web.py:1325 +#: cps/web.py:1387 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Kniha byla úspěšně zařazena do fronty pro odeslání na %(kindlemail)s" -#: cps/web.py:1329 +#: cps/web.py:1391 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Při odesílání této knihy došlo k chybě: %(res)s" -#: cps/web.py:1331 +#: cps/web.py:1393 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Nejprve nakonfigurujte vaši kindle e-mailovou adresu.." -#: cps/web.py:1348 +#: cps/web.py:1410 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "E-mailový server není nakonfigurován, kontaktujte svého správce!" -#: cps/web.py:1349 cps/web.py:1359 cps/web.py:1366 cps/web.py:1389 -#: cps/web.py:1393 cps/web.py:1398 cps/web.py:1402 +#: cps/web.py:1411 cps/web.py:1418 cps/web.py:1424 cps/web.py:1443 +#: cps/web.py:1447 cps/web.py:1453 msgid "register" msgstr "registrovat" -#: cps/web.py:1364 -msgid "Invalid e-mail address format" -msgstr "" - -#: cps/web.py:1391 +#: cps/web.py:1445 msgid "Your e-mail is not allowed to register" msgstr "Váš e-mail nemá povolení k registraci" -#: cps/web.py:1394 +#: cps/web.py:1448 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Potvrzovací e-mail byl odeslán na váš účet." -#: cps/web.py:1397 -msgid "This username or e-mail address is already in use." -msgstr "Toto uživatelské jméno nebo e-mailová adresa jsou již používány." - -#: cps/web.py:1414 +#: cps/web.py:1465 msgid "Cannot activate LDAP authentication" msgstr "Nelze aktivovat ověření LDAP" -#: cps/web.py:1431 +#: cps/web.py:1482 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "Záložní přihlášení jako: ‘%(nickname)s’, server LDAP není dosažitelný nebo neznámý uživatel" -#: cps/web.py:1437 +#: cps/web.py:1488 #, python-format msgid "Could not login: %(message)s" msgstr "Nelze se přihlásit: %(message)s" -#: cps/web.py:1441 cps/web.py:1465 +#: cps/web.py:1492 cps/web.py:1516 msgid "Wrong Username or Password" msgstr "Špatné uživatelské jméno nebo heslo" -#: cps/web.py:1448 +#: cps/web.py:1499 msgid "New Password was send to your email address" msgstr "Nové heslo bylo zasláno na vaši emailovou adresu" -#: cps/web.py:1454 +#: cps/web.py:1505 msgid "Please enter valid username to reset password" msgstr "Zadejte platné uživatelské jméno pro obnovení hesla" -#: cps/web.py:1460 +#: cps/web.py:1511 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Nyní jste přihlášeni jako: '%(nickname)s'" -#: cps/web.py:1498 cps/web.py:1583 +#: cps/web.py:1565 cps/web.py:1612 #, python-format msgid "%(name)s's profile" msgstr "%(name)s profil" -#: cps/web.py:1550 +#: cps/web.py:1579 msgid "Profile updated" msgstr "Profil aktualizován" -#: cps/web.py:1610 cps/web.py:1613 cps/web.py:1616 cps/web.py:1619 -#: cps/web.py:1626 cps/web.py:1631 +#: cps/web.py:1583 +msgid "Found an existing account for this e-mail address." +msgstr "Byl nalezen existující účet pro tuto e-mailovou adresu." + +#: cps/web.py:1639 cps/web.py:1642 cps/web.py:1645 cps/web.py:1648 +#: cps/web.py:1655 cps/web.py:1660 msgid "Read a Book" msgstr "Číst knihu" +#: cps/services/gmail.py:41 +msgid "Found no valid gmail.json file with OAuth information" +msgstr "" + #: cps/tasks/convert.py:114 #, python-format msgid "Calibre ebook-convert %(tool)s not found" @@ -1162,221 +1294,231 @@ msgstr "" msgid "Users" msgstr "Uživatelé" -#: cps/templates/admin.html:12 cps/templates/login.html:8 +#: cps/templates/admin.html:13 cps/templates/login.html:8 #: cps/templates/login.html:9 cps/templates/register.html:8 -#: cps/templates/user_edit.html:9 +#: cps/templates/user_edit.html:9 cps/templates/user_table.html:121 msgid "Username" msgstr "Přezdívka" -#: cps/templates/admin.html:13 cps/templates/register.html:13 -#: cps/templates/user_edit.html:14 +#: cps/templates/admin.html:14 cps/templates/register.html:13 +#: cps/templates/user_edit.html:14 cps/templates/user_table.html:122 msgid "E-mail Address" msgstr "E-mail" -#: cps/templates/admin.html:14 cps/templates/user_edit.html:27 +#: cps/templates/admin.html:15 cps/templates/user_edit.html:27 msgid "Send to Kindle E-mail Address" msgstr "Poslat do Kindle e-mailová adresa" -#: cps/templates/admin.html:15 -msgid "Downloads" -msgstr "Stáhnutí" - -#: cps/templates/admin.html:16 cps/templates/layout.html:77 +#: cps/templates/admin.html:17 cps/templates/layout.html:77 +#: cps/templates/user_table.html:130 msgid "Admin" msgstr "Správce" -#: cps/templates/admin.html:17 cps/templates/login.html:12 +#: cps/templates/admin.html:18 cps/templates/login.html:12 #: cps/templates/login.html:13 cps/templates/user_edit.html:22 msgid "Password" msgstr "Heslo" -#: cps/templates/admin.html:18 cps/templates/layout.html:66 +#: cps/templates/admin.html:19 cps/templates/layout.html:66 +#: cps/templates/user_table.html:132 msgid "Upload" msgstr "Nahrávat" -#: cps/templates/admin.html:19 cps/templates/detail.html:18 +#: cps/templates/admin.html:20 cps/templates/detail.html:18 #: cps/templates/detail.html:27 cps/templates/shelf.html:6 +#: cps/templates/user_table.html:133 msgid "Download" msgstr "Stahovat" -#: cps/templates/admin.html:20 +#: cps/templates/admin.html:21 msgid "View Books" msgstr "Prohlížení knih" -#: cps/templates/admin.html:21 +#: cps/templates/admin.html:22 cps/templates/user_table.html:118 +#: cps/templates/user_table.html:135 msgid "Edit" msgstr "Upravovat" -#: cps/templates/admin.html:22 cps/templates/book_edit.html:16 -#: cps/templates/book_table.html:57 cps/templates/modal_dialogs.html:63 +#: cps/templates/admin.html:23 cps/templates/book_edit.html:16 +#: cps/templates/book_table.html:58 cps/templates/modal_dialogs.html:63 #: cps/templates/modal_dialogs.html:116 cps/templates/user_edit.html:66 +#: cps/templates/user_table.html:136 msgid "Delete" msgstr "Smazat" -#: cps/templates/admin.html:23 +#: cps/templates/admin.html:24 msgid "Public Shelf" msgstr "Veřejná police" -#: cps/templates/admin.html:44 +#: cps/templates/admin.html:47 msgid "Add New User" msgstr "Přidat nového uživatele" -#: cps/templates/admin.html:46 +#: cps/templates/admin.html:49 msgid "Import LDAP Users" msgstr "Importovat LDAP uživatele" -#: cps/templates/admin.html:53 +#: cps/templates/admin.html:56 msgid "E-mail Server Settings" msgstr "Nastavení e-mailového serveru SMTP" -#: cps/templates/admin.html:57 cps/templates/email_edit.html:11 +#: cps/templates/admin.html:61 cps/templates/email_edit.html:30 msgid "SMTP Hostname" msgstr "SMTP hostitel" -#: cps/templates/admin.html:61 cps/templates/email_edit.html:15 +#: cps/templates/admin.html:65 cps/templates/email_edit.html:34 msgid "SMTP Port" msgstr "SMTP port" -#: cps/templates/admin.html:65 cps/templates/email_edit.html:19 +#: cps/templates/admin.html:69 cps/templates/email_edit.html:38 msgid "Encryption" msgstr "Šifrování" -#: cps/templates/admin.html:69 cps/templates/email_edit.html:27 +#: cps/templates/admin.html:73 cps/templates/email_edit.html:46 msgid "SMTP Login" msgstr "SMTP přihlášení" -#: cps/templates/admin.html:73 cps/templates/email_edit.html:35 +#: cps/templates/admin.html:77 cps/templates/admin.html:88 +#: cps/templates/email_edit.html:54 msgid "From E-mail" msgstr "Z e-mailu" #: cps/templates/admin.html:84 +msgid "E-Mail Service" +msgstr "" + +#: cps/templates/admin.html:85 +msgid "Gmail via Oauth2" +msgstr "" + +#: cps/templates/admin.html:100 msgid "Configuration" msgstr "Konfigurace" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:103 msgid "Calibre Database Directory" msgstr "Calibre DB adresář" -#: cps/templates/admin.html:91 cps/templates/config_edit.html:136 +#: cps/templates/admin.html:107 cps/templates/config_edit.html:136 msgid "Log Level" msgstr "Úroveň logu" -#: cps/templates/admin.html:95 +#: cps/templates/admin.html:111 msgid "Port" msgstr "Port" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:116 msgid "External Port" msgstr "" -#: cps/templates/admin.html:107 cps/templates/config_view_edit.html:27 +#: cps/templates/admin.html:123 cps/templates/config_view_edit.html:27 msgid "Books per Page" msgstr "Knihy na stránku" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:127 msgid "Uploads" msgstr "Nahrávání" -#: cps/templates/admin.html:115 +#: cps/templates/admin.html:131 msgid "Anonymous Browsing" msgstr "Anonymní prohlížení" -#: cps/templates/admin.html:119 +#: cps/templates/admin.html:135 msgid "Public Registration" msgstr "Veřejná registrace" -#: cps/templates/admin.html:123 +#: cps/templates/admin.html:139 msgid "Magic Link Remote Login" msgstr "Magic Link vzdálené přihlášení" -#: cps/templates/admin.html:127 +#: cps/templates/admin.html:143 msgid "Reverse Proxy Login" msgstr "Reverzní proxy přihlášení" -#: cps/templates/admin.html:132 +#: cps/templates/admin.html:148 msgid "Reverse proxy header name" msgstr "Název záhlaví reverzního prixy" -#: cps/templates/admin.html:137 +#: cps/templates/admin.html:153 msgid "Edit Basic Configuration" msgstr "Upravit základní konfiguraci" -#: cps/templates/admin.html:138 +#: cps/templates/admin.html:154 msgid "Edit UI Configuration" msgstr "Upravit konfiguraci uživatelského rozhraní" -#: cps/templates/admin.html:143 +#: cps/templates/admin.html:159 msgid "Administration" msgstr "Správa" -#: cps/templates/admin.html:144 +#: cps/templates/admin.html:160 msgid "Download Debug Package" msgstr "" -#: cps/templates/admin.html:145 +#: cps/templates/admin.html:161 msgid "View Logs" msgstr "Zobrazit log" -#: cps/templates/admin.html:148 +#: cps/templates/admin.html:164 msgid "Reconnect Calibre Database" msgstr "Znovupřipojení ke Calibre databázi" -#: cps/templates/admin.html:149 +#: cps/templates/admin.html:165 msgid "Restart" msgstr "Restartovat" -#: cps/templates/admin.html:150 +#: cps/templates/admin.html:166 msgid "Shutdown" msgstr "Vypnout" -#: cps/templates/admin.html:155 +#: cps/templates/admin.html:171 msgid "Update" msgstr "Aktualizovat" -#: cps/templates/admin.html:159 +#: cps/templates/admin.html:175 msgid "Version" msgstr "Verze" -#: cps/templates/admin.html:160 +#: cps/templates/admin.html:176 msgid "Details" msgstr "Detaily" -#: cps/templates/admin.html:166 +#: cps/templates/admin.html:182 msgid "Current version" msgstr "Současná verze" -#: cps/templates/admin.html:173 +#: cps/templates/admin.html:189 msgid "Check for Update" msgstr "Zkontrolovat aktualizace" -#: cps/templates/admin.html:174 +#: cps/templates/admin.html:190 msgid "Perform Update" msgstr "Provést aktualizaci" -#: cps/templates/admin.html:187 +#: cps/templates/admin.html:203 msgid "Are you sure you want to restart?" msgstr "Opravdu chcete restartovat?" -#: cps/templates/admin.html:192 cps/templates/admin.html:206 -#: cps/templates/admin.html:226 cps/templates/shelf.html:95 +#: cps/templates/admin.html:208 cps/templates/admin.html:222 +#: cps/templates/admin.html:242 cps/templates/shelf.html:95 msgid "OK" msgstr "OK" -#: cps/templates/admin.html:193 cps/templates/admin.html:207 -#: cps/templates/book_edit.html:192 cps/templates/book_table.html:84 +#: cps/templates/admin.html:209 cps/templates/admin.html:223 +#: cps/templates/book_edit.html:192 cps/templates/book_table.html:85 #: cps/templates/config_edit.html:427 cps/templates/config_view_edit.html:151 -#: cps/templates/email_edit.html:47 cps/templates/modal_dialogs.html:64 -#: cps/templates/modal_dialogs.html:99 cps/templates/modal_dialogs.html:117 +#: cps/templates/modal_dialogs.html:64 cps/templates/modal_dialogs.html:99 +#: cps/templates/modal_dialogs.html:117 cps/templates/modal_dialogs.html:135 #: cps/templates/shelf.html:96 cps/templates/shelf_edit.html:19 #: cps/templates/user_edit.html:132 msgid "Cancel" msgstr "Zrušit" -#: cps/templates/admin.html:205 +#: cps/templates/admin.html:221 msgid "Are you sure you want to shutdown?" msgstr "Opravdu chcete vypnout?" -#: cps/templates/admin.html:217 +#: cps/templates/admin.html:233 msgid "Updating, please do not reload this page" msgstr "Probíhá aktualizace, prosím nenačítejte stránku znovu" @@ -1484,6 +1626,7 @@ msgid "Identifier Value" msgstr "Hodnota identifikátorů" #: cps/templates/book_edit.html:72 cps/templates/book_edit.html:289 +#: cps/templates/user_table.html:23 msgid "Remove" msgstr "Odstranit" @@ -1549,7 +1692,7 @@ msgid "Fetch Metadata" msgstr "Získat metadata" #: cps/templates/book_edit.html:191 cps/templates/config_edit.html:424 -#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45 +#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:64 #: cps/templates/shelf_edit.html:17 cps/templates/shelf_order.html:40 #: cps/templates/user_edit.html:130 msgid "Save" @@ -1589,96 +1732,98 @@ msgstr "Chyba vyhledávání!" msgid "No Result(s) found! Please try another keyword." msgstr "Nebyly nalezeny žádné výsledky! Zadejte jiné klíčové slovo." -#: cps/templates/book_table.html:10 cps/templates/book_table.html:52 +#: cps/templates/book_table.html:11 cps/templates/book_table.html:53 +#: cps/templates/user_table.html:13 cps/templates/user_table.html:65 +#: cps/templates/user_table.html:88 msgid "This Field is Required" msgstr "" -#: cps/templates/book_table.html:23 +#: cps/templates/book_table.html:24 msgid "Merge selected books" msgstr "" -#: cps/templates/book_table.html:24 +#: cps/templates/book_table.html:25 cps/templates/user_table.html:111 msgid "Remove Selections" msgstr "" -#: cps/templates/book_table.html:30 +#: cps/templates/book_table.html:31 msgid "Update Title Sort automatically" msgstr "" -#: cps/templates/book_table.html:34 +#: cps/templates/book_table.html:35 msgid "Update Author Sort automatically" msgstr "" -#: cps/templates/book_table.html:46 +#: cps/templates/book_table.html:47 msgid "Enter Title" msgstr "" -#: cps/templates/book_table.html:46 cps/templates/config_view_edit.html:23 +#: cps/templates/book_table.html:47 cps/templates/config_view_edit.html:23 #: cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Název" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Enter Title Sort" msgstr "" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Title Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Enter Author Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Author Sort" msgstr "" -#: cps/templates/book_table.html:49 +#: cps/templates/book_table.html:50 msgid "Enter Authors" msgstr "" -#: cps/templates/book_table.html:50 +#: cps/templates/book_table.html:51 msgid "Enter Categories" msgstr "" -#: cps/templates/book_table.html:51 +#: cps/templates/book_table.html:52 msgid "Enter Series" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Enter title" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Series Index" msgstr "" -#: cps/templates/book_table.html:53 +#: cps/templates/book_table.html:54 msgid "Enter Languages" msgstr "" -#: cps/templates/book_table.html:54 +#: cps/templates/book_table.html:55 msgid "Publishing Date" msgstr "" -#: cps/templates/book_table.html:55 +#: cps/templates/book_table.html:56 msgid "Enter Publishers" msgstr "" -#: cps/templates/book_table.html:70 cps/templates/modal_dialogs.html:46 +#: cps/templates/book_table.html:71 cps/templates/modal_dialogs.html:46 msgid "Are you really sure?" msgstr "Jste si opravdu jisti?" -#: cps/templates/book_table.html:74 +#: cps/templates/book_table.html:75 msgid "Books with Title will be merged from:" msgstr "" -#: cps/templates/book_table.html:78 +#: cps/templates/book_table.html:79 msgid "Into Book with Title:" msgstr "" -#: cps/templates/book_table.html:83 +#: cps/templates/book_table.html:84 msgid "Merge" msgstr "" @@ -1863,7 +2008,7 @@ msgid "LDAP Encryption" msgstr "LDAP Šifrování" #: cps/templates/config_edit.html:268 cps/templates/config_view_edit.html:61 -#: cps/templates/email_edit.html:21 +#: cps/templates/email_edit.html:40 msgid "None" msgstr "Žádné" @@ -2076,6 +2221,7 @@ msgid "Default Visibilities for New Users" msgstr "Výchozí zobrazení pro nové uživatele" #: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82 +#: cps/templates/user_table.html:138 msgid "Show Random Books in Detail View" msgstr "Zobrazit náhodné knihy v podrobném zobrazení" @@ -2149,43 +2295,69 @@ msgstr "(Veřejné)" msgid "Edit Metadata" msgstr "Upravit metadata" -#: cps/templates/email_edit.html:22 +#: cps/templates/email_edit.html:12 +msgid "Choose Server Type" +msgstr "" + +#: cps/templates/email_edit.html:14 +msgid "Use Standard E-Mail Account" +msgstr "" + +#: cps/templates/email_edit.html:15 +msgid "Gmail Account with OAuth2 Verfification" +msgstr "" + +#: cps/templates/email_edit.html:21 +msgid "Setup Gmail Account as E-Mail Server" +msgstr "" + +#: cps/templates/email_edit.html:23 +msgid "Revoke Gmail Access" +msgstr "" + +#: cps/templates/email_edit.html:41 msgid "STARTTLS" msgstr "STARTTLS" -#: cps/templates/email_edit.html:23 +#: cps/templates/email_edit.html:42 msgid "SSL/TLS" msgstr "SSL/TLS" -#: cps/templates/email_edit.html:31 +#: cps/templates/email_edit.html:50 msgid "SMTP Password" msgstr "SMTP heslo" -#: cps/templates/email_edit.html:38 +#: cps/templates/email_edit.html:57 msgid "Attachment Size Limit" msgstr "Limit velikosti souboru" -#: cps/templates/email_edit.html:46 +#: cps/templates/email_edit.html:65 msgid "Save and Send Test E-mail" msgstr "Uložit nastavení a odeslat zkušební e-mail" -#: cps/templates/email_edit.html:51 +#: cps/templates/email_edit.html:69 cps/templates/layout.html:29 +#: cps/templates/shelf_order.html:41 cps/templates/user_table.html:158 +msgid "Back" +msgstr "Zpět" + +#: cps/templates/email_edit.html:73 msgid "Allowed Domains (Whitelist)" msgstr "Povolené domény pro registraci" -#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80 +#: cps/templates/email_edit.html:76 cps/templates/email_edit.html:102 msgid "Add Domain" msgstr "Přidat doménu" -#: cps/templates/email_edit.html:57 cps/templates/email_edit.html:83 +#: cps/templates/email_edit.html:79 cps/templates/email_edit.html:105 +#: cps/templates/user_table.html:26 msgid "Add" msgstr "Přidat" -#: cps/templates/email_edit.html:62 cps/templates/email_edit.html:72 +#: cps/templates/email_edit.html:84 cps/templates/email_edit.html:94 msgid "Enter domainname" msgstr "Zadejte jméno domény" -#: cps/templates/email_edit.html:68 +#: cps/templates/email_edit.html:90 msgid "Denied Domains (Blacklist)" msgstr "Zakázané domény pro registraci" @@ -2197,10 +2369,6 @@ msgstr "Další" msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):" msgstr "Otevřte soubor .kobo/Kobo eReader.conf v textovém editoru a vložte (nebo upravte):" -#: cps/templates/grid.html:14 cps/templates/list.html:14 -msgid "All" -msgstr "Vše" - #: cps/templates/http_error.html:38 msgid "Create Issue" msgstr "Vytvořit problém" @@ -2231,64 +2399,72 @@ msgstr "" msgid "Start" msgstr "Start" +#: cps/templates/index.xml:18 +msgid "Alphabetical Books" +msgstr "" + #: cps/templates/index.xml:22 +msgid "Books sorted alphabetically" +msgstr "" + +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Downloads." msgstr "Oblíbené publikace z tohoto katalogu založené na počtu stažení." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:36 msgid "Popular publications from this catalog based on Rating." msgstr "Oblíbené publikace z tohoto katalogu založené na hodnocení." -#: cps/templates/index.xml:32 +#: cps/templates/index.xml:39 msgid "Recently added Books" msgstr "Nedávno přidané knihy" -#: cps/templates/index.xml:36 +#: cps/templates/index.xml:43 msgid "The latest Books" msgstr "Nejnovější knihy" -#: cps/templates/index.xml:39 +#: cps/templates/index.xml:46 msgid "Random Books" msgstr "Náhodné knihy" -#: cps/templates/index.xml:43 +#: cps/templates/index.xml:50 msgid "Show Random Books" msgstr "Zobrazit náhodné knihy" -#: cps/templates/index.xml:66 +#: cps/templates/index.xml:73 msgid "Books ordered by Author" msgstr "Knihy seřazené podle autora" -#: cps/templates/index.xml:73 +#: cps/templates/index.xml:80 msgid "Books ordered by publisher" msgstr "Knihy seřazené podle vydavatele" -#: cps/templates/index.xml:80 +#: cps/templates/index.xml:87 msgid "Books ordered by category" msgstr "Knihy seřazené podle kategorie" -#: cps/templates/index.xml:87 +#: cps/templates/index.xml:94 msgid "Books ordered by series" msgstr "Knihy seřazené podle série" -#: cps/templates/index.xml:94 +#: cps/templates/index.xml:101 msgid "Books ordered by Languages" msgstr "Knihy seřazené podle jazyků" -#: cps/templates/index.xml:101 +#: cps/templates/index.xml:108 msgid "Books ordered by Rating" msgstr "Knihy řazené podle hodnocení" -#: cps/templates/index.xml:109 +#: cps/templates/index.xml:116 msgid "Books ordered by file formats" msgstr "Knihy seřazené podle souboru formátů" -#: cps/templates/index.xml:112 cps/templates/layout.html:135 +#: cps/templates/index.xml:119 cps/templates/layout.html:135 #: cps/templates/search_form.html:80 msgid "Shelves" msgstr "Police" -#: cps/templates/index.xml:116 +#: cps/templates/index.xml:123 msgid "Books organized in shelves" msgstr "Knihy organizované v policích" @@ -2296,10 +2472,6 @@ msgstr "Knihy organizované v policích" msgid "Home" msgstr "Domů" -#: cps/templates/layout.html:29 cps/templates/shelf_order.html:41 -msgid "Back" -msgstr "Zpět" - #: cps/templates/layout.html:35 msgid "Toggle Navigation" msgstr "Přepnout navigaci" @@ -2461,6 +2633,11 @@ msgstr "" msgid "Select" msgstr "" +#: cps/templates/modal_dialogs.html:134 +#, fuzzy +msgid "Ok" +msgstr "Kniha" + #: cps/templates/osd.xml:5 msgid "Calibre-Web eBook Catalog" msgstr "Calibre-Web katalog eknih" @@ -2766,10 +2943,6 @@ msgstr "Resetovat uživatelské heslo" msgid "Language of Books" msgstr "Zobrazit knihy s jazykem" -#: cps/templates/user_edit.html:44 -msgid "Show All" -msgstr "Zobrazit vše" - #: cps/templates/user_edit.html:53 msgid "OAuth Settings" msgstr "Nastavení OAuth" @@ -2794,7 +2967,7 @@ msgstr "Vytvořit/Prohlížet" msgid "Add allowed/Denied Custom Column Values" msgstr "Přidat povolené/zakázané hodnoty vlastních sloupců" -#: cps/templates/user_edit.html:135 +#: cps/templates/user_edit.html:135 cps/templates/user_table.html:153 msgid "Delete User" msgstr "Odstranit tohoto uživatele" @@ -2802,3 +2975,98 @@ msgstr "Odstranit tohoto uživatele" msgid "Generate Kobo Auth URL" msgstr "Vygenerovat URL pro Kobo Auth" +#: cps/templates/user_table.html:68 cps/templates/user_table.html:91 +msgid "Select..." +msgstr "" + +#: cps/templates/user_table.html:118 +#, fuzzy +msgid "Edit User" +msgstr "Uživatel admin" + +#: cps/templates/user_table.html:121 +#, fuzzy +msgid "Enter Username" +msgstr "Zvolte uživatelské jméno" + +#: cps/templates/user_table.html:122 +#, fuzzy +msgid "Enter E-mail Address" +msgstr "Vaše e-mailová adresa" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Enter Kindle E-mail Address" +msgstr "Poslat do Kindle e-mailová adresa" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Kindle E-mail" +msgstr "Zkušební e-mail" + +#: cps/templates/user_table.html:124 +#, fuzzy +msgid "Locale" +msgstr "Měřítko" + +#: cps/templates/user_table.html:125 +msgid "Visible Book Languages" +msgstr "" + +#: cps/templates/user_table.html:126 +#, fuzzy +msgid "Edit Denied Tags" +msgstr "Vybrat povolené/zakázané štítky" + +#: cps/templates/user_table.html:126 +msgid "Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +#, fuzzy +msgid "Edit Allowed Tags" +msgstr "Vybrat povolené/zakázané štítky" + +#: cps/templates/user_table.html:127 +msgid "Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Edit Allowed Column Values" +msgstr "Přidat povolené/zakázané hodnoty vlastních sloupců" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Allowed Column Values" +msgstr "Přidat povolené/zakázané hodnoty vlastních sloupců" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Edit Denied Column Values" +msgstr "Přidat povolené/zakázané hodnoty vlastních sloupců" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Denied Columns Values" +msgstr "Přidat povolené/zakázané hodnoty vlastních sloupců" + +#: cps/templates/user_table.html:131 +#, fuzzy +msgid "Change Password" +msgstr "Povolit změnu hesla" + +#: cps/templates/user_table.html:134 +msgid "View" +msgstr "" + +#: cps/templates/user_table.html:137 +#, fuzzy +msgid "Edit Public Shelfs" +msgstr "Veřejná police" + +#: cps/templates/user_table.html:140 +#, fuzzy +msgid "Show read/unread selection" +msgstr "Zobrazit výběr sérií" + diff --git a/cps/translations/de/LC_MESSAGES/messages.mo b/cps/translations/de/LC_MESSAGES/messages.mo index ce3621b0..c14cf26c 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 603cd586..63763ef6 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: 2021-03-27 12:16+0100\n" +"POT-Creation-Date: 2021-05-01 16:33+0200\n" "PO-Revision-Date: 2021-02-02 19:04+0100\n" "Last-Translator: Ozzie Isaacs\n" "Language: de\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" +"Generated-By: Babel 2.8.0\n" #: cps/about.py:43 msgid "installed" @@ -30,310 +30,406 @@ msgstr "Nicht installiert" msgid "Statistics" msgstr "Statistiken" -#: cps/admin.py:149 +#: cps/admin.py:151 msgid "Server restarted, please reload page" msgstr "Server neu gestartet, Seite bitte neu laden" -#: cps/admin.py:151 +#: cps/admin.py:153 msgid "Performing shutdown of server, please close window" msgstr "Server wird heruntergefahren, Fenster bitte schließen" -#: cps/admin.py:159 +#: cps/admin.py:161 msgid "Reconnect successful" msgstr "Erfolgreich neu verbunden" -#: cps/admin.py:162 +#: cps/admin.py:164 msgid "Unknown command" msgstr "Unbekannter Befehl" -#: cps/admin.py:172 cps/editbooks.py:662 cps/editbooks.py:674 -#: cps/editbooks.py:777 cps/editbooks.py:779 cps/editbooks.py:806 -#: cps/editbooks.py:822 cps/updater.py:521 cps/uploader.py:94 +#: cps/admin.py:174 cps/editbooks.py:668 cps/editbooks.py:682 +#: cps/editbooks.py:821 cps/editbooks.py:823 cps/editbooks.py:850 +#: cps/editbooks.py:866 cps/updater.py:555 cps/uploader.py:94 #: cps/uploader.py:104 msgid "Unknown" msgstr "Unbekannt" -#: cps/admin.py:193 +#: cps/admin.py:195 msgid "Admin page" msgstr "Admin Seite" -#: cps/admin.py:215 +#: cps/admin.py:217 msgid "UI Configuration" msgstr "Benutzeroberflächenkonfiguration" -#: cps/admin.py:247 cps/admin.py:936 +#: cps/admin.py:249 cps/templates/admin.html:46 +#, fuzzy +msgid "Edit Users" +msgstr "Administrator" + +#: cps/admin.py:290 +#, fuzzy +msgid "all" +msgstr "Alle" + +#: cps/admin.py:315 cps/admin.py:1486 +msgid "User not found" +msgstr "Benutzer nicht gefunden" + +#: cps/admin.py:329 +#, fuzzy +msgid "{} users deleted successfully" +msgstr "{} Benutzer erfolgreich importiert" + +#: cps/admin.py:351 cps/templates/user_edit.html:44 +#: cps/templates/user_table.html:69 +msgid "Show All" +msgstr "Zeige alle" + +#: cps/admin.py:372 cps/admin.py:378 +msgid "Malformed request" +msgstr "" + +#: cps/admin.py:390 cps/admin.py:1368 +msgid "Guest Name can't be changed" +msgstr "" + +#: cps/admin.py:400 +msgid "Guest can't have this role" +msgstr "" + +#: cps/admin.py:412 cps/admin.py:1333 +msgid "No admin user remaining, can't remove admin role" +msgstr "Kein Admin Benutzer verblieben Admin Berechtigung kann nicht entfernt werden" + +#: cps/admin.py:416 cps/admin.py:430 +msgid "Value has to be true or false" +msgstr "" + +#: cps/admin.py:418 +msgid "Invalid role" +msgstr "" + +#: cps/admin.py:422 +msgid "Guest can't have this view" +msgstr "" + +#: cps/admin.py:432 +msgid "Invalid view" +msgstr "" + +#: cps/admin.py:435 +msgid "Guest's Locale is determined automatically and can't be set" +msgstr "" + +#: cps/admin.py:439 +msgid "No Valid Locale Given" +msgstr "" + +#: cps/admin.py:450 +msgid "No Valid Book Language Given" +msgstr "" + +#: cps/admin.py:452 +msgid "Parameter not found" +msgstr "" + +#: cps/admin.py:506 cps/admin.py:1219 msgid "Calibre-Web configuration updated" msgstr "Konfiguration von Calibre-Web wurde aktualisiert" -#: cps/admin.py:258 +#: cps/admin.py:518 msgid "Do you really want to delete the Kobo Token?" msgstr "Möchten Sie wirklich den Kobo Token löschen?" -#: cps/admin.py:260 +#: cps/admin.py:520 msgid "Do you really want to delete this domain?" msgstr "Möchten Sie wirklich diese Domain löschen?" -#: cps/admin.py:262 +#: cps/admin.py:522 msgid "Do you really want to delete this user?" msgstr "Möchten Sie wirklich diesen Benutzer löschen?" -#: cps/admin.py:264 cps/templates/shelf.html:90 +#: cps/admin.py:524 cps/templates/shelf.html:90 msgid "Are you sure you want to delete this shelf?" msgstr "Möchten Sie wirklich dieses Bücherregal löschen?" -#: cps/admin.py:510 cps/admin.py:516 cps/admin.py:526 cps/admin.py:536 -#: cps/templates/modal_dialogs.html:29 +#: cps/admin.py:526 +#, fuzzy +msgid "Are you sure you want to change locales of selected user(s)?" +msgstr "Möchten Sie wirklich dieses Bücherregal löschen?" + +#: cps/admin.py:528 +msgid "Are you sure you want to change visible book languages for selected user(s)?" +msgstr "" + +#: cps/admin.py:530 +msgid "Are you sure you want to change the selected role for the selected user(s)?" +msgstr "" + +#: cps/admin.py:532 +#, fuzzy +msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" +msgstr "Möchten Sie wirklich dieses Bücherregal löschen?" + +#: cps/admin.py:534 +msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:683 +msgid "Tag not found" +msgstr "" + +#: cps/admin.py:695 +msgid "Invalid Action" +msgstr "" + +#: cps/admin.py:800 cps/admin.py:806 cps/admin.py:816 cps/admin.py:826 +#: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:43 msgid "Deny" msgstr "Verbieten" -#: cps/admin.py:512 cps/admin.py:518 cps/admin.py:528 cps/admin.py:538 -#: cps/templates/modal_dialogs.html:28 +#: cps/admin.py:802 cps/admin.py:808 cps/admin.py:818 cps/admin.py:828 +#: cps/templates/modal_dialogs.html:28 cps/templates/user_table.html:48 msgid "Allow" msgstr "Erlauben" -#: cps/admin.py:681 +#: cps/admin.py:971 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json ist nicht für Web Anwendungen konfiguriert" -#: cps/admin.py:723 +#: cps/admin.py:1016 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "Logdatei Pfad ist ungültig, bitte einen gültigen Pfad angeben" -#: cps/admin.py:729 +#: cps/admin.py:1022 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "Zugriffs Logdatei Pfad ist ungültig, bitte einen gültigen Pfad angeben" -#: cps/admin.py:738 +#: cps/admin.py:1052 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "Bitte einen LDAP Server, Port, DN und Benutzer Objekt angeben" -#: cps/admin.py:752 cps/admin.py:760 +#: cps/admin.py:1067 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "LDAP Gruppen Objekt Filter benötigt genau eine \"%s\" Format Kennung" -#: cps/admin.py:755 cps/admin.py:763 +#: cps/admin.py:1070 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "LDAP Gruppen Objekt Filter hat ungleiche Anzahl von Klammern" -#: cps/admin.py:768 +#: cps/admin.py:1075 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "LDAP Benutzer Objekt Filter benötigt genau eine \"%s\" Format Kennung" -#: cps/admin.py:771 +#: cps/admin.py:1078 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "LDAP Benutzer Objekt Filter hat ungleiche Anzahl von Klammern" -#: cps/admin.py:779 +#: cps/admin.py:1086 #, python-format msgid "LDAP Member User Filter needs to Have One \"%s\" Format Identifier" msgstr "Der LDAP Member User Filter benötigt genau eine \"%s\" Formatierungsmarkierung" -#: cps/admin.py:782 +#: cps/admin.py:1089 msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "LDAP Member User Filter hat eine ungleiche Anzahl von geöffneten und geschlossenen Klammern" -#: cps/admin.py:790 +#: cps/admin.py:1097 msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" msgstr "LDAP CA-Zertifikat, Zertifikat oder Key Datei ist kein gültiger Pfad" -#: cps/admin.py:841 +#: cps/admin.py:1123 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "Schlüsseldatei ist ungültig, bitte einen gültigen Pfad angeben" -#: cps/admin.py:847 +#: cps/admin.py:1129 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "Zertifikatsdatei ist ungültig, bitte einen gültigen Pfad angeben" -#: cps/admin.py:917 cps/admin.py:1024 cps/admin.py:1047 cps/admin.py:1168 -#: cps/shelf.py:102 cps/shelf.py:159 cps/shelf.py:200 cps/shelf.py:261 -#: cps/shelf.py:314 cps/shelf.py:348 cps/shelf.py:418 +#: cps/admin.py:1200 cps/admin.py:1303 cps/admin.py:1395 cps/admin.py:1461 +#: cps/shelf.py:103 cps/shelf.py:163 cps/shelf.py:206 cps/shelf.py:269 +#: cps/shelf.py:325 cps/shelf.py:360 cps/shelf.py:431 msgid "Settings DB is not Writeable" msgstr "Einstellungsdatenbank ist nicht schreibbar" -#: cps/admin.py:929 +#: cps/admin.py:1212 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "DB Pfad ist nicht gültig, bitte einen gültigen Pfad angeben" -#: cps/admin.py:933 +#: cps/admin.py:1216 msgid "DB is not Writeable" msgstr "Datenbank ist nicht schreibbar" -#: cps/admin.py:972 +#: cps/admin.py:1256 msgid "Basic Configuration" msgstr "Basiskonfiguration" -#: cps/admin.py:987 cps/web.py:1358 +#: cps/admin.py:1272 cps/web.py:1417 msgid "Please fill out all fields!" msgstr "Bitte alle Felder ausfüllen!" -#: cps/admin.py:990 cps/admin.py:1002 cps/admin.py:1008 cps/admin.py:1138 -msgid "Add new user" -msgstr "Neuen Benutzer hinzufügen" - -#: cps/admin.py:999 cps/web.py:1496 +#: cps/admin.py:1280 msgid "E-mail is not from valid domain" msgstr "E-Mail bezieht sich nicht auf eine gültige Domain" -#: cps/admin.py:1006 cps/admin.py:1021 -msgid "Found an existing account for this e-mail address or nickname." -msgstr "Es existiert bereits ein Account für diese E-Mailadresse oder diesen Benutzernamen." +#: cps/admin.py:1284 cps/admin.py:1414 +msgid "Add new user" +msgstr "Neuen Benutzer hinzufügen" -#: cps/admin.py:1017 +#: cps/admin.py:1293 #, python-format msgid "User '%(user)s' created" msgstr "Benutzer '%(user)s' angelegt" -#: cps/admin.py:1031 +#: cps/admin.py:1299 +#, fuzzy +msgid "Found an existing account for this e-mail address or name." +msgstr "Es existiert bereits ein Account für diese E-Mailadresse oder diesen Benutzernamen." + +#: cps/admin.py:1312 #, python-format msgid "User '%(nick)s' deleted" msgstr "Benutzer '%(nick)s' gelöscht" -#: cps/admin.py:1034 +#: cps/admin.py:1314 cps/admin.py:1315 +msgid "Can't delete Guest User" +msgstr "" + +#: cps/admin.py:1318 msgid "No admin user remaining, can't delete user" msgstr "Benutzer kann nicht gelöscht werden, es wäre kein Admin Benutzer übrig" -#: cps/admin.py:1041 -#, python-format -msgid "User '%(nick)s' updated" -msgstr "Benutzer '%(nick)s' aktualisiert" - -#: cps/admin.py:1044 -msgid "An unknown error occured." -msgstr "Es ist ein unbekannter Fehler aufgetreten." - -#: cps/admin.py:1056 -msgid "No admin user remaining, can't remove admin role" -msgstr "Kein Admin Benutzer verblieben Admin Berechtigung kann nicht entfernt werden" - -#: cps/admin.py:1092 cps/web.py:1554 -msgid "Found an existing account for this e-mail address." -msgstr "Es existiert bereits ein Benutzer für diese E-Mailadresse." - -#: cps/admin.py:1101 cps/admin.py:1115 cps/admin.py:1209 cps/web.py:1516 +#: cps/admin.py:1383 cps/admin.py:1504 #, python-format msgid "Edit User %(nick)s" msgstr "Benutzer %(nick)s bearbeiten" -#: cps/admin.py:1107 cps/web.py:1509 -msgid "This username is already taken" -msgstr "Benutzername ist schon vorhanden" +#: cps/admin.py:1387 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "Benutzer '%(nick)s' aktualisiert" -#: cps/admin.py:1147 cps/templates/admin.html:78 +#: cps/admin.py:1391 +#, fuzzy +msgid "An unknown error occurred." +msgstr "Es ist ein unbekannter Fehler aufgetreten." + +#: cps/admin.py:1423 cps/templates/admin.html:94 msgid "Edit E-mail Server Settings" msgstr "SMTP-Einstellungen ändern" -#: cps/admin.py:1175 +#: cps/admin.py:1442 +msgid "G-Mail Account Verification Successful" +msgstr "" + +#: cps/admin.py:1468 #, python-format msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" msgstr "" -#: cps/admin.py:1178 +#: cps/admin.py:1471 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Es trat ein Fehler beim Versenden der Test-E-Mail auf: %(res)s" -#: cps/admin.py:1180 +#: cps/admin.py:1473 msgid "Please configure your e-mail address first..." msgstr "Bitte zuerst E-Mail Adresse konfigurieren..." -#: cps/admin.py:1182 +#: cps/admin.py:1475 msgid "E-mail server settings updated" msgstr "Einstellungen des E-Mail-Servers aktualisiert" -#: cps/admin.py:1193 -msgid "User not found" -msgstr "Benutzer nicht gefunden" - -#: cps/admin.py:1220 +#: cps/admin.py:1516 #, python-format msgid "Password for user %(user)s reset" msgstr "Passwort für Benutzer %(user)s wurde zurückgesetzt" -#: cps/admin.py:1223 cps/web.py:1388 cps/web.py:1452 +#: cps/admin.py:1519 cps/web.py:1442 cps/web.py:1503 msgid "An unknown error occurred. Please try again later." msgstr "Es ist ein unbekannter Fehler aufgetreten. Bitte später erneut versuchen." -#: cps/admin.py:1226 cps/web.py:1320 +#: cps/admin.py:1522 cps/web.py:1382 msgid "Please configure the SMTP mail settings first..." msgstr "Bitte zuerst die SMTP-Einstellung konfigurieren ..." -#: cps/admin.py:1237 +#: cps/admin.py:1533 msgid "Logfile viewer" msgstr "Logdatei Anzeige" -#: cps/admin.py:1303 +#: cps/admin.py:1599 msgid "Requesting update package" msgstr "Frage Update an" -#: cps/admin.py:1304 +#: cps/admin.py:1600 msgid "Downloading update package" msgstr "Lade Update herunter" -#: cps/admin.py:1305 +#: cps/admin.py:1601 msgid "Unzipping update package" msgstr "Entpacke Update" -#: cps/admin.py:1306 +#: cps/admin.py:1602 msgid "Replacing files" msgstr "Ersetze Dateien" -#: cps/admin.py:1307 +#: cps/admin.py:1603 msgid "Database connections are closed" msgstr "Schließe Datenbankverbindungen" -#: cps/admin.py:1308 +#: cps/admin.py:1604 msgid "Stopping server" msgstr "Stoppe Server" -#: cps/admin.py:1309 +#: cps/admin.py:1605 msgid "Update finished, please press okay and reload page" msgstr "Update abgeschlossen, bitte okay drücken und Seite neu laden" -#: cps/admin.py:1310 cps/admin.py:1311 cps/admin.py:1312 cps/admin.py:1313 -#: cps/admin.py:1314 +#: cps/admin.py:1606 cps/admin.py:1607 cps/admin.py:1608 cps/admin.py:1609 +#: cps/admin.py:1610 msgid "Update failed:" msgstr "Update fehlgeschlagen:" -#: cps/admin.py:1310 cps/updater.py:337 cps/updater.py:532 cps/updater.py:534 +#: cps/admin.py:1606 cps/updater.py:356 cps/updater.py:566 cps/updater.py:568 msgid "HTTP Error" msgstr "HTTP Fehler" -#: cps/admin.py:1311 cps/updater.py:339 cps/updater.py:536 +#: cps/admin.py:1607 cps/updater.py:358 cps/updater.py:570 msgid "Connection error" msgstr "Verbindungsfehler" -#: cps/admin.py:1312 cps/updater.py:341 cps/updater.py:538 +#: cps/admin.py:1608 cps/updater.py:360 cps/updater.py:572 msgid "Timeout while establishing connection" msgstr "Timeout beim Verbindungsaufbau" -#: cps/admin.py:1313 cps/updater.py:343 cps/updater.py:540 +#: cps/admin.py:1609 cps/updater.py:362 cps/updater.py:574 msgid "General error" msgstr "Allgemeiner Fehler" -#: cps/admin.py:1314 +#: cps/admin.py:1610 msgid "Update File Could Not be Saved in Temp Dir" msgstr "Updatedatei konnte nicht in Temporärem Ordner gespeichert werden" -#: cps/admin.py:1376 +#: cps/admin.py:1671 msgid "Failed to Create at Least One LDAP User" msgstr "Mindestens ein LDAP Benutzer konnte nicht erzeugt werden" -#: cps/admin.py:1389 +#: cps/admin.py:1684 #, python-format msgid "Error: %(ldaperror)s" msgstr "Fehler: %(ldaperror)s" -#: cps/admin.py:1393 +#: cps/admin.py:1688 msgid "Error: No user returned in response of LDAP server" msgstr "Fehler: Keine Benutzerinformationen von LDAP Server empfangen" -#: cps/admin.py:1426 +#: cps/admin.py:1721 msgid "At Least One LDAP User Not Found in Database" msgstr "Mindestens ein LDAP Benutzer wurde nicht in der Datenbank gefudnen" -#: cps/admin.py:1428 +#: cps/admin.py:1723 msgid "{} User Successfully Imported" msgstr "{} Benutzer erfolgreich importiert" @@ -345,98 +441,98 @@ msgstr "Nicht konfiguriert" msgid "Execution permissions missing" msgstr "Ausführeberechtigung fehlt" -#: cps/editbooks.py:267 cps/editbooks.py:269 +#: cps/editbooks.py:294 cps/editbooks.py:296 msgid "Book Format Successfully Deleted" msgstr "Buch Format erfolgreich gelöscht" -#: cps/editbooks.py:276 cps/editbooks.py:278 +#: cps/editbooks.py:303 cps/editbooks.py:305 msgid "Book Successfully Deleted" msgstr "Buch erfolgreich gelöscht" -#: cps/editbooks.py:325 cps/editbooks.py:646 cps/web.py:1598 cps/web.py:1634 -#: cps/web.py:1705 +#: cps/editbooks.py:361 cps/editbooks.py:724 cps/web.py:1627 cps/web.py:1663 +#: cps/web.py:1734 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Öffnen des Buchs fehlgeschlagen. Datei existiert nicht oder ist nicht zugänglich" -#: cps/editbooks.py:359 +#: cps/editbooks.py:395 msgid "edit metadata" msgstr "Metadaten editieren" -#: cps/editbooks.py:434 +#: cps/editbooks.py:473 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s ist keine gültige Sprache" -#: cps/editbooks.py:556 cps/editbooks.py:905 +#: cps/editbooks.py:595 cps/editbooks.py:936 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Dateiendung '%(ext)s' kann nicht auf diesen Server hochgeladen werden" -#: cps/editbooks.py:560 cps/editbooks.py:909 +#: cps/editbooks.py:599 cps/editbooks.py:940 msgid "File to be uploaded must have an extension" msgstr "Dateien müssen eine Erweiterung haben, um hochgeladen zu werden" -#: cps/editbooks.py:572 +#: cps/editbooks.py:611 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Fehler beim Erzeugen des Pfads %(path)s (Zugriff verweigert)" -#: cps/editbooks.py:577 +#: cps/editbooks.py:616 #, python-format msgid "Failed to store file %(file)s." msgstr "Fehler beim Speichern der Datei %(file)s." -#: cps/editbooks.py:595 cps/editbooks.py:972 cps/web.py:1559 +#: cps/editbooks.py:634 cps/editbooks.py:1027 cps/web.py:1588 #, python-format msgid "Database error: %(error)s." msgstr "Datenbankfehler: %(error)s." -#: cps/editbooks.py:599 +#: cps/editbooks.py:638 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Dateiformat %(ext)s zu %(book)s hinzugefügt" -#: cps/editbooks.py:726 +#: cps/editbooks.py:775 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "IDs unterscheiden nicht Groß-Kleinschreibung, alte ID wird überschrieben" -#: cps/editbooks.py:763 +#: cps/editbooks.py:807 msgid "Metadata successfully updated" msgstr "Metadaten wurden erfolgreich aktualisiert" -#: cps/editbooks.py:772 +#: cps/editbooks.py:816 msgid "Error editing book, please check logfile for details" msgstr "Fehler beim Editieren des Buchs, Details im Logfile" -#: cps/editbooks.py:810 +#: cps/editbooks.py:854 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Das hochgeladene Buch existiert evtl. schon in der Bibliothek: " -#: cps/editbooks.py:917 +#: cps/editbooks.py:948 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "Die Datei %(filename)s konnte nicht im temporären Ordner gespeichert werden" -#: cps/editbooks.py:947 +#: cps/editbooks.py:967 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "Fehler beim Verschieben der Cover Datei %(file)s: %(error)s" -#: cps/editbooks.py:958 +#: cps/editbooks.py:1013 #, python-format msgid "File %(file)s uploaded" msgstr "Datei %(file)s hochgeladen" -#: cps/editbooks.py:984 +#: cps/editbooks.py:1039 msgid "Source or destination format for conversion missing" msgstr "Quell- oder Zielformat für Konvertierung fehlt" -#: cps/editbooks.py:992 +#: cps/editbooks.py:1047 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Buch wurde erfolgreich für die Konvertierung nach %(book_format)s eingereiht" -#: cps/editbooks.py:996 +#: cps/editbooks.py:1051 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Es trat ein Fehler beim Konvertieren des Buches auf: %(res)s" @@ -544,55 +640,68 @@ msgstr "Datei %(file)s wurde nicht auf Google Drive gefunden" msgid "Book path %(path)s not found on Google Drive" msgstr "Buchpfad %(path)s wurde nicht auf Google Drive gefunden" -#: cps/helper.py:576 +#: cps/helper.py:511 +#, fuzzy +msgid "Found an existing account for this e-mail address" +msgstr "Es existiert bereits ein Benutzer für diese E-Mailadresse." + +#: cps/helper.py:519 +msgid "This username is already taken" +msgstr "Benutzername ist schon vorhanden" + +#: cps/helper.py:529 +msgid "Invalid e-mail address format" +msgstr "Ungültiges E-Mail Adressformat" + +#: cps/helper.py:602 msgid "Error Downloading Cover" msgstr "Fehler beim Herunterladen des Covers" -#: cps/helper.py:579 +#: cps/helper.py:605 msgid "Cover Format Error" msgstr "Coverdatei fehlerhaft" -#: cps/helper.py:589 +#: cps/helper.py:615 msgid "Failed to create path for cover" msgstr "Fehler beim Erzeugen des Ordners für die Coverdatei" -#: cps/helper.py:605 +#: cps/helper.py:631 msgid "Cover-file is not a valid image file, or could not be stored" msgstr "Cover Datei ist keine gültige Bilddatei, kann nicht gespeichert werden" -#: cps/helper.py:616 +#: cps/helper.py:642 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" msgstr "Nur jpg/jpeg/png/webp/bmp Dateien werden als Coverdatei unterstützt" -#: cps/helper.py:629 +#: cps/helper.py:655 msgid "Only jpg/jpeg files are supported as coverfile" msgstr "Es werden nur jpg/jpeg Dateien als Cover untertützt" -#: cps/helper.py:680 +#: cps/helper.py:707 msgid "Unrar binary file not found" msgstr "UnRar Programm nicht gefunden" -#: cps/helper.py:694 +#: cps/helper.py:721 msgid "Error excecuting UnRar" msgstr "Fehler beim ausführen von UnRar" -#: cps/helper.py:743 +#: cps/helper.py:769 msgid "Waiting" msgstr "Wartend" -#: cps/helper.py:745 +#: cps/helper.py:771 msgid "Failed" msgstr "Fehlgeschlagen" -#: cps/helper.py:747 +#: cps/helper.py:773 msgid "Started" msgstr "Gestartet" -#: cps/helper.py:749 +#: cps/helper.py:775 msgid "Finished" msgstr "Beendet" -#: cps/helper.py:751 +#: cps/helper.py:777 msgid "Unknown Status" msgstr "Unbekannter Status" @@ -604,65 +713,82 @@ msgstr "Bitte nicht von \"localhost\" auf Calibre-Web zugreifen, um einen gülti msgid "Kobo Setup" msgstr "Kobo Setup" -#: cps/oauth_bb.py:76 +#: cps/oauth_bb.py:78 #, python-format msgid "Register with %(provider)s" msgstr "Anmelden mit %(provider)s" -#: cps/oauth_bb.py:137 cps/remotelogin.py:133 cps/web.py:1424 +#: cps/oauth_bb.py:139 cps/remotelogin.py:133 cps/web.py:1475 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "Du bist nun eingeloggt als '%(nickname)s'" -#: cps/oauth_bb.py:147 +#: cps/oauth_bb.py:149 #, python-format msgid "Link to %(oauth)s Succeeded" msgstr "Verbindung mit %(oauth)s erfolgreich" -#: cps/oauth_bb.py:153 +#: cps/oauth_bb.py:156 msgid "Login failed, No User Linked With OAuth Account" msgstr "Login fehlgeschlagen, es ist kein Benutzer mit diesem Account verbunden" -#: cps/oauth_bb.py:195 +#: cps/oauth_bb.py:198 #, python-format msgid "Unlink to %(oauth)s Succeeded" msgstr "Verbindung zu %(oauth)s erfolgreich getrennt" -#: cps/oauth_bb.py:199 +#: cps/oauth_bb.py:203 #, python-format msgid "Unlink to %(oauth)s Failed" msgstr "Verbindung mit %(oauth)s fehlgeschlagen" -#: cps/oauth_bb.py:202 +#: cps/oauth_bb.py:206 #, python-format msgid "Not Linked to %(oauth)s" msgstr "Nicht mit %(oauth)s verbunden" -#: cps/oauth_bb.py:259 +#: cps/oauth_bb.py:262 msgid "Failed to log in with GitHub." msgstr "Login mit Github fehlgeschlagen." -#: cps/oauth_bb.py:264 +#: cps/oauth_bb.py:268 msgid "Failed to fetch user info from GitHub." msgstr "Laden der Benutzerinformationen von Github fehlgeschlagen." -#: cps/oauth_bb.py:275 +#: cps/oauth_bb.py:280 msgid "Failed to log in with Google." msgstr "Login mit Google fehlgeschlagen." -#: cps/oauth_bb.py:280 +#: cps/oauth_bb.py:286 msgid "Failed to fetch user info from Google." msgstr "Laden der Benutzerinformationen von Google fehlgeschlagen." -#: cps/oauth_bb.py:312 +#: cps/oauth_bb.py:333 msgid "GitHub Oauth error, please retry later." msgstr "GitHub Oauth Fehler, bitte später erneut versuchen." -#: cps/oauth_bb.py:331 +#: cps/oauth_bb.py:336 +msgid "GitHub Oauth error: {}" +msgstr "" + +#: cps/oauth_bb.py:357 msgid "Google Oauth error, please retry later." msgstr "Google Oauth Fehler, bitte später erneut versuchen." -#: cps/remotelogin.py:65 cps/web.py:1471 +#: cps/oauth_bb.py:360 +msgid "Google Oauth error: {}" +msgstr "" + +#: cps/opds.py:110 cps/opds.py:199 cps/opds.py:276 cps/opds.py:328 +#: cps/templates/grid.html:14 cps/templates/list.html:14 +msgid "All" +msgstr "Alle" + +#: cps/opds.py:385 +msgid "{} Stars" +msgstr "" + +#: cps/remotelogin.py:65 cps/web.py:1522 msgid "login" msgstr "Login" @@ -678,7 +804,7 @@ msgstr "Token ist abgelaufen" msgid "Success! Please return to your device" msgstr "Erfolg! Bitte zum Gerät zurückkehren" -#: cps/render_template.py:39 cps/web.py:415 +#: cps/render_template.py:39 cps/web.py:414 msgid "Books" msgstr "Bücher" @@ -686,7 +812,7 @@ msgstr "Bücher" msgid "Show recent books" msgstr "Zeige kürzlich hinzugefügte Bücher" -#: cps/render_template.py:42 cps/templates/index.xml:18 +#: cps/render_template.py:42 cps/templates/index.xml:25 msgid "Hot Books" msgstr "Beliebte Bücher" @@ -694,127 +820,130 @@ msgstr "Beliebte Bücher" msgid "Show Hot Books" msgstr "Zeige beliebte Bücher" -#: cps/render_template.py:45 +#: cps/render_template.py:46 cps/render_template.py:51 msgid "Downloaded Books" msgstr "Heruntergeladene Bücher" -#: cps/render_template.py:47 +#: cps/render_template.py:48 cps/render_template.py:53 +#: cps/templates/user_table.html:151 msgid "Show Downloaded Books" msgstr "Zeige heruntergeladene Bücher" -#: cps/render_template.py:50 cps/templates/index.xml:25 cps/web.py:425 +#: cps/render_template.py:56 cps/templates/index.xml:32 cps/web.py:424 msgid "Top Rated Books" msgstr "Best bewertete Bücher" -#: cps/render_template.py:52 +#: cps/render_template.py:58 cps/templates/user_table.html:145 msgid "Show Top Rated Books" msgstr "Bestbewertete Bücher anzeigen" -#: cps/render_template.py:53 cps/templates/index.xml:47 -#: cps/templates/index.xml:51 cps/web.py:642 +#: cps/render_template.py:59 cps/templates/index.xml:54 +#: cps/templates/index.xml:58 cps/web.py:650 msgid "Read Books" msgstr "Gelesene Bücher" -#: cps/render_template.py:55 +#: cps/render_template.py:61 msgid "Show read and unread" msgstr "Zeige gelesene/ungelesene Bücher" -#: cps/render_template.py:57 cps/templates/index.xml:54 -#: cps/templates/index.xml:58 cps/web.py:645 +#: cps/render_template.py:63 cps/templates/index.xml:61 +#: cps/templates/index.xml:65 cps/web.py:653 msgid "Unread Books" msgstr "Ungelesene Bücher" -#: cps/render_template.py:59 +#: cps/render_template.py:65 msgid "Show unread" msgstr "Zeige Ungelesene" -#: cps/render_template.py:60 +#: cps/render_template.py:66 msgid "Discover" msgstr "Entdecke" -#: cps/render_template.py:62 +#: cps/render_template.py:68 cps/templates/user_table.html:143 +#: cps/templates/user_table.html:146 msgid "Show random books" msgstr "Zeige zufällige Bücher" -#: cps/render_template.py:63 cps/templates/book_table.html:50 -#: cps/templates/index.xml:76 cps/web.py:950 +#: cps/render_template.py:69 cps/templates/book_table.html:51 +#: cps/templates/index.xml:83 cps/web.py:1024 msgid "Categories" msgstr "Kategorien" -#: cps/render_template.py:65 +#: cps/render_template.py:71 cps/templates/user_table.html:142 msgid "Show category selection" msgstr "Zeige Kategorienauswahl" -#: cps/render_template.py:66 cps/templates/book_edit.html:84 -#: cps/templates/book_table.html:51 cps/templates/index.xml:83 -#: cps/templates/search_form.html:62 cps/web.py:854 cps/web.py:864 +#: cps/render_template.py:72 cps/templates/book_edit.html:84 +#: cps/templates/book_table.html:52 cps/templates/index.xml:90 +#: cps/templates/search_form.html:62 cps/web.py:921 cps/web.py:931 msgid "Series" msgstr "Serien" -#: cps/render_template.py:68 +#: cps/render_template.py:74 cps/templates/user_table.html:141 msgid "Show series selection" msgstr "Zeige Serienauswahl" -#: cps/render_template.py:69 cps/templates/book_table.html:49 -#: cps/templates/index.xml:62 +#: cps/render_template.py:75 cps/templates/book_table.html:50 +#: cps/templates/index.xml:69 msgid "Authors" msgstr "Autoren" -#: cps/render_template.py:71 +#: cps/render_template.py:77 cps/templates/user_table.html:144 msgid "Show author selection" msgstr "Zeige Autorenauswahl" -#: cps/render_template.py:73 cps/templates/book_table.html:55 -#: cps/templates/index.xml:69 cps/web.py:833 +#: cps/render_template.py:79 cps/templates/book_table.html:56 +#: cps/templates/index.xml:76 cps/web.py:898 msgid "Publishers" msgstr "Verleger" -#: cps/render_template.py:75 +#: cps/render_template.py:81 cps/templates/user_table.html:147 msgid "Show publisher selection" msgstr "Zeige Verlegerauswahl" -#: cps/render_template.py:76 cps/templates/book_table.html:53 -#: cps/templates/index.xml:90 cps/templates/search_form.html:100 cps/web.py:929 +#: cps/render_template.py:82 cps/templates/book_table.html:54 +#: cps/templates/index.xml:97 cps/templates/search_form.html:100 +#: cps/web.py:1001 msgid "Languages" msgstr "Sprachen" -#: cps/render_template.py:79 +#: cps/render_template.py:85 cps/templates/user_table.html:139 msgid "Show language selection" msgstr "Zeige Sprachauswahl" -#: cps/render_template.py:80 cps/templates/index.xml:97 +#: cps/render_template.py:86 cps/templates/index.xml:104 msgid "Ratings" msgstr "Bewertungen" -#: cps/render_template.py:82 +#: cps/render_template.py:88 cps/templates/user_table.html:148 msgid "Show ratings selection" msgstr "Zeige Bewertungsauswahl" -#: cps/render_template.py:83 cps/templates/index.xml:105 +#: cps/render_template.py:89 cps/templates/index.xml:112 msgid "File formats" msgstr "Dateiformate" -#: cps/render_template.py:85 +#: cps/render_template.py:91 cps/templates/user_table.html:149 msgid "Show file formats selection" msgstr "Zeige Dateiformatauswahl" -#: cps/render_template.py:87 cps/web.py:669 +#: cps/render_template.py:93 cps/web.py:677 msgid "Archived Books" msgstr "Archivierte Bücher" -#: cps/render_template.py:89 +#: cps/render_template.py:95 cps/templates/user_table.html:150 msgid "Show archived books" msgstr "Zeige archivierte Bücher" -#: cps/render_template.py:91 cps/web.py:743 +#: cps/render_template.py:97 cps/web.py:751 msgid "Books List" msgstr "Bücherliste" -#: cps/render_template.py:93 +#: cps/render_template.py:99 cps/templates/user_table.html:152 msgid "Show Books List" -msgstr "Zeiche Bücherliste" +msgstr "Zeige Bücherliste" -#: cps/shelf.py:69 cps/shelf.py:122 +#: cps/shelf.py:69 cps/shelf.py:124 msgid "Invalid shelf specified" msgstr "Ungültiges Bücherregal angegeben" @@ -828,303 +957,307 @@ msgstr "Du hast keine Berechtigung, ein Buch zu diesem Bücherregal hinzuzufüge msgid "Book is already part of the shelf: %(shelfname)s" msgstr "Buch ist bereits Teil des Bücherregals %(shelfname)s" -#: cps/shelf.py:108 +#: cps/shelf.py:110 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Das Buch wurde dem Bücherregal %(sname)s hinzugefügt" -#: cps/shelf.py:126 +#: cps/shelf.py:129 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Dir ist es nicht erlaubt, ein Buch zum Bücherregal %(name)s hinzuzufügen" -#: cps/shelf.py:144 +#: cps/shelf.py:147 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "Bücher sind bereits Teil des Bücherregals %(name)s" -#: cps/shelf.py:156 +#: cps/shelf.py:159 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "Bücher wurden zum Bücherregal %(sname)s hinzugefügt" -#: cps/shelf.py:161 +#: cps/shelf.py:166 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "Bücher konnten nicht zum Bücherregal %(sname)s hinzugefügt werden" -#: cps/shelf.py:206 +#: cps/shelf.py:212 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Das Buch wurde aus dem Bücherregal: %(sname)s entfernt" -#: cps/shelf.py:214 +#: cps/shelf.py:221 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Dir ist es nicht erlaubt, Bücher aus dem Bücherregal %(sname)s zu entfernen" -#: cps/shelf.py:224 cps/templates/layout.html:140 +#: cps/shelf.py:231 cps/templates/layout.html:140 msgid "Create a Shelf" msgstr "Bücherregal erzeugen" -#: cps/shelf.py:231 +#: cps/shelf.py:238 msgid "Edit a shelf" msgstr "Bücherregal editieren" -#: cps/shelf.py:249 +#: cps/shelf.py:256 #, python-format msgid "Shelf %(title)s created" msgstr "Bücherregal %(title)s erzeugt" -#: cps/shelf.py:252 +#: cps/shelf.py:259 #, python-format msgid "Shelf %(title)s changed" msgstr "Bücherregal %(title)s verändert" -#: cps/shelf.py:265 +#: cps/shelf.py:273 msgid "There was an error" msgstr "Es trat ein Fehler auf" -#: cps/shelf.py:281 +#: cps/shelf.py:290 #, python-format msgid "A public shelf with the name '%(title)s' already exists." msgstr "Es existiert bereit ein öffentliches Bücherregal mit dem Name '%(title)s'." -#: cps/shelf.py:291 +#: cps/shelf.py:301 #, python-format msgid "A private shelf with the name '%(title)s' already exists." msgstr "Es existiert bereit ein privates Bücherregal mit dem Name '%(title)s'." -#: cps/shelf.py:358 +#: cps/shelf.py:370 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Reihenfolge in Bücherregal '%(name)s' verändern" -#: cps/shelf.py:423 +#: cps/shelf.py:436 #, python-format msgid "Shelf: '%(name)s'" msgstr "Bücherregal: '%(name)s'" -#: cps/shelf.py:427 +#: cps/shelf.py:440 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Fehler beim Öffnen des Bücherregals. Bücherregal exisitert nicht oder ist nicht zugänglich" -#: cps/updater.py:355 cps/updater.py:366 cps/updater.py:418 cps/updater.py:432 +#: cps/updater.py:374 cps/updater.py:385 cps/updater.py:485 cps/updater.py:500 msgid "Unexpected data while reading update information" msgstr "Updateinformationen enthalten unbekannte Daten" -#: cps/updater.py:362 cps/updater.py:424 +#: cps/updater.py:381 cps/updater.py:492 msgid "No update available. You already have the latest version installed" msgstr "Kein Update verfügbar. Es ist bereits die aktuellste Version installiert" -#: cps/updater.py:379 +#: cps/updater.py:399 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "Es sind Updates verfügbar. Klicke auf den Button unten, um auf die aktuellste Version zu aktualisieren." -#: cps/updater.py:397 +#: cps/updater.py:417 msgid "Could not fetch update information" msgstr "Updateinformationen konnten nicht geladen werden" -#: cps/updater.py:411 -msgid "No release information available" -msgstr "Keine Releaseinformationen verfügbar" +#: cps/updater.py:427 +msgid "Click on the button below to update to the latest stable version." +msgstr "Klicke auf den Button unten, um auf die letzte stabile Version zu aktualisieren." -#: cps/updater.py:468 cps/updater.py:479 cps/updater.py:498 +#: cps/updater.py:436 cps/updater.py:450 cps/updater.py:461 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "Ein neues Update ist verfügbar. Klicke auf den Button unten, um auf Version: %(version)s zu aktualisieren" -#: cps/updater.py:489 -msgid "Click on the button below to update to the latest stable version." -msgstr "Klicke auf den Button unten, um auf die letzte stabile Version zu aktualisieren." +#: cps/updater.py:478 +msgid "No release information available" +msgstr "Keine Releaseinformationen verfügbar" -#: cps/templates/index.html:5 cps/web.py:435 +#: cps/templates/index.html:5 cps/web.py:434 msgid "Discover (Random Books)" msgstr "Zufällige Bücher" -#: cps/web.py:461 +#: cps/web.py:460 msgid "Hot Books (Most Downloaded)" msgstr "Beliebte Bücher (am meisten Downloads)" -#: cps/web.py:489 +#: cps/web.py:493 #, python-format msgid "Downloaded books by %(user)s" msgstr "Von %(user)s heruntergeladene Bücher" -#: cps/web.py:503 +#: cps/web.py:508 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Öffnen des Buchs fehlgeschlagen. Datei existiert nicht oder ist nicht zugänglich" -#: cps/web.py:517 +#: cps/web.py:522 #, python-format msgid "Author: %(name)s" msgstr "Author: %(name)s" -#: cps/web.py:531 +#: cps/web.py:537 #, python-format msgid "Publisher: %(name)s" msgstr "Verleger: %(name)s" -#: cps/web.py:544 +#: cps/web.py:550 #, python-format msgid "Series: %(serie)s" msgstr "Serie: %(serie)s" -#: cps/web.py:557 +#: cps/web.py:563 #, python-format msgid "Rating: %(rating)s stars" msgstr "Bewertung: %(rating)s Sterne" -#: cps/web.py:570 +#: cps/web.py:576 #, python-format msgid "File format: %(format)s" msgstr "Dateiformat: %(format)s" -#: cps/web.py:584 +#: cps/web.py:592 #, python-format msgid "Category: %(name)s" msgstr "Kategorie: %(name)s" -#: cps/web.py:603 +#: cps/web.py:611 #, python-format msgid "Language: %(name)s" msgstr "Sprache: %(name)s" -#: cps/web.py:633 +#: cps/web.py:641 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "Benutzerdefinierte Spalte Nr. %(column)d ist nicht in Calibre Datenbank vorhanden" -#: cps/templates/layout.html:56 cps/web.py:703 cps/web.py:1248 +#: cps/templates/layout.html:56 cps/web.py:711 cps/web.py:1314 msgid "Advanced Search" msgstr "Erweiterte Suche" #: cps/templates/book_edit.html:214 cps/templates/feed.xml:33 #: cps/templates/index.xml:11 cps/templates/layout.html:45 #: cps/templates/layout.html:48 cps/templates/search_form.html:194 -#: cps/web.py:715 cps/web.py:987 +#: cps/web.py:723 cps/web.py:1061 msgid "Search" msgstr "Suche" -#: cps/web.py:882 +#: cps/templates/admin.html:16 cps/web.py:876 +msgid "Downloads" +msgstr "Downloads" + +#: cps/web.py:952 msgid "Ratings list" msgstr "Bewertungsliste" -#: cps/web.py:901 +#: cps/web.py:973 msgid "File formats list" msgstr "Liste der Dateiformate" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:964 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1038 msgid "Tasks" msgstr "Aufgaben" -#: cps/web.py:1108 +#: cps/web.py:1182 msgid "Published after " msgstr "Herausgegeben nach dem " -#: cps/web.py:1115 +#: cps/web.py:1189 msgid "Published before " msgstr "Herausgegeben vor dem " -#: cps/web.py:1145 +#: cps/web.py:1211 #, python-format msgid "Rating <= %(rating)s" msgstr "Bewertung <= %(rating)s" -#: cps/web.py:1147 +#: cps/web.py:1213 #, python-format msgid "Rating >= %(rating)s" msgstr "Bewertung >= %(rating)s" -#: cps/web.py:1149 +#: cps/web.py:1215 #, python-format msgid "Read Status = %(status)s" msgstr "Lesestatus = %(status)s" -#: cps/web.py:1325 +#: cps/web.py:1387 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Buch erfolgreich zum Senden an %(kindlemail)s eingereiht" -#: cps/web.py:1329 +#: cps/web.py:1391 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Beim Senden des Buchs trat ein Fehler auf: %(res)s" -#: cps/web.py:1331 +#: cps/web.py:1393 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Bitte zuerst die Kindle E-Mailadresse konfigurieren..." -#: cps/web.py:1348 +#: cps/web.py:1410 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "Der E-Mail Server ist nicht konfigurierte, bitte den Administrator kontaktieren!" -#: cps/web.py:1349 cps/web.py:1359 cps/web.py:1366 cps/web.py:1389 -#: cps/web.py:1393 cps/web.py:1398 cps/web.py:1402 +#: cps/web.py:1411 cps/web.py:1418 cps/web.py:1424 cps/web.py:1443 +#: cps/web.py:1447 cps/web.py:1453 msgid "register" msgstr "Registieren" -#: cps/web.py:1364 -msgid "Invalid e-mail address format" -msgstr "Ungültiges E-Mail Adressformat" - -#: cps/web.py:1391 +#: cps/web.py:1445 msgid "Your e-mail is not allowed to register" msgstr "Diese E-Mail ist nicht für die Registrierung zugelassen" -#: cps/web.py:1394 +#: cps/web.py:1448 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Eine Bestätigungs-E-Mail wurde an deinen E-Mail Account versendet." -#: cps/web.py:1397 -msgid "This username or e-mail address is already in use." -msgstr "Benutzername oder E-Mailadresse ist bereits in Verwendung." - -#: cps/web.py:1414 +#: cps/web.py:1465 msgid "Cannot activate LDAP authentication" msgstr "LDAP-Authentifizierung kann nicht aktiviert werden" -#: cps/web.py:1431 +#: cps/web.py:1482 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "Rückfall Login als: '%(nickname)s', LDAP Server ist nicht erreichbar, oder der Nutzer ist unbekannt" -#: cps/web.py:1437 +#: cps/web.py:1488 #, python-format msgid "Could not login: %(message)s" msgstr "Login nicht erfolgreich: %(message)s" -#: cps/web.py:1441 cps/web.py:1465 +#: cps/web.py:1492 cps/web.py:1516 msgid "Wrong Username or Password" msgstr "Falscher Benutzername oder Passwort" -#: cps/web.py:1448 +#: cps/web.py:1499 msgid "New Password was send to your email address" msgstr "Das neue Passwort wurde an die E-Mail Adresse verschickt" -#: cps/web.py:1454 +#: cps/web.py:1505 msgid "Please enter valid username to reset password" msgstr "Bitte einen gültigen Benutzernamen zum Zurücksetzen des Passworts angeben" -#: cps/web.py:1460 +#: cps/web.py:1511 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Eingeloggt als: '%(nickname)s'" -#: cps/web.py:1498 cps/web.py:1583 +#: cps/web.py:1565 cps/web.py:1612 #, python-format msgid "%(name)s's profile" msgstr "%(name)s's Profil" -#: cps/web.py:1550 +#: cps/web.py:1579 msgid "Profile updated" msgstr "Profil aktualisiert" -#: cps/web.py:1610 cps/web.py:1613 cps/web.py:1616 cps/web.py:1619 -#: cps/web.py:1626 cps/web.py:1631 +#: cps/web.py:1583 +msgid "Found an existing account for this e-mail address." +msgstr "Es existiert bereits ein Benutzer für diese E-Mailadresse." + +#: cps/web.py:1639 cps/web.py:1642 cps/web.py:1645 cps/web.py:1648 +#: cps/web.py:1655 cps/web.py:1660 msgid "Read a Book" msgstr "Lese ein Buch" +#: cps/services/gmail.py:41 +msgid "Found no valid gmail.json file with OAuth information" +msgstr "" + #: cps/tasks/convert.py:114 #, python-format msgid "Calibre ebook-convert %(tool)s not found" @@ -1163,221 +1296,231 @@ msgstr "Calibre fehlgeschlagen mit Fehler: %(error)s" msgid "Users" msgstr "Benutzerliste" -#: cps/templates/admin.html:12 cps/templates/login.html:8 +#: cps/templates/admin.html:13 cps/templates/login.html:8 #: cps/templates/login.html:9 cps/templates/register.html:8 -#: cps/templates/user_edit.html:9 +#: cps/templates/user_edit.html:9 cps/templates/user_table.html:121 msgid "Username" msgstr "Benutzername" -#: cps/templates/admin.html:13 cps/templates/register.html:13 -#: cps/templates/user_edit.html:14 +#: cps/templates/admin.html:14 cps/templates/register.html:13 +#: cps/templates/user_edit.html:14 cps/templates/user_table.html:122 msgid "E-mail Address" msgstr "E-Mail" -#: cps/templates/admin.html:14 cps/templates/user_edit.html:27 +#: cps/templates/admin.html:15 cps/templates/user_edit.html:27 msgid "Send to Kindle E-mail Address" msgstr "Kindle" -#: cps/templates/admin.html:15 -msgid "Downloads" -msgstr "Downloads" - -#: cps/templates/admin.html:16 cps/templates/layout.html:77 +#: cps/templates/admin.html:17 cps/templates/layout.html:77 +#: cps/templates/user_table.html:130 msgid "Admin" msgstr "Admin" -#: cps/templates/admin.html:17 cps/templates/login.html:12 +#: cps/templates/admin.html:18 cps/templates/login.html:12 #: cps/templates/login.html:13 cps/templates/user_edit.html:22 msgid "Password" msgstr "Passwort" -#: cps/templates/admin.html:18 cps/templates/layout.html:66 +#: cps/templates/admin.html:19 cps/templates/layout.html:66 +#: cps/templates/user_table.html:132 msgid "Upload" msgstr "Upload" -#: cps/templates/admin.html:19 cps/templates/detail.html:18 +#: cps/templates/admin.html:20 cps/templates/detail.html:18 #: cps/templates/detail.html:27 cps/templates/shelf.html:6 +#: cps/templates/user_table.html:133 msgid "Download" msgstr "Download" -#: cps/templates/admin.html:20 +#: cps/templates/admin.html:21 msgid "View Books" msgstr "Bücher ansehen" -#: cps/templates/admin.html:21 +#: cps/templates/admin.html:22 cps/templates/user_table.html:118 +#: cps/templates/user_table.html:135 msgid "Edit" msgstr "Editieren" -#: cps/templates/admin.html:22 cps/templates/book_edit.html:16 -#: cps/templates/book_table.html:57 cps/templates/modal_dialogs.html:63 +#: cps/templates/admin.html:23 cps/templates/book_edit.html:16 +#: cps/templates/book_table.html:58 cps/templates/modal_dialogs.html:63 #: cps/templates/modal_dialogs.html:116 cps/templates/user_edit.html:66 +#: cps/templates/user_table.html:136 msgid "Delete" msgstr "Löschen" -#: cps/templates/admin.html:23 +#: cps/templates/admin.html:24 msgid "Public Shelf" msgstr "Öffentliches Bücherregal" -#: cps/templates/admin.html:44 +#: cps/templates/admin.html:47 msgid "Add New User" msgstr "Neuen Benutzer hinzufügen" -#: cps/templates/admin.html:46 +#: cps/templates/admin.html:49 msgid "Import LDAP Users" msgstr "LDAP Benutzer importieren" -#: cps/templates/admin.html:53 +#: cps/templates/admin.html:56 msgid "E-mail Server Settings" msgstr "Einstellungen des SMTP-Servers" -#: cps/templates/admin.html:57 cps/templates/email_edit.html:11 +#: cps/templates/admin.html:61 cps/templates/email_edit.html:30 msgid "SMTP Hostname" msgstr "SMTP-Hostname" -#: cps/templates/admin.html:61 cps/templates/email_edit.html:15 +#: cps/templates/admin.html:65 cps/templates/email_edit.html:34 msgid "SMTP Port" msgstr "SMTP Port" -#: cps/templates/admin.html:65 cps/templates/email_edit.html:19 +#: cps/templates/admin.html:69 cps/templates/email_edit.html:38 msgid "Encryption" msgstr "Verschlüsselung" -#: cps/templates/admin.html:69 cps/templates/email_edit.html:27 +#: cps/templates/admin.html:73 cps/templates/email_edit.html:46 msgid "SMTP Login" msgstr "SMTP-Login" -#: cps/templates/admin.html:73 cps/templates/email_edit.html:35 +#: cps/templates/admin.html:77 cps/templates/admin.html:88 +#: cps/templates/email_edit.html:54 msgid "From E-mail" msgstr "Absenderadresse" #: cps/templates/admin.html:84 +msgid "E-Mail Service" +msgstr "" + +#: cps/templates/admin.html:85 +msgid "Gmail via Oauth2" +msgstr "" + +#: cps/templates/admin.html:100 msgid "Configuration" msgstr "Konfiguration" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:103 msgid "Calibre Database Directory" msgstr "Ordner der Calibre-DB" -#: cps/templates/admin.html:91 cps/templates/config_edit.html:136 +#: cps/templates/admin.html:107 cps/templates/config_edit.html:136 msgid "Log Level" msgstr "Loglevel" -#: cps/templates/admin.html:95 +#: cps/templates/admin.html:111 msgid "Port" msgstr "Port" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:116 msgid "External Port" msgstr "Externer Port" -#: cps/templates/admin.html:107 cps/templates/config_view_edit.html:27 +#: cps/templates/admin.html:123 cps/templates/config_view_edit.html:27 msgid "Books per Page" msgstr "Bücher pro Seite" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:127 msgid "Uploads" msgstr "Hochladen" -#: cps/templates/admin.html:115 +#: cps/templates/admin.html:131 msgid "Anonymous Browsing" msgstr "Anonymes Durchsuchen" -#: cps/templates/admin.html:119 +#: cps/templates/admin.html:135 msgid "Public Registration" msgstr "Öffentliche Registrierung" -#: cps/templates/admin.html:123 +#: cps/templates/admin.html:139 msgid "Magic Link Remote Login" msgstr "Remotelogin ('Magischer Link')" -#: cps/templates/admin.html:127 +#: cps/templates/admin.html:143 msgid "Reverse Proxy Login" msgstr "Reverse Proxy Login" -#: cps/templates/admin.html:132 +#: cps/templates/admin.html:148 msgid "Reverse proxy header name" msgstr "Reverse Proxy Header Name" -#: cps/templates/admin.html:137 +#: cps/templates/admin.html:153 msgid "Edit Basic Configuration" msgstr "Basiskonfiguration" -#: cps/templates/admin.html:138 +#: cps/templates/admin.html:154 msgid "Edit UI Configuration" msgstr "Benutzeroberflächenkonfiguration" -#: cps/templates/admin.html:143 +#: cps/templates/admin.html:159 msgid "Administration" msgstr "Administration" -#: cps/templates/admin.html:144 +#: cps/templates/admin.html:160 msgid "Download Debug Package" msgstr "Debug Daten herunterladen" -#: cps/templates/admin.html:145 +#: cps/templates/admin.html:161 msgid "View Logs" msgstr "Logdateien ansehen" -#: cps/templates/admin.html:148 +#: cps/templates/admin.html:164 msgid "Reconnect Calibre Database" msgstr "Calibre-DB neu verbinden" -#: cps/templates/admin.html:149 +#: cps/templates/admin.html:165 msgid "Restart" msgstr "Neustart" -#: cps/templates/admin.html:150 +#: cps/templates/admin.html:166 msgid "Shutdown" msgstr "Calibre-Web beenden" -#: cps/templates/admin.html:155 +#: cps/templates/admin.html:171 msgid "Update" msgstr "Update" -#: cps/templates/admin.html:159 +#: cps/templates/admin.html:175 msgid "Version" msgstr "Version" -#: cps/templates/admin.html:160 +#: cps/templates/admin.html:176 msgid "Details" msgstr "Details" -#: cps/templates/admin.html:166 +#: cps/templates/admin.html:182 msgid "Current version" msgstr "Aktuelle Version" -#: cps/templates/admin.html:173 +#: cps/templates/admin.html:189 msgid "Check for Update" msgstr "Nach Update suchen" -#: cps/templates/admin.html:174 +#: cps/templates/admin.html:190 msgid "Perform Update" msgstr "Update durchführen" -#: cps/templates/admin.html:187 +#: cps/templates/admin.html:203 msgid "Are you sure you want to restart?" msgstr "Calibre-Web wirklich neustarten?" -#: cps/templates/admin.html:192 cps/templates/admin.html:206 -#: cps/templates/admin.html:226 cps/templates/shelf.html:95 +#: cps/templates/admin.html:208 cps/templates/admin.html:222 +#: cps/templates/admin.html:242 cps/templates/shelf.html:95 msgid "OK" msgstr "OK" -#: cps/templates/admin.html:193 cps/templates/admin.html:207 -#: cps/templates/book_edit.html:192 cps/templates/book_table.html:84 +#: cps/templates/admin.html:209 cps/templates/admin.html:223 +#: cps/templates/book_edit.html:192 cps/templates/book_table.html:85 #: cps/templates/config_edit.html:427 cps/templates/config_view_edit.html:151 -#: cps/templates/email_edit.html:47 cps/templates/modal_dialogs.html:64 -#: cps/templates/modal_dialogs.html:99 cps/templates/modal_dialogs.html:117 +#: cps/templates/modal_dialogs.html:64 cps/templates/modal_dialogs.html:99 +#: cps/templates/modal_dialogs.html:117 cps/templates/modal_dialogs.html:135 #: cps/templates/shelf.html:96 cps/templates/shelf_edit.html:19 #: cps/templates/user_edit.html:132 msgid "Cancel" msgstr "Abbruch" -#: cps/templates/admin.html:205 +#: cps/templates/admin.html:221 msgid "Are you sure you want to shutdown?" msgstr "Calibre-Web wirklich anhalten?" -#: cps/templates/admin.html:217 +#: cps/templates/admin.html:233 msgid "Updating, please do not reload this page" msgstr "Updatevorgang, Seite bitte nicht neu laden" @@ -1485,6 +1628,7 @@ msgid "Identifier Value" msgstr "ID Wert" #: cps/templates/book_edit.html:72 cps/templates/book_edit.html:289 +#: cps/templates/user_table.html:23 msgid "Remove" msgstr "Entfernen" @@ -1550,7 +1694,7 @@ msgid "Fetch Metadata" msgstr "Metadaten laden" #: cps/templates/book_edit.html:191 cps/templates/config_edit.html:424 -#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45 +#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:64 #: cps/templates/shelf_edit.html:17 cps/templates/shelf_order.html:40 #: cps/templates/user_edit.html:130 msgid "Save" @@ -1590,96 +1734,98 @@ msgstr "Fehler bei der Suche!" msgid "No Result(s) found! Please try another keyword." msgstr "Keine Ergebnisse gefunden! Bitte ein anderes Schlüsselwort benutzen." -#: cps/templates/book_table.html:10 cps/templates/book_table.html:52 +#: cps/templates/book_table.html:11 cps/templates/book_table.html:53 +#: cps/templates/user_table.html:13 cps/templates/user_table.html:65 +#: cps/templates/user_table.html:88 msgid "This Field is Required" msgstr "Dieses Feld ist erforderlich" -#: cps/templates/book_table.html:23 +#: cps/templates/book_table.html:24 msgid "Merge selected books" msgstr "Buchauswahl zusammenführen" -#: cps/templates/book_table.html:24 +#: cps/templates/book_table.html:25 cps/templates/user_table.html:111 msgid "Remove Selections" msgstr "Auswahl aufheben" -#: cps/templates/book_table.html:30 +#: cps/templates/book_table.html:31 msgid "Update Title Sort automatically" msgstr "Titelsortierung automatisch aktualisieren" -#: cps/templates/book_table.html:34 +#: cps/templates/book_table.html:35 msgid "Update Author Sort automatically" msgstr "Autorensortierung automatisch aktualisieren" -#: cps/templates/book_table.html:46 +#: cps/templates/book_table.html:47 msgid "Enter Title" msgstr "Titel eingeben" -#: cps/templates/book_table.html:46 cps/templates/config_view_edit.html:23 +#: cps/templates/book_table.html:47 cps/templates/config_view_edit.html:23 #: cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Titel" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Enter Title Sort" msgstr "Titelsortierung eingeben" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Title Sort" msgstr "Titelsortierung" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Enter Author Sort" msgstr "Autorensortierung eingeben" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Author Sort" msgstr "Autorensortierung" -#: cps/templates/book_table.html:49 +#: cps/templates/book_table.html:50 msgid "Enter Authors" msgstr "Autoren eingeben" -#: cps/templates/book_table.html:50 +#: cps/templates/book_table.html:51 msgid "Enter Categories" msgstr "Kategorien eingeben" -#: cps/templates/book_table.html:51 +#: cps/templates/book_table.html:52 msgid "Enter Series" msgstr "Serie eingeben" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Enter title" msgstr "Titel eingeben" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Series Index" msgstr "Serienindex" -#: cps/templates/book_table.html:53 +#: cps/templates/book_table.html:54 msgid "Enter Languages" msgstr "Sprache eingeben" -#: cps/templates/book_table.html:54 +#: cps/templates/book_table.html:55 msgid "Publishing Date" msgstr "Herausgabedatum" -#: cps/templates/book_table.html:55 +#: cps/templates/book_table.html:56 msgid "Enter Publishers" msgstr "Herausgeber eingeben" -#: cps/templates/book_table.html:70 cps/templates/modal_dialogs.html:46 +#: cps/templates/book_table.html:71 cps/templates/modal_dialogs.html:46 msgid "Are you really sure?" msgstr "Sicher?" -#: cps/templates/book_table.html:74 +#: cps/templates/book_table.html:75 msgid "Books with Title will be merged from:" msgstr "Bücher werden zusammengeführt. Von Titel:" -#: cps/templates/book_table.html:78 +#: cps/templates/book_table.html:79 msgid "Into Book with Title:" msgstr "In Buch mit Titel:" -#: cps/templates/book_table.html:83 +#: cps/templates/book_table.html:84 msgid "Merge" msgstr "Zusammenführen" @@ -1864,7 +2010,7 @@ msgid "LDAP Encryption" msgstr "LDAP Verschlüsselung" #: cps/templates/config_edit.html:268 cps/templates/config_view_edit.html:61 -#: cps/templates/email_edit.html:21 +#: cps/templates/email_edit.html:40 msgid "None" msgstr "Keine" @@ -2077,6 +2223,7 @@ msgid "Default Visibilities for New Users" msgstr "Standard-Sichtbarkeiten für neue Benutzer" #: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82 +#: cps/templates/user_table.html:138 msgid "Show Random Books in Detail View" msgstr "Zeige zufällige Bücher in der Detailansicht" @@ -2150,43 +2297,69 @@ msgstr "(Öffentlich)" msgid "Edit Metadata" msgstr "Metadaten bearbeiten" -#: cps/templates/email_edit.html:22 +#: cps/templates/email_edit.html:12 +msgid "Choose Server Type" +msgstr "" + +#: cps/templates/email_edit.html:14 +msgid "Use Standard E-Mail Account" +msgstr "" + +#: cps/templates/email_edit.html:15 +msgid "Gmail Account with OAuth2 Verfification" +msgstr "" + +#: cps/templates/email_edit.html:21 +msgid "Setup Gmail Account as E-Mail Server" +msgstr "" + +#: cps/templates/email_edit.html:23 +msgid "Revoke Gmail Access" +msgstr "" + +#: cps/templates/email_edit.html:41 msgid "STARTTLS" msgstr "STARTTLS" -#: cps/templates/email_edit.html:23 +#: cps/templates/email_edit.html:42 msgid "SSL/TLS" msgstr "SSL/TLS" -#: cps/templates/email_edit.html:31 +#: cps/templates/email_edit.html:50 msgid "SMTP Password" msgstr "SMTP-Passwort" -#: cps/templates/email_edit.html:38 +#: cps/templates/email_edit.html:57 msgid "Attachment Size Limit" msgstr "Anhangsgröße" -#: cps/templates/email_edit.html:46 +#: cps/templates/email_edit.html:65 msgid "Save and Send Test E-mail" msgstr "Einstellungen speichern und Test-E-Mail versenden" -#: cps/templates/email_edit.html:51 +#: cps/templates/email_edit.html:69 cps/templates/layout.html:29 +#: cps/templates/shelf_order.html:41 cps/templates/user_table.html:158 +msgid "Back" +msgstr "Zurück" + +#: cps/templates/email_edit.html:73 msgid "Allowed Domains (Whitelist)" msgstr "Erlaubte Domains für die Registrierung" -#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80 +#: cps/templates/email_edit.html:76 cps/templates/email_edit.html:102 msgid "Add Domain" msgstr "Domain hinzufügen" -#: cps/templates/email_edit.html:57 cps/templates/email_edit.html:83 +#: cps/templates/email_edit.html:79 cps/templates/email_edit.html:105 +#: cps/templates/user_table.html:26 msgid "Add" msgstr "Hinzufügen" -#: cps/templates/email_edit.html:62 cps/templates/email_edit.html:72 +#: cps/templates/email_edit.html:84 cps/templates/email_edit.html:94 msgid "Enter domainname" msgstr "Domainnamen eingeben" -#: cps/templates/email_edit.html:68 +#: cps/templates/email_edit.html:90 msgid "Denied Domains (Blacklist)" msgstr "Verbotene Domains für eine Registrierung" @@ -2198,10 +2371,6 @@ msgstr "Nächste" msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):" msgstr "Öffne ddie .kobo/Kobo eReader.conf Datei in einem Texteditor und füge hinzu (oder ersetze):" -#: cps/templates/grid.html:14 cps/templates/list.html:14 -msgid "All" -msgstr "Alle" - #: cps/templates/http_error.html:38 msgid "Create Issue" msgstr "Issue erzeugen" @@ -2232,64 +2401,72 @@ msgstr "Sortiere Serienindex absteigend" msgid "Start" msgstr "Start" +#: cps/templates/index.xml:18 +msgid "Alphabetical Books" +msgstr "" + #: cps/templates/index.xml:22 +msgid "Books sorted alphabetically" +msgstr "" + +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Downloads." msgstr "Beliebte Publikationen aus dieser Bibliothek basierend auf Anzahl der Downloads." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:36 msgid "Popular publications from this catalog based on Rating." msgstr "Beliebte Veröffentlichungen dieses Katalogs basierend auf Bewertung." -#: cps/templates/index.xml:32 +#: cps/templates/index.xml:39 msgid "Recently added Books" msgstr "Kürzlich hinzugefügte Bücher" -#: cps/templates/index.xml:36 +#: cps/templates/index.xml:43 msgid "The latest Books" msgstr "Die neuesten Bücher" -#: cps/templates/index.xml:39 +#: cps/templates/index.xml:46 msgid "Random Books" msgstr "Zufällige Bücher" -#: cps/templates/index.xml:43 +#: cps/templates/index.xml:50 msgid "Show Random Books" msgstr "Zeige zufällige Bücher" -#: cps/templates/index.xml:66 +#: cps/templates/index.xml:73 msgid "Books ordered by Author" msgstr "Bücher nach Autoren sortiert" -#: cps/templates/index.xml:73 +#: cps/templates/index.xml:80 msgid "Books ordered by publisher" msgstr "Bücher nach Verlegern sortiert" -#: cps/templates/index.xml:80 +#: cps/templates/index.xml:87 msgid "Books ordered by category" msgstr "Bücher nach Kategorien sortiert" -#: cps/templates/index.xml:87 +#: cps/templates/index.xml:94 msgid "Books ordered by series" msgstr "Bücher nach Serien sortiert" -#: cps/templates/index.xml:94 +#: cps/templates/index.xml:101 msgid "Books ordered by Languages" msgstr "Bücher nach Sprache sortiert" -#: cps/templates/index.xml:101 +#: cps/templates/index.xml:108 msgid "Books ordered by Rating" msgstr "Bücher nach Bewertungen sortiert" -#: cps/templates/index.xml:109 +#: cps/templates/index.xml:116 msgid "Books ordered by file formats" msgstr "Bücher nach Dateiformaten sortiert" -#: cps/templates/index.xml:112 cps/templates/layout.html:135 +#: cps/templates/index.xml:119 cps/templates/layout.html:135 #: cps/templates/search_form.html:80 msgid "Shelves" msgstr "Bücherregale" -#: cps/templates/index.xml:116 +#: cps/templates/index.xml:123 msgid "Books organized in shelves" msgstr "Bücher in Bücherregalen organisiert" @@ -2297,10 +2474,6 @@ msgstr "Bücher in Bücherregalen organisiert" msgid "Home" msgstr "Home" -#: cps/templates/layout.html:29 cps/templates/shelf_order.html:41 -msgid "Back" -msgstr "Zurück" - #: cps/templates/layout.html:35 msgid "Toggle Navigation" msgstr "Nagivation umschalten" @@ -2462,6 +2635,11 @@ msgstr "Übergeordnetes Verzeichnis" msgid "Select" msgstr "Auswahl" +#: cps/templates/modal_dialogs.html:134 +#, fuzzy +msgid "Ok" +msgstr "Buch" + #: cps/templates/osd.xml:5 msgid "Calibre-Web eBook Catalog" msgstr "Calibre-Web E-Book-Katalog" @@ -2767,10 +2945,6 @@ msgstr "Benutzerpasswort zurücksetzen" msgid "Language of Books" msgstr "Zeige nur Bücher mit dieser Sprache" -#: cps/templates/user_edit.html:44 -msgid "Show All" -msgstr "Zeige alle" - #: cps/templates/user_edit.html:53 msgid "OAuth Settings" msgstr "Oauth Einstellungen" @@ -2795,7 +2969,7 @@ msgstr "Erzeugen/Ansehen" msgid "Add allowed/Denied Custom Column Values" msgstr "Erlaubte/Verbotene Calibre Spalten hinzufügen" -#: cps/templates/user_edit.html:135 +#: cps/templates/user_edit.html:135 cps/templates/user_table.html:153 msgid "Delete User" msgstr "Benutzer löschen" @@ -2803,3 +2977,99 @@ msgstr "Benutzer löschen" msgid "Generate Kobo Auth URL" msgstr "Kobo Auth URL erzeugen" +#: cps/templates/user_table.html:68 cps/templates/user_table.html:91 +#, fuzzy +msgid "Select..." +msgstr "Auswahl" + +#: cps/templates/user_table.html:118 +#, fuzzy +msgid "Edit User" +msgstr "Administrator" + +#: cps/templates/user_table.html:121 +#, fuzzy +msgid "Enter Username" +msgstr "Wähle einen Benutzernamen" + +#: cps/templates/user_table.html:122 +#, fuzzy +msgid "Enter E-mail Address" +msgstr "Deine E-Mail-Adresse" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Enter Kindle E-mail Address" +msgstr "Kindle" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Kindle E-mail" +msgstr "Test-E-Mail" + +#: cps/templates/user_table.html:124 +#, fuzzy +msgid "Locale" +msgstr "Skalierung" + +#: cps/templates/user_table.html:125 +msgid "Visible Book Languages" +msgstr "" + +#: cps/templates/user_table.html:126 +#, fuzzy +msgid "Edit Denied Tags" +msgstr "Erlaubte/verbotene Tags auswählen" + +#: cps/templates/user_table.html:126 +msgid "Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +#, fuzzy +msgid "Edit Allowed Tags" +msgstr "Erlaubte/verbotene Tags auswählen" + +#: cps/templates/user_table.html:127 +msgid "Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Edit Allowed Column Values" +msgstr "Erlaubte/Verbotene Calibre Spalten hinzufügen" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Allowed Column Values" +msgstr "Erlaubte/Verbotene Calibre Spalten hinzufügen" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Edit Denied Column Values" +msgstr "Erlaubte/Verbotene Calibre Spalten hinzufügen" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Denied Columns Values" +msgstr "Erlaubte/Verbotene Calibre Spalten hinzufügen" + +#: cps/templates/user_table.html:131 +#, fuzzy +msgid "Change Password" +msgstr "Ändern des Passworts erlauben" + +#: cps/templates/user_table.html:134 +msgid "View" +msgstr "" + +#: cps/templates/user_table.html:137 +#, fuzzy +msgid "Edit Public Shelfs" +msgstr "Öffentliches Bücherregal" + +#: cps/templates/user_table.html:140 +#, fuzzy +msgid "Show read/unread selection" +msgstr "Zeige Serienauswahl" + diff --git a/cps/translations/el/LC_MESSAGES/messages.mo b/cps/translations/el/LC_MESSAGES/messages.mo index b9607ab6..6db7d37c 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 33cfd1bf..bf9ab997 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: 2021-03-27 12:16+0100\n" +"POT-Creation-Date: 2021-05-01 16:33+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Depountis Georgios\n" "Language: el\n" @@ -15,7 +15,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" +"Generated-By: Babel 2.8.0\n" #: cps/about.py:43 msgid "installed" @@ -29,310 +29,405 @@ msgstr "δεν εγκαταστάθηκε" msgid "Statistics" msgstr "Στατιστικά" -#: cps/admin.py:149 +#: cps/admin.py:151 msgid "Server restarted, please reload page" msgstr "Ο διακομιστής επανεκκίνησε, παρακαλούμε φόρτωσε ξανά τη σελίδα" -#: cps/admin.py:151 +#: cps/admin.py:153 msgid "Performing shutdown of server, please close window" msgstr "Πραγματοποιείται κλείσιμο του διακομιστή, παρακαλούμε κλείσε το παράθυρο" -#: cps/admin.py:159 +#: cps/admin.py:161 msgid "Reconnect successful" msgstr "Επιτυχής επανασύνδεση" -#: cps/admin.py:162 +#: cps/admin.py:164 msgid "Unknown command" msgstr "Άγνωστη εντολή" -#: cps/admin.py:172 cps/editbooks.py:662 cps/editbooks.py:674 -#: cps/editbooks.py:777 cps/editbooks.py:779 cps/editbooks.py:806 -#: cps/editbooks.py:822 cps/updater.py:521 cps/uploader.py:94 +#: cps/admin.py:174 cps/editbooks.py:668 cps/editbooks.py:682 +#: cps/editbooks.py:821 cps/editbooks.py:823 cps/editbooks.py:850 +#: cps/editbooks.py:866 cps/updater.py:555 cps/uploader.py:94 #: cps/uploader.py:104 msgid "Unknown" msgstr "ʼΑγνωστο" -#: cps/admin.py:193 +#: cps/admin.py:195 msgid "Admin page" msgstr "Σελίδα διαχειριστή" -#: cps/admin.py:215 +#: cps/admin.py:217 msgid "UI Configuration" msgstr "UI Διαμόρφωση" -#: cps/admin.py:247 cps/admin.py:936 +#: cps/admin.py:249 cps/templates/admin.html:46 +#, fuzzy +msgid "Edit Users" +msgstr "Χρήστης Διαχειριστής" + +#: cps/admin.py:290 +#, fuzzy +msgid "all" +msgstr "Όλα" + +#: cps/admin.py:315 cps/admin.py:1486 +msgid "User not found" +msgstr "Δεν βρέθηκε χρήστης" + +#: cps/admin.py:329 +msgid "{} users deleted successfully" +msgstr "" + +#: cps/admin.py:351 cps/templates/user_edit.html:44 +#: cps/templates/user_table.html:69 +msgid "Show All" +msgstr "Προβολή Όλων" + +#: cps/admin.py:372 cps/admin.py:378 +msgid "Malformed request" +msgstr "" + +#: cps/admin.py:390 cps/admin.py:1368 +msgid "Guest Name can't be changed" +msgstr "" + +#: cps/admin.py:400 +msgid "Guest can't have this role" +msgstr "" + +#: cps/admin.py:412 cps/admin.py:1333 +msgid "No admin user remaining, can't remove admin role" +msgstr "Δεν έχει απομείνει χρήστης διαχειριστής, δεν μπορεί να αφαιρεθεί ο ρόλος διαχειριστή" + +#: cps/admin.py:416 cps/admin.py:430 +msgid "Value has to be true or false" +msgstr "" + +#: cps/admin.py:418 +msgid "Invalid role" +msgstr "" + +#: cps/admin.py:422 +msgid "Guest can't have this view" +msgstr "" + +#: cps/admin.py:432 +msgid "Invalid view" +msgstr "" + +#: cps/admin.py:435 +msgid "Guest's Locale is determined automatically and can't be set" +msgstr "" + +#: cps/admin.py:439 +msgid "No Valid Locale Given" +msgstr "" + +#: cps/admin.py:450 +msgid "No Valid Book Language Given" +msgstr "" + +#: cps/admin.py:452 +msgid "Parameter not found" +msgstr "" + +#: cps/admin.py:506 cps/admin.py:1219 msgid "Calibre-Web configuration updated" msgstr "Ενημερώθηκε η διαμόρφωση Calibre-Web" -#: cps/admin.py:258 +#: cps/admin.py:518 msgid "Do you really want to delete the Kobo Token?" msgstr "Θέλεις πραγματικά να διαγράψεις τη Μονάδα Kobo;" -#: cps/admin.py:260 +#: cps/admin.py:520 msgid "Do you really want to delete this domain?" msgstr "" -#: cps/admin.py:262 +#: cps/admin.py:522 msgid "Do you really want to delete this user?" msgstr "" -#: cps/admin.py:264 cps/templates/shelf.html:90 +#: cps/admin.py:524 cps/templates/shelf.html:90 msgid "Are you sure you want to delete this shelf?" msgstr "Είσαι σίγουρος/η πως θέλεις να διαγράψεις αυτό το ράφι;" -#: cps/admin.py:510 cps/admin.py:516 cps/admin.py:526 cps/admin.py:536 -#: cps/templates/modal_dialogs.html:29 +#: cps/admin.py:526 +#, fuzzy +msgid "Are you sure you want to change locales of selected user(s)?" +msgstr "Είσαι σίγουρος/η πως θέλεις να διαγράψεις αυτό το ράφι;" + +#: cps/admin.py:528 +msgid "Are you sure you want to change visible book languages for selected user(s)?" +msgstr "" + +#: cps/admin.py:530 +msgid "Are you sure you want to change the selected role for the selected user(s)?" +msgstr "" + +#: cps/admin.py:532 +#, fuzzy +msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" +msgstr "Είσαι σίγουρος/η πως θέλεις να διαγράψεις αυτό το ράφι;" + +#: cps/admin.py:534 +msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:683 +msgid "Tag not found" +msgstr "" + +#: cps/admin.py:695 +msgid "Invalid Action" +msgstr "" + +#: cps/admin.py:800 cps/admin.py:806 cps/admin.py:816 cps/admin.py:826 +#: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:43 msgid "Deny" msgstr "Απόρριψη" -#: cps/admin.py:512 cps/admin.py:518 cps/admin.py:528 cps/admin.py:538 -#: cps/templates/modal_dialogs.html:28 +#: cps/admin.py:802 cps/admin.py:808 cps/admin.py:818 cps/admin.py:828 +#: cps/templates/modal_dialogs.html:28 cps/templates/user_table.html:48 msgid "Allow" msgstr "Επιτρέπεται" -#: cps/admin.py:681 +#: cps/admin.py:971 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json Δεν Έχει Διαμορφωθεί Για Διαδικτυακή Εφαρμογή" -#: cps/admin.py:723 +#: cps/admin.py:1016 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "Το Φύλλο Καταγραφής Τοποθεσίας δεν είναι Έγκυρο, Παρακαλούμε Συμπλήρωσε Τη Σωστή Πορεία" -#: cps/admin.py:729 +#: cps/admin.py:1022 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "Η Πρόσβαση Φύλλου Καταγραφης Τοποθεσίας δεν είναι έγκυρη, Παρακαλούμε Συμπλήρωσε Τη Σωστή Πορεία" -#: cps/admin.py:738 +#: cps/admin.py:1052 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "Παρακαλούμε Συμπλήρωσε ένα Πάροχο LDAP, Θύρα, DN και Αντικείμενο Αναγνώρισης Χρήστη" -#: cps/admin.py:752 cps/admin.py:760 +#: cps/admin.py:1067 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "Το Αντικείμενο Φίλτρου Ομάδας LDAP Πρέπει να Έχει Μια \"%s\" Αναγνώριση Μορφής" -#: cps/admin.py:755 cps/admin.py:763 +#: cps/admin.py:1070 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "Το Αντικείμενο Φίλτρου Ομάδας LDAP Έχει Παρενθέσεις Που Δεν Ταιριάζουν" -#: cps/admin.py:768 +#: cps/admin.py:1075 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "Το Αντικείμενο Φίλτρου Χρήστη LDAP πρέπει να Έχει Μια \"%s\" Αναγνώριση Μορφής" -#: cps/admin.py:771 +#: cps/admin.py:1078 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "Το Αντικείμενο Φίλτρου Χρήστη LDAP Έχει Παρενθέσεις Που Δεν Ταιριάζουν" -#: cps/admin.py:779 +#: cps/admin.py:1086 #, python-format msgid "LDAP Member User Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:782 +#: cps/admin.py:1089 msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:790 +#: cps/admin.py:1097 msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:841 +#: cps/admin.py:1123 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "Το Αρχειο Κλειδί Τοποθεσίας δεν είναι Έγκυρο, Παρακαλούμε Συμπληρώστε Τη Σωστή Πορεία" -#: cps/admin.py:847 +#: cps/admin.py:1129 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "Η Τοποθεσία Certfile δεν είναι Έγκυρη, Παρακαλούμε Συμπληρώστε Τη Σωστή Πορεία" -#: cps/admin.py:917 cps/admin.py:1024 cps/admin.py:1047 cps/admin.py:1168 -#: cps/shelf.py:102 cps/shelf.py:159 cps/shelf.py:200 cps/shelf.py:261 -#: cps/shelf.py:314 cps/shelf.py:348 cps/shelf.py:418 +#: cps/admin.py:1200 cps/admin.py:1303 cps/admin.py:1395 cps/admin.py:1461 +#: cps/shelf.py:103 cps/shelf.py:163 cps/shelf.py:206 cps/shelf.py:269 +#: cps/shelf.py:325 cps/shelf.py:360 cps/shelf.py:431 msgid "Settings DB is not Writeable" msgstr "Οι ρυθμίσεις DB δεν μπορούν να Γραφτούν" -#: cps/admin.py:929 +#: cps/admin.py:1212 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "Η Τοποθεσία DB δεν είναι Έγκυρη, Παρακαλούμε Συμπληρώστε Τη Σωστή Πορεία" -#: cps/admin.py:933 +#: cps/admin.py:1216 msgid "DB is not Writeable" msgstr "Η DB δεν μπορεί να Γραφτεί" -#: cps/admin.py:972 +#: cps/admin.py:1256 msgid "Basic Configuration" msgstr "Βασική Διαμόρφωση" -#: cps/admin.py:987 cps/web.py:1358 +#: cps/admin.py:1272 cps/web.py:1417 msgid "Please fill out all fields!" msgstr "Παρακαλούμε συμπλήρωσε όλα τα πεδία!" -#: cps/admin.py:990 cps/admin.py:1002 cps/admin.py:1008 cps/admin.py:1138 -msgid "Add new user" -msgstr "Προσθήκη νέου χρήστη" - -#: cps/admin.py:999 cps/web.py:1496 +#: cps/admin.py:1280 msgid "E-mail is not from valid domain" msgstr "Το E-mail δεν είναι από έγκυρο domain" -#: cps/admin.py:1006 cps/admin.py:1021 -msgid "Found an existing account for this e-mail address or nickname." -msgstr "Βρέθηκε ένας ήδη υπάρχον λογαριασμός για αυτή τη διεύθυνση e-mail ή όνομα χρήστη." +#: cps/admin.py:1284 cps/admin.py:1414 +msgid "Add new user" +msgstr "Προσθήκη νέου χρήστη" -#: cps/admin.py:1017 +#: cps/admin.py:1293 #, python-format msgid "User '%(user)s' created" msgstr "Χρήστης/ες '%(user)s' δημιουργήθηκαν" -#: cps/admin.py:1031 +#: cps/admin.py:1299 +#, fuzzy +msgid "Found an existing account for this e-mail address or name." +msgstr "Βρέθηκε ένας ήδη υπάρχον λογαριασμός για αυτή τη διεύθυνση e-mail ή όνομα χρήστη." + +#: cps/admin.py:1312 #, python-format msgid "User '%(nick)s' deleted" msgstr "Χρήστης/ες '%(nick)s' διαγράφηκαν" -#: cps/admin.py:1034 +#: cps/admin.py:1314 cps/admin.py:1315 +msgid "Can't delete Guest User" +msgstr "" + +#: cps/admin.py:1318 msgid "No admin user remaining, can't delete user" msgstr "Δεν έχει απομείνει χρήστης διαχειριστής, δεν μπορεί να διαγραφεί ο χρήστης" -#: cps/admin.py:1041 -#, python-format -msgid "User '%(nick)s' updated" -msgstr "Χρήστης/ες '%(nick)s' ενημερώθηκαν" - -#: cps/admin.py:1044 -msgid "An unknown error occured." -msgstr "Προέκυψε ένα άγνωστο σφάλμα." - -#: cps/admin.py:1056 -msgid "No admin user remaining, can't remove admin role" -msgstr "Δεν έχει απομείνει χρήστης διαχειριστής, δεν μπορεί να αφαιρεθεί ο ρόλος διαχειριστή" - -#: cps/admin.py:1092 cps/web.py:1554 -msgid "Found an existing account for this e-mail address." -msgstr "Βρέθηκε ένας ήδη υπάρχον λογαριασμός για αυτή τη διεύθυνση e-mail." - -#: cps/admin.py:1101 cps/admin.py:1115 cps/admin.py:1209 cps/web.py:1516 +#: cps/admin.py:1383 cps/admin.py:1504 #, python-format msgid "Edit User %(nick)s" msgstr "Επεξεργασία χρήστη %(nick)s" -#: cps/admin.py:1107 cps/web.py:1509 -msgid "This username is already taken" -msgstr "Αυτό το όνομα χρήστη έχει ήδη παρθεί" +#: cps/admin.py:1387 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "Χρήστης/ες '%(nick)s' ενημερώθηκαν" -#: cps/admin.py:1147 cps/templates/admin.html:78 +#: cps/admin.py:1391 +#, fuzzy +msgid "An unknown error occurred." +msgstr "Προέκυψε ένα άγνωστο σφάλμα." + +#: cps/admin.py:1423 cps/templates/admin.html:94 msgid "Edit E-mail Server Settings" msgstr "Επεξεργασία Ρυθμίσεων E-mail Διακομιστή" -#: cps/admin.py:1175 +#: cps/admin.py:1442 +msgid "G-Mail Account Verification Successful" +msgstr "" + +#: cps/admin.py:1468 #, python-format msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" msgstr "" -#: cps/admin.py:1178 +#: cps/admin.py:1471 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Παρουσιάστηκε σφάλμα κατά την αποστολή του δοκιμαστικού e-mail:% (res)s" -#: cps/admin.py:1180 +#: cps/admin.py:1473 msgid "Please configure your e-mail address first..." msgstr "Παρακαλούμε ρύθμισε πρώτα τη διεύθυνση e-mail σου..." -#: cps/admin.py:1182 +#: cps/admin.py:1475 msgid "E-mail server settings updated" msgstr "Ενημερώθηκαν οι ρυθμίσεις E-mail διακομιστή" -#: cps/admin.py:1193 -msgid "User not found" -msgstr "Δεν βρέθηκε χρήστης" - -#: cps/admin.py:1220 +#: cps/admin.py:1516 #, python-format msgid "Password for user %(user)s reset" msgstr "Κωδικός για επαναφορά %(user) χρήστη/ών" -#: cps/admin.py:1223 cps/web.py:1388 cps/web.py:1452 +#: cps/admin.py:1519 cps/web.py:1442 cps/web.py:1503 msgid "An unknown error occurred. Please try again later." msgstr "Προέκυψε ένα άγνωστο σφάλμα. Παρακαλούμε δοκίμασε ξανά αργότερα." -#: cps/admin.py:1226 cps/web.py:1320 +#: cps/admin.py:1522 cps/web.py:1382 msgid "Please configure the SMTP mail settings first..." msgstr "Παρακαλούμε διαμόρφωσε πρώτα τις ρυθμίσεις ταχυδρομείου SMTP..." -#: cps/admin.py:1237 +#: cps/admin.py:1533 msgid "Logfile viewer" msgstr "Προβολέας αρχείου φύλλου καταγραφής" -#: cps/admin.py:1303 +#: cps/admin.py:1599 msgid "Requesting update package" msgstr "Αίτημα πακέτου ενημέρωσης" -#: cps/admin.py:1304 +#: cps/admin.py:1600 msgid "Downloading update package" msgstr "Κατεβάζει πακέτο ενημέρωσης" -#: cps/admin.py:1305 +#: cps/admin.py:1601 msgid "Unzipping update package" msgstr "Ανοίγει πακέτο ενημέρωσης" -#: cps/admin.py:1306 +#: cps/admin.py:1602 msgid "Replacing files" msgstr "Αντικατάσταση αρχείων" -#: cps/admin.py:1307 +#: cps/admin.py:1603 msgid "Database connections are closed" msgstr "Οι συνδέσεις βάσης δεδομένων είναι κλειστές" -#: cps/admin.py:1308 +#: cps/admin.py:1604 msgid "Stopping server" msgstr "Σταματάει το διακομιστή" -#: cps/admin.py:1309 +#: cps/admin.py:1605 msgid "Update finished, please press okay and reload page" msgstr "Η ενημέρωση τελειώσε, παρακαλούμε πιέστε το εντάξει και φορτώστε ξανά τη σελίδα" -#: cps/admin.py:1310 cps/admin.py:1311 cps/admin.py:1312 cps/admin.py:1313 -#: cps/admin.py:1314 +#: cps/admin.py:1606 cps/admin.py:1607 cps/admin.py:1608 cps/admin.py:1609 +#: cps/admin.py:1610 msgid "Update failed:" msgstr "Η ενημέρωση απέτυχε:" -#: cps/admin.py:1310 cps/updater.py:337 cps/updater.py:532 cps/updater.py:534 +#: cps/admin.py:1606 cps/updater.py:356 cps/updater.py:566 cps/updater.py:568 msgid "HTTP Error" msgstr "HTTP Σφάλμα" -#: cps/admin.py:1311 cps/updater.py:339 cps/updater.py:536 +#: cps/admin.py:1607 cps/updater.py:358 cps/updater.py:570 msgid "Connection error" msgstr "Σφάλμα σύνδεσης" -#: cps/admin.py:1312 cps/updater.py:341 cps/updater.py:538 +#: cps/admin.py:1608 cps/updater.py:360 cps/updater.py:572 msgid "Timeout while establishing connection" msgstr "Τελείωσε ο χρόνος κατά την προσπάθεια δημιουργίας σύνδεσης" -#: cps/admin.py:1313 cps/updater.py:343 cps/updater.py:540 +#: cps/admin.py:1609 cps/updater.py:362 cps/updater.py:574 msgid "General error" msgstr "Γενικό σφάλμα" -#: cps/admin.py:1314 +#: cps/admin.py:1610 msgid "Update File Could Not be Saved in Temp Dir" msgstr "Το Αρχείο Ενημέρωσης Δεν Μπόρεσε Να Αποθηκευτεί σε" -#: cps/admin.py:1376 +#: cps/admin.py:1671 msgid "Failed to Create at Least One LDAP User" msgstr "Αποτυχία Δημιουργίας Τουλάχιστον Ενός Χρήστη LDAP" -#: cps/admin.py:1389 +#: cps/admin.py:1684 #, python-format msgid "Error: %(ldaperror)s" msgstr "Σφάλμα: %(ldaperror)s" -#: cps/admin.py:1393 +#: cps/admin.py:1688 msgid "Error: No user returned in response of LDAP server" msgstr "Σφάλμα: Δεν επιστράφηκε χρήστης σε απάντηση του διακομιστή LDAP" -#: cps/admin.py:1426 +#: cps/admin.py:1721 msgid "At Least One LDAP User Not Found in Database" msgstr "Τουλάχιστον Ένας Χρήστης LDAP Δεν Βρέθηκε Στη Βάση Δεδομένων" -#: cps/admin.py:1428 +#: cps/admin.py:1723 msgid "{} User Successfully Imported" msgstr "" @@ -344,98 +439,98 @@ msgstr "δεν διαμορφώθηκε" msgid "Execution permissions missing" msgstr "Λείπουν άδειες εκτέλεσης" -#: cps/editbooks.py:267 cps/editbooks.py:269 +#: cps/editbooks.py:294 cps/editbooks.py:296 msgid "Book Format Successfully Deleted" msgstr "Η μορφή βιβλίου Διαγράφηκε Επιτυχώς" -#: cps/editbooks.py:276 cps/editbooks.py:278 +#: cps/editbooks.py:303 cps/editbooks.py:305 msgid "Book Successfully Deleted" msgstr "Το Βιβλίο Διαγράφηκε Επιτυχώς" -#: cps/editbooks.py:325 cps/editbooks.py:646 cps/web.py:1598 cps/web.py:1634 -#: cps/web.py:1705 +#: cps/editbooks.py:361 cps/editbooks.py:724 cps/web.py:1627 cps/web.py:1663 +#: cps/web.py:1734 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Σφάλμα ανοίγματος eBook. Το αρχείο δεν υπάρχει ή το αρχείο δεν είναι προσβάσιμο" -#: cps/editbooks.py:359 +#: cps/editbooks.py:395 msgid "edit metadata" msgstr "επεξεργασία μεταδεδομένων" -#: cps/editbooks.py:434 +#: cps/editbooks.py:473 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s δεν είναι μια έγκυρη γλώσσα" -#: cps/editbooks.py:556 cps/editbooks.py:905 +#: cps/editbooks.py:595 cps/editbooks.py:936 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Η επέκταση αρχείου '%(ext)s' δεν επιτρέπεται να ανέβει σε αυτό το διακομιστή" -#: cps/editbooks.py:560 cps/editbooks.py:909 +#: cps/editbooks.py:599 cps/editbooks.py:940 msgid "File to be uploaded must have an extension" msgstr "Το αρχείο προς ανέβασμα πρέπει να έχει μια επέκταση" -#: cps/editbooks.py:572 +#: cps/editbooks.py:611 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Αποτυχεία δημιουργίας πορείας %(path)s (Η άδεια απορρήφθηκε)." -#: cps/editbooks.py:577 +#: cps/editbooks.py:616 #, python-format msgid "Failed to store file %(file)s." msgstr "Αποτυχία αποθήκευσης αρχείου %(file)s." -#: cps/editbooks.py:595 cps/editbooks.py:972 cps/web.py:1559 +#: cps/editbooks.py:634 cps/editbooks.py:1027 cps/web.py:1588 #, python-format msgid "Database error: %(error)s." msgstr "Σφάλμα βάσης δεδομένων: %(error)s." -#: cps/editbooks.py:599 +#: cps/editbooks.py:638 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Μορφή αρχείου %(ext)s προστέθηκε σε %(book)s" -#: cps/editbooks.py:726 +#: cps/editbooks.py:775 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "Τα αναγνωριστικά δεν έχουν Διάκριση Πεζών-Κεφαλαίων Γραμμάτων, Αντικατάσταση Παλιού Αναγνωριστικού" -#: cps/editbooks.py:763 +#: cps/editbooks.py:807 msgid "Metadata successfully updated" msgstr "Τα μεταδεδομένα ενημερώθηκαν επιτυχώς" -#: cps/editbooks.py:772 +#: cps/editbooks.py:816 msgid "Error editing book, please check logfile for details" msgstr "Σφάλμα επεξεργασίας βιβλίου, παρακαλούμε έλεγξε το φύλλο καταγραφής για λεπτομέρειες" -#: cps/editbooks.py:810 +#: cps/editbooks.py:854 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Το βιβλίο που ανέβηκε πιθανόν να υπάρχει στη βιβλιοθήκη, σκέψου να το αλλάξεις πριν ανεβάσεις νέο: " -#: cps/editbooks.py:917 +#: cps/editbooks.py:948 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "Το αρχείο %(filename)s δεν μπόρεσε να αποθηκευτεί σε temp dir" -#: cps/editbooks.py:947 +#: cps/editbooks.py:967 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "Αποτυχία Μετακίνησης Αρχείου Φόντου %(file)s: %(error)s" -#: cps/editbooks.py:958 +#: cps/editbooks.py:1013 #, python-format msgid "File %(file)s uploaded" msgstr "Το αρχείο %(file)s ανέβηκε" -#: cps/editbooks.py:984 +#: cps/editbooks.py:1039 msgid "Source or destination format for conversion missing" msgstr "Η δομή πηγής ή προορισμού για μετατροπή λείπει" -#: cps/editbooks.py:992 +#: cps/editbooks.py:1047 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Το βιβλίο είναι σε σειρά επιτυχώς για μετατροπή σε %(book_format)s" -#: cps/editbooks.py:996 +#: cps/editbooks.py:1051 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Υπήρξε ένα σφάλμα στη μετατροπή αυτού του βιβλίου: %(res)s" @@ -543,55 +638,68 @@ msgstr "Το αρχείο %(file)s δεν βρέθηκε στο Google Drive" msgid "Book path %(path)s not found on Google Drive" msgstr "Η πορεία βιβλίου %(path)s δεν βρέθηκε στο Google Drive" -#: cps/helper.py:576 +#: cps/helper.py:511 +#, fuzzy +msgid "Found an existing account for this e-mail address" +msgstr "Βρέθηκε ένας ήδη υπάρχον λογαριασμός για αυτή τη διεύθυνση e-mail." + +#: cps/helper.py:519 +msgid "This username is already taken" +msgstr "Αυτό το όνομα χρήστη έχει ήδη παρθεί" + +#: cps/helper.py:529 +msgid "Invalid e-mail address format" +msgstr "" + +#: cps/helper.py:602 msgid "Error Downloading Cover" msgstr "Σφάλμα Κατεβάσματος Φόντου" -#: cps/helper.py:579 +#: cps/helper.py:605 msgid "Cover Format Error" msgstr "Σφάλμα Μορφής Φόντου" -#: cps/helper.py:589 +#: cps/helper.py:615 msgid "Failed to create path for cover" msgstr "Αποτυχία δημιουργίας πορείας για φόντο" -#: cps/helper.py:605 +#: cps/helper.py:631 msgid "Cover-file is not a valid image file, or could not be stored" msgstr "Το αρχείο φόντου δεν είναι ένα έγκυρο αρχείο εικόνας, ή δεν μπόρεσε να αποθηκευτεί" -#: cps/helper.py:616 +#: cps/helper.py:642 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" msgstr "" -#: cps/helper.py:629 +#: cps/helper.py:655 msgid "Only jpg/jpeg files are supported as coverfile" msgstr "Μόνο jpg/jpeg αρχεία υποστηρίζονται ως αρχεία φόντου" -#: cps/helper.py:680 +#: cps/helper.py:707 msgid "Unrar binary file not found" msgstr "Δεν βρέθηκε δυαδικό αρχείο Unrar" -#: cps/helper.py:694 +#: cps/helper.py:721 msgid "Error excecuting UnRar" msgstr "Σφάλμα εκτέλεσης UnRar" -#: cps/helper.py:743 +#: cps/helper.py:769 msgid "Waiting" msgstr "Αναμονή" -#: cps/helper.py:745 +#: cps/helper.py:771 msgid "Failed" msgstr "Απέτυχε" -#: cps/helper.py:747 +#: cps/helper.py:773 msgid "Started" msgstr "Ξεκίνησε" -#: cps/helper.py:749 +#: cps/helper.py:775 msgid "Finished" msgstr "Τελείωσε" -#: cps/helper.py:751 +#: cps/helper.py:777 msgid "Unknown Status" msgstr "ʼΑγνωστη κατάσταση" @@ -603,65 +711,82 @@ msgstr "Παρακαλούμε λάβε πρόσβαση στο calibre-web απ msgid "Kobo Setup" msgstr "Καθορισμός Kobo" -#: cps/oauth_bb.py:76 +#: cps/oauth_bb.py:78 #, python-format msgid "Register with %(provider)s" msgstr "Εγγραφή με %(provider)s" -#: cps/oauth_bb.py:137 cps/remotelogin.py:133 cps/web.py:1424 +#: cps/oauth_bb.py:139 cps/remotelogin.py:133 cps/web.py:1475 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "τώρα έχεις συνδεθεί ως: '%(nickname)s'" -#: cps/oauth_bb.py:147 +#: cps/oauth_bb.py:149 #, python-format msgid "Link to %(oauth)s Succeeded" msgstr "Η Σύνδεση στο %(oauth)s Πέτυχε" -#: cps/oauth_bb.py:153 +#: cps/oauth_bb.py:156 msgid "Login failed, No User Linked With OAuth Account" msgstr "Η σύνδεση απέτυχε, Δεν Υπάρχει Συνδεδεμένος Χρήστης Με Λογαριασμό OAuth" -#: cps/oauth_bb.py:195 +#: cps/oauth_bb.py:198 #, python-format msgid "Unlink to %(oauth)s Succeeded" msgstr "Η αφαίρεση σύνδεσης με το %(oauth)s Πέτυχε" -#: cps/oauth_bb.py:199 +#: cps/oauth_bb.py:203 #, python-format msgid "Unlink to %(oauth)s Failed" msgstr "Η αφαίρεση σύνδεσης με το %(oauth)s Απέτυχε" -#: cps/oauth_bb.py:202 +#: cps/oauth_bb.py:206 #, python-format msgid "Not Linked to %(oauth)s" msgstr "Δεν Είναι Συνδεδεμένο με το %(oauth)s" -#: cps/oauth_bb.py:259 +#: cps/oauth_bb.py:262 msgid "Failed to log in with GitHub." msgstr "Αποτυχία σύνδεσης με GitHub." -#: cps/oauth_bb.py:264 +#: cps/oauth_bb.py:268 msgid "Failed to fetch user info from GitHub." msgstr "Αποτυχία συγκέντρωσης πληροφοριών χρήστη από το GitHub." -#: cps/oauth_bb.py:275 +#: cps/oauth_bb.py:280 msgid "Failed to log in with Google." msgstr "Αποτυχία σύνδεσης με το Google." -#: cps/oauth_bb.py:280 +#: cps/oauth_bb.py:286 msgid "Failed to fetch user info from Google." msgstr "Αποτυχία συγκέντρωσης πληροφοριών χρήστη από το Google." -#: cps/oauth_bb.py:312 +#: cps/oauth_bb.py:333 msgid "GitHub Oauth error, please retry later." msgstr "GitHub Oauth σφάλμα, παρακαλούμε δοκίμασε ξανά αργότερα." -#: cps/oauth_bb.py:331 +#: cps/oauth_bb.py:336 +msgid "GitHub Oauth error: {}" +msgstr "" + +#: cps/oauth_bb.py:357 msgid "Google Oauth error, please retry later." msgstr "Google Oauth σφάλμα, παρακαλούμε δοκίμασε ξανά αργότερα." -#: cps/remotelogin.py:65 cps/web.py:1471 +#: cps/oauth_bb.py:360 +msgid "Google Oauth error: {}" +msgstr "" + +#: cps/opds.py:110 cps/opds.py:199 cps/opds.py:276 cps/opds.py:328 +#: cps/templates/grid.html:14 cps/templates/list.html:14 +msgid "All" +msgstr "Όλα" + +#: cps/opds.py:385 +msgid "{} Stars" +msgstr "" + +#: cps/remotelogin.py:65 cps/web.py:1522 msgid "login" msgstr "σύνδεση" @@ -677,7 +802,7 @@ msgstr "Η μάρκα έχει λήξει" msgid "Success! Please return to your device" msgstr "Επιτυχία! Παρακαλούμε επέστρεψε στη συσκευή σου" -#: cps/render_template.py:39 cps/web.py:415 +#: cps/render_template.py:39 cps/web.py:414 msgid "Books" msgstr "Βιβλία" @@ -685,7 +810,7 @@ msgstr "Βιβλία" msgid "Show recent books" msgstr "Προβολή πρόσφατων βιβλίων" -#: cps/render_template.py:42 cps/templates/index.xml:18 +#: cps/render_template.py:42 cps/templates/index.xml:25 msgid "Hot Books" msgstr "Βιβλία στη Μόδα" @@ -693,127 +818,130 @@ msgstr "Βιβλία στη Μόδα" msgid "Show Hot Books" msgstr "Προβολή Βιβλίων στη Μόδα" -#: cps/render_template.py:45 +#: cps/render_template.py:46 cps/render_template.py:51 msgid "Downloaded Books" msgstr "Κατεβασμένα Βιβλία" -#: cps/render_template.py:47 +#: cps/render_template.py:48 cps/render_template.py:53 +#: cps/templates/user_table.html:151 msgid "Show Downloaded Books" msgstr "Προβολή Κατεβασμένων Βιβλίων" -#: cps/render_template.py:50 cps/templates/index.xml:25 cps/web.py:425 +#: cps/render_template.py:56 cps/templates/index.xml:32 cps/web.py:424 msgid "Top Rated Books" msgstr "Βιβλία με Κορυφαία Αξιολόγηση" -#: cps/render_template.py:52 +#: cps/render_template.py:58 cps/templates/user_table.html:145 msgid "Show Top Rated Books" msgstr "Προβολή Βιβλίων με Κορυφαία Αξιολόγηση" -#: cps/render_template.py:53 cps/templates/index.xml:47 -#: cps/templates/index.xml:51 cps/web.py:642 +#: cps/render_template.py:59 cps/templates/index.xml:54 +#: cps/templates/index.xml:58 cps/web.py:650 msgid "Read Books" msgstr "Βιβλία που Διαβάστηκαν" -#: cps/render_template.py:55 +#: cps/render_template.py:61 msgid "Show read and unread" msgstr "Προβολή διαβασμένων και αδιάβαστων" -#: cps/render_template.py:57 cps/templates/index.xml:54 -#: cps/templates/index.xml:58 cps/web.py:645 +#: cps/render_template.py:63 cps/templates/index.xml:61 +#: cps/templates/index.xml:65 cps/web.py:653 msgid "Unread Books" msgstr "Βιβλία που δεν Διαβάστηκαν" -#: cps/render_template.py:59 +#: cps/render_template.py:65 msgid "Show unread" msgstr "Προβολή αδιάβαστων" -#: cps/render_template.py:60 +#: cps/render_template.py:66 msgid "Discover" msgstr "Ανακάλυψε" -#: cps/render_template.py:62 +#: cps/render_template.py:68 cps/templates/user_table.html:143 +#: cps/templates/user_table.html:146 msgid "Show random books" msgstr "Προβολή τυχαίων βιβλίων" -#: cps/render_template.py:63 cps/templates/book_table.html:50 -#: cps/templates/index.xml:76 cps/web.py:950 +#: cps/render_template.py:69 cps/templates/book_table.html:51 +#: cps/templates/index.xml:83 cps/web.py:1024 msgid "Categories" msgstr "Κατηγορίες" -#: cps/render_template.py:65 +#: cps/render_template.py:71 cps/templates/user_table.html:142 msgid "Show category selection" msgstr "Προβολή επιλογών κατηγορίας" -#: cps/render_template.py:66 cps/templates/book_edit.html:84 -#: cps/templates/book_table.html:51 cps/templates/index.xml:83 -#: cps/templates/search_form.html:62 cps/web.py:854 cps/web.py:864 +#: cps/render_template.py:72 cps/templates/book_edit.html:84 +#: cps/templates/book_table.html:52 cps/templates/index.xml:90 +#: cps/templates/search_form.html:62 cps/web.py:921 cps/web.py:931 msgid "Series" msgstr "Σειρές" -#: cps/render_template.py:68 +#: cps/render_template.py:74 cps/templates/user_table.html:141 msgid "Show series selection" msgstr "Προβολή επιλογών σειράς" -#: cps/render_template.py:69 cps/templates/book_table.html:49 -#: cps/templates/index.xml:62 +#: cps/render_template.py:75 cps/templates/book_table.html:50 +#: cps/templates/index.xml:69 msgid "Authors" msgstr "Συγγραφείς" -#: cps/render_template.py:71 +#: cps/render_template.py:77 cps/templates/user_table.html:144 msgid "Show author selection" msgstr "Προβολή επιλογών συγγραφέα" -#: cps/render_template.py:73 cps/templates/book_table.html:55 -#: cps/templates/index.xml:69 cps/web.py:833 +#: cps/render_template.py:79 cps/templates/book_table.html:56 +#: cps/templates/index.xml:76 cps/web.py:898 msgid "Publishers" msgstr "Εκδότες" -#: cps/render_template.py:75 +#: cps/render_template.py:81 cps/templates/user_table.html:147 msgid "Show publisher selection" msgstr "Προβολή επιλογών εκδότη" -#: cps/render_template.py:76 cps/templates/book_table.html:53 -#: cps/templates/index.xml:90 cps/templates/search_form.html:100 cps/web.py:929 +#: cps/render_template.py:82 cps/templates/book_table.html:54 +#: cps/templates/index.xml:97 cps/templates/search_form.html:100 +#: cps/web.py:1001 msgid "Languages" msgstr "Γλώσσες" -#: cps/render_template.py:79 +#: cps/render_template.py:85 cps/templates/user_table.html:139 msgid "Show language selection" msgstr "Προβολή επιλογών γλώσσας" -#: cps/render_template.py:80 cps/templates/index.xml:97 +#: cps/render_template.py:86 cps/templates/index.xml:104 msgid "Ratings" msgstr "Αξιολογήσεις" -#: cps/render_template.py:82 +#: cps/render_template.py:88 cps/templates/user_table.html:148 msgid "Show ratings selection" msgstr "Προβολή επιλογών αξιολόγησης" -#: cps/render_template.py:83 cps/templates/index.xml:105 +#: cps/render_template.py:89 cps/templates/index.xml:112 msgid "File formats" msgstr "Μορφές αρχείου" -#: cps/render_template.py:85 +#: cps/render_template.py:91 cps/templates/user_table.html:149 msgid "Show file formats selection" msgstr "Προβολή επιλογών μορφής αρχείου" -#: cps/render_template.py:87 cps/web.py:669 +#: cps/render_template.py:93 cps/web.py:677 msgid "Archived Books" msgstr "Αρχειοθετημένα Βιβλία" -#: cps/render_template.py:89 +#: cps/render_template.py:95 cps/templates/user_table.html:150 msgid "Show archived books" msgstr "Προβολή αρχειοθετημένων βιβλίων" -#: cps/render_template.py:91 cps/web.py:743 +#: cps/render_template.py:97 cps/web.py:751 msgid "Books List" msgstr "Λίστα Βιβλίων" -#: cps/render_template.py:93 +#: cps/render_template.py:99 cps/templates/user_table.html:152 msgid "Show Books List" msgstr "Προβολή Λίστας Βιβλίων" -#: cps/shelf.py:69 cps/shelf.py:122 +#: cps/shelf.py:69 cps/shelf.py:124 msgid "Invalid shelf specified" msgstr "Διευκρινίστηκε μη έγκυρο ράφι" @@ -827,303 +955,307 @@ msgstr "Συγγνώμη δεν σου επιτρέπεται να προσθέ msgid "Book is already part of the shelf: %(shelfname)s" msgstr "Το βιβλίο είναι ήδη μέρος αυτού του ραφιού: %(shelfname)s" -#: cps/shelf.py:108 +#: cps/shelf.py:110 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Το βιβλίο έχει προστεθεί στο ράφι: %(sname)s" -#: cps/shelf.py:126 +#: cps/shelf.py:129 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Δεν σου επιτρέπεται να προσθέσεις ένα βιβλίο στο ράφι: %(name)s" -#: cps/shelf.py:144 +#: cps/shelf.py:147 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "Τα βιβλία είναι ήδη μέρος του ραφιού: %(name)s" -#: cps/shelf.py:156 +#: cps/shelf.py:159 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "Βιβλία είχαν προστεθεί στο ραφι: %(sname)s" -#: cps/shelf.py:161 +#: cps/shelf.py:166 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "Δεν μπόρεσε να γίνει η προσθήκη βιβλίων στο ράφι: %(sname)s" -#: cps/shelf.py:206 +#: cps/shelf.py:212 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Το βιβλίο έχει αφαιρεθεί από το ράφι: %(sname)s" -#: cps/shelf.py:214 +#: cps/shelf.py:221 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Συγγνώμη αλλά δεν σου επιτρέπεται η αφαίρεση ενός βιβλίου από αυτό το ράφι: %(sname)s" -#: cps/shelf.py:224 cps/templates/layout.html:140 +#: cps/shelf.py:231 cps/templates/layout.html:140 msgid "Create a Shelf" msgstr "Δημιούργησε ένα Ράφι" -#: cps/shelf.py:231 +#: cps/shelf.py:238 msgid "Edit a shelf" msgstr "Επεξεργασία ενός ραφιού" -#: cps/shelf.py:249 +#: cps/shelf.py:256 #, python-format msgid "Shelf %(title)s created" msgstr "Το ράφι %(title)s δημιουργήθηκε" -#: cps/shelf.py:252 +#: cps/shelf.py:259 #, python-format msgid "Shelf %(title)s changed" msgstr "Το ράφι %(title)s άλλαξε" -#: cps/shelf.py:265 +#: cps/shelf.py:273 msgid "There was an error" msgstr "Υπήρξε ένα σφάλμα" -#: cps/shelf.py:281 +#: cps/shelf.py:290 #, python-format msgid "A public shelf with the name '%(title)s' already exists." msgstr "Ένα δημόσιο ράφι με το όνομα '%(title)s' υπάρχει ήδη." -#: cps/shelf.py:291 +#: cps/shelf.py:301 #, python-format msgid "A private shelf with the name '%(title)s' already exists." msgstr "Ένα ιδιωτικό ράφι με το όνομα '%(title)s' υπάρχει ήδη." -#: cps/shelf.py:358 +#: cps/shelf.py:370 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Αλλαγή σειράς του Ραφιού: '%(name)s'" -#: cps/shelf.py:423 +#: cps/shelf.py:436 #, python-format msgid "Shelf: '%(name)s'" msgstr "Ράφι: '%(name)s" -#: cps/shelf.py:427 +#: cps/shelf.py:440 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Σφάλμα κατά το άνοιγμα του ραφιού. Το ράφι δεν υπάρχει ή δεν είναι προσβάσιμο" -#: cps/updater.py:355 cps/updater.py:366 cps/updater.py:418 cps/updater.py:432 +#: cps/updater.py:374 cps/updater.py:385 cps/updater.py:485 cps/updater.py:500 msgid "Unexpected data while reading update information" msgstr "Απρόβλεπτα δεδομένα κατά την ανάγνωση των πληροφοριών ενημέρωσης" -#: cps/updater.py:362 cps/updater.py:424 +#: cps/updater.py:381 cps/updater.py:492 msgid "No update available. You already have the latest version installed" msgstr "Δεν υπάρχει διαθέσιμη ενημέρωση. Έχεις ήδη την τελευταία έκδοση εγκατεστημένη" -#: cps/updater.py:379 +#: cps/updater.py:399 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "Μια νέα ενημέρωση είναι διαθέσιμη. Κάνε κλικ στο κουμπί πιο κάτω για να ενημερώσεις με την τελευταία έκδοση." -#: cps/updater.py:397 +#: cps/updater.py:417 msgid "Could not fetch update information" msgstr "Δεν μπόρεσε να συγκεντρώσει τις πληροφορίες ενημέρωσης" -#: cps/updater.py:411 -msgid "No release information available" -msgstr "Δεν υπάρχουν διαθέσιμες πληροφορίες αποδέσμευσης" +#: cps/updater.py:427 +msgid "Click on the button below to update to the latest stable version." +msgstr "Κάνε κλικ στο κουμπί πιο κάτω για να ενημερώσεις με την τελευταία σταθερή έκδοση." -#: cps/updater.py:468 cps/updater.py:479 cps/updater.py:498 +#: cps/updater.py:436 cps/updater.py:450 cps/updater.py:461 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "Μια νέα ενημέρωση είναι διαθέσιμη. Κάνε κλικ στο κουμπί πιο κάτω για ενημέρωση με την έκδοση: %(version)s" -#: cps/updater.py:489 -msgid "Click on the button below to update to the latest stable version." -msgstr "Κάνε κλικ στο κουμπί πιο κάτω για να ενημερώσεις με την τελευταία σταθερή έκδοση." +#: cps/updater.py:478 +msgid "No release information available" +msgstr "Δεν υπάρχουν διαθέσιμες πληροφορίες αποδέσμευσης" -#: cps/templates/index.html:5 cps/web.py:435 +#: cps/templates/index.html:5 cps/web.py:434 msgid "Discover (Random Books)" msgstr "Ανακάλυψε (Τυχαία Βιβλία)" -#: cps/web.py:461 +#: cps/web.py:460 msgid "Hot Books (Most Downloaded)" msgstr "Βιβλία στη Μόδα (Με τα περισσότερα κατεβάσματα)" -#: cps/web.py:489 +#: cps/web.py:493 #, python-format msgid "Downloaded books by %(user)s" msgstr "Κατεβασμένα βιβλία από %(user)s" -#: cps/web.py:503 +#: cps/web.py:508 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Oυπς! Ο επιλεγμένος τίτλος βιβλίου δεν είναι διαθέσιμος. Το αρχείο δεν υπάρχει ή δεν είναι προσβάσιμο" -#: cps/web.py:517 +#: cps/web.py:522 #, python-format msgid "Author: %(name)s" msgstr "Συγγραφέας: %(name)s" -#: cps/web.py:531 +#: cps/web.py:537 #, python-format msgid "Publisher: %(name)s" msgstr "Εκδότης: %(name)s" -#: cps/web.py:544 +#: cps/web.py:550 #, python-format msgid "Series: %(serie)s" msgstr "Σειρές: %(serie)s" -#: cps/web.py:557 +#: cps/web.py:563 #, python-format msgid "Rating: %(rating)s stars" msgstr "Αξιολόγηση: %(rating)s stars" -#: cps/web.py:570 +#: cps/web.py:576 #, python-format msgid "File format: %(format)s" msgstr "Μορφή αρχείου: %(format)s" -#: cps/web.py:584 +#: cps/web.py:592 #, python-format msgid "Category: %(name)s" msgstr "Κατηγορία: %(name)s" -#: cps/web.py:603 +#: cps/web.py:611 #, python-format msgid "Language: %(name)s" msgstr "Γλώσσα: %(name)s" -#: cps/web.py:633 +#: cps/web.py:641 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "Η ειδικά προσαρμοσμένη στήλη No.%(column)d δεν υπάρχει στο επίπεδο βάσης δεδομένων" -#: cps/templates/layout.html:56 cps/web.py:703 cps/web.py:1248 +#: cps/templates/layout.html:56 cps/web.py:711 cps/web.py:1314 msgid "Advanced Search" msgstr "Προχωρημένη Αναζήτηση" #: cps/templates/book_edit.html:214 cps/templates/feed.xml:33 #: cps/templates/index.xml:11 cps/templates/layout.html:45 #: cps/templates/layout.html:48 cps/templates/search_form.html:194 -#: cps/web.py:715 cps/web.py:987 +#: cps/web.py:723 cps/web.py:1061 msgid "Search" msgstr "Αναζήτηση" -#: cps/web.py:882 +#: cps/templates/admin.html:16 cps/web.py:876 +msgid "Downloads" +msgstr "Κατεβασμένα" + +#: cps/web.py:952 msgid "Ratings list" msgstr "Λίστα αξιολογήσεων" -#: cps/web.py:901 +#: cps/web.py:973 msgid "File formats list" msgstr "Λίστα μορφών αρχείου" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:964 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1038 msgid "Tasks" msgstr "Εργασίες" -#: cps/web.py:1108 +#: cps/web.py:1182 msgid "Published after " msgstr "Εκδόθηκε μετά" -#: cps/web.py:1115 +#: cps/web.py:1189 msgid "Published before " msgstr "Εκδόθηκε πριν" -#: cps/web.py:1145 +#: cps/web.py:1211 #, python-format msgid "Rating <= %(rating)s" msgstr "Αξιολόγηση <= %(rating)s" -#: cps/web.py:1147 +#: cps/web.py:1213 #, python-format msgid "Rating >= %(rating)s" msgstr "Αξιολόγηση >= %(rating)s" -#: cps/web.py:1149 +#: cps/web.py:1215 #, python-format msgid "Read Status = %(status)s" msgstr "" -#: cps/web.py:1325 +#: cps/web.py:1387 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Το βιβλίο έχει επιτυχώς μπει σε σειρά για αποστολή στο %(kindlemail)s" -#: cps/web.py:1329 +#: cps/web.py:1391 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Oυπς! Υπήρξε ένα σφάλμα κατά την αποστολή αυτού του βιβλίου: %(res)s" -#: cps/web.py:1331 +#: cps/web.py:1393 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Παρακαλούμε ενημέρωσε το προφίλ σου με μια έγκυρη Διεύθυνση E-mail Αποστολής στο Kindle." -#: cps/web.py:1348 +#: cps/web.py:1410 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "Ο διακομιστής E-Mail δεν έχει διαμορφωθεί, παρακαλούμε επικοινώνησε με το διαχειριστή σου!" -#: cps/web.py:1349 cps/web.py:1359 cps/web.py:1366 cps/web.py:1389 -#: cps/web.py:1393 cps/web.py:1398 cps/web.py:1402 +#: cps/web.py:1411 cps/web.py:1418 cps/web.py:1424 cps/web.py:1443 +#: cps/web.py:1447 cps/web.py:1453 msgid "register" msgstr "εγγραφή" -#: cps/web.py:1364 -msgid "Invalid e-mail address format" -msgstr "" - -#: cps/web.py:1391 +#: cps/web.py:1445 msgid "Your e-mail is not allowed to register" msgstr "Η διεύθυνση e-mail σου δεν επιτρέπεται να εγγραφεί" -#: cps/web.py:1394 +#: cps/web.py:1448 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Το e-mail επιβεβαίωσης έχει σταλεί στον e-mail λογαριασμό σου." -#: cps/web.py:1397 -msgid "This username or e-mail address is already in use." -msgstr "Αυτό το όνομα χρήστη ή η διεύθυνση e-mail είναι ήδη σε χρήση." - -#: cps/web.py:1414 +#: cps/web.py:1465 msgid "Cannot activate LDAP authentication" msgstr "Δεν μπόρεσε να ενεργοποιηθεί η επαλήθευση LDAP" -#: cps/web.py:1431 +#: cps/web.py:1482 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "Εναλλακτική Σύνδεση ως: '%(nickname)s', Ο Διακομιστής LDAP δεν είναι προσβάσιμος, ή ο χρήστης δεν είναι γνωστός" -#: cps/web.py:1437 +#: cps/web.py:1488 #, python-format msgid "Could not login: %(message)s" msgstr "Δεν μπόρεσε να συνδεθεί: %(message)s" -#: cps/web.py:1441 cps/web.py:1465 +#: cps/web.py:1492 cps/web.py:1516 msgid "Wrong Username or Password" msgstr "Λανθασμένο Όνομα Χρήστη ή Κωδικός" -#: cps/web.py:1448 +#: cps/web.py:1499 msgid "New Password was send to your email address" msgstr "Ο Νέος Κωδικός έχει σταλεί στη διεύθυνση email σου" -#: cps/web.py:1454 +#: cps/web.py:1505 msgid "Please enter valid username to reset password" msgstr "Παρακαλούμε συμπλήρωσε ένα έγκυρο όνομα χρήστη για επαναφορά του κωδικού" -#: cps/web.py:1460 +#: cps/web.py:1511 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Έχεις συνδεθεί ως: '%(nickname)s'" -#: cps/web.py:1498 cps/web.py:1583 +#: cps/web.py:1565 cps/web.py:1612 #, python-format msgid "%(name)s's profile" msgstr "%(name)s's προφίλ" -#: cps/web.py:1550 +#: cps/web.py:1579 msgid "Profile updated" msgstr "Το προφίλ ενημερώθηκε" -#: cps/web.py:1610 cps/web.py:1613 cps/web.py:1616 cps/web.py:1619 -#: cps/web.py:1626 cps/web.py:1631 +#: cps/web.py:1583 +msgid "Found an existing account for this e-mail address." +msgstr "Βρέθηκε ένας ήδη υπάρχον λογαριασμός για αυτή τη διεύθυνση e-mail." + +#: cps/web.py:1639 cps/web.py:1642 cps/web.py:1645 cps/web.py:1648 +#: cps/web.py:1655 cps/web.py:1660 msgid "Read a Book" msgstr "Διάβασε ένα Βιβλίο" +#: cps/services/gmail.py:41 +msgid "Found no valid gmail.json file with OAuth information" +msgstr "" + #: cps/tasks/convert.py:114 #, python-format msgid "Calibre ebook-convert %(tool)s not found" @@ -1162,221 +1294,231 @@ msgstr "Το Calibre απέτυχε με σφάλμα: %(error)s" msgid "Users" msgstr "Χρήστες" -#: cps/templates/admin.html:12 cps/templates/login.html:8 +#: cps/templates/admin.html:13 cps/templates/login.html:8 #: cps/templates/login.html:9 cps/templates/register.html:8 -#: cps/templates/user_edit.html:9 +#: cps/templates/user_edit.html:9 cps/templates/user_table.html:121 msgid "Username" msgstr "Όνομα Χρήστη" -#: cps/templates/admin.html:13 cps/templates/register.html:13 -#: cps/templates/user_edit.html:14 +#: cps/templates/admin.html:14 cps/templates/register.html:13 +#: cps/templates/user_edit.html:14 cps/templates/user_table.html:122 msgid "E-mail Address" msgstr "Διεύθυνση E-mail" -#: cps/templates/admin.html:14 cps/templates/user_edit.html:27 +#: cps/templates/admin.html:15 cps/templates/user_edit.html:27 msgid "Send to Kindle E-mail Address" msgstr "Διεύθυνση E-mail Αποστολής στο Kindle" -#: cps/templates/admin.html:15 -msgid "Downloads" -msgstr "Κατεβασμένα" - -#: cps/templates/admin.html:16 cps/templates/layout.html:77 +#: cps/templates/admin.html:17 cps/templates/layout.html:77 +#: cps/templates/user_table.html:130 msgid "Admin" msgstr "Διαχειριστής" -#: cps/templates/admin.html:17 cps/templates/login.html:12 +#: cps/templates/admin.html:18 cps/templates/login.html:12 #: cps/templates/login.html:13 cps/templates/user_edit.html:22 msgid "Password" msgstr "Κωδικός" -#: cps/templates/admin.html:18 cps/templates/layout.html:66 +#: cps/templates/admin.html:19 cps/templates/layout.html:66 +#: cps/templates/user_table.html:132 msgid "Upload" msgstr "Ανέβασμα" -#: cps/templates/admin.html:19 cps/templates/detail.html:18 +#: cps/templates/admin.html:20 cps/templates/detail.html:18 #: cps/templates/detail.html:27 cps/templates/shelf.html:6 +#: cps/templates/user_table.html:133 msgid "Download" msgstr "Κατέβασμα" -#: cps/templates/admin.html:20 +#: cps/templates/admin.html:21 msgid "View Books" msgstr "Προβολή Βιβλίων" -#: cps/templates/admin.html:21 +#: cps/templates/admin.html:22 cps/templates/user_table.html:118 +#: cps/templates/user_table.html:135 msgid "Edit" msgstr "Επεξεργασία" -#: cps/templates/admin.html:22 cps/templates/book_edit.html:16 -#: cps/templates/book_table.html:57 cps/templates/modal_dialogs.html:63 +#: cps/templates/admin.html:23 cps/templates/book_edit.html:16 +#: cps/templates/book_table.html:58 cps/templates/modal_dialogs.html:63 #: cps/templates/modal_dialogs.html:116 cps/templates/user_edit.html:66 +#: cps/templates/user_table.html:136 msgid "Delete" msgstr "Διαγραφή" -#: cps/templates/admin.html:23 +#: cps/templates/admin.html:24 msgid "Public Shelf" msgstr "Δημόσιο Ράφι" -#: cps/templates/admin.html:44 +#: cps/templates/admin.html:47 msgid "Add New User" msgstr "Προσθήκη Νέου Χρήστη" -#: cps/templates/admin.html:46 +#: cps/templates/admin.html:49 msgid "Import LDAP Users" msgstr "Εισαγωγή Χρηστών LDAP" -#: cps/templates/admin.html:53 +#: cps/templates/admin.html:56 msgid "E-mail Server Settings" msgstr "Ρυθμίσεις E-mail Διακομιστή" -#: cps/templates/admin.html:57 cps/templates/email_edit.html:11 +#: cps/templates/admin.html:61 cps/templates/email_edit.html:30 msgid "SMTP Hostname" msgstr "Όνομα Εξυπηρετητή SMTP" -#: cps/templates/admin.html:61 cps/templates/email_edit.html:15 +#: cps/templates/admin.html:65 cps/templates/email_edit.html:34 msgid "SMTP Port" msgstr "SMTP Θύρα" -#: cps/templates/admin.html:65 cps/templates/email_edit.html:19 +#: cps/templates/admin.html:69 cps/templates/email_edit.html:38 msgid "Encryption" msgstr "Κρυπτογράφηση" -#: cps/templates/admin.html:69 cps/templates/email_edit.html:27 +#: cps/templates/admin.html:73 cps/templates/email_edit.html:46 msgid "SMTP Login" msgstr "Σύνδεση SMTP" -#: cps/templates/admin.html:73 cps/templates/email_edit.html:35 +#: cps/templates/admin.html:77 cps/templates/admin.html:88 +#: cps/templates/email_edit.html:54 msgid "From E-mail" msgstr "Από E-mail" #: cps/templates/admin.html:84 +msgid "E-Mail Service" +msgstr "" + +#: cps/templates/admin.html:85 +msgid "Gmail via Oauth2" +msgstr "" + +#: cps/templates/admin.html:100 msgid "Configuration" msgstr "Διαμόρφωση" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:103 msgid "Calibre Database Directory" msgstr "Ευρετήριο Βάσης Δεδομένων Calibre" -#: cps/templates/admin.html:91 cps/templates/config_edit.html:136 +#: cps/templates/admin.html:107 cps/templates/config_edit.html:136 msgid "Log Level" msgstr "Επίπεδο Φύλλου Καταγραφής" -#: cps/templates/admin.html:95 +#: cps/templates/admin.html:111 msgid "Port" msgstr "Θύρα" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:116 msgid "External Port" msgstr "Εξωτερική Θύρα" -#: cps/templates/admin.html:107 cps/templates/config_view_edit.html:27 +#: cps/templates/admin.html:123 cps/templates/config_view_edit.html:27 msgid "Books per Page" msgstr "Βιβλία ανά Σελίδα" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:127 msgid "Uploads" msgstr "Ανεβάσμένα" -#: cps/templates/admin.html:115 +#: cps/templates/admin.html:131 msgid "Anonymous Browsing" msgstr "Ανώνυμη Περιήγηση" -#: cps/templates/admin.html:119 +#: cps/templates/admin.html:135 msgid "Public Registration" msgstr "Δημόσια Εγγραφή" -#: cps/templates/admin.html:123 +#: cps/templates/admin.html:139 msgid "Magic Link Remote Login" msgstr "Μαγικός Σύνδεσμος Απομακρυσμένης Σύνδεσης" -#: cps/templates/admin.html:127 +#: cps/templates/admin.html:143 msgid "Reverse Proxy Login" msgstr "Αναστροφή Σύνδεσης Διακομιστή Μεσολάβησης" -#: cps/templates/admin.html:132 +#: cps/templates/admin.html:148 msgid "Reverse proxy header name" msgstr "Όνομα επικεφαλίδας αναστροφής διακομιστή μεσολάβησης" -#: cps/templates/admin.html:137 +#: cps/templates/admin.html:153 msgid "Edit Basic Configuration" msgstr "Επεξεργασία Βασικής Διαμόρφωσης" -#: cps/templates/admin.html:138 +#: cps/templates/admin.html:154 msgid "Edit UI Configuration" msgstr "Επεξεργασία Διαμόρφωσης UI" -#: cps/templates/admin.html:143 +#: cps/templates/admin.html:159 msgid "Administration" msgstr "Διοίκηση" -#: cps/templates/admin.html:144 +#: cps/templates/admin.html:160 msgid "Download Debug Package" msgstr "" -#: cps/templates/admin.html:145 +#: cps/templates/admin.html:161 msgid "View Logs" msgstr "Προβολή Φύλλων Καταγραφής" -#: cps/templates/admin.html:148 +#: cps/templates/admin.html:164 msgid "Reconnect Calibre Database" msgstr "Επανασύνδεση Βάσης Δεδομένων Calibre" -#: cps/templates/admin.html:149 +#: cps/templates/admin.html:165 msgid "Restart" msgstr "Επανεκκίνηση" -#: cps/templates/admin.html:150 +#: cps/templates/admin.html:166 msgid "Shutdown" msgstr "Κλείσιμο" -#: cps/templates/admin.html:155 +#: cps/templates/admin.html:171 msgid "Update" msgstr "Ενημέρωση" -#: cps/templates/admin.html:159 +#: cps/templates/admin.html:175 msgid "Version" msgstr "Έκδοση" -#: cps/templates/admin.html:160 +#: cps/templates/admin.html:176 msgid "Details" msgstr "Λεπτομέρειες" -#: cps/templates/admin.html:166 +#: cps/templates/admin.html:182 msgid "Current version" msgstr "Τρέχουσα έκδοση" -#: cps/templates/admin.html:173 +#: cps/templates/admin.html:189 msgid "Check for Update" msgstr "Έλεγχος για Ενημέρωση" -#: cps/templates/admin.html:174 +#: cps/templates/admin.html:190 msgid "Perform Update" msgstr "Πραγματοποίηση Ενημέρωσης" -#: cps/templates/admin.html:187 +#: cps/templates/admin.html:203 msgid "Are you sure you want to restart?" msgstr "Είσαι σίγουρος/η πως θέλεις να κάνεις επανεκκίνηση" -#: cps/templates/admin.html:192 cps/templates/admin.html:206 -#: cps/templates/admin.html:226 cps/templates/shelf.html:95 +#: cps/templates/admin.html:208 cps/templates/admin.html:222 +#: cps/templates/admin.html:242 cps/templates/shelf.html:95 msgid "OK" msgstr "OK" -#: cps/templates/admin.html:193 cps/templates/admin.html:207 -#: cps/templates/book_edit.html:192 cps/templates/book_table.html:84 +#: cps/templates/admin.html:209 cps/templates/admin.html:223 +#: cps/templates/book_edit.html:192 cps/templates/book_table.html:85 #: cps/templates/config_edit.html:427 cps/templates/config_view_edit.html:151 -#: cps/templates/email_edit.html:47 cps/templates/modal_dialogs.html:64 -#: cps/templates/modal_dialogs.html:99 cps/templates/modal_dialogs.html:117 +#: cps/templates/modal_dialogs.html:64 cps/templates/modal_dialogs.html:99 +#: cps/templates/modal_dialogs.html:117 cps/templates/modal_dialogs.html:135 #: cps/templates/shelf.html:96 cps/templates/shelf_edit.html:19 #: cps/templates/user_edit.html:132 msgid "Cancel" msgstr "Ακύρωση" -#: cps/templates/admin.html:205 +#: cps/templates/admin.html:221 msgid "Are you sure you want to shutdown?" msgstr "Είσαι σίγουρος/η πως θέλεις να κάνεις κλείσιμο;" -#: cps/templates/admin.html:217 +#: cps/templates/admin.html:233 msgid "Updating, please do not reload this page" msgstr "Γίνεται ενημέρωση, παρακαλούμε μη φορτώσεις ξανά αυτή τη σελίδα" @@ -1484,6 +1626,7 @@ msgid "Identifier Value" msgstr "Τιμή Αναγνωριστικού" #: cps/templates/book_edit.html:72 cps/templates/book_edit.html:289 +#: cps/templates/user_table.html:23 msgid "Remove" msgstr "Αφαίρεση" @@ -1549,7 +1692,7 @@ msgid "Fetch Metadata" msgstr "Συγκέντρωση Μεταδεδομένων" #: cps/templates/book_edit.html:191 cps/templates/config_edit.html:424 -#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45 +#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:64 #: cps/templates/shelf_edit.html:17 cps/templates/shelf_order.html:40 #: cps/templates/user_edit.html:130 msgid "Save" @@ -1589,96 +1732,98 @@ msgstr "Σφάλμα αναζήτησης!" msgid "No Result(s) found! Please try another keyword." msgstr "Δεν βρέθηκε(αν) αποτέλεσμα(τα)! Παρακαλούμε δοκίμασε μια άλλη λέξη κλειδί." -#: cps/templates/book_table.html:10 cps/templates/book_table.html:52 +#: cps/templates/book_table.html:11 cps/templates/book_table.html:53 +#: cps/templates/user_table.html:13 cps/templates/user_table.html:65 +#: cps/templates/user_table.html:88 msgid "This Field is Required" msgstr "Αυτό το Πεδίο Απαιτείται" -#: cps/templates/book_table.html:23 +#: cps/templates/book_table.html:24 msgid "Merge selected books" msgstr "Συγχώνευση επιλεγμένων βιβλίων" -#: cps/templates/book_table.html:24 +#: cps/templates/book_table.html:25 cps/templates/user_table.html:111 msgid "Remove Selections" msgstr "Αφαίρεση Επιλογών" -#: cps/templates/book_table.html:30 +#: cps/templates/book_table.html:31 msgid "Update Title Sort automatically" msgstr "Ενημέρωση Ταξινόμησης Τίτλων αυτόματα" -#: cps/templates/book_table.html:34 +#: cps/templates/book_table.html:35 msgid "Update Author Sort automatically" msgstr "Ενημέρωση Ταξινίμησης Συγγραφέα αυτόματα" -#: cps/templates/book_table.html:46 +#: cps/templates/book_table.html:47 msgid "Enter Title" msgstr "Εισαγωγή Τίτλου" -#: cps/templates/book_table.html:46 cps/templates/config_view_edit.html:23 +#: cps/templates/book_table.html:47 cps/templates/config_view_edit.html:23 #: cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Τίτλος" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Enter Title Sort" msgstr "Εισαγωγή Ταξινόμησης Τίτλου" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Title Sort" msgstr "Ταξινόμηση Τίτλου" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Enter Author Sort" msgstr "Εισαγωγή Ταξινόμησης Συγγραφέας" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Author Sort" msgstr "Ταξινόμηση Συγγραφέα" -#: cps/templates/book_table.html:49 +#: cps/templates/book_table.html:50 msgid "Enter Authors" msgstr "Εισαγωγή Συγγραφέων" -#: cps/templates/book_table.html:50 +#: cps/templates/book_table.html:51 msgid "Enter Categories" msgstr "Εισαγωγή Κατηγοριών" -#: cps/templates/book_table.html:51 +#: cps/templates/book_table.html:52 msgid "Enter Series" msgstr "Εισαγωγή Σειρών" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Enter title" msgstr "Εισαγωγή τίτλου" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Series Index" msgstr "Ευρετήριο Σειρών" -#: cps/templates/book_table.html:53 +#: cps/templates/book_table.html:54 msgid "Enter Languages" msgstr "Εισαγωγή Γλωσσών" -#: cps/templates/book_table.html:54 +#: cps/templates/book_table.html:55 msgid "Publishing Date" msgstr "Ημερομηνία Έκδοσης" -#: cps/templates/book_table.html:55 +#: cps/templates/book_table.html:56 msgid "Enter Publishers" msgstr "Εισαγωγή Εκδοτών" -#: cps/templates/book_table.html:70 cps/templates/modal_dialogs.html:46 +#: cps/templates/book_table.html:71 cps/templates/modal_dialogs.html:46 msgid "Are you really sure?" msgstr "Είσαι πραγματικά σίγουρος/η;" -#: cps/templates/book_table.html:74 +#: cps/templates/book_table.html:75 msgid "Books with Title will be merged from:" msgstr "Βιβλία με Τίτλους θα ενωθούν από:" -#: cps/templates/book_table.html:78 +#: cps/templates/book_table.html:79 msgid "Into Book with Title:" msgstr "Μέσα σε Βιβλίο με Τίτλο:" -#: cps/templates/book_table.html:83 +#: cps/templates/book_table.html:84 msgid "Merge" msgstr "Συγχώνευση" @@ -1863,7 +2008,7 @@ msgid "LDAP Encryption" msgstr "LDAP Αποκρυπτογράφηση" #: cps/templates/config_edit.html:268 cps/templates/config_view_edit.html:61 -#: cps/templates/email_edit.html:21 +#: cps/templates/email_edit.html:40 msgid "None" msgstr "Κανένα" @@ -2076,6 +2221,7 @@ msgid "Default Visibilities for New Users" msgstr "Προκαθορισμένες Ορατότηες για Νέους Χρήστες" #: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82 +#: cps/templates/user_table.html:138 msgid "Show Random Books in Detail View" msgstr "Προβολή Τυχαίων Βιβλίων σε Προβολή Λεπτομερειών" @@ -2149,43 +2295,69 @@ msgstr "(Δημόσιο)" msgid "Edit Metadata" msgstr "Επεξεργασία Μεταδεδομένων" -#: cps/templates/email_edit.html:22 +#: cps/templates/email_edit.html:12 +msgid "Choose Server Type" +msgstr "" + +#: cps/templates/email_edit.html:14 +msgid "Use Standard E-Mail Account" +msgstr "" + +#: cps/templates/email_edit.html:15 +msgid "Gmail Account with OAuth2 Verfification" +msgstr "" + +#: cps/templates/email_edit.html:21 +msgid "Setup Gmail Account as E-Mail Server" +msgstr "" + +#: cps/templates/email_edit.html:23 +msgid "Revoke Gmail Access" +msgstr "" + +#: cps/templates/email_edit.html:41 msgid "STARTTLS" msgstr "STARTTLS" -#: cps/templates/email_edit.html:23 +#: cps/templates/email_edit.html:42 msgid "SSL/TLS" msgstr "SSL/TLS" -#: cps/templates/email_edit.html:31 +#: cps/templates/email_edit.html:50 msgid "SMTP Password" msgstr "SMTP Κωδικός" -#: cps/templates/email_edit.html:38 +#: cps/templates/email_edit.html:57 msgid "Attachment Size Limit" msgstr "Όριο Μεγέθους Επισύναψης" -#: cps/templates/email_edit.html:46 +#: cps/templates/email_edit.html:65 msgid "Save and Send Test E-mail" msgstr "Αποθήκευση και Αποστολή E-mail Δοκιμής" -#: cps/templates/email_edit.html:51 +#: cps/templates/email_edit.html:69 cps/templates/layout.html:29 +#: cps/templates/shelf_order.html:41 cps/templates/user_table.html:158 +msgid "Back" +msgstr "Πίσω" + +#: cps/templates/email_edit.html:73 msgid "Allowed Domains (Whitelist)" msgstr "Επιτρεπόμενα Domains (Λευκή λίστα)" -#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80 +#: cps/templates/email_edit.html:76 cps/templates/email_edit.html:102 msgid "Add Domain" msgstr "Προσθήκη Domain" -#: cps/templates/email_edit.html:57 cps/templates/email_edit.html:83 +#: cps/templates/email_edit.html:79 cps/templates/email_edit.html:105 +#: cps/templates/user_table.html:26 msgid "Add" msgstr "Προσθήκη" -#: cps/templates/email_edit.html:62 cps/templates/email_edit.html:72 +#: cps/templates/email_edit.html:84 cps/templates/email_edit.html:94 msgid "Enter domainname" msgstr "Όνομα domain" -#: cps/templates/email_edit.html:68 +#: cps/templates/email_edit.html:90 msgid "Denied Domains (Blacklist)" msgstr "Domains που Απορρίφθηκαν (Μαύρη λίστα)" @@ -2197,10 +2369,6 @@ msgstr "Επόμενο" msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):" msgstr "ʼΑνοιξε το .kobo/Kobo eReader.conf αρχείο σε πρόγραμμα επεξεργασίας κειμένου και πρόσθεσε (ή κάνε επεξεργασία):" -#: cps/templates/grid.html:14 cps/templates/list.html:14 -msgid "All" -msgstr "Όλα" - #: cps/templates/http_error.html:38 msgid "Create Issue" msgstr "Δημιουργία Θέματος" @@ -2231,64 +2399,72 @@ msgstr "" msgid "Start" msgstr "Έναρξη" +#: cps/templates/index.xml:18 +msgid "Alphabetical Books" +msgstr "" + #: cps/templates/index.xml:22 +msgid "Books sorted alphabetically" +msgstr "" + +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Downloads." msgstr "Δημοφιλείς εκδόσεις από αυτό τον κατάλογο με βάση τις Λήψεις." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:36 msgid "Popular publications from this catalog based on Rating." msgstr "Δημοφιλείς εκδόσεις από αυτό τον κατάλογο με βάση την Αξιολόγηση." -#: cps/templates/index.xml:32 +#: cps/templates/index.xml:39 msgid "Recently added Books" msgstr "Βιβλία που προστέθηκαν Πρόσφατα" -#: cps/templates/index.xml:36 +#: cps/templates/index.xml:43 msgid "The latest Books" msgstr "Τα τελευταία Βιβλία" -#: cps/templates/index.xml:39 +#: cps/templates/index.xml:46 msgid "Random Books" msgstr "Τυχαία Βιβλία" -#: cps/templates/index.xml:43 +#: cps/templates/index.xml:50 msgid "Show Random Books" msgstr "Προβολή Τυχαίων Βιβλίων" -#: cps/templates/index.xml:66 +#: cps/templates/index.xml:73 msgid "Books ordered by Author" msgstr "Τα βιβλία ταξινομήθηκαν ανά Συγγραφέα" -#: cps/templates/index.xml:73 +#: cps/templates/index.xml:80 msgid "Books ordered by publisher" msgstr "Τα βιβλία ταξινομήθηκαν ανά εκδότη" -#: cps/templates/index.xml:80 +#: cps/templates/index.xml:87 msgid "Books ordered by category" msgstr "Τα βιβλία ταξινομήθηκαν ανά κατηγορία" -#: cps/templates/index.xml:87 +#: cps/templates/index.xml:94 msgid "Books ordered by series" msgstr "Τα βιβλία ταξινομήθηκαν ανά σειρές" -#: cps/templates/index.xml:94 +#: cps/templates/index.xml:101 msgid "Books ordered by Languages" msgstr "Τα βιβλία ταξινομήθηκαν ανά Γλώσσες" -#: cps/templates/index.xml:101 +#: cps/templates/index.xml:108 msgid "Books ordered by Rating" msgstr "Τα βιβλία ταξινομήθηκαν ανά Αξιολόγηση" -#: cps/templates/index.xml:109 +#: cps/templates/index.xml:116 msgid "Books ordered by file formats" msgstr "Τα βιβλία ταξινομήθηκαν ανά μορφές αρχείου" -#: cps/templates/index.xml:112 cps/templates/layout.html:135 +#: cps/templates/index.xml:119 cps/templates/layout.html:135 #: cps/templates/search_form.html:80 msgid "Shelves" msgstr "Ράφια" -#: cps/templates/index.xml:116 +#: cps/templates/index.xml:123 msgid "Books organized in shelves" msgstr "Βιβλία οργανωμένα σε ράφια" @@ -2296,10 +2472,6 @@ msgstr "Βιβλία οργανωμένα σε ράφια" msgid "Home" msgstr "Κεντρική" -#: cps/templates/layout.html:29 cps/templates/shelf_order.html:41 -msgid "Back" -msgstr "Πίσω" - #: cps/templates/layout.html:35 msgid "Toggle Navigation" msgstr "Αλλαγή Θέσης Περιήγησης" @@ -2461,6 +2633,11 @@ msgstr "" msgid "Select" msgstr "" +#: cps/templates/modal_dialogs.html:134 +#, fuzzy +msgid "Ok" +msgstr "Βιβλίο" + #: cps/templates/osd.xml:5 msgid "Calibre-Web eBook Catalog" msgstr "Calibre-Web Κατάλογος eBook" @@ -2766,10 +2943,6 @@ msgstr "Επαναφορά Κωδικού χρήστη" msgid "Language of Books" msgstr "Γλώσσα Βιβλίων" -#: cps/templates/user_edit.html:44 -msgid "Show All" -msgstr "Προβολή Όλων" - #: cps/templates/user_edit.html:53 msgid "OAuth Settings" msgstr "OAuth Ρυθμίσεις" @@ -2794,7 +2967,7 @@ msgstr "Δημιουγία/Προβολή" msgid "Add allowed/Denied Custom Column Values" msgstr "Προσθήκη Τιμών Ειδικά Προσαρμοσμένης Στήλης επιτρέπεται/Απορρίπτεται" -#: cps/templates/user_edit.html:135 +#: cps/templates/user_edit.html:135 cps/templates/user_table.html:153 msgid "Delete User" msgstr "Διαγραφή Χρήστη" @@ -2802,3 +2975,98 @@ msgstr "Διαγραφή Χρήστη" msgid "Generate Kobo Auth URL" msgstr "Δημιουργία Kobo Auth URL" +#: cps/templates/user_table.html:68 cps/templates/user_table.html:91 +msgid "Select..." +msgstr "" + +#: cps/templates/user_table.html:118 +#, fuzzy +msgid "Edit User" +msgstr "Χρήστης Διαχειριστής" + +#: cps/templates/user_table.html:121 +#, fuzzy +msgid "Enter Username" +msgstr "Επιλογή ενός ονόματος χρήστη" + +#: cps/templates/user_table.html:122 +#, fuzzy +msgid "Enter E-mail Address" +msgstr "Η διεύθυνση email σου" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Enter Kindle E-mail Address" +msgstr "Διεύθυνση E-mail Αποστολής στο Kindle" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Kindle E-mail" +msgstr "Δοκιμαστικό e-mail" + +#: cps/templates/user_table.html:124 +#, fuzzy +msgid "Locale" +msgstr "Κλίμακα" + +#: cps/templates/user_table.html:125 +msgid "Visible Book Languages" +msgstr "" + +#: cps/templates/user_table.html:126 +#, fuzzy +msgid "Edit Denied Tags" +msgstr "Επιλογή Ετικετών Επιτρέπεται/Απορρίπτεται" + +#: cps/templates/user_table.html:126 +msgid "Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +#, fuzzy +msgid "Edit Allowed Tags" +msgstr "Επιλογή Ετικετών Επιτρέπεται/Απορρίπτεται" + +#: cps/templates/user_table.html:127 +msgid "Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Edit Allowed Column Values" +msgstr "Προσθήκη τιμών ειδικά κατασκευασμένων στηλών Επιτρέπεται/Απορρίπτεται" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Allowed Column Values" +msgstr "Προσθήκη τιμών ειδικά κατασκευασμένων στηλών Επιτρέπεται/Απορρίπτεται" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Edit Denied Column Values" +msgstr "Προσθήκη τιμών ειδικά κατασκευασμένων στηλών Επιτρέπεται/Απορρίπτεται" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Denied Columns Values" +msgstr "Προσθήκη τιμών ειδικά κατασκευασμένων στηλών Επιτρέπεται/Απορρίπτεται" + +#: cps/templates/user_table.html:131 +#, fuzzy +msgid "Change Password" +msgstr "Να Επιτρέπεται η Αλλαγή Κωδικού" + +#: cps/templates/user_table.html:134 +msgid "View" +msgstr "" + +#: cps/templates/user_table.html:137 +#, fuzzy +msgid "Edit Public Shelfs" +msgstr "Δημόσιο Ράφι" + +#: cps/templates/user_table.html:140 +#, fuzzy +msgid "Show read/unread selection" +msgstr "Προβολή επιλογών σειράς" + diff --git a/cps/translations/es/LC_MESSAGES/messages.mo b/cps/translations/es/LC_MESSAGES/messages.mo index 596a0e60..6d7ba02e 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 38f60270..9ea8fdc6 100644 --- a/cps/translations/es/LC_MESSAGES/messages.po +++ b/cps/translations/es/LC_MESSAGES/messages.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2021-03-27 12:16+0100\n" +"POT-Creation-Date: 2021-05-01 16:33+0200\n" "PO-Revision-Date: 2020-05-25 17:22+0200\n" "Last-Translator: minakmostoles \n" "Language: es\n" @@ -18,7 +18,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" +"Generated-By: Babel 2.8.0\n" #: cps/about.py:43 msgid "installed" @@ -33,310 +33,405 @@ msgstr "no instalado" msgid "Statistics" msgstr "Estadísticas" -#: cps/admin.py:149 +#: cps/admin.py:151 msgid "Server restarted, please reload page" msgstr "Servidor reiniciado. Por favor, recargue la página" -#: cps/admin.py:151 +#: cps/admin.py:153 msgid "Performing shutdown of server, please close window" msgstr "El servidor se está apagando. Por favor, cierre la ventana" -#: cps/admin.py:159 +#: cps/admin.py:161 msgid "Reconnect successful" msgstr "Reconexión correcta" -#: cps/admin.py:162 +#: cps/admin.py:164 msgid "Unknown command" msgstr "Comando desconocido" -#: cps/admin.py:172 cps/editbooks.py:662 cps/editbooks.py:674 -#: cps/editbooks.py:777 cps/editbooks.py:779 cps/editbooks.py:806 -#: cps/editbooks.py:822 cps/updater.py:521 cps/uploader.py:94 +#: cps/admin.py:174 cps/editbooks.py:668 cps/editbooks.py:682 +#: cps/editbooks.py:821 cps/editbooks.py:823 cps/editbooks.py:850 +#: cps/editbooks.py:866 cps/updater.py:555 cps/uploader.py:94 #: cps/uploader.py:104 msgid "Unknown" msgstr "Desconocido" -#: cps/admin.py:193 +#: cps/admin.py:195 msgid "Admin page" msgstr "Página de administración" -#: cps/admin.py:215 +#: cps/admin.py:217 msgid "UI Configuration" msgstr "Configuración de la interfaz de usuario" -#: cps/admin.py:247 cps/admin.py:936 +#: cps/admin.py:249 cps/templates/admin.html:46 +#, fuzzy +msgid "Edit Users" +msgstr "Usuario administrador" + +#: cps/admin.py:290 +#, fuzzy +msgid "all" +msgstr "Todo" + +#: cps/admin.py:315 cps/admin.py:1486 +msgid "User not found" +msgstr "Usuario no encontrado" + +#: cps/admin.py:329 +msgid "{} users deleted successfully" +msgstr "" + +#: cps/admin.py:351 cps/templates/user_edit.html:44 +#: cps/templates/user_table.html:69 +msgid "Show All" +msgstr "Mostrar todo" + +#: cps/admin.py:372 cps/admin.py:378 +msgid "Malformed request" +msgstr "" + +#: cps/admin.py:390 cps/admin.py:1368 +msgid "Guest Name can't be changed" +msgstr "" + +#: cps/admin.py:400 +msgid "Guest can't have this role" +msgstr "" + +#: cps/admin.py:412 cps/admin.py:1333 +msgid "No admin user remaining, can't remove admin role" +msgstr "No queda ningún usuario administrador, no se puede eliminar al usuario" + +#: cps/admin.py:416 cps/admin.py:430 +msgid "Value has to be true or false" +msgstr "" + +#: cps/admin.py:418 +msgid "Invalid role" +msgstr "" + +#: cps/admin.py:422 +msgid "Guest can't have this view" +msgstr "" + +#: cps/admin.py:432 +msgid "Invalid view" +msgstr "" + +#: cps/admin.py:435 +msgid "Guest's Locale is determined automatically and can't be set" +msgstr "" + +#: cps/admin.py:439 +msgid "No Valid Locale Given" +msgstr "" + +#: cps/admin.py:450 +msgid "No Valid Book Language Given" +msgstr "" + +#: cps/admin.py:452 +msgid "Parameter not found" +msgstr "" + +#: cps/admin.py:506 cps/admin.py:1219 msgid "Calibre-Web configuration updated" msgstr "Configuración de Calibre-Web actualizada" -#: cps/admin.py:258 +#: cps/admin.py:518 msgid "Do you really want to delete the Kobo Token?" msgstr "¿Realmente quieres borrar el Token de Kobo?" -#: cps/admin.py:260 +#: cps/admin.py:520 msgid "Do you really want to delete this domain?" msgstr "" -#: cps/admin.py:262 +#: cps/admin.py:522 msgid "Do you really want to delete this user?" msgstr "" -#: cps/admin.py:264 cps/templates/shelf.html:90 +#: cps/admin.py:524 cps/templates/shelf.html:90 msgid "Are you sure you want to delete this shelf?" msgstr "¿Realmente quiere eliminar este estante?" -#: cps/admin.py:510 cps/admin.py:516 cps/admin.py:526 cps/admin.py:536 -#: cps/templates/modal_dialogs.html:29 +#: cps/admin.py:526 +#, fuzzy +msgid "Are you sure you want to change locales of selected user(s)?" +msgstr "¿Realmente quiere eliminar este estante?" + +#: cps/admin.py:528 +msgid "Are you sure you want to change visible book languages for selected user(s)?" +msgstr "" + +#: cps/admin.py:530 +msgid "Are you sure you want to change the selected role for the selected user(s)?" +msgstr "" + +#: cps/admin.py:532 +#, fuzzy +msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" +msgstr "¿Realmente quiere eliminar este estante?" + +#: cps/admin.py:534 +msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:683 +msgid "Tag not found" +msgstr "" + +#: cps/admin.py:695 +msgid "Invalid Action" +msgstr "" + +#: cps/admin.py:800 cps/admin.py:806 cps/admin.py:816 cps/admin.py:826 +#: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:43 msgid "Deny" msgstr "Denegar" -#: cps/admin.py:512 cps/admin.py:518 cps/admin.py:528 cps/admin.py:538 -#: cps/templates/modal_dialogs.html:28 +#: cps/admin.py:802 cps/admin.py:808 cps/admin.py:818 cps/admin.py:828 +#: cps/templates/modal_dialogs.html:28 cps/templates/user_table.html:48 msgid "Allow" msgstr "Permitir" -#: cps/admin.py:681 +#: cps/admin.py:971 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json no está configurado para la aplicación web" -#: cps/admin.py:723 +#: cps/admin.py:1016 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "La ruta del Logfile no es válida. Por favor, introduzca la ruta correcta" -#: cps/admin.py:729 +#: cps/admin.py:1022 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "La ruta del Access Logfile no es válida. Por favor, introduzca la ruta correcta" -#: cps/admin.py:738 +#: cps/admin.py:1052 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "Por favor, introduzca un proveedor LDAP, puerto, DN y el User Object Identifier" -#: cps/admin.py:752 cps/admin.py:760 +#: cps/admin.py:1067 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "LDAP Group Object Filter necesita tener un identificador de formato \"%s\"" -#: cps/admin.py:755 cps/admin.py:763 +#: cps/admin.py:1070 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "El LDAP Group Object Filter tiene un paréntesis diferente" -#: cps/admin.py:768 +#: cps/admin.py:1075 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "LDAP Group Object Filter necesita tener un identificador de formato \"%s\"" -#: cps/admin.py:771 +#: cps/admin.py:1078 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "El LDAP Group Object Filter tiene un paréntesis diferente" -#: cps/admin.py:779 +#: cps/admin.py:1086 #, python-format msgid "LDAP Member User Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:782 +#: cps/admin.py:1089 msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:790 +#: cps/admin.py:1097 msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:841 +#: cps/admin.py:1123 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "La ruta del Keyfile no es válida, por favor, introduzca la ruta correcta" -#: cps/admin.py:847 +#: cps/admin.py:1129 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "La ruta de Certfile no es válida, por favor, introduzca la ruta correcta" -#: cps/admin.py:917 cps/admin.py:1024 cps/admin.py:1047 cps/admin.py:1168 -#: cps/shelf.py:102 cps/shelf.py:159 cps/shelf.py:200 cps/shelf.py:261 -#: cps/shelf.py:314 cps/shelf.py:348 cps/shelf.py:418 +#: cps/admin.py:1200 cps/admin.py:1303 cps/admin.py:1395 cps/admin.py:1461 +#: cps/shelf.py:103 cps/shelf.py:163 cps/shelf.py:206 cps/shelf.py:269 +#: cps/shelf.py:325 cps/shelf.py:360 cps/shelf.py:431 msgid "Settings DB is not Writeable" msgstr "La base de datos de configuración no es modificable" -#: cps/admin.py:929 +#: cps/admin.py:1212 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "La ruta de la base de datos no es válida. Por favor, introduzca la ruta correcta" -#: cps/admin.py:933 +#: cps/admin.py:1216 msgid "DB is not Writeable" msgstr "La base de datos no es modificable" -#: cps/admin.py:972 +#: cps/admin.py:1256 msgid "Basic Configuration" msgstr "Configuración básica" -#: cps/admin.py:987 cps/web.py:1358 +#: cps/admin.py:1272 cps/web.py:1417 msgid "Please fill out all fields!" msgstr "¡Por favor, completa todos los campos!" -#: cps/admin.py:990 cps/admin.py:1002 cps/admin.py:1008 cps/admin.py:1138 -msgid "Add new user" -msgstr "Añadir un nuevo usuario" - -#: cps/admin.py:999 cps/web.py:1496 +#: cps/admin.py:1280 msgid "E-mail is not from valid domain" msgstr "El correo electrónico no tiene un dominio válido" -#: cps/admin.py:1006 cps/admin.py:1021 -msgid "Found an existing account for this e-mail address or nickname." -msgstr "Encontrada una cuenta existente para este correo electrónico o nombre de usuario." +#: cps/admin.py:1284 cps/admin.py:1414 +msgid "Add new user" +msgstr "Añadir un nuevo usuario" -#: cps/admin.py:1017 +#: cps/admin.py:1293 #, python-format msgid "User '%(user)s' created" msgstr "Usuario '%(user)s' creado" -#: cps/admin.py:1031 +#: cps/admin.py:1299 +#, fuzzy +msgid "Found an existing account for this e-mail address or name." +msgstr "Encontrada una cuenta existente para este correo electrónico o nombre de usuario." + +#: cps/admin.py:1312 #, python-format msgid "User '%(nick)s' deleted" msgstr "Usuario '%(nick)s' borrado" -#: cps/admin.py:1034 +#: cps/admin.py:1314 cps/admin.py:1315 +msgid "Can't delete Guest User" +msgstr "" + +#: cps/admin.py:1318 msgid "No admin user remaining, can't delete user" msgstr "No queda ningún usuario administrador, no se puede eliminar al usuario" -#: cps/admin.py:1041 -#, python-format -msgid "User '%(nick)s' updated" -msgstr "Usuario '%(nick)s' actualizado" - -#: cps/admin.py:1044 -msgid "An unknown error occured." -msgstr "Ocurrió un error desconocido." - -#: cps/admin.py:1056 -msgid "No admin user remaining, can't remove admin role" -msgstr "No queda ningún usuario administrador, no se puede eliminar al usuario" - -#: cps/admin.py:1092 cps/web.py:1554 -msgid "Found an existing account for this e-mail address." -msgstr "Encontrada una cuenta existente para esa dirección de correo electrónico." - -#: cps/admin.py:1101 cps/admin.py:1115 cps/admin.py:1209 cps/web.py:1516 +#: cps/admin.py:1383 cps/admin.py:1504 #, python-format msgid "Edit User %(nick)s" msgstr "Editar Usuario %(nick)s" -#: cps/admin.py:1107 cps/web.py:1509 -msgid "This username is already taken" -msgstr "Este nombre de usuario ya está en uso" +#: cps/admin.py:1387 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "Usuario '%(nick)s' actualizado" -#: cps/admin.py:1147 cps/templates/admin.html:78 +#: cps/admin.py:1391 +#, fuzzy +msgid "An unknown error occurred." +msgstr "Ocurrió un error desconocido." + +#: cps/admin.py:1423 cps/templates/admin.html:94 msgid "Edit E-mail Server Settings" msgstr "Cambiar parámetros de correo" -#: cps/admin.py:1175 +#: cps/admin.py:1442 +msgid "G-Mail Account Verification Successful" +msgstr "" + +#: cps/admin.py:1468 #, python-format msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" msgstr "" -#: cps/admin.py:1178 +#: cps/admin.py:1471 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Ocurrió un error enviando el correo electrónico de prueba: %(res)s" -#: cps/admin.py:1180 +#: cps/admin.py:1473 msgid "Please configure your e-mail address first..." msgstr "Por favor, configure su correo electrónico primero..." -#: cps/admin.py:1182 +#: cps/admin.py:1475 msgid "E-mail server settings updated" msgstr "Actualizados los ajustes del servidor de correo electrónico" -#: cps/admin.py:1193 -msgid "User not found" -msgstr "Usuario no encontrado" - -#: cps/admin.py:1220 +#: cps/admin.py:1516 #, python-format msgid "Password for user %(user)s reset" msgstr "Contraseña para el usuario %(user)s reinicializada" -#: cps/admin.py:1223 cps/web.py:1388 cps/web.py:1452 +#: cps/admin.py:1519 cps/web.py:1442 cps/web.py:1503 msgid "An unknown error occurred. Please try again later." msgstr "Ha ocurrido un error desconocido. Por favor vuelva a intentarlo más tarde." -#: cps/admin.py:1226 cps/web.py:1320 +#: cps/admin.py:1522 cps/web.py:1382 msgid "Please configure the SMTP mail settings first..." msgstr "Configura primero los parámetros del servidor SMTP..." -#: cps/admin.py:1237 +#: cps/admin.py:1533 msgid "Logfile viewer" msgstr "Visor del fichero de log" -#: cps/admin.py:1303 +#: cps/admin.py:1599 msgid "Requesting update package" msgstr "Solicitando paquete de actualización" -#: cps/admin.py:1304 +#: cps/admin.py:1600 msgid "Downloading update package" msgstr "Descargando paquete de actualización" -#: cps/admin.py:1305 +#: cps/admin.py:1601 msgid "Unzipping update package" msgstr "Descomprimiendo paquete de actualización" -#: cps/admin.py:1306 +#: cps/admin.py:1602 msgid "Replacing files" msgstr "Remplazando archivos" -#: cps/admin.py:1307 +#: cps/admin.py:1603 msgid "Database connections are closed" msgstr "Los conexiones con la base datos están cerradas" -#: cps/admin.py:1308 +#: cps/admin.py:1604 msgid "Stopping server" msgstr "Parando el servidor" -#: cps/admin.py:1309 +#: cps/admin.py:1605 msgid "Update finished, please press okay and reload page" msgstr "Actualización finalizada. Por favor, pulse OK y recargue la página" -#: cps/admin.py:1310 cps/admin.py:1311 cps/admin.py:1312 cps/admin.py:1313 -#: cps/admin.py:1314 +#: cps/admin.py:1606 cps/admin.py:1607 cps/admin.py:1608 cps/admin.py:1609 +#: cps/admin.py:1610 msgid "Update failed:" msgstr "Falló la actualización:" -#: cps/admin.py:1310 cps/updater.py:337 cps/updater.py:532 cps/updater.py:534 +#: cps/admin.py:1606 cps/updater.py:356 cps/updater.py:566 cps/updater.py:568 msgid "HTTP Error" msgstr "Error HTTP" -#: cps/admin.py:1311 cps/updater.py:339 cps/updater.py:536 +#: cps/admin.py:1607 cps/updater.py:358 cps/updater.py:570 msgid "Connection error" msgstr "Error de conexión" -#: cps/admin.py:1312 cps/updater.py:341 cps/updater.py:538 +#: cps/admin.py:1608 cps/updater.py:360 cps/updater.py:572 msgid "Timeout while establishing connection" msgstr "Tiempo agotado mientras se trataba de establecer la conexión" -#: cps/admin.py:1313 cps/updater.py:343 cps/updater.py:540 +#: cps/admin.py:1609 cps/updater.py:362 cps/updater.py:574 msgid "General error" msgstr "Error general" -#: cps/admin.py:1314 +#: cps/admin.py:1610 msgid "Update File Could Not be Saved in Temp Dir" msgstr "La actualización del archivo no pudo guardarse en el directorio temporal (Temp Dir)" -#: cps/admin.py:1376 +#: cps/admin.py:1671 msgid "Failed to Create at Least One LDAP User" msgstr "Error al crear al menos un usuario LDAP" -#: cps/admin.py:1389 +#: cps/admin.py:1684 #, python-format msgid "Error: %(ldaperror)s" msgstr "Error: %(ldaperror)s" -#: cps/admin.py:1393 +#: cps/admin.py:1688 msgid "Error: No user returned in response of LDAP server" msgstr "Error: el servidor LDAP no ha devuelto ningún usuario" -#: cps/admin.py:1426 +#: cps/admin.py:1721 msgid "At Least One LDAP User Not Found in Database" msgstr "Al menos, un usuario LDAP no se ha encontrado en la base de datos" -#: cps/admin.py:1428 +#: cps/admin.py:1723 msgid "{} User Successfully Imported" msgstr "" @@ -348,98 +443,98 @@ msgstr "no configurado" msgid "Execution permissions missing" msgstr "Faltan permisos de ejecución" -#: cps/editbooks.py:267 cps/editbooks.py:269 +#: cps/editbooks.py:294 cps/editbooks.py:296 msgid "Book Format Successfully Deleted" msgstr "Formato de libro borrado correctamente" -#: cps/editbooks.py:276 cps/editbooks.py:278 +#: cps/editbooks.py:303 cps/editbooks.py:305 msgid "Book Successfully Deleted" msgstr "Libro borrado correctamente" -#: cps/editbooks.py:325 cps/editbooks.py:646 cps/web.py:1598 cps/web.py:1634 -#: cps/web.py:1705 +#: cps/editbooks.py:361 cps/editbooks.py:724 cps/web.py:1627 cps/web.py:1663 +#: cps/web.py:1734 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Error abriendo un eBook. El archivo no existe o no es accesible" -#: cps/editbooks.py:359 +#: cps/editbooks.py:395 msgid "edit metadata" msgstr "editar metadatos" -#: cps/editbooks.py:434 +#: cps/editbooks.py:473 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s no es un idioma válido" -#: cps/editbooks.py:556 cps/editbooks.py:905 +#: cps/editbooks.py:595 cps/editbooks.py:936 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "No se permite subir archivos con la extensión '%(ext)s' a este servidor" -#: cps/editbooks.py:560 cps/editbooks.py:909 +#: cps/editbooks.py:599 cps/editbooks.py:940 msgid "File to be uploaded must have an extension" msgstr "El archivo a subir debe tener una extensión" -#: cps/editbooks.py:572 +#: cps/editbooks.py:611 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Fallo al crear la ruta %(path)s (permiso denegado)" -#: cps/editbooks.py:577 +#: cps/editbooks.py:616 #, python-format msgid "Failed to store file %(file)s." msgstr "Fallo al guardar el archivo %(file)s." -#: cps/editbooks.py:595 cps/editbooks.py:972 cps/web.py:1559 +#: cps/editbooks.py:634 cps/editbooks.py:1027 cps/web.py:1588 #, python-format msgid "Database error: %(error)s." msgstr "Error en la base de datos: %(error)s." -#: cps/editbooks.py:599 +#: cps/editbooks.py:638 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Archivo con formato %(ext)s añadido a %(book)s" -#: cps/editbooks.py:726 +#: cps/editbooks.py:775 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:763 +#: cps/editbooks.py:807 msgid "Metadata successfully updated" msgstr "Metadatos actualizados correctamente" -#: cps/editbooks.py:772 +#: cps/editbooks.py:816 msgid "Error editing book, please check logfile for details" msgstr "Error al editar el libro, por favor, compruebe el archivo de registro (logfile) para tener más detalles" -#: cps/editbooks.py:810 +#: cps/editbooks.py:854 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "El libro cargado probablemente existe en la biblioteca, considera cambiarlo antes de subirlo de nuevo: " -#: cps/editbooks.py:917 +#: cps/editbooks.py:948 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "El archivo %(filename)s no pudo salvarse en el directorio temporal (Temp Dir)" -#: cps/editbooks.py:947 +#: cps/editbooks.py:967 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "Fallo al mover el archivo de cubierta %(file)s: %(error)s" -#: cps/editbooks.py:958 +#: cps/editbooks.py:1013 #, python-format msgid "File %(file)s uploaded" msgstr "El fichero %(file)s ha sido subido" -#: cps/editbooks.py:984 +#: cps/editbooks.py:1039 msgid "Source or destination format for conversion missing" msgstr "Falta la fuente o el formato de destino para la conversión" -#: cps/editbooks.py:992 +#: cps/editbooks.py:1047 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Libro puesto a la cola para su conversión a %(book_format)s" -#: cps/editbooks.py:996 +#: cps/editbooks.py:1051 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Ocurrió un error al convertir este libro: %(res)s" @@ -547,55 +642,68 @@ msgstr "Fichero %(file)s no encontrado en Google Drive" msgid "Book path %(path)s not found on Google Drive" msgstr "La ruta %(path)s del libro no fue encontrada en Google Drive" -#: cps/helper.py:576 +#: cps/helper.py:511 +#, fuzzy +msgid "Found an existing account for this e-mail address" +msgstr "Encontrada una cuenta existente para esa dirección de correo electrónico." + +#: cps/helper.py:519 +msgid "This username is already taken" +msgstr "Este nombre de usuario ya está en uso" + +#: cps/helper.py:529 +msgid "Invalid e-mail address format" +msgstr "" + +#: cps/helper.py:602 msgid "Error Downloading Cover" msgstr "Error al descargar la cubierta" -#: cps/helper.py:579 +#: cps/helper.py:605 msgid "Cover Format Error" msgstr "Error en el formato de la cubierta" -#: cps/helper.py:589 +#: cps/helper.py:615 msgid "Failed to create path for cover" msgstr "Error al crear una ruta para la cubierta" -#: cps/helper.py:605 +#: cps/helper.py:631 msgid "Cover-file is not a valid image file, or could not be stored" msgstr "El archivo de cubierta no es una imágen válida" -#: cps/helper.py:616 +#: cps/helper.py:642 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" msgstr "" -#: cps/helper.py:629 +#: cps/helper.py:655 msgid "Only jpg/jpeg files are supported as coverfile" msgstr "Siki kis archivos jpg/jpeg están soportados como cubierta" -#: cps/helper.py:680 +#: cps/helper.py:707 msgid "Unrar binary file not found" msgstr "No se ha encontrado el binario del comando UnRar" -#: cps/helper.py:694 +#: cps/helper.py:721 msgid "Error excecuting UnRar" msgstr "Error ejecutando UnRar" -#: cps/helper.py:743 +#: cps/helper.py:769 msgid "Waiting" msgstr "Esperando" -#: cps/helper.py:745 +#: cps/helper.py:771 msgid "Failed" msgstr "Fallido" -#: cps/helper.py:747 +#: cps/helper.py:773 msgid "Started" msgstr "Comenzado" -#: cps/helper.py:749 +#: cps/helper.py:775 msgid "Finished" msgstr "Finalizado" -#: cps/helper.py:751 +#: cps/helper.py:777 msgid "Unknown Status" msgstr "Estado desconocido" @@ -607,65 +715,82 @@ msgstr "Por favor, accede a calibre-web desde una ubicación que no sea localhos msgid "Kobo Setup" msgstr "Configuración de Kobo" -#: cps/oauth_bb.py:76 +#: cps/oauth_bb.py:78 #, python-format msgid "Register with %(provider)s" msgstr "Registrado con %(provider)s" -#: cps/oauth_bb.py:137 cps/remotelogin.py:133 cps/web.py:1424 +#: cps/oauth_bb.py:139 cps/remotelogin.py:133 cps/web.py:1475 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "has iniciado sesión como : '%(nickname)s'" -#: cps/oauth_bb.py:147 +#: cps/oauth_bb.py:149 #, python-format msgid "Link to %(oauth)s Succeeded" msgstr "El enlace a %(oauth)s se ha realizado correctamente" -#: cps/oauth_bb.py:153 +#: cps/oauth_bb.py:156 msgid "Login failed, No User Linked With OAuth Account" msgstr "Acceso erróneo, ningún usuario enlazado con la cuenta OAuth" -#: cps/oauth_bb.py:195 +#: cps/oauth_bb.py:198 #, python-format msgid "Unlink to %(oauth)s Succeeded" msgstr "%(oauth)s desenlazado con éxito" -#: cps/oauth_bb.py:199 +#: cps/oauth_bb.py:203 #, python-format msgid "Unlink to %(oauth)s Failed" msgstr "Error al desenlazar %(oauth)s" -#: cps/oauth_bb.py:202 +#: cps/oauth_bb.py:206 #, python-format msgid "Not Linked to %(oauth)s" msgstr "No vinculado con %(oauth)s" -#: cps/oauth_bb.py:259 +#: cps/oauth_bb.py:262 msgid "Failed to log in with GitHub." msgstr "Error al iniciar sesión con GitHub." -#: cps/oauth_bb.py:264 +#: cps/oauth_bb.py:268 msgid "Failed to fetch user info from GitHub." msgstr "Error al obtener la información del usuario de GitHub." -#: cps/oauth_bb.py:275 +#: cps/oauth_bb.py:280 msgid "Failed to log in with Google." msgstr "Error al iniciar sesión con Google." -#: cps/oauth_bb.py:280 +#: cps/oauth_bb.py:286 msgid "Failed to fetch user info from Google." msgstr "Error al obtener información del usuario de Google." -#: cps/oauth_bb.py:312 +#: cps/oauth_bb.py:333 msgid "GitHub Oauth error, please retry later." msgstr "Error en GitHub Oauth, por favor, vuelva a intentarlo más tarde." -#: cps/oauth_bb.py:331 +#: cps/oauth_bb.py:336 +msgid "GitHub Oauth error: {}" +msgstr "" + +#: cps/oauth_bb.py:357 msgid "Google Oauth error, please retry later." msgstr "Error en Google Oauth, por favor vuelva a intentarlo más tarde." -#: cps/remotelogin.py:65 cps/web.py:1471 +#: cps/oauth_bb.py:360 +msgid "Google Oauth error: {}" +msgstr "" + +#: cps/opds.py:110 cps/opds.py:199 cps/opds.py:276 cps/opds.py:328 +#: cps/templates/grid.html:14 cps/templates/list.html:14 +msgid "All" +msgstr "Todo" + +#: cps/opds.py:385 +msgid "{} Stars" +msgstr "" + +#: cps/remotelogin.py:65 cps/web.py:1522 msgid "login" msgstr "iniciar sesión" @@ -681,7 +806,7 @@ msgstr "El token ha expirado" msgid "Success! Please return to your device" msgstr "¡Correcto! Por favor regrese a su dispositivo" -#: cps/render_template.py:39 cps/web.py:415 +#: cps/render_template.py:39 cps/web.py:414 msgid "Books" msgstr "Libros" @@ -689,7 +814,7 @@ msgstr "Libros" msgid "Show recent books" msgstr "Mostrar libros recientes" -#: cps/render_template.py:42 cps/templates/index.xml:18 +#: cps/render_template.py:42 cps/templates/index.xml:25 msgid "Hot Books" msgstr "Libros populares" @@ -697,127 +822,130 @@ msgstr "Libros populares" msgid "Show Hot Books" msgstr "Mostrar libros populares" -#: cps/render_template.py:45 +#: cps/render_template.py:46 cps/render_template.py:51 msgid "Downloaded Books" msgstr "" -#: cps/render_template.py:47 +#: cps/render_template.py:48 cps/render_template.py:53 +#: cps/templates/user_table.html:151 msgid "Show Downloaded Books" msgstr "" -#: cps/render_template.py:50 cps/templates/index.xml:25 cps/web.py:425 +#: cps/render_template.py:56 cps/templates/index.xml:32 cps/web.py:424 msgid "Top Rated Books" msgstr "Libros mejor valorados" -#: cps/render_template.py:52 +#: cps/render_template.py:58 cps/templates/user_table.html:145 msgid "Show Top Rated Books" msgstr "Mostrar libros mejor valorados" -#: cps/render_template.py:53 cps/templates/index.xml:47 -#: cps/templates/index.xml:51 cps/web.py:642 +#: cps/render_template.py:59 cps/templates/index.xml:54 +#: cps/templates/index.xml:58 cps/web.py:650 msgid "Read Books" msgstr "Libros leídos" -#: cps/render_template.py:55 +#: cps/render_template.py:61 msgid "Show read and unread" msgstr "Mostrar leídos y no leídos" -#: cps/render_template.py:57 cps/templates/index.xml:54 -#: cps/templates/index.xml:58 cps/web.py:645 +#: cps/render_template.py:63 cps/templates/index.xml:61 +#: cps/templates/index.xml:65 cps/web.py:653 msgid "Unread Books" msgstr "Libros no leídos" -#: cps/render_template.py:59 +#: cps/render_template.py:65 msgid "Show unread" msgstr "Mostrar no leído" -#: cps/render_template.py:60 +#: cps/render_template.py:66 msgid "Discover" msgstr "Descubrir" -#: cps/render_template.py:62 +#: cps/render_template.py:68 cps/templates/user_table.html:143 +#: cps/templates/user_table.html:146 msgid "Show random books" msgstr "Mostrar libros al azar" -#: cps/render_template.py:63 cps/templates/book_table.html:50 -#: cps/templates/index.xml:76 cps/web.py:950 +#: cps/render_template.py:69 cps/templates/book_table.html:51 +#: cps/templates/index.xml:83 cps/web.py:1024 msgid "Categories" msgstr "Categorías" -#: cps/render_template.py:65 +#: cps/render_template.py:71 cps/templates/user_table.html:142 msgid "Show category selection" msgstr "Mostrar selección de categorías" -#: cps/render_template.py:66 cps/templates/book_edit.html:84 -#: cps/templates/book_table.html:51 cps/templates/index.xml:83 -#: cps/templates/search_form.html:62 cps/web.py:854 cps/web.py:864 +#: cps/render_template.py:72 cps/templates/book_edit.html:84 +#: cps/templates/book_table.html:52 cps/templates/index.xml:90 +#: cps/templates/search_form.html:62 cps/web.py:921 cps/web.py:931 msgid "Series" msgstr "Series" -#: cps/render_template.py:68 +#: cps/render_template.py:74 cps/templates/user_table.html:141 msgid "Show series selection" msgstr "Mostrar selección de series" -#: cps/render_template.py:69 cps/templates/book_table.html:49 -#: cps/templates/index.xml:62 +#: cps/render_template.py:75 cps/templates/book_table.html:50 +#: cps/templates/index.xml:69 msgid "Authors" msgstr "Autores" -#: cps/render_template.py:71 +#: cps/render_template.py:77 cps/templates/user_table.html:144 msgid "Show author selection" msgstr "Mostrar selección de autores" -#: cps/render_template.py:73 cps/templates/book_table.html:55 -#: cps/templates/index.xml:69 cps/web.py:833 +#: cps/render_template.py:79 cps/templates/book_table.html:56 +#: cps/templates/index.xml:76 cps/web.py:898 msgid "Publishers" msgstr "Editores" -#: cps/render_template.py:75 +#: cps/render_template.py:81 cps/templates/user_table.html:147 msgid "Show publisher selection" msgstr "Mostrar selección de editores" -#: cps/render_template.py:76 cps/templates/book_table.html:53 -#: cps/templates/index.xml:90 cps/templates/search_form.html:100 cps/web.py:929 +#: cps/render_template.py:82 cps/templates/book_table.html:54 +#: cps/templates/index.xml:97 cps/templates/search_form.html:100 +#: cps/web.py:1001 msgid "Languages" msgstr "Idiomas" -#: cps/render_template.py:79 +#: cps/render_template.py:85 cps/templates/user_table.html:139 msgid "Show language selection" msgstr "Mostrar selección de idiomas" -#: cps/render_template.py:80 cps/templates/index.xml:97 +#: cps/render_template.py:86 cps/templates/index.xml:104 msgid "Ratings" msgstr "Calificaciones" -#: cps/render_template.py:82 +#: cps/render_template.py:88 cps/templates/user_table.html:148 msgid "Show ratings selection" msgstr "Mostrar selección de calificaciones" -#: cps/render_template.py:83 cps/templates/index.xml:105 +#: cps/render_template.py:89 cps/templates/index.xml:112 msgid "File formats" msgstr "Formatos de archivo" -#: cps/render_template.py:85 +#: cps/render_template.py:91 cps/templates/user_table.html:149 msgid "Show file formats selection" msgstr "Mostrar selección de formatos de archivo" -#: cps/render_template.py:87 cps/web.py:669 +#: cps/render_template.py:93 cps/web.py:677 msgid "Archived Books" msgstr "Libros archivados" -#: cps/render_template.py:89 +#: cps/render_template.py:95 cps/templates/user_table.html:150 msgid "Show archived books" msgstr "Mostrar libros archivados" -#: cps/render_template.py:91 cps/web.py:743 +#: cps/render_template.py:97 cps/web.py:751 msgid "Books List" msgstr "" -#: cps/render_template.py:93 +#: cps/render_template.py:99 cps/templates/user_table.html:152 msgid "Show Books List" msgstr "" -#: cps/shelf.py:69 cps/shelf.py:122 +#: cps/shelf.py:69 cps/shelf.py:124 msgid "Invalid shelf specified" msgstr "Estante especificado inválido" @@ -831,303 +959,307 @@ msgstr "Lo sentimos, no tiene permisos para agregar un libro al estante: %(shelf msgid "Book is already part of the shelf: %(shelfname)s" msgstr "El libro ya forma parte del estante: %(shelfname)s" -#: cps/shelf.py:108 +#: cps/shelf.py:110 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "El libro fue agregado a el estante: %(sname)s" -#: cps/shelf.py:126 +#: cps/shelf.py:129 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "No tiene permiso para añadir un libro a el estante: %(name)s" -#: cps/shelf.py:144 +#: cps/shelf.py:147 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "Los libros ya forman parte del estante: %(name)s" -#: cps/shelf.py:156 +#: cps/shelf.py:159 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "Los libros han sido añadidos al estante: %(sname)s" -#: cps/shelf.py:161 +#: cps/shelf.py:166 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "No se pudieron agregar libros al estante: %(sname)s" -#: cps/shelf.py:206 +#: cps/shelf.py:212 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "El libro fue eliminado del estante: %(sname)s" -#: cps/shelf.py:214 +#: cps/shelf.py:221 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Lo siento, no tiene permiso para eliminar un libro del estante: %(sname)s" -#: cps/shelf.py:224 cps/templates/layout.html:140 +#: cps/shelf.py:231 cps/templates/layout.html:140 msgid "Create a Shelf" msgstr "Crear un estante" -#: cps/shelf.py:231 +#: cps/shelf.py:238 msgid "Edit a shelf" msgstr "Editar un estante" -#: cps/shelf.py:249 +#: cps/shelf.py:256 #, python-format msgid "Shelf %(title)s created" msgstr "Estante %(title)s creado" -#: cps/shelf.py:252 +#: cps/shelf.py:259 #, python-format msgid "Shelf %(title)s changed" msgstr "Estante %(title)s cambiado" -#: cps/shelf.py:265 +#: cps/shelf.py:273 msgid "There was an error" msgstr "Ha sucedido un error" -#: cps/shelf.py:281 +#: cps/shelf.py:290 #, python-format msgid "A public shelf with the name '%(title)s' already exists." msgstr "Ya existe un estante público con el nombre '%(title)s'." -#: cps/shelf.py:291 +#: cps/shelf.py:301 #, python-format msgid "A private shelf with the name '%(title)s' already exists." msgstr "Ya existe un estante privado con el nombre '%(title)s'." -#: cps/shelf.py:358 +#: cps/shelf.py:370 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Cambiar orden del estante: '%(name)s'" -#: cps/shelf.py:423 +#: cps/shelf.py:436 #, python-format msgid "Shelf: '%(name)s'" msgstr "Estante: '%(name)s'" -#: cps/shelf.py:427 +#: cps/shelf.py:440 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Error al abrir un estante. El estante no existe o no es accesible" -#: cps/updater.py:355 cps/updater.py:366 cps/updater.py:418 cps/updater.py:432 +#: cps/updater.py:374 cps/updater.py:385 cps/updater.py:485 cps/updater.py:500 msgid "Unexpected data while reading update information" msgstr "Dato inesperado mientras se leía la información de actualización" -#: cps/updater.py:362 cps/updater.py:424 +#: cps/updater.py:381 cps/updater.py:492 msgid "No update available. You already have the latest version installed" msgstr "Actualización no disponible. Ya tienes instalada la versión más reciente" -#: cps/updater.py:379 +#: cps/updater.py:399 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "Una nueva actualización está disponible. Haz clic en el botón inferior para actualizar a la versión más reciente." -#: cps/updater.py:397 +#: cps/updater.py:417 msgid "Could not fetch update information" msgstr "No se puede conseguir información sobre la actualización" -#: cps/updater.py:411 -msgid "No release information available" -msgstr "No hay información del lanzamiento disponible" +#: cps/updater.py:427 +msgid "Click on the button below to update to the latest stable version." +msgstr "Haz clic en el botón de abajo para actualizar a la última versión estable." -#: cps/updater.py:468 cps/updater.py:479 cps/updater.py:498 +#: cps/updater.py:436 cps/updater.py:450 cps/updater.py:461 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "Hay una nueva actualización disponible. Haz clic en el botón de abajo para actualizar a la versión: %(version)s" -#: cps/updater.py:489 -msgid "Click on the button below to update to the latest stable version." -msgstr "Haz clic en el botón de abajo para actualizar a la última versión estable." +#: cps/updater.py:478 +msgid "No release information available" +msgstr "No hay información del lanzamiento disponible" -#: cps/templates/index.html:5 cps/web.py:435 +#: cps/templates/index.html:5 cps/web.py:434 msgid "Discover (Random Books)" msgstr "Descubrir (Libros al azar)" -#: cps/web.py:461 +#: cps/web.py:460 msgid "Hot Books (Most Downloaded)" msgstr "Libros populares (los más descargados)" -#: cps/web.py:489 +#: cps/web.py:493 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:503 +#: cps/web.py:508 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "oh, oh, el libro seleccionado no está disponible. El archivo no existe o no es accesible" -#: cps/web.py:517 +#: cps/web.py:522 #, python-format msgid "Author: %(name)s" msgstr "Autor/es: %(name)s" -#: cps/web.py:531 +#: cps/web.py:537 #, python-format msgid "Publisher: %(name)s" msgstr "Editor/es: %(name)s" -#: cps/web.py:544 +#: cps/web.py:550 #, python-format msgid "Series: %(serie)s" msgstr "Series: %(serie)s" -#: cps/web.py:557 +#: cps/web.py:563 #, python-format msgid "Rating: %(rating)s stars" msgstr "Calificación: %(rating)s estrellas" -#: cps/web.py:570 +#: cps/web.py:576 #, python-format msgid "File format: %(format)s" msgstr "Formato del archivo: %(format)s" -#: cps/web.py:584 +#: cps/web.py:592 #, python-format msgid "Category: %(name)s" msgstr "Categoría : %(name)s" -#: cps/web.py:603 +#: cps/web.py:611 #, python-format msgid "Language: %(name)s" msgstr "Idioma: %(name)s" -#: cps/web.py:633 +#: cps/web.py:641 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:703 cps/web.py:1248 +#: cps/templates/layout.html:56 cps/web.py:711 cps/web.py:1314 msgid "Advanced Search" msgstr "Búsqueda avanzada" #: cps/templates/book_edit.html:214 cps/templates/feed.xml:33 #: cps/templates/index.xml:11 cps/templates/layout.html:45 #: cps/templates/layout.html:48 cps/templates/search_form.html:194 -#: cps/web.py:715 cps/web.py:987 +#: cps/web.py:723 cps/web.py:1061 msgid "Search" msgstr "Buscar" -#: cps/web.py:882 +#: cps/templates/admin.html:16 cps/web.py:876 +msgid "Downloads" +msgstr "Descargas" + +#: cps/web.py:952 msgid "Ratings list" msgstr "Lista de calificaciones" -#: cps/web.py:901 +#: cps/web.py:973 msgid "File formats list" msgstr "Lista de formatos" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:964 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1038 msgid "Tasks" msgstr "Tareas" -#: cps/web.py:1108 +#: cps/web.py:1182 msgid "Published after " msgstr "Publicado después de " -#: cps/web.py:1115 +#: cps/web.py:1189 msgid "Published before " msgstr "Publicado antes de " -#: cps/web.py:1145 +#: cps/web.py:1211 #, python-format msgid "Rating <= %(rating)s" msgstr "Calificación <= %(rating)s" -#: cps/web.py:1147 +#: cps/web.py:1213 #, python-format msgid "Rating >= %(rating)s" msgstr "Calificación >= %(rating)s" -#: cps/web.py:1149 +#: cps/web.py:1215 #, python-format msgid "Read Status = %(status)s" msgstr "" -#: cps/web.py:1325 +#: cps/web.py:1387 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Libro puesto en la cola de envío a %(kindlemail)s" -#: cps/web.py:1329 +#: cps/web.py:1391 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Ha sucedido un error en el envío del libro: %(res)s" -#: cps/web.py:1331 +#: cps/web.py:1393 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Por favor actualiza tu perfil con la dirección de correo de su kindle..." -#: cps/web.py:1348 +#: cps/web.py:1410 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "El servidor de E-Mail no está configurado, por favor, ¡avisa a tu administrador!" -#: cps/web.py:1349 cps/web.py:1359 cps/web.py:1366 cps/web.py:1389 -#: cps/web.py:1393 cps/web.py:1398 cps/web.py:1402 +#: cps/web.py:1411 cps/web.py:1418 cps/web.py:1424 cps/web.py:1443 +#: cps/web.py:1447 cps/web.py:1453 msgid "register" msgstr "registrarse" -#: cps/web.py:1364 -msgid "Invalid e-mail address format" -msgstr "" - -#: cps/web.py:1391 +#: cps/web.py:1445 msgid "Your e-mail is not allowed to register" msgstr "Su correo electrónico no está permitido para registrarse" -#: cps/web.py:1394 +#: cps/web.py:1448 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Se ha enviado un correo electrónico de verificación a su cuenta de correo." -#: cps/web.py:1397 -msgid "This username or e-mail address is already in use." -msgstr "Este nombre de usuario o correo electrónico ya están en uso." - -#: cps/web.py:1414 +#: cps/web.py:1465 msgid "Cannot activate LDAP authentication" msgstr "No se puede activar la autenticación LDAP" -#: cps/web.py:1431 +#: cps/web.py:1482 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "Fallback login como: '%(nickname)s', no se puede acceder al servidor LDAP o usuario desconocido" -#: cps/web.py:1437 +#: cps/web.py:1488 #, python-format msgid "Could not login: %(message)s" msgstr "No se pudo entrar: %(message)s" -#: cps/web.py:1441 cps/web.py:1465 +#: cps/web.py:1492 cps/web.py:1516 msgid "Wrong Username or Password" msgstr "Usuario o contraseña inválido" -#: cps/web.py:1448 +#: cps/web.py:1499 msgid "New Password was send to your email address" msgstr "Una nueva contraseña se ha enviado a su cuenta de correo electrónico" -#: cps/web.py:1454 +#: cps/web.py:1505 msgid "Please enter valid username to reset password" msgstr "Por favor, introduce un usuario válido para restablecer la contraseña" -#: cps/web.py:1460 +#: cps/web.py:1511 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Ahora estás conectado como: '%(nickname)s'" -#: cps/web.py:1498 cps/web.py:1583 +#: cps/web.py:1565 cps/web.py:1612 #, python-format msgid "%(name)s's profile" msgstr "Perfil de %(name)s" -#: cps/web.py:1550 +#: cps/web.py:1579 msgid "Profile updated" msgstr "Perfil actualizado" -#: cps/web.py:1610 cps/web.py:1613 cps/web.py:1616 cps/web.py:1619 -#: cps/web.py:1626 cps/web.py:1631 +#: cps/web.py:1583 +msgid "Found an existing account for this e-mail address." +msgstr "Encontrada una cuenta existente para esa dirección de correo electrónico." + +#: cps/web.py:1639 cps/web.py:1642 cps/web.py:1645 cps/web.py:1648 +#: cps/web.py:1655 cps/web.py:1660 msgid "Read a Book" msgstr "Leer un libro" +#: cps/services/gmail.py:41 +msgid "Found no valid gmail.json file with OAuth information" +msgstr "" + #: cps/tasks/convert.py:114 #, python-format msgid "Calibre ebook-convert %(tool)s not found" @@ -1166,221 +1298,231 @@ msgstr "" msgid "Users" msgstr "Lista de usuarios" -#: cps/templates/admin.html:12 cps/templates/login.html:8 +#: cps/templates/admin.html:13 cps/templates/login.html:8 #: cps/templates/login.html:9 cps/templates/register.html:8 -#: cps/templates/user_edit.html:9 +#: cps/templates/user_edit.html:9 cps/templates/user_table.html:121 msgid "Username" msgstr "Nombre de usuario" -#: cps/templates/admin.html:13 cps/templates/register.html:13 -#: cps/templates/user_edit.html:14 +#: cps/templates/admin.html:14 cps/templates/register.html:13 +#: cps/templates/user_edit.html:14 cps/templates/user_table.html:122 msgid "E-mail Address" msgstr "Correo electrónico" -#: cps/templates/admin.html:14 cps/templates/user_edit.html:27 +#: cps/templates/admin.html:15 cps/templates/user_edit.html:27 msgid "Send to Kindle E-mail Address" msgstr "Enviar al correo de Kindle" -#: cps/templates/admin.html:15 -msgid "Downloads" -msgstr "Descargas" - -#: cps/templates/admin.html:16 cps/templates/layout.html:77 +#: cps/templates/admin.html:17 cps/templates/layout.html:77 +#: cps/templates/user_table.html:130 msgid "Admin" msgstr "Admin" -#: cps/templates/admin.html:17 cps/templates/login.html:12 +#: cps/templates/admin.html:18 cps/templates/login.html:12 #: cps/templates/login.html:13 cps/templates/user_edit.html:22 msgid "Password" msgstr "Contraseña" -#: cps/templates/admin.html:18 cps/templates/layout.html:66 +#: cps/templates/admin.html:19 cps/templates/layout.html:66 +#: cps/templates/user_table.html:132 msgid "Upload" msgstr "Subir archivo" -#: cps/templates/admin.html:19 cps/templates/detail.html:18 +#: cps/templates/admin.html:20 cps/templates/detail.html:18 #: cps/templates/detail.html:27 cps/templates/shelf.html:6 +#: cps/templates/user_table.html:133 msgid "Download" msgstr "Descargar" -#: cps/templates/admin.html:20 +#: cps/templates/admin.html:21 msgid "View Books" msgstr "Ver libros" -#: cps/templates/admin.html:21 +#: cps/templates/admin.html:22 cps/templates/user_table.html:118 +#: cps/templates/user_table.html:135 msgid "Edit" msgstr "Editar" -#: cps/templates/admin.html:22 cps/templates/book_edit.html:16 -#: cps/templates/book_table.html:57 cps/templates/modal_dialogs.html:63 +#: cps/templates/admin.html:23 cps/templates/book_edit.html:16 +#: cps/templates/book_table.html:58 cps/templates/modal_dialogs.html:63 #: cps/templates/modal_dialogs.html:116 cps/templates/user_edit.html:66 +#: cps/templates/user_table.html:136 msgid "Delete" msgstr "Borrar" -#: cps/templates/admin.html:23 +#: cps/templates/admin.html:24 msgid "Public Shelf" msgstr "Estantería pública" -#: cps/templates/admin.html:44 +#: cps/templates/admin.html:47 msgid "Add New User" msgstr "Añadir nuevo usuario" -#: cps/templates/admin.html:46 +#: cps/templates/admin.html:49 msgid "Import LDAP Users" msgstr "Importar usuarios LDAP" -#: cps/templates/admin.html:53 +#: cps/templates/admin.html:56 msgid "E-mail Server Settings" msgstr "Ajustes del servidor de correo electrónico" -#: cps/templates/admin.html:57 cps/templates/email_edit.html:11 +#: cps/templates/admin.html:61 cps/templates/email_edit.html:30 msgid "SMTP Hostname" msgstr "Servidor SMTP" -#: cps/templates/admin.html:61 cps/templates/email_edit.html:15 +#: cps/templates/admin.html:65 cps/templates/email_edit.html:34 msgid "SMTP Port" msgstr "Puerto SMTP" -#: cps/templates/admin.html:65 cps/templates/email_edit.html:19 +#: cps/templates/admin.html:69 cps/templates/email_edit.html:38 msgid "Encryption" msgstr "Encriptado" -#: cps/templates/admin.html:69 cps/templates/email_edit.html:27 +#: cps/templates/admin.html:73 cps/templates/email_edit.html:46 msgid "SMTP Login" msgstr "Login SMTP" -#: cps/templates/admin.html:73 cps/templates/email_edit.html:35 +#: cps/templates/admin.html:77 cps/templates/admin.html:88 +#: cps/templates/email_edit.html:54 msgid "From E-mail" msgstr "Desde el correo" #: cps/templates/admin.html:84 +msgid "E-Mail Service" +msgstr "" + +#: cps/templates/admin.html:85 +msgid "Gmail via Oauth2" +msgstr "" + +#: cps/templates/admin.html:100 msgid "Configuration" msgstr "Configuración" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:103 msgid "Calibre Database Directory" msgstr "Directorio de la base de datos de Calibre" -#: cps/templates/admin.html:91 cps/templates/config_edit.html:136 +#: cps/templates/admin.html:107 cps/templates/config_edit.html:136 msgid "Log Level" msgstr "Nivel de registro" -#: cps/templates/admin.html:95 +#: cps/templates/admin.html:111 msgid "Port" msgstr "Puerto" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:116 msgid "External Port" msgstr "Puerto externo" -#: cps/templates/admin.html:107 cps/templates/config_view_edit.html:27 +#: cps/templates/admin.html:123 cps/templates/config_view_edit.html:27 msgid "Books per Page" msgstr "Libros por página" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:127 msgid "Uploads" msgstr "Subidas" -#: cps/templates/admin.html:115 +#: cps/templates/admin.html:131 msgid "Anonymous Browsing" msgstr "Navegación anónima" -#: cps/templates/admin.html:119 +#: cps/templates/admin.html:135 msgid "Public Registration" msgstr "Registro público" -#: cps/templates/admin.html:123 +#: cps/templates/admin.html:139 msgid "Magic Link Remote Login" msgstr "Acceso remoto mediante enlace mágico" -#: cps/templates/admin.html:127 +#: cps/templates/admin.html:143 msgid "Reverse Proxy Login" msgstr "Acceso mediante Proxy inverso" -#: cps/templates/admin.html:132 +#: cps/templates/admin.html:148 msgid "Reverse proxy header name" msgstr "Nombre de cabecera de proxy inverso" -#: cps/templates/admin.html:137 +#: cps/templates/admin.html:153 msgid "Edit Basic Configuration" msgstr "Editar la configuración básica" -#: cps/templates/admin.html:138 +#: cps/templates/admin.html:154 msgid "Edit UI Configuration" msgstr "Editar la configuración de la interfaz de usuario" -#: cps/templates/admin.html:143 +#: cps/templates/admin.html:159 msgid "Administration" msgstr "Administración" -#: cps/templates/admin.html:144 +#: cps/templates/admin.html:160 msgid "Download Debug Package" msgstr "" -#: cps/templates/admin.html:145 +#: cps/templates/admin.html:161 msgid "View Logs" msgstr "Ver archivos de registro" -#: cps/templates/admin.html:148 +#: cps/templates/admin.html:164 msgid "Reconnect Calibre Database" msgstr "Reconectar a la BD Calibre" -#: cps/templates/admin.html:149 +#: cps/templates/admin.html:165 msgid "Restart" msgstr "Reiniciar" -#: cps/templates/admin.html:150 +#: cps/templates/admin.html:166 msgid "Shutdown" msgstr "Apagar" -#: cps/templates/admin.html:155 +#: cps/templates/admin.html:171 msgid "Update" msgstr "Actualizar" -#: cps/templates/admin.html:159 +#: cps/templates/admin.html:175 msgid "Version" msgstr "Versión" -#: cps/templates/admin.html:160 +#: cps/templates/admin.html:176 msgid "Details" msgstr "Detalles" -#: cps/templates/admin.html:166 +#: cps/templates/admin.html:182 msgid "Current version" msgstr "Versión actual" -#: cps/templates/admin.html:173 +#: cps/templates/admin.html:189 msgid "Check for Update" msgstr "Comprobar actualizaciones" -#: cps/templates/admin.html:174 +#: cps/templates/admin.html:190 msgid "Perform Update" msgstr "Realizar actualización" -#: cps/templates/admin.html:187 +#: cps/templates/admin.html:203 msgid "Are you sure you want to restart?" msgstr "¿Realmente quieres reiniciar?" -#: cps/templates/admin.html:192 cps/templates/admin.html:206 -#: cps/templates/admin.html:226 cps/templates/shelf.html:95 +#: cps/templates/admin.html:208 cps/templates/admin.html:222 +#: cps/templates/admin.html:242 cps/templates/shelf.html:95 msgid "OK" msgstr "Ok" -#: cps/templates/admin.html:193 cps/templates/admin.html:207 -#: cps/templates/book_edit.html:192 cps/templates/book_table.html:84 +#: cps/templates/admin.html:209 cps/templates/admin.html:223 +#: cps/templates/book_edit.html:192 cps/templates/book_table.html:85 #: cps/templates/config_edit.html:427 cps/templates/config_view_edit.html:151 -#: cps/templates/email_edit.html:47 cps/templates/modal_dialogs.html:64 -#: cps/templates/modal_dialogs.html:99 cps/templates/modal_dialogs.html:117 +#: cps/templates/modal_dialogs.html:64 cps/templates/modal_dialogs.html:99 +#: cps/templates/modal_dialogs.html:117 cps/templates/modal_dialogs.html:135 #: cps/templates/shelf.html:96 cps/templates/shelf_edit.html:19 #: cps/templates/user_edit.html:132 msgid "Cancel" msgstr "Cancelar" -#: cps/templates/admin.html:205 +#: cps/templates/admin.html:221 msgid "Are you sure you want to shutdown?" msgstr "¿Realmente quiere detener?" -#: cps/templates/admin.html:217 +#: cps/templates/admin.html:233 msgid "Updating, please do not reload this page" msgstr "Actualizando. Por favor, no recargue la página" @@ -1488,6 +1630,7 @@ msgid "Identifier Value" msgstr "Valor de identificador" #: cps/templates/book_edit.html:72 cps/templates/book_edit.html:289 +#: cps/templates/user_table.html:23 msgid "Remove" msgstr "Borrar" @@ -1553,7 +1696,7 @@ msgid "Fetch Metadata" msgstr "Obtener metadatos" #: cps/templates/book_edit.html:191 cps/templates/config_edit.html:424 -#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45 +#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:64 #: cps/templates/shelf_edit.html:17 cps/templates/shelf_order.html:40 #: cps/templates/user_edit.html:130 msgid "Save" @@ -1593,96 +1736,98 @@ msgstr "¡Error en la búsqueda!" msgid "No Result(s) found! Please try another keyword." msgstr "¡No se encontraron resultados! Por favor intenta con otra palabra clave." -#: cps/templates/book_table.html:10 cps/templates/book_table.html:52 +#: cps/templates/book_table.html:11 cps/templates/book_table.html:53 +#: cps/templates/user_table.html:13 cps/templates/user_table.html:65 +#: cps/templates/user_table.html:88 msgid "This Field is Required" msgstr "" -#: cps/templates/book_table.html:23 +#: cps/templates/book_table.html:24 msgid "Merge selected books" msgstr "" -#: cps/templates/book_table.html:24 +#: cps/templates/book_table.html:25 cps/templates/user_table.html:111 msgid "Remove Selections" msgstr "" -#: cps/templates/book_table.html:30 +#: cps/templates/book_table.html:31 msgid "Update Title Sort automatically" msgstr "" -#: cps/templates/book_table.html:34 +#: cps/templates/book_table.html:35 msgid "Update Author Sort automatically" msgstr "" -#: cps/templates/book_table.html:46 +#: cps/templates/book_table.html:47 msgid "Enter Title" msgstr "" -#: cps/templates/book_table.html:46 cps/templates/config_view_edit.html:23 +#: cps/templates/book_table.html:47 cps/templates/config_view_edit.html:23 #: cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Título" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Enter Title Sort" msgstr "" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Title Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Enter Author Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Author Sort" msgstr "" -#: cps/templates/book_table.html:49 +#: cps/templates/book_table.html:50 msgid "Enter Authors" msgstr "" -#: cps/templates/book_table.html:50 +#: cps/templates/book_table.html:51 msgid "Enter Categories" msgstr "" -#: cps/templates/book_table.html:51 +#: cps/templates/book_table.html:52 msgid "Enter Series" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Enter title" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Series Index" msgstr "" -#: cps/templates/book_table.html:53 +#: cps/templates/book_table.html:54 msgid "Enter Languages" msgstr "" -#: cps/templates/book_table.html:54 +#: cps/templates/book_table.html:55 msgid "Publishing Date" msgstr "" -#: cps/templates/book_table.html:55 +#: cps/templates/book_table.html:56 msgid "Enter Publishers" msgstr "" -#: cps/templates/book_table.html:70 cps/templates/modal_dialogs.html:46 +#: cps/templates/book_table.html:71 cps/templates/modal_dialogs.html:46 msgid "Are you really sure?" msgstr "¿Estás realmente seguro?" -#: cps/templates/book_table.html:74 +#: cps/templates/book_table.html:75 msgid "Books with Title will be merged from:" msgstr "" -#: cps/templates/book_table.html:78 +#: cps/templates/book_table.html:79 msgid "Into Book with Title:" msgstr "" -#: cps/templates/book_table.html:83 +#: cps/templates/book_table.html:84 msgid "Merge" msgstr "" @@ -1867,7 +2012,7 @@ msgid "LDAP Encryption" msgstr "Encriptación LDAP" #: cps/templates/config_edit.html:268 cps/templates/config_view_edit.html:61 -#: cps/templates/email_edit.html:21 +#: cps/templates/email_edit.html:40 msgid "None" msgstr "Ninguno" @@ -2080,6 +2225,7 @@ msgid "Default Visibilities for New Users" msgstr "Visibilidad predeterminada para nuevos usuarios" #: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82 +#: cps/templates/user_table.html:138 msgid "Show Random Books in Detail View" msgstr "Mostrar libros aleatorios en la vista detallada" @@ -2153,43 +2299,69 @@ msgstr "(Público)" msgid "Edit Metadata" msgstr "Editar metadatos" -#: cps/templates/email_edit.html:22 +#: cps/templates/email_edit.html:12 +msgid "Choose Server Type" +msgstr "" + +#: cps/templates/email_edit.html:14 +msgid "Use Standard E-Mail Account" +msgstr "" + +#: cps/templates/email_edit.html:15 +msgid "Gmail Account with OAuth2 Verfification" +msgstr "" + +#: cps/templates/email_edit.html:21 +msgid "Setup Gmail Account as E-Mail Server" +msgstr "" + +#: cps/templates/email_edit.html:23 +msgid "Revoke Gmail Access" +msgstr "" + +#: cps/templates/email_edit.html:41 msgid "STARTTLS" msgstr "STARTTLS" -#: cps/templates/email_edit.html:23 +#: cps/templates/email_edit.html:42 msgid "SSL/TLS" msgstr "SSL/TLS" -#: cps/templates/email_edit.html:31 +#: cps/templates/email_edit.html:50 msgid "SMTP Password" msgstr "Contraseña SMTP" -#: cps/templates/email_edit.html:38 +#: cps/templates/email_edit.html:57 msgid "Attachment Size Limit" msgstr "" -#: cps/templates/email_edit.html:46 +#: cps/templates/email_edit.html:65 msgid "Save and Send Test E-mail" msgstr "Guardar ajustes y enviar un correo electrónico de prueba" -#: cps/templates/email_edit.html:51 +#: cps/templates/email_edit.html:69 cps/templates/layout.html:29 +#: cps/templates/shelf_order.html:41 cps/templates/user_table.html:158 +msgid "Back" +msgstr "Regresar" + +#: cps/templates/email_edit.html:73 msgid "Allowed Domains (Whitelist)" msgstr "Dominios permitidos para registrarse" -#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80 +#: cps/templates/email_edit.html:76 cps/templates/email_edit.html:102 msgid "Add Domain" msgstr "Añadir dominio" -#: cps/templates/email_edit.html:57 cps/templates/email_edit.html:83 +#: cps/templates/email_edit.html:79 cps/templates/email_edit.html:105 +#: cps/templates/user_table.html:26 msgid "Add" msgstr "Añadir" -#: cps/templates/email_edit.html:62 cps/templates/email_edit.html:72 +#: cps/templates/email_edit.html:84 cps/templates/email_edit.html:94 msgid "Enter domainname" msgstr "Introducir nombre de dominio" -#: cps/templates/email_edit.html:68 +#: cps/templates/email_edit.html:90 msgid "Denied Domains (Blacklist)" msgstr "Dominios prohibidos (Blaclist)" @@ -2201,10 +2373,6 @@ msgstr "Siguiente" msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):" msgstr "Abre el archivo .kobo/Kobo eReader.conf en un editor de texto y añade (o edita):" -#: cps/templates/grid.html:14 cps/templates/list.html:14 -msgid "All" -msgstr "Todo" - #: cps/templates/http_error.html:38 msgid "Create Issue" msgstr "Abrir una incidencia" @@ -2235,64 +2403,72 @@ msgstr "" msgid "Start" msgstr "Iniciar" +#: cps/templates/index.xml:18 +msgid "Alphabetical Books" +msgstr "" + #: cps/templates/index.xml:22 +msgid "Books sorted alphabetically" +msgstr "" + +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Downloads." msgstr "Publicaciones mas populares para este catálogo basadas en las descargas." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:36 msgid "Popular publications from this catalog based on Rating." msgstr "Publicaciones populares del catálogo basados en la clasificación." -#: cps/templates/index.xml:32 +#: cps/templates/index.xml:39 msgid "Recently added Books" msgstr "Libros añadidos recientemente" -#: cps/templates/index.xml:36 +#: cps/templates/index.xml:43 msgid "The latest Books" msgstr "Últimos ibros" -#: cps/templates/index.xml:39 +#: cps/templates/index.xml:46 msgid "Random Books" msgstr "Libros al azar" -#: cps/templates/index.xml:43 +#: cps/templates/index.xml:50 msgid "Show Random Books" msgstr "Mostrar libros al azar" -#: cps/templates/index.xml:66 +#: cps/templates/index.xml:73 msgid "Books ordered by Author" msgstr "Libros ordenados por autor" -#: cps/templates/index.xml:73 +#: cps/templates/index.xml:80 msgid "Books ordered by publisher" msgstr "Libros ordenados por editor" -#: cps/templates/index.xml:80 +#: cps/templates/index.xml:87 msgid "Books ordered by category" msgstr "Libros ordenados por categorías" -#: cps/templates/index.xml:87 +#: cps/templates/index.xml:94 msgid "Books ordered by series" msgstr "Libros ordenados por series" -#: cps/templates/index.xml:94 +#: cps/templates/index.xml:101 msgid "Books ordered by Languages" msgstr "Libros ordenados por idioma" -#: cps/templates/index.xml:101 +#: cps/templates/index.xml:108 msgid "Books ordered by Rating" msgstr "Libros ordenados por puntuación" -#: cps/templates/index.xml:109 +#: cps/templates/index.xml:116 msgid "Books ordered by file formats" msgstr "Libros ordenados por formato de archivo" -#: cps/templates/index.xml:112 cps/templates/layout.html:135 +#: cps/templates/index.xml:119 cps/templates/layout.html:135 #: cps/templates/search_form.html:80 msgid "Shelves" msgstr "Estanterías" -#: cps/templates/index.xml:116 +#: cps/templates/index.xml:123 msgid "Books organized in shelves" msgstr "Libros organizados en estanterías" @@ -2300,10 +2476,6 @@ msgstr "Libros organizados en estanterías" msgid "Home" msgstr "Inicio" -#: cps/templates/layout.html:29 cps/templates/shelf_order.html:41 -msgid "Back" -msgstr "Regresar" - #: cps/templates/layout.html:35 msgid "Toggle Navigation" msgstr "Alternar navegación" @@ -2465,6 +2637,11 @@ msgstr "" msgid "Select" msgstr "" +#: cps/templates/modal_dialogs.html:134 +#, fuzzy +msgid "Ok" +msgstr "Libro" + #: cps/templates/osd.xml:5 msgid "Calibre-Web eBook Catalog" msgstr "Cátalogo de ebook de Calibre-Web" @@ -2770,10 +2947,6 @@ msgstr "Resetear contraseña de usuario" msgid "Language of Books" msgstr "Mostrar libros con idioma" -#: cps/templates/user_edit.html:44 -msgid "Show All" -msgstr "Mostrar todo" - #: cps/templates/user_edit.html:53 msgid "OAuth Settings" msgstr "Ajustes OAuth" @@ -2798,7 +2971,7 @@ msgstr "Crear/Ver" msgid "Add allowed/Denied Custom Column Values" msgstr "Añadir columnas de valores propios de Permitidos/Denegados" -#: cps/templates/user_edit.html:135 +#: cps/templates/user_edit.html:135 cps/templates/user_table.html:153 msgid "Delete User" msgstr "Borrar usuario" @@ -2806,3 +2979,98 @@ msgstr "Borrar usuario" msgid "Generate Kobo Auth URL" msgstr "Generar Auth URL de Kobo" +#: cps/templates/user_table.html:68 cps/templates/user_table.html:91 +msgid "Select..." +msgstr "" + +#: cps/templates/user_table.html:118 +#, fuzzy +msgid "Edit User" +msgstr "Usuario administrador" + +#: cps/templates/user_table.html:121 +#, fuzzy +msgid "Enter Username" +msgstr "Escoger un nombre de usuario" + +#: cps/templates/user_table.html:122 +#, fuzzy +msgid "Enter E-mail Address" +msgstr "Tu dirección de correo" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Enter Kindle E-mail Address" +msgstr "Enviar al correo de Kindle" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Kindle E-mail" +msgstr "Comprobar correo electrónico" + +#: cps/templates/user_table.html:124 +#, fuzzy +msgid "Locale" +msgstr "Escalar" + +#: cps/templates/user_table.html:125 +msgid "Visible Book Languages" +msgstr "" + +#: cps/templates/user_table.html:126 +#, fuzzy +msgid "Edit Denied Tags" +msgstr "Seleccionar etiquetas Permitidas/Denegadas" + +#: cps/templates/user_table.html:126 +msgid "Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +#, fuzzy +msgid "Edit Allowed Tags" +msgstr "Seleccionar etiquetas Permitidas/Denegadas" + +#: cps/templates/user_table.html:127 +msgid "Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Edit Allowed Column Values" +msgstr "Añadir valores personalizados Permitidos/Denegados" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Allowed Column Values" +msgstr "Añadir valores personalizados Permitidos/Denegados" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Edit Denied Column Values" +msgstr "Añadir valores personalizados Permitidos/Denegados" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Denied Columns Values" +msgstr "Añadir valores personalizados Permitidos/Denegados" + +#: cps/templates/user_table.html:131 +#, fuzzy +msgid "Change Password" +msgstr "Permitir cambiar la contraseña" + +#: cps/templates/user_table.html:134 +msgid "View" +msgstr "" + +#: cps/templates/user_table.html:137 +#, fuzzy +msgid "Edit Public Shelfs" +msgstr "Estantería pública" + +#: cps/templates/user_table.html:140 +#, fuzzy +msgid "Show read/unread selection" +msgstr "Mostrar selección de series" + diff --git a/cps/translations/fi/LC_MESSAGES/messages.mo b/cps/translations/fi/LC_MESSAGES/messages.mo index be213fd1..e98647ed 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 7f9e5303..a705dd4f 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: 2021-03-27 12:16+0100\n" +"POT-Creation-Date: 2021-05-01 16:33+0200\n" "PO-Revision-Date: 2020-01-12 13:56+0100\n" "Last-Translator: Samuli Valavuo \n" "Language: fi\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" +"Generated-By: Babel 2.8.0\n" #: cps/about.py:43 msgid "installed" @@ -30,310 +30,405 @@ msgstr "ei asennettu" msgid "Statistics" msgstr "Tilastot" -#: cps/admin.py:149 +#: cps/admin.py:151 msgid "Server restarted, please reload page" msgstr "Palvelin uudelleenkäynnistetty, ole hyvä ja päivitä sivu" -#: cps/admin.py:151 +#: cps/admin.py:153 msgid "Performing shutdown of server, please close window" msgstr "Palvelinta sammutetaan, ole hyvä ja sulje sivu" -#: cps/admin.py:159 +#: cps/admin.py:161 msgid "Reconnect successful" msgstr "" -#: cps/admin.py:162 +#: cps/admin.py:164 msgid "Unknown command" msgstr "" -#: cps/admin.py:172 cps/editbooks.py:662 cps/editbooks.py:674 -#: cps/editbooks.py:777 cps/editbooks.py:779 cps/editbooks.py:806 -#: cps/editbooks.py:822 cps/updater.py:521 cps/uploader.py:94 +#: cps/admin.py:174 cps/editbooks.py:668 cps/editbooks.py:682 +#: cps/editbooks.py:821 cps/editbooks.py:823 cps/editbooks.py:850 +#: cps/editbooks.py:866 cps/updater.py:555 cps/uploader.py:94 #: cps/uploader.py:104 msgid "Unknown" msgstr "Tuntematon" -#: cps/admin.py:193 +#: cps/admin.py:195 msgid "Admin page" msgstr "Ylläpitosivu" -#: cps/admin.py:215 +#: cps/admin.py:217 msgid "UI Configuration" msgstr "Käyttöliittymän asetukset" -#: cps/admin.py:247 cps/admin.py:936 +#: cps/admin.py:249 cps/templates/admin.html:46 +#, fuzzy +msgid "Edit Users" +msgstr "Pääkäyttäjä" + +#: cps/admin.py:290 +#, fuzzy +msgid "all" +msgstr "Kaikki" + +#: cps/admin.py:315 cps/admin.py:1486 +msgid "User not found" +msgstr "" + +#: cps/admin.py:329 +msgid "{} users deleted successfully" +msgstr "" + +#: cps/admin.py:351 cps/templates/user_edit.html:44 +#: cps/templates/user_table.html:69 +msgid "Show All" +msgstr "Näytä kaikki" + +#: cps/admin.py:372 cps/admin.py:378 +msgid "Malformed request" +msgstr "" + +#: cps/admin.py:390 cps/admin.py:1368 +msgid "Guest Name can't be changed" +msgstr "" + +#: cps/admin.py:400 +msgid "Guest can't have this role" +msgstr "" + +#: cps/admin.py:412 cps/admin.py:1333 +msgid "No admin user remaining, can't remove admin role" +msgstr "" + +#: cps/admin.py:416 cps/admin.py:430 +msgid "Value has to be true or false" +msgstr "" + +#: cps/admin.py:418 +msgid "Invalid role" +msgstr "" + +#: cps/admin.py:422 +msgid "Guest can't have this view" +msgstr "" + +#: cps/admin.py:432 +msgid "Invalid view" +msgstr "" + +#: cps/admin.py:435 +msgid "Guest's Locale is determined automatically and can't be set" +msgstr "" + +#: cps/admin.py:439 +msgid "No Valid Locale Given" +msgstr "" + +#: cps/admin.py:450 +msgid "No Valid Book Language Given" +msgstr "" + +#: cps/admin.py:452 +msgid "Parameter not found" +msgstr "" + +#: cps/admin.py:506 cps/admin.py:1219 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web asetukset päivitetty" -#: cps/admin.py:258 +#: cps/admin.py:518 msgid "Do you really want to delete the Kobo Token?" msgstr "" -#: cps/admin.py:260 +#: cps/admin.py:520 msgid "Do you really want to delete this domain?" msgstr "" -#: cps/admin.py:262 +#: cps/admin.py:522 msgid "Do you really want to delete this user?" msgstr "" -#: cps/admin.py:264 cps/templates/shelf.html:90 +#: cps/admin.py:524 cps/templates/shelf.html:90 msgid "Are you sure you want to delete this shelf?" msgstr "Oletko varma, että haluat poistaa hyllyn?" -#: cps/admin.py:510 cps/admin.py:516 cps/admin.py:526 cps/admin.py:536 -#: cps/templates/modal_dialogs.html:29 +#: cps/admin.py:526 +#, fuzzy +msgid "Are you sure you want to change locales of selected user(s)?" +msgstr "Oletko varma, että haluat poistaa hyllyn?" + +#: cps/admin.py:528 +msgid "Are you sure you want to change visible book languages for selected user(s)?" +msgstr "" + +#: cps/admin.py:530 +msgid "Are you sure you want to change the selected role for the selected user(s)?" +msgstr "" + +#: cps/admin.py:532 +#, fuzzy +msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" +msgstr "Oletko varma, että haluat poistaa hyllyn?" + +#: cps/admin.py:534 +msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:683 +msgid "Tag not found" +msgstr "" + +#: cps/admin.py:695 +msgid "Invalid Action" +msgstr "" + +#: cps/admin.py:800 cps/admin.py:806 cps/admin.py:816 cps/admin.py:826 +#: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:43 msgid "Deny" msgstr "" -#: cps/admin.py:512 cps/admin.py:518 cps/admin.py:528 cps/admin.py:538 -#: cps/templates/modal_dialogs.html:28 +#: cps/admin.py:802 cps/admin.py:808 cps/admin.py:818 cps/admin.py:828 +#: cps/templates/modal_dialogs.html:28 cps/templates/user_table.html:48 msgid "Allow" msgstr "" -#: cps/admin.py:681 +#: cps/admin.py:971 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "" -#: cps/admin.py:723 +#: cps/admin.py:1016 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:729 +#: cps/admin.py:1022 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:738 +#: cps/admin.py:1052 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "" -#: cps/admin.py:752 cps/admin.py:760 +#: cps/admin.py:1067 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:755 cps/admin.py:763 +#: cps/admin.py:1070 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:768 +#: cps/admin.py:1075 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:771 +#: cps/admin.py:1078 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:779 +#: cps/admin.py:1086 #, python-format msgid "LDAP Member User Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:782 +#: cps/admin.py:1089 msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:790 +#: cps/admin.py:1097 msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:841 +#: cps/admin.py:1123 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:847 +#: cps/admin.py:1129 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:917 cps/admin.py:1024 cps/admin.py:1047 cps/admin.py:1168 -#: cps/shelf.py:102 cps/shelf.py:159 cps/shelf.py:200 cps/shelf.py:261 -#: cps/shelf.py:314 cps/shelf.py:348 cps/shelf.py:418 +#: cps/admin.py:1200 cps/admin.py:1303 cps/admin.py:1395 cps/admin.py:1461 +#: cps/shelf.py:103 cps/shelf.py:163 cps/shelf.py:206 cps/shelf.py:269 +#: cps/shelf.py:325 cps/shelf.py:360 cps/shelf.py:431 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:929 +#: cps/admin.py:1212 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:933 +#: cps/admin.py:1216 msgid "DB is not Writeable" msgstr "" -#: cps/admin.py:972 +#: cps/admin.py:1256 msgid "Basic Configuration" msgstr "Perusasetukset" -#: cps/admin.py:987 cps/web.py:1358 +#: cps/admin.py:1272 cps/web.py:1417 msgid "Please fill out all fields!" msgstr "Ole hyvä ja täytä kaikki kentät!" -#: cps/admin.py:990 cps/admin.py:1002 cps/admin.py:1008 cps/admin.py:1138 -msgid "Add new user" -msgstr "Lisää uusi käyttäjä" - -#: cps/admin.py:999 cps/web.py:1496 +#: cps/admin.py:1280 msgid "E-mail is not from valid domain" msgstr "Sähköpostiosoite ei ole toimivasta domainista" -#: cps/admin.py:1006 cps/admin.py:1021 -msgid "Found an existing account for this e-mail address or nickname." -msgstr "Tälle sähköpostiosoitteelle tai tunnukselle löytyi jo tili." +#: cps/admin.py:1284 cps/admin.py:1414 +msgid "Add new user" +msgstr "Lisää uusi käyttäjä" -#: cps/admin.py:1017 +#: cps/admin.py:1293 #, python-format msgid "User '%(user)s' created" msgstr "Käyttäjä '%(user)s' lisätty" -#: cps/admin.py:1031 +#: cps/admin.py:1299 +#, fuzzy +msgid "Found an existing account for this e-mail address or name." +msgstr "Tälle sähköpostiosoitteelle tai tunnukselle löytyi jo tili." + +#: cps/admin.py:1312 #, python-format msgid "User '%(nick)s' deleted" msgstr "Käyttäjä '%(nick)s' poistettu" -#: cps/admin.py:1034 +#: cps/admin.py:1314 cps/admin.py:1315 +msgid "Can't delete Guest User" +msgstr "" + +#: cps/admin.py:1318 msgid "No admin user remaining, can't delete user" msgstr "Pääkäyttäjiä ei jää jäljelle, käyttäjää ei voi poistaa" -#: cps/admin.py:1041 -#, python-format -msgid "User '%(nick)s' updated" -msgstr "Käyttäjä '%(nick)s' päivitetty" - -#: cps/admin.py:1044 -msgid "An unknown error occured." -msgstr "Tapahtui tuntematon virhe." - -#: cps/admin.py:1056 -msgid "No admin user remaining, can't remove admin role" -msgstr "" - -#: cps/admin.py:1092 cps/web.py:1554 -msgid "Found an existing account for this e-mail address." -msgstr "Tälle sähköpostiosoitteelle läytyi jo käyttäjätunnus." - -#: cps/admin.py:1101 cps/admin.py:1115 cps/admin.py:1209 cps/web.py:1516 +#: cps/admin.py:1383 cps/admin.py:1504 #, python-format msgid "Edit User %(nick)s" msgstr "Muokkaa käyttäjää %(nick)s" -#: cps/admin.py:1107 cps/web.py:1509 -msgid "This username is already taken" -msgstr "" +#: cps/admin.py:1387 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "Käyttäjä '%(nick)s' päivitetty" -#: cps/admin.py:1147 cps/templates/admin.html:78 +#: cps/admin.py:1391 +#, fuzzy +msgid "An unknown error occurred." +msgstr "Tapahtui tuntematon virhe." + +#: cps/admin.py:1423 cps/templates/admin.html:94 msgid "Edit E-mail Server Settings" msgstr "Muuta SMTP asetuksia" -#: cps/admin.py:1175 +#: cps/admin.py:1442 +msgid "G-Mail Account Verification Successful" +msgstr "" + +#: cps/admin.py:1468 #, python-format msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" msgstr "" -#: cps/admin.py:1178 +#: cps/admin.py:1471 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Testisähköpostin lähetyksessä tapahtui virhe: %(res)s" -#: cps/admin.py:1180 +#: cps/admin.py:1473 msgid "Please configure your e-mail address first..." msgstr "" -#: cps/admin.py:1182 +#: cps/admin.py:1475 msgid "E-mail server settings updated" msgstr "Sähköpostipalvelimen tiedot päivitetty" -#: cps/admin.py:1193 -msgid "User not found" -msgstr "" - -#: cps/admin.py:1220 +#: cps/admin.py:1516 #, python-format msgid "Password for user %(user)s reset" msgstr "Käyttäjän %(user)s salasana palautettu" -#: cps/admin.py:1223 cps/web.py:1388 cps/web.py:1452 +#: cps/admin.py:1519 cps/web.py:1442 cps/web.py:1503 msgid "An unknown error occurred. Please try again later." msgstr "Tapahtui tuntematon virhe. Yritä myöhemmin uudelleen." -#: cps/admin.py:1226 cps/web.py:1320 +#: cps/admin.py:1522 cps/web.py:1382 msgid "Please configure the SMTP mail settings first..." msgstr "Ole hyvä ja aseta SMTP postiasetukset ensin..." -#: cps/admin.py:1237 +#: cps/admin.py:1533 msgid "Logfile viewer" msgstr "Lokitiedoston katselin" -#: cps/admin.py:1303 +#: cps/admin.py:1599 msgid "Requesting update package" msgstr "Haetaan päivitystiedostoa" -#: cps/admin.py:1304 +#: cps/admin.py:1600 msgid "Downloading update package" msgstr "Ladataan päivitystiedostoa" -#: cps/admin.py:1305 +#: cps/admin.py:1601 msgid "Unzipping update package" msgstr "Puretaan päivitystiedostoa" -#: cps/admin.py:1306 +#: cps/admin.py:1602 msgid "Replacing files" msgstr "Korvataan tiedostoja" -#: cps/admin.py:1307 +#: cps/admin.py:1603 msgid "Database connections are closed" msgstr "Tietokantayhteydet on katkaistu" -#: cps/admin.py:1308 +#: cps/admin.py:1604 msgid "Stopping server" msgstr "Sammutetaan palvelin" -#: cps/admin.py:1309 +#: cps/admin.py:1605 msgid "Update finished, please press okay and reload page" msgstr "Päivitys valmistui, ole hyvä ja paina OK ja lataa sivu uudelleen" -#: cps/admin.py:1310 cps/admin.py:1311 cps/admin.py:1312 cps/admin.py:1313 -#: cps/admin.py:1314 +#: cps/admin.py:1606 cps/admin.py:1607 cps/admin.py:1608 cps/admin.py:1609 +#: cps/admin.py:1610 msgid "Update failed:" msgstr "Päivitys epäonnistui:" -#: cps/admin.py:1310 cps/updater.py:337 cps/updater.py:532 cps/updater.py:534 +#: cps/admin.py:1606 cps/updater.py:356 cps/updater.py:566 cps/updater.py:568 msgid "HTTP Error" msgstr "HTTP virhe" -#: cps/admin.py:1311 cps/updater.py:339 cps/updater.py:536 +#: cps/admin.py:1607 cps/updater.py:358 cps/updater.py:570 msgid "Connection error" msgstr "Yhteysvirhe" -#: cps/admin.py:1312 cps/updater.py:341 cps/updater.py:538 +#: cps/admin.py:1608 cps/updater.py:360 cps/updater.py:572 msgid "Timeout while establishing connection" msgstr "Aikakatkaisu yhteyttä luotaessa" -#: cps/admin.py:1313 cps/updater.py:343 cps/updater.py:540 +#: cps/admin.py:1609 cps/updater.py:362 cps/updater.py:574 msgid "General error" msgstr "Yleinen virhe" -#: cps/admin.py:1314 +#: cps/admin.py:1610 msgid "Update File Could Not be Saved in Temp Dir" msgstr "" -#: cps/admin.py:1376 +#: cps/admin.py:1671 msgid "Failed to Create at Least One LDAP User" msgstr "" -#: cps/admin.py:1389 +#: cps/admin.py:1684 #, python-format msgid "Error: %(ldaperror)s" msgstr "" -#: cps/admin.py:1393 +#: cps/admin.py:1688 msgid "Error: No user returned in response of LDAP server" msgstr "" -#: cps/admin.py:1426 +#: cps/admin.py:1721 msgid "At Least One LDAP User Not Found in Database" msgstr "" -#: cps/admin.py:1428 +#: cps/admin.py:1723 msgid "{} User Successfully Imported" msgstr "" @@ -345,98 +440,98 @@ msgstr "" msgid "Execution permissions missing" msgstr "" -#: cps/editbooks.py:267 cps/editbooks.py:269 +#: cps/editbooks.py:294 cps/editbooks.py:296 msgid "Book Format Successfully Deleted" msgstr "" -#: cps/editbooks.py:276 cps/editbooks.py:278 +#: cps/editbooks.py:303 cps/editbooks.py:305 msgid "Book Successfully Deleted" msgstr "" -#: cps/editbooks.py:325 cps/editbooks.py:646 cps/web.py:1598 cps/web.py:1634 -#: cps/web.py:1705 +#: cps/editbooks.py:361 cps/editbooks.py:724 cps/web.py:1627 cps/web.py:1663 +#: cps/web.py:1734 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Virhe e-kirjaa avatessa. Tiedostoa ei löydy tai se ei ole saatavilla" -#: cps/editbooks.py:359 +#: cps/editbooks.py:395 msgid "edit metadata" msgstr "muokkaa metadataa" -#: cps/editbooks.py:434 +#: cps/editbooks.py:473 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s ei ole kelvollinen kieli" -#: cps/editbooks.py:556 cps/editbooks.py:905 +#: cps/editbooks.py:595 cps/editbooks.py:936 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Tiedostopääte '%(ext)s' ei ole sallittujen palvelimelle ladattavien listalla" -#: cps/editbooks.py:560 cps/editbooks.py:909 +#: cps/editbooks.py:599 cps/editbooks.py:940 msgid "File to be uploaded must have an extension" msgstr "Ladattavalla tiedostolla on oltava tiedostopääte" -#: cps/editbooks.py:572 +#: cps/editbooks.py:611 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Polun %(path)s luonti epäonnistui (Ei oikeutta)." -#: cps/editbooks.py:577 +#: cps/editbooks.py:616 #, python-format msgid "Failed to store file %(file)s." msgstr "Tiedoston %(file)s tallennus epäonnistui." -#: cps/editbooks.py:595 cps/editbooks.py:972 cps/web.py:1559 +#: cps/editbooks.py:634 cps/editbooks.py:1027 cps/web.py:1588 #, python-format msgid "Database error: %(error)s." msgstr "" -#: cps/editbooks.py:599 +#: cps/editbooks.py:638 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Tiedostoformaatti %(ext)s lisätty %(book)s" -#: cps/editbooks.py:726 +#: cps/editbooks.py:775 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:763 +#: cps/editbooks.py:807 msgid "Metadata successfully updated" msgstr "Metadata päivitetty onnistuneesti" -#: cps/editbooks.py:772 +#: cps/editbooks.py:816 msgid "Error editing book, please check logfile for details" msgstr "Kirjan editoinnissa tapahtui virhe, tarkista virheilmoitus lokista" -#: cps/editbooks.py:810 +#: cps/editbooks.py:854 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "" -#: cps/editbooks.py:917 +#: cps/editbooks.py:948 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "" -#: cps/editbooks.py:947 +#: cps/editbooks.py:967 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "" -#: cps/editbooks.py:958 +#: cps/editbooks.py:1013 #, python-format msgid "File %(file)s uploaded" msgstr "Tiedosto %(file)s tallennettu" -#: cps/editbooks.py:984 +#: cps/editbooks.py:1039 msgid "Source or destination format for conversion missing" msgstr "Lähteen tai kohteen tiedostomuoto puuttuu" -#: cps/editbooks.py:992 +#: cps/editbooks.py:1047 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Kirja lisätty muutosjonoon muotoon %(book_format)s" -#: cps/editbooks.py:996 +#: cps/editbooks.py:1051 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Kirjan muunnoksessa tapahtui virhe: %(res)s" @@ -544,55 +639,68 @@ msgstr "Tiedostoa %(file)s ei löytynyt Google Drivesta" msgid "Book path %(path)s not found on Google Drive" msgstr "Kirjan polkua %(path)s ei löytynyt Google Drivesta" -#: cps/helper.py:576 +#: cps/helper.py:511 +#, fuzzy +msgid "Found an existing account for this e-mail address" +msgstr "Tälle sähköpostiosoitteelle läytyi jo käyttäjätunnus." + +#: cps/helper.py:519 +msgid "This username is already taken" +msgstr "" + +#: cps/helper.py:529 +msgid "Invalid e-mail address format" +msgstr "" + +#: cps/helper.py:602 msgid "Error Downloading Cover" msgstr "" -#: cps/helper.py:579 +#: cps/helper.py:605 msgid "Cover Format Error" msgstr "" -#: cps/helper.py:589 +#: cps/helper.py:615 msgid "Failed to create path for cover" msgstr "" -#: cps/helper.py:605 +#: cps/helper.py:631 msgid "Cover-file is not a valid image file, or could not be stored" msgstr "" -#: cps/helper.py:616 +#: cps/helper.py:642 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" msgstr "" -#: cps/helper.py:629 +#: cps/helper.py:655 msgid "Only jpg/jpeg files are supported as coverfile" msgstr "" -#: cps/helper.py:680 +#: cps/helper.py:707 msgid "Unrar binary file not found" msgstr "" -#: cps/helper.py:694 +#: cps/helper.py:721 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:743 +#: cps/helper.py:769 msgid "Waiting" msgstr "Odottaa" -#: cps/helper.py:745 +#: cps/helper.py:771 msgid "Failed" msgstr "Epäonnistui" -#: cps/helper.py:747 +#: cps/helper.py:773 msgid "Started" msgstr "Aloitettu" -#: cps/helper.py:749 +#: cps/helper.py:775 msgid "Finished" msgstr "Valmistui" -#: cps/helper.py:751 +#: cps/helper.py:777 msgid "Unknown Status" msgstr "Tuntematon tila" @@ -604,65 +712,82 @@ msgstr "" msgid "Kobo Setup" msgstr "" -#: cps/oauth_bb.py:76 +#: cps/oauth_bb.py:78 #, python-format msgid "Register with %(provider)s" msgstr "Rekisteröi tuottajalle %(provider)s" -#: cps/oauth_bb.py:137 cps/remotelogin.py:133 cps/web.py:1424 +#: cps/oauth_bb.py:139 cps/remotelogin.py:133 cps/web.py:1475 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "olet nyt kirjautunut tunnuksella: \"%(nickname)s\"" -#: cps/oauth_bb.py:147 +#: cps/oauth_bb.py:149 #, python-format msgid "Link to %(oauth)s Succeeded" msgstr "" -#: cps/oauth_bb.py:153 +#: cps/oauth_bb.py:156 msgid "Login failed, No User Linked With OAuth Account" msgstr "" -#: cps/oauth_bb.py:195 +#: cps/oauth_bb.py:198 #, python-format msgid "Unlink to %(oauth)s Succeeded" msgstr "" -#: cps/oauth_bb.py:199 +#: cps/oauth_bb.py:203 #, python-format msgid "Unlink to %(oauth)s Failed" msgstr "" -#: cps/oauth_bb.py:202 +#: cps/oauth_bb.py:206 #, python-format msgid "Not Linked to %(oauth)s" msgstr "" -#: cps/oauth_bb.py:259 +#: cps/oauth_bb.py:262 msgid "Failed to log in with GitHub." msgstr "GitHubiin kirjautuminen epäonnistui." -#: cps/oauth_bb.py:264 +#: cps/oauth_bb.py:268 msgid "Failed to fetch user info from GitHub." msgstr "Käyttäjätietojen haku GitHubista epäonnistui" -#: cps/oauth_bb.py:275 +#: cps/oauth_bb.py:280 msgid "Failed to log in with Google." msgstr "Googleen kirjautuminen epäonnistui." -#: cps/oauth_bb.py:280 +#: cps/oauth_bb.py:286 msgid "Failed to fetch user info from Google." msgstr "Käyttäjätietojen haku Googlesta epäonnistui." -#: cps/oauth_bb.py:312 +#: cps/oauth_bb.py:333 msgid "GitHub Oauth error, please retry later." msgstr "GitHub Oauth virhe, yritä myöhemmin uudelleen." -#: cps/oauth_bb.py:331 +#: cps/oauth_bb.py:336 +msgid "GitHub Oauth error: {}" +msgstr "" + +#: cps/oauth_bb.py:357 msgid "Google Oauth error, please retry later." msgstr "Google Oauth virhe, yritä myöhemmin uudelleen." -#: cps/remotelogin.py:65 cps/web.py:1471 +#: cps/oauth_bb.py:360 +msgid "Google Oauth error: {}" +msgstr "" + +#: cps/opds.py:110 cps/opds.py:199 cps/opds.py:276 cps/opds.py:328 +#: cps/templates/grid.html:14 cps/templates/list.html:14 +msgid "All" +msgstr "Kaikki" + +#: cps/opds.py:385 +msgid "{} Stars" +msgstr "" + +#: cps/remotelogin.py:65 cps/web.py:1522 msgid "login" msgstr "kirjaudu" @@ -678,7 +803,7 @@ msgstr "Valtuutus vanhentunut" msgid "Success! Please return to your device" msgstr "Onnistui! Ole hyvä ja palaa laitteellesi" -#: cps/render_template.py:39 cps/web.py:415 +#: cps/render_template.py:39 cps/web.py:414 msgid "Books" msgstr "Kirjat" @@ -686,7 +811,7 @@ msgstr "Kirjat" msgid "Show recent books" msgstr "Näytä viimeisimmät kirjat" -#: cps/render_template.py:42 cps/templates/index.xml:18 +#: cps/render_template.py:42 cps/templates/index.xml:25 msgid "Hot Books" msgstr "Kuumat kirjat" @@ -694,127 +819,130 @@ msgstr "Kuumat kirjat" msgid "Show Hot Books" msgstr "Näytä kuumat kirjat" -#: cps/render_template.py:45 +#: cps/render_template.py:46 cps/render_template.py:51 msgid "Downloaded Books" msgstr "" -#: cps/render_template.py:47 +#: cps/render_template.py:48 cps/render_template.py:53 +#: cps/templates/user_table.html:151 msgid "Show Downloaded Books" msgstr "" -#: cps/render_template.py:50 cps/templates/index.xml:25 cps/web.py:425 +#: cps/render_template.py:56 cps/templates/index.xml:32 cps/web.py:424 msgid "Top Rated Books" msgstr "Parhaiten arvioidut kirjat" -#: cps/render_template.py:52 +#: cps/render_template.py:58 cps/templates/user_table.html:145 msgid "Show Top Rated Books" msgstr "Näytä parhaiten arvioidut kirjat" -#: cps/render_template.py:53 cps/templates/index.xml:47 -#: cps/templates/index.xml:51 cps/web.py:642 +#: cps/render_template.py:59 cps/templates/index.xml:54 +#: cps/templates/index.xml:58 cps/web.py:650 msgid "Read Books" msgstr "Luetut kirjat" -#: cps/render_template.py:55 +#: cps/render_template.py:61 msgid "Show read and unread" msgstr "Näytä luetut ja lukemattomat" -#: cps/render_template.py:57 cps/templates/index.xml:54 -#: cps/templates/index.xml:58 cps/web.py:645 +#: cps/render_template.py:63 cps/templates/index.xml:61 +#: cps/templates/index.xml:65 cps/web.py:653 msgid "Unread Books" msgstr "Lukemattomat kirjat" -#: cps/render_template.py:59 +#: cps/render_template.py:65 msgid "Show unread" msgstr "Näyt lukemattomat" -#: cps/render_template.py:60 +#: cps/render_template.py:66 msgid "Discover" msgstr "Löydä" -#: cps/render_template.py:62 +#: cps/render_template.py:68 cps/templates/user_table.html:143 +#: cps/templates/user_table.html:146 msgid "Show random books" msgstr "Näytä satunnaisia kirjoja" -#: cps/render_template.py:63 cps/templates/book_table.html:50 -#: cps/templates/index.xml:76 cps/web.py:950 +#: cps/render_template.py:69 cps/templates/book_table.html:51 +#: cps/templates/index.xml:83 cps/web.py:1024 msgid "Categories" msgstr "Kategoriat" -#: cps/render_template.py:65 +#: cps/render_template.py:71 cps/templates/user_table.html:142 msgid "Show category selection" msgstr "Näytä kategoriavalinta" -#: cps/render_template.py:66 cps/templates/book_edit.html:84 -#: cps/templates/book_table.html:51 cps/templates/index.xml:83 -#: cps/templates/search_form.html:62 cps/web.py:854 cps/web.py:864 +#: cps/render_template.py:72 cps/templates/book_edit.html:84 +#: cps/templates/book_table.html:52 cps/templates/index.xml:90 +#: cps/templates/search_form.html:62 cps/web.py:921 cps/web.py:931 msgid "Series" msgstr "Sarjat" -#: cps/render_template.py:68 +#: cps/render_template.py:74 cps/templates/user_table.html:141 msgid "Show series selection" msgstr "Näytä sarjavalinta" -#: cps/render_template.py:69 cps/templates/book_table.html:49 -#: cps/templates/index.xml:62 +#: cps/render_template.py:75 cps/templates/book_table.html:50 +#: cps/templates/index.xml:69 msgid "Authors" msgstr "Kirjailijat" -#: cps/render_template.py:71 +#: cps/render_template.py:77 cps/templates/user_table.html:144 msgid "Show author selection" msgstr "Näytä kirjailijavalinta" -#: cps/render_template.py:73 cps/templates/book_table.html:55 -#: cps/templates/index.xml:69 cps/web.py:833 +#: cps/render_template.py:79 cps/templates/book_table.html:56 +#: cps/templates/index.xml:76 cps/web.py:898 msgid "Publishers" msgstr "Julkaisijat" -#: cps/render_template.py:75 +#: cps/render_template.py:81 cps/templates/user_table.html:147 msgid "Show publisher selection" msgstr "Näytä julkaisijavalinta" -#: cps/render_template.py:76 cps/templates/book_table.html:53 -#: cps/templates/index.xml:90 cps/templates/search_form.html:100 cps/web.py:929 +#: cps/render_template.py:82 cps/templates/book_table.html:54 +#: cps/templates/index.xml:97 cps/templates/search_form.html:100 +#: cps/web.py:1001 msgid "Languages" msgstr "Kielet" -#: cps/render_template.py:79 +#: cps/render_template.py:85 cps/templates/user_table.html:139 msgid "Show language selection" msgstr "Näytä keilivalinta" -#: cps/render_template.py:80 cps/templates/index.xml:97 +#: cps/render_template.py:86 cps/templates/index.xml:104 msgid "Ratings" msgstr "Arvostelut" -#: cps/render_template.py:82 +#: cps/render_template.py:88 cps/templates/user_table.html:148 msgid "Show ratings selection" msgstr "Näytä arvosteluvalinta" -#: cps/render_template.py:83 cps/templates/index.xml:105 +#: cps/render_template.py:89 cps/templates/index.xml:112 msgid "File formats" msgstr "Tiedotomuodot" -#: cps/render_template.py:85 +#: cps/render_template.py:91 cps/templates/user_table.html:149 msgid "Show file formats selection" msgstr "Näytä tiedostomuotovalinta" -#: cps/render_template.py:87 cps/web.py:669 +#: cps/render_template.py:93 cps/web.py:677 msgid "Archived Books" msgstr "" -#: cps/render_template.py:89 +#: cps/render_template.py:95 cps/templates/user_table.html:150 msgid "Show archived books" msgstr "" -#: cps/render_template.py:91 cps/web.py:743 +#: cps/render_template.py:97 cps/web.py:751 msgid "Books List" msgstr "" -#: cps/render_template.py:93 +#: cps/render_template.py:99 cps/templates/user_table.html:152 msgid "Show Books List" msgstr "" -#: cps/shelf.py:69 cps/shelf.py:122 +#: cps/shelf.py:69 cps/shelf.py:124 msgid "Invalid shelf specified" msgstr "Virheellinen hylly valittu" @@ -828,303 +956,307 @@ msgstr "Valitettavasti sinulla ei ole oikeutta lisätä kirjaa hyllyyn: %(shelfn msgid "Book is already part of the shelf: %(shelfname)s" msgstr "Kirja on jo hyllyssä: %(shelfname)s" -#: cps/shelf.py:108 +#: cps/shelf.py:110 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Kirja on lisätty hyllyyn: %(sname)s" -#: cps/shelf.py:126 +#: cps/shelf.py:129 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Sinulla ei ole oikeutta lisätä kirjaa hyllyyn: %(name)s" -#: cps/shelf.py:144 +#: cps/shelf.py:147 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "Kirjat on jo osa hyllyssä: %(name)s" -#: cps/shelf.py:156 +#: cps/shelf.py:159 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "Kirjat on lisätty hyllyyn: %(sname)s" -#: cps/shelf.py:161 +#: cps/shelf.py:166 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "Kirjojen lisäys hyllyyn: %(sname)s epäonnistui" -#: cps/shelf.py:206 +#: cps/shelf.py:212 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Kirja on poistettu hyllystä: %(sname)s" -#: cps/shelf.py:214 +#: cps/shelf.py:221 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Valitettavsti sinulla ei ole oikeutta poistaa kirjaa hyllystä: %(sname)s" -#: cps/shelf.py:224 cps/templates/layout.html:140 +#: cps/shelf.py:231 cps/templates/layout.html:140 msgid "Create a Shelf" msgstr "luo hylly" -#: cps/shelf.py:231 +#: cps/shelf.py:238 msgid "Edit a shelf" msgstr "Muokkaa hyllyä" -#: cps/shelf.py:249 +#: cps/shelf.py:256 #, python-format msgid "Shelf %(title)s created" msgstr "Hylly %(title)s luotu" -#: cps/shelf.py:252 +#: cps/shelf.py:259 #, python-format msgid "Shelf %(title)s changed" msgstr "Hylly %(title)s muutettu" -#: cps/shelf.py:265 +#: cps/shelf.py:273 msgid "There was an error" msgstr "Tapahtui virhe" -#: cps/shelf.py:281 +#: cps/shelf.py:290 #, python-format msgid "A public shelf with the name '%(title)s' already exists." msgstr "" -#: cps/shelf.py:291 +#: cps/shelf.py:301 #, python-format msgid "A private shelf with the name '%(title)s' already exists." msgstr "" -#: cps/shelf.py:358 +#: cps/shelf.py:370 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Muuta hyllyn: '%(name)s' järjestystä" -#: cps/shelf.py:423 +#: cps/shelf.py:436 #, python-format msgid "Shelf: '%(name)s'" msgstr "Hylly: '%(name)s'" -#: cps/shelf.py:427 +#: cps/shelf.py:440 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Virhe hyllyn avauksessa. Hyllyä ei ole tai se ei ole saatavilla" -#: cps/updater.py:355 cps/updater.py:366 cps/updater.py:418 cps/updater.py:432 +#: cps/updater.py:374 cps/updater.py:385 cps/updater.py:485 cps/updater.py:500 msgid "Unexpected data while reading update information" msgstr "Odottamatonta tietoa luettaessa päivitystietoa" -#: cps/updater.py:362 cps/updater.py:424 +#: cps/updater.py:381 cps/updater.py:492 msgid "No update available. You already have the latest version installed" msgstr "Ei päivitystä saatavilla. Sinulla on jo uusin versio" -#: cps/updater.py:379 +#: cps/updater.py:399 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "Uusi päivitys saatavilla. Paina alla olevaa nappia päivittääksesi uusimpaan versioon." -#: cps/updater.py:397 +#: cps/updater.py:417 msgid "Could not fetch update information" msgstr "Päivitystiedon hakeminen epäonnistui" -#: cps/updater.py:411 -msgid "No release information available" -msgstr "Ei päivitystietoa saatavilla" +#: cps/updater.py:427 +msgid "Click on the button below to update to the latest stable version." +msgstr "Paina alla olevaa nappia päivittääksesi uusimpaan vakaaseen versioon." -#: cps/updater.py:468 cps/updater.py:479 cps/updater.py:498 +#: cps/updater.py:436 cps/updater.py:450 cps/updater.py:461 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "Uusi päivitys saatavilla. Paina alla olevaa nappia päivittääksesi versioon: %(version)s" -#: cps/updater.py:489 -msgid "Click on the button below to update to the latest stable version." -msgstr "Paina alla olevaa nappia päivittääksesi uusimpaan vakaaseen versioon." +#: cps/updater.py:478 +msgid "No release information available" +msgstr "Ei päivitystietoa saatavilla" -#: cps/templates/index.html:5 cps/web.py:435 +#: cps/templates/index.html:5 cps/web.py:434 msgid "Discover (Random Books)" msgstr "Löydä (satunnaiset kirjat)" -#: cps/web.py:461 +#: cps/web.py:460 msgid "Hot Books (Most Downloaded)" msgstr "Kuumat kirjat (ladatuimmat)" -#: cps/web.py:489 +#: cps/web.py:493 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:503 +#: cps/web.py:508 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Virhe eKirjan avaamisessa. Tiedostoa ei ole tai se ei ole saatavilla:" -#: cps/web.py:517 +#: cps/web.py:522 #, python-format msgid "Author: %(name)s" msgstr "Kirjailija: %(name)s" -#: cps/web.py:531 +#: cps/web.py:537 #, python-format msgid "Publisher: %(name)s" msgstr "Julkaisija: %(name)s" -#: cps/web.py:544 +#: cps/web.py:550 #, python-format msgid "Series: %(serie)s" msgstr "Sarja: %(serie)s" -#: cps/web.py:557 +#: cps/web.py:563 #, python-format msgid "Rating: %(rating)s stars" msgstr "Arvostelu: %(rating)s tähteä" -#: cps/web.py:570 +#: cps/web.py:576 #, python-format msgid "File format: %(format)s" msgstr "Tiedostomuoto: %(format)s" -#: cps/web.py:584 +#: cps/web.py:592 #, python-format msgid "Category: %(name)s" msgstr "Kategoria: %(name)s" -#: cps/web.py:603 +#: cps/web.py:611 #, python-format msgid "Language: %(name)s" msgstr "Kieli: %(name)s" -#: cps/web.py:633 +#: cps/web.py:641 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:703 cps/web.py:1248 +#: cps/templates/layout.html:56 cps/web.py:711 cps/web.py:1314 msgid "Advanced Search" msgstr "Edistynyt haku" #: cps/templates/book_edit.html:214 cps/templates/feed.xml:33 #: cps/templates/index.xml:11 cps/templates/layout.html:45 #: cps/templates/layout.html:48 cps/templates/search_form.html:194 -#: cps/web.py:715 cps/web.py:987 +#: cps/web.py:723 cps/web.py:1061 msgid "Search" msgstr "Hae" -#: cps/web.py:882 +#: cps/templates/admin.html:16 cps/web.py:876 +msgid "Downloads" +msgstr "DLS" + +#: cps/web.py:952 msgid "Ratings list" msgstr "Arvostelulistaus" -#: cps/web.py:901 +#: cps/web.py:973 msgid "File formats list" msgstr "Tiedostomuotolistaus" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:964 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1038 msgid "Tasks" msgstr "Tehtävät" -#: cps/web.py:1108 +#: cps/web.py:1182 msgid "Published after " msgstr "Julkaistu alkaen " -#: cps/web.py:1115 +#: cps/web.py:1189 msgid "Published before " msgstr "Julkaisut ennen " -#: cps/web.py:1145 +#: cps/web.py:1211 #, python-format msgid "Rating <= %(rating)s" msgstr "Arvostelu <= %(rating)s" -#: cps/web.py:1147 +#: cps/web.py:1213 #, python-format msgid "Rating >= %(rating)s" msgstr "Arvostelu >= %(rating)s" -#: cps/web.py:1149 +#: cps/web.py:1215 #, python-format msgid "Read Status = %(status)s" msgstr "" -#: cps/web.py:1325 +#: cps/web.py:1387 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Kirja lisätty onnistuneeksi lähetettäväksi osoitteeseen %(kindlemail)s" -#: cps/web.py:1329 +#: cps/web.py:1391 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Kirjan: %(res)s lähettämisessa tapahtui virhe" -#: cps/web.py:1331 +#: cps/web.py:1393 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Ole hyvä ja aseta Kindle sähköpostiosoite ensin..." -#: cps/web.py:1348 +#: cps/web.py:1410 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "" -#: cps/web.py:1349 cps/web.py:1359 cps/web.py:1366 cps/web.py:1389 -#: cps/web.py:1393 cps/web.py:1398 cps/web.py:1402 +#: cps/web.py:1411 cps/web.py:1418 cps/web.py:1424 cps/web.py:1443 +#: cps/web.py:1447 cps/web.py:1453 msgid "register" msgstr "rekisteröidy" -#: cps/web.py:1364 -msgid "Invalid e-mail address format" -msgstr "" - -#: cps/web.py:1391 +#: cps/web.py:1445 msgid "Your e-mail is not allowed to register" msgstr "Sähköpostiosoitteellasi ei ole sallittua rekisteröityä" -#: cps/web.py:1394 +#: cps/web.py:1448 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Vahvistusviesti on lähetetty sähköpostiosoitteeseesi." -#: cps/web.py:1397 -msgid "This username or e-mail address is already in use." -msgstr "Käyttäjätunnus tai sähköpostiosoite on jo käytössä." - -#: cps/web.py:1414 +#: cps/web.py:1465 msgid "Cannot activate LDAP authentication" msgstr "LDAP autnetikoinnin aktivointi ei onnistu" -#: cps/web.py:1431 +#: cps/web.py:1482 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "" -#: cps/web.py:1437 +#: cps/web.py:1488 #, python-format msgid "Could not login: %(message)s" msgstr "" -#: cps/web.py:1441 cps/web.py:1465 +#: cps/web.py:1492 cps/web.py:1516 msgid "Wrong Username or Password" msgstr "Väärä käyttäjätunnus tai salasana" -#: cps/web.py:1448 +#: cps/web.py:1499 msgid "New Password was send to your email address" msgstr "" -#: cps/web.py:1454 +#: cps/web.py:1505 msgid "Please enter valid username to reset password" msgstr "" -#: cps/web.py:1460 +#: cps/web.py:1511 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "olet kirjautunut tunnuksella: '%(nickname)s'" -#: cps/web.py:1498 cps/web.py:1583 +#: cps/web.py:1565 cps/web.py:1612 #, python-format msgid "%(name)s's profile" msgstr "%(name)sn profiili" -#: cps/web.py:1550 +#: cps/web.py:1579 msgid "Profile updated" msgstr "Profiili päivitetty" -#: cps/web.py:1610 cps/web.py:1613 cps/web.py:1616 cps/web.py:1619 -#: cps/web.py:1626 cps/web.py:1631 +#: cps/web.py:1583 +msgid "Found an existing account for this e-mail address." +msgstr "Tälle sähköpostiosoitteelle läytyi jo käyttäjätunnus." + +#: cps/web.py:1639 cps/web.py:1642 cps/web.py:1645 cps/web.py:1648 +#: cps/web.py:1655 cps/web.py:1660 msgid "Read a Book" msgstr "Lue kirja" +#: cps/services/gmail.py:41 +msgid "Found no valid gmail.json file with OAuth information" +msgstr "" + #: cps/tasks/convert.py:114 #, python-format msgid "Calibre ebook-convert %(tool)s not found" @@ -1163,221 +1295,231 @@ msgstr "" msgid "Users" msgstr "Käyttäjälista" -#: cps/templates/admin.html:12 cps/templates/login.html:8 +#: cps/templates/admin.html:13 cps/templates/login.html:8 #: cps/templates/login.html:9 cps/templates/register.html:8 -#: cps/templates/user_edit.html:9 +#: cps/templates/user_edit.html:9 cps/templates/user_table.html:121 msgid "Username" msgstr "Lempinimi" -#: cps/templates/admin.html:13 cps/templates/register.html:13 -#: cps/templates/user_edit.html:14 +#: cps/templates/admin.html:14 cps/templates/register.html:13 +#: cps/templates/user_edit.html:14 cps/templates/user_table.html:122 msgid "E-mail Address" msgstr "Sähköposti" -#: cps/templates/admin.html:14 cps/templates/user_edit.html:27 +#: cps/templates/admin.html:15 cps/templates/user_edit.html:27 msgid "Send to Kindle E-mail Address" msgstr "Kindle" -#: cps/templates/admin.html:15 -msgid "Downloads" -msgstr "DLS" - -#: cps/templates/admin.html:16 cps/templates/layout.html:77 +#: cps/templates/admin.html:17 cps/templates/layout.html:77 +#: cps/templates/user_table.html:130 msgid "Admin" msgstr "Ylläpito" -#: cps/templates/admin.html:17 cps/templates/login.html:12 +#: cps/templates/admin.html:18 cps/templates/login.html:12 #: cps/templates/login.html:13 cps/templates/user_edit.html:22 msgid "Password" msgstr "Salasana" -#: cps/templates/admin.html:18 cps/templates/layout.html:66 +#: cps/templates/admin.html:19 cps/templates/layout.html:66 +#: cps/templates/user_table.html:132 msgid "Upload" msgstr "Lähetä" -#: cps/templates/admin.html:19 cps/templates/detail.html:18 +#: cps/templates/admin.html:20 cps/templates/detail.html:18 #: cps/templates/detail.html:27 cps/templates/shelf.html:6 +#: cps/templates/user_table.html:133 msgid "Download" msgstr "Lataa" -#: cps/templates/admin.html:20 +#: cps/templates/admin.html:21 msgid "View Books" msgstr "Näytä ekirjat" -#: cps/templates/admin.html:21 +#: cps/templates/admin.html:22 cps/templates/user_table.html:118 +#: cps/templates/user_table.html:135 msgid "Edit" msgstr "Muokkaa" -#: cps/templates/admin.html:22 cps/templates/book_edit.html:16 -#: cps/templates/book_table.html:57 cps/templates/modal_dialogs.html:63 +#: cps/templates/admin.html:23 cps/templates/book_edit.html:16 +#: cps/templates/book_table.html:58 cps/templates/modal_dialogs.html:63 #: cps/templates/modal_dialogs.html:116 cps/templates/user_edit.html:66 +#: cps/templates/user_table.html:136 msgid "Delete" msgstr "Poista" -#: cps/templates/admin.html:23 +#: cps/templates/admin.html:24 msgid "Public Shelf" msgstr "" -#: cps/templates/admin.html:44 +#: cps/templates/admin.html:47 msgid "Add New User" msgstr "" -#: cps/templates/admin.html:46 +#: cps/templates/admin.html:49 msgid "Import LDAP Users" msgstr "" -#: cps/templates/admin.html:53 +#: cps/templates/admin.html:56 msgid "E-mail Server Settings" msgstr "SMTP sähköpostipalvelimen asetukset" -#: cps/templates/admin.html:57 cps/templates/email_edit.html:11 +#: cps/templates/admin.html:61 cps/templates/email_edit.html:30 msgid "SMTP Hostname" msgstr "SMTP palvein" -#: cps/templates/admin.html:61 cps/templates/email_edit.html:15 +#: cps/templates/admin.html:65 cps/templates/email_edit.html:34 msgid "SMTP Port" msgstr "SMTP portti" -#: cps/templates/admin.html:65 cps/templates/email_edit.html:19 +#: cps/templates/admin.html:69 cps/templates/email_edit.html:38 msgid "Encryption" msgstr "SSL" -#: cps/templates/admin.html:69 cps/templates/email_edit.html:27 +#: cps/templates/admin.html:73 cps/templates/email_edit.html:46 msgid "SMTP Login" msgstr "SMTP tunnus" -#: cps/templates/admin.html:73 cps/templates/email_edit.html:35 +#: cps/templates/admin.html:77 cps/templates/admin.html:88 +#: cps/templates/email_edit.html:54 msgid "From E-mail" msgstr "Lähettäjän sähköposti" #: cps/templates/admin.html:84 +msgid "E-Mail Service" +msgstr "" + +#: cps/templates/admin.html:85 +msgid "Gmail via Oauth2" +msgstr "" + +#: cps/templates/admin.html:100 msgid "Configuration" msgstr "Asetukset" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:103 msgid "Calibre Database Directory" msgstr "Calibre DB hakemisto" -#: cps/templates/admin.html:91 cps/templates/config_edit.html:136 +#: cps/templates/admin.html:107 cps/templates/config_edit.html:136 msgid "Log Level" msgstr "Lokitaso" -#: cps/templates/admin.html:95 +#: cps/templates/admin.html:111 msgid "Port" msgstr "Portti" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:116 msgid "External Port" msgstr "" -#: cps/templates/admin.html:107 cps/templates/config_view_edit.html:27 +#: cps/templates/admin.html:123 cps/templates/config_view_edit.html:27 msgid "Books per Page" msgstr "Kirjaa sivulla" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:127 msgid "Uploads" msgstr "Lähetetään" -#: cps/templates/admin.html:115 +#: cps/templates/admin.html:131 msgid "Anonymous Browsing" msgstr "Nimetön selaus" -#: cps/templates/admin.html:119 +#: cps/templates/admin.html:135 msgid "Public Registration" msgstr "Julkinen rekisteröinti" -#: cps/templates/admin.html:123 +#: cps/templates/admin.html:139 msgid "Magic Link Remote Login" msgstr "Etäkirjautuminen" -#: cps/templates/admin.html:127 +#: cps/templates/admin.html:143 msgid "Reverse Proxy Login" msgstr "" -#: cps/templates/admin.html:132 +#: cps/templates/admin.html:148 msgid "Reverse proxy header name" msgstr "" -#: cps/templates/admin.html:137 +#: cps/templates/admin.html:153 msgid "Edit Basic Configuration" msgstr "" -#: cps/templates/admin.html:138 +#: cps/templates/admin.html:154 msgid "Edit UI Configuration" msgstr "" -#: cps/templates/admin.html:143 +#: cps/templates/admin.html:159 msgid "Administration" msgstr "Ylläpito" -#: cps/templates/admin.html:144 +#: cps/templates/admin.html:160 msgid "Download Debug Package" msgstr "" -#: cps/templates/admin.html:145 +#: cps/templates/admin.html:161 msgid "View Logs" msgstr "Katsele lokitiedostoja" -#: cps/templates/admin.html:148 +#: cps/templates/admin.html:164 msgid "Reconnect Calibre Database" msgstr "Uudelleenyhdistä Calibre DB" -#: cps/templates/admin.html:149 +#: cps/templates/admin.html:165 msgid "Restart" msgstr "Uudellenkäynnistä Calibre-Web" -#: cps/templates/admin.html:150 +#: cps/templates/admin.html:166 msgid "Shutdown" msgstr "Sammuta Calibre-Web" -#: cps/templates/admin.html:155 +#: cps/templates/admin.html:171 msgid "Update" msgstr "Päivitä" -#: cps/templates/admin.html:159 +#: cps/templates/admin.html:175 msgid "Version" msgstr "Versio" -#: cps/templates/admin.html:160 +#: cps/templates/admin.html:176 msgid "Details" msgstr "Yksityiskohdat" -#: cps/templates/admin.html:166 +#: cps/templates/admin.html:182 msgid "Current version" msgstr "Nykyinen versio" -#: cps/templates/admin.html:173 +#: cps/templates/admin.html:189 msgid "Check for Update" msgstr "Tarkista päivitykset" -#: cps/templates/admin.html:174 +#: cps/templates/admin.html:190 msgid "Perform Update" msgstr "Päivitä" -#: cps/templates/admin.html:187 +#: cps/templates/admin.html:203 msgid "Are you sure you want to restart?" msgstr "Haluatko varmasti uudelleenkäynnistää Calibre-Webin?" -#: cps/templates/admin.html:192 cps/templates/admin.html:206 -#: cps/templates/admin.html:226 cps/templates/shelf.html:95 +#: cps/templates/admin.html:208 cps/templates/admin.html:222 +#: cps/templates/admin.html:242 cps/templates/shelf.html:95 msgid "OK" msgstr "Ok" -#: cps/templates/admin.html:193 cps/templates/admin.html:207 -#: cps/templates/book_edit.html:192 cps/templates/book_table.html:84 +#: cps/templates/admin.html:209 cps/templates/admin.html:223 +#: cps/templates/book_edit.html:192 cps/templates/book_table.html:85 #: cps/templates/config_edit.html:427 cps/templates/config_view_edit.html:151 -#: cps/templates/email_edit.html:47 cps/templates/modal_dialogs.html:64 -#: cps/templates/modal_dialogs.html:99 cps/templates/modal_dialogs.html:117 +#: cps/templates/modal_dialogs.html:64 cps/templates/modal_dialogs.html:99 +#: cps/templates/modal_dialogs.html:117 cps/templates/modal_dialogs.html:135 #: cps/templates/shelf.html:96 cps/templates/shelf_edit.html:19 #: cps/templates/user_edit.html:132 msgid "Cancel" msgstr "" -#: cps/templates/admin.html:205 +#: cps/templates/admin.html:221 msgid "Are you sure you want to shutdown?" msgstr "Haluatko varmasti pysäyttää Calibre-Webin?" -#: cps/templates/admin.html:217 +#: cps/templates/admin.html:233 msgid "Updating, please do not reload this page" msgstr "Päivitetään, älä päivitä sivua" @@ -1485,6 +1627,7 @@ msgid "Identifier Value" msgstr "" #: cps/templates/book_edit.html:72 cps/templates/book_edit.html:289 +#: cps/templates/user_table.html:23 msgid "Remove" msgstr "" @@ -1550,7 +1693,7 @@ msgid "Fetch Metadata" msgstr "Hae metadata" #: cps/templates/book_edit.html:191 cps/templates/config_edit.html:424 -#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45 +#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:64 #: cps/templates/shelf_edit.html:17 cps/templates/shelf_order.html:40 #: cps/templates/user_edit.html:130 msgid "Save" @@ -1590,96 +1733,98 @@ msgstr "Hakuvirhe!" msgid "No Result(s) found! Please try another keyword." msgstr "Ei osumia! Kokeile jotain tosita hakusanaa." -#: cps/templates/book_table.html:10 cps/templates/book_table.html:52 +#: cps/templates/book_table.html:11 cps/templates/book_table.html:53 +#: cps/templates/user_table.html:13 cps/templates/user_table.html:65 +#: cps/templates/user_table.html:88 msgid "This Field is Required" msgstr "" -#: cps/templates/book_table.html:23 +#: cps/templates/book_table.html:24 msgid "Merge selected books" msgstr "" -#: cps/templates/book_table.html:24 +#: cps/templates/book_table.html:25 cps/templates/user_table.html:111 msgid "Remove Selections" msgstr "" -#: cps/templates/book_table.html:30 +#: cps/templates/book_table.html:31 msgid "Update Title Sort automatically" msgstr "" -#: cps/templates/book_table.html:34 +#: cps/templates/book_table.html:35 msgid "Update Author Sort automatically" msgstr "" -#: cps/templates/book_table.html:46 +#: cps/templates/book_table.html:47 msgid "Enter Title" msgstr "" -#: cps/templates/book_table.html:46 cps/templates/config_view_edit.html:23 +#: cps/templates/book_table.html:47 cps/templates/config_view_edit.html:23 #: cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Otsikko" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Enter Title Sort" msgstr "" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Title Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Enter Author Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Author Sort" msgstr "" -#: cps/templates/book_table.html:49 +#: cps/templates/book_table.html:50 msgid "Enter Authors" msgstr "" -#: cps/templates/book_table.html:50 +#: cps/templates/book_table.html:51 msgid "Enter Categories" msgstr "" -#: cps/templates/book_table.html:51 +#: cps/templates/book_table.html:52 msgid "Enter Series" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Enter title" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Series Index" msgstr "" -#: cps/templates/book_table.html:53 +#: cps/templates/book_table.html:54 msgid "Enter Languages" msgstr "" -#: cps/templates/book_table.html:54 +#: cps/templates/book_table.html:55 msgid "Publishing Date" msgstr "" -#: cps/templates/book_table.html:55 +#: cps/templates/book_table.html:56 msgid "Enter Publishers" msgstr "" -#: cps/templates/book_table.html:70 cps/templates/modal_dialogs.html:46 +#: cps/templates/book_table.html:71 cps/templates/modal_dialogs.html:46 msgid "Are you really sure?" msgstr "Oletko aivan varma?" -#: cps/templates/book_table.html:74 +#: cps/templates/book_table.html:75 msgid "Books with Title will be merged from:" msgstr "" -#: cps/templates/book_table.html:78 +#: cps/templates/book_table.html:79 msgid "Into Book with Title:" msgstr "" -#: cps/templates/book_table.html:83 +#: cps/templates/book_table.html:84 msgid "Merge" msgstr "" @@ -1864,7 +2009,7 @@ msgid "LDAP Encryption" msgstr "" #: cps/templates/config_edit.html:268 cps/templates/config_view_edit.html:61 -#: cps/templates/email_edit.html:21 +#: cps/templates/email_edit.html:40 msgid "None" msgstr "Ei mitään" @@ -2077,6 +2222,7 @@ msgid "Default Visibilities for New Users" msgstr "Oletusnäkymä uusille käyttäjille" #: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82 +#: cps/templates/user_table.html:138 msgid "Show Random Books in Detail View" msgstr "Näytä satunnaisia kirjoja näkymässä" @@ -2150,43 +2296,69 @@ msgstr "" msgid "Edit Metadata" msgstr "Muokkaa metadataa" -#: cps/templates/email_edit.html:22 +#: cps/templates/email_edit.html:12 +msgid "Choose Server Type" +msgstr "" + +#: cps/templates/email_edit.html:14 +msgid "Use Standard E-Mail Account" +msgstr "" + +#: cps/templates/email_edit.html:15 +msgid "Gmail Account with OAuth2 Verfification" +msgstr "" + +#: cps/templates/email_edit.html:21 +msgid "Setup Gmail Account as E-Mail Server" +msgstr "" + +#: cps/templates/email_edit.html:23 +msgid "Revoke Gmail Access" +msgstr "" + +#: cps/templates/email_edit.html:41 msgid "STARTTLS" msgstr "STARTTLS" -#: cps/templates/email_edit.html:23 +#: cps/templates/email_edit.html:42 msgid "SSL/TLS" msgstr "SSL/TLS" -#: cps/templates/email_edit.html:31 +#: cps/templates/email_edit.html:50 msgid "SMTP Password" msgstr "SMTP salasana" -#: cps/templates/email_edit.html:38 +#: cps/templates/email_edit.html:57 msgid "Attachment Size Limit" msgstr "" -#: cps/templates/email_edit.html:46 +#: cps/templates/email_edit.html:65 msgid "Save and Send Test E-mail" msgstr "Tallenna asetukset ja testaa sähköpostia" -#: cps/templates/email_edit.html:51 +#: cps/templates/email_edit.html:69 cps/templates/layout.html:29 +#: cps/templates/shelf_order.html:41 cps/templates/user_table.html:158 +msgid "Back" +msgstr "Palaa" + +#: cps/templates/email_edit.html:73 msgid "Allowed Domains (Whitelist)" msgstr "Rekisteröinnissä sallitut domainit" -#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80 +#: cps/templates/email_edit.html:76 cps/templates/email_edit.html:102 msgid "Add Domain" msgstr "Lisää domain" -#: cps/templates/email_edit.html:57 cps/templates/email_edit.html:83 +#: cps/templates/email_edit.html:79 cps/templates/email_edit.html:105 +#: cps/templates/user_table.html:26 msgid "Add" msgstr "Lisää" -#: cps/templates/email_edit.html:62 cps/templates/email_edit.html:72 +#: cps/templates/email_edit.html:84 cps/templates/email_edit.html:94 msgid "Enter domainname" msgstr "Syötä domainnimi" -#: cps/templates/email_edit.html:68 +#: cps/templates/email_edit.html:90 msgid "Denied Domains (Blacklist)" msgstr "" @@ -2198,10 +2370,6 @@ msgstr "Seuraava" msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):" msgstr "" -#: cps/templates/grid.html:14 cps/templates/list.html:14 -msgid "All" -msgstr "Kaikki" - #: cps/templates/http_error.html:38 msgid "Create Issue" msgstr "Luo virheilmoitus" @@ -2232,64 +2400,72 @@ msgstr "" msgid "Start" msgstr "Aloita" +#: cps/templates/index.xml:18 +msgid "Alphabetical Books" +msgstr "" + #: cps/templates/index.xml:22 +msgid "Books sorted alphabetically" +msgstr "" + +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Downloads." msgstr "Suositut julkaisut tästä kokoelmasta perustuen latauksiin." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:36 msgid "Popular publications from this catalog based on Rating." msgstr "Suositut julkaisut tästä kokoelmasta perustuen arvioihin." -#: cps/templates/index.xml:32 +#: cps/templates/index.xml:39 msgid "Recently added Books" msgstr "" -#: cps/templates/index.xml:36 +#: cps/templates/index.xml:43 msgid "The latest Books" msgstr "Viimeisimmät kirjat" -#: cps/templates/index.xml:39 +#: cps/templates/index.xml:46 msgid "Random Books" msgstr "Satunnaisia kirjoja" -#: cps/templates/index.xml:43 +#: cps/templates/index.xml:50 msgid "Show Random Books" msgstr "Näytä satunnausia kirjoja" -#: cps/templates/index.xml:66 +#: cps/templates/index.xml:73 msgid "Books ordered by Author" msgstr "Kirjat kirjailijoittain" -#: cps/templates/index.xml:73 +#: cps/templates/index.xml:80 msgid "Books ordered by publisher" msgstr "Kirjat julkaisijoittain" -#: cps/templates/index.xml:80 +#: cps/templates/index.xml:87 msgid "Books ordered by category" msgstr "Kirjat kategorioittain" -#: cps/templates/index.xml:87 +#: cps/templates/index.xml:94 msgid "Books ordered by series" msgstr "Kirjat sarjoittain" -#: cps/templates/index.xml:94 +#: cps/templates/index.xml:101 msgid "Books ordered by Languages" msgstr "" -#: cps/templates/index.xml:101 +#: cps/templates/index.xml:108 msgid "Books ordered by Rating" msgstr "" -#: cps/templates/index.xml:109 +#: cps/templates/index.xml:116 msgid "Books ordered by file formats" msgstr "" -#: cps/templates/index.xml:112 cps/templates/layout.html:135 +#: cps/templates/index.xml:119 cps/templates/layout.html:135 #: cps/templates/search_form.html:80 msgid "Shelves" msgstr "" -#: cps/templates/index.xml:116 +#: cps/templates/index.xml:123 msgid "Books organized in shelves" msgstr "" @@ -2297,10 +2473,6 @@ msgstr "" msgid "Home" msgstr "Koti" -#: cps/templates/layout.html:29 cps/templates/shelf_order.html:41 -msgid "Back" -msgstr "Palaa" - #: cps/templates/layout.html:35 msgid "Toggle Navigation" msgstr "Vaihda navigointi" @@ -2462,6 +2634,11 @@ msgstr "" msgid "Select" msgstr "" +#: cps/templates/modal_dialogs.html:134 +#, fuzzy +msgid "Ok" +msgstr "Kirja" + #: cps/templates/osd.xml:5 msgid "Calibre-Web eBook Catalog" msgstr "Calibre-Web e-kirjaluettelo" @@ -2767,10 +2944,6 @@ msgstr "Nollaa käyttäjän salasana" msgid "Language of Books" msgstr "Näytä kirjat kielellä" -#: cps/templates/user_edit.html:44 -msgid "Show All" -msgstr "Näytä kaikki" - #: cps/templates/user_edit.html:53 msgid "OAuth Settings" msgstr "OAuth asetukset" @@ -2795,7 +2968,7 @@ msgstr "" msgid "Add allowed/Denied Custom Column Values" msgstr "" -#: cps/templates/user_edit.html:135 +#: cps/templates/user_edit.html:135 cps/templates/user_table.html:153 msgid "Delete User" msgstr "Poista tämä käyttäjä" @@ -2803,3 +2976,92 @@ msgstr "Poista tämä käyttäjä" msgid "Generate Kobo Auth URL" msgstr "" +#: cps/templates/user_table.html:68 cps/templates/user_table.html:91 +msgid "Select..." +msgstr "" + +#: cps/templates/user_table.html:118 +#, fuzzy +msgid "Edit User" +msgstr "Pääkäyttäjä" + +#: cps/templates/user_table.html:121 +#, fuzzy +msgid "Enter Username" +msgstr "Valitse käyttäjänimi" + +#: cps/templates/user_table.html:122 +#, fuzzy +msgid "Enter E-mail Address" +msgstr "Sähköpostiosoitteesi" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Enter Kindle E-mail Address" +msgstr "Kindle" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Kindle E-mail" +msgstr "Testi sähköposti" + +#: cps/templates/user_table.html:124 +#, fuzzy +msgid "Locale" +msgstr "Skaalaa" + +#: cps/templates/user_table.html:125 +msgid "Visible Book Languages" +msgstr "" + +#: cps/templates/user_table.html:126 +msgid "Edit Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:126 +msgid "Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +msgid "Edit Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +msgid "Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:128 +msgid "Edit Allowed Column Values" +msgstr "" + +#: cps/templates/user_table.html:128 +msgid "Allowed Column Values" +msgstr "" + +#: cps/templates/user_table.html:129 +msgid "Edit Denied Column Values" +msgstr "" + +#: cps/templates/user_table.html:129 +msgid "Denied Columns Values" +msgstr "" + +#: cps/templates/user_table.html:131 +#, fuzzy +msgid "Change Password" +msgstr "Salli sananan vaihto" + +#: cps/templates/user_table.html:134 +msgid "View" +msgstr "" + +#: cps/templates/user_table.html:137 +#, fuzzy +msgid "Edit Public Shelfs" +msgstr "Muokkaa hyllyä" + +#: cps/templates/user_table.html:140 +#, fuzzy +msgid "Show read/unread selection" +msgstr "Näytä sarjavalinta" + diff --git a/cps/translations/fr/LC_MESSAGES/messages.mo b/cps/translations/fr/LC_MESSAGES/messages.mo index 5b469ad8..49f57309 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 93e03915..0588d41b 100644 --- a/cps/translations/fr/LC_MESSAGES/messages.po +++ b/cps/translations/fr/LC_MESSAGES/messages.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2021-03-27 12:16+0100\n" +"POT-Creation-Date: 2021-05-01 16:33+0200\n" "PO-Revision-Date: 2020-06-07 06:47+0200\n" "Last-Translator: Dekani \n" "Language: fr\n" @@ -30,7 +30,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" +"Generated-By: Babel 2.8.0\n" #: cps/about.py:43 msgid "installed" @@ -44,310 +44,405 @@ msgstr "non installé" msgid "Statistics" msgstr "Statistiques" -#: cps/admin.py:149 +#: cps/admin.py:151 msgid "Server restarted, please reload page" msgstr "Serveur redémarré, merci de rafraîchir la page" -#: cps/admin.py:151 +#: cps/admin.py:153 msgid "Performing shutdown of server, please close window" msgstr "Arrêt du serveur en cours, merci de fermer la fenêtre" -#: cps/admin.py:159 +#: cps/admin.py:161 msgid "Reconnect successful" msgstr "Reconnecté avec succès" -#: cps/admin.py:162 +#: cps/admin.py:164 msgid "Unknown command" msgstr "Commande inconnue" -#: cps/admin.py:172 cps/editbooks.py:662 cps/editbooks.py:674 -#: cps/editbooks.py:777 cps/editbooks.py:779 cps/editbooks.py:806 -#: cps/editbooks.py:822 cps/updater.py:521 cps/uploader.py:94 +#: cps/admin.py:174 cps/editbooks.py:668 cps/editbooks.py:682 +#: cps/editbooks.py:821 cps/editbooks.py:823 cps/editbooks.py:850 +#: cps/editbooks.py:866 cps/updater.py:555 cps/uploader.py:94 #: cps/uploader.py:104 msgid "Unknown" msgstr "Inconnu" -#: cps/admin.py:193 +#: cps/admin.py:195 msgid "Admin page" msgstr "Page admin" -#: cps/admin.py:215 +#: cps/admin.py:217 msgid "UI Configuration" msgstr "Configuration de l’interface utilisateur" -#: cps/admin.py:247 cps/admin.py:936 +#: cps/admin.py:249 cps/templates/admin.html:46 +#, fuzzy +msgid "Edit Users" +msgstr "Utilisateur admin" + +#: cps/admin.py:290 +#, fuzzy +msgid "all" +msgstr "Tout" + +#: cps/admin.py:315 cps/admin.py:1486 +msgid "User not found" +msgstr "L'utilisateur n'a pas été trouvé" + +#: cps/admin.py:329 +msgid "{} users deleted successfully" +msgstr "" + +#: cps/admin.py:351 cps/templates/user_edit.html:44 +#: cps/templates/user_table.html:69 +msgid "Show All" +msgstr "Montrer tout" + +#: cps/admin.py:372 cps/admin.py:378 +msgid "Malformed request" +msgstr "" + +#: cps/admin.py:390 cps/admin.py:1368 +msgid "Guest Name can't be changed" +msgstr "" + +#: cps/admin.py:400 +msgid "Guest can't have this role" +msgstr "" + +#: cps/admin.py:412 cps/admin.py:1333 +msgid "No admin user remaining, can't remove admin role" +msgstr "Aucun utilisateur admin restant, impossible de supprimer le rôle admin" + +#: cps/admin.py:416 cps/admin.py:430 +msgid "Value has to be true or false" +msgstr "" + +#: cps/admin.py:418 +msgid "Invalid role" +msgstr "" + +#: cps/admin.py:422 +msgid "Guest can't have this view" +msgstr "" + +#: cps/admin.py:432 +msgid "Invalid view" +msgstr "" + +#: cps/admin.py:435 +msgid "Guest's Locale is determined automatically and can't be set" +msgstr "" + +#: cps/admin.py:439 +msgid "No Valid Locale Given" +msgstr "" + +#: cps/admin.py:450 +msgid "No Valid Book Language Given" +msgstr "" + +#: cps/admin.py:452 +msgid "Parameter not found" +msgstr "" + +#: cps/admin.py:506 cps/admin.py:1219 msgid "Calibre-Web configuration updated" msgstr "Configuration de Calibre-Web mise à jour" -#: cps/admin.py:258 +#: cps/admin.py:518 msgid "Do you really want to delete the Kobo Token?" msgstr "Voulez-vous vraiment supprimer le jeton Kobo?" -#: cps/admin.py:260 +#: cps/admin.py:520 msgid "Do you really want to delete this domain?" msgstr "" -#: cps/admin.py:262 +#: cps/admin.py:522 msgid "Do you really want to delete this user?" msgstr "" -#: cps/admin.py:264 cps/templates/shelf.html:90 +#: cps/admin.py:524 cps/templates/shelf.html:90 msgid "Are you sure you want to delete this shelf?" msgstr "Voulez-vous vraiment supprimer l’étagère?" -#: cps/admin.py:510 cps/admin.py:516 cps/admin.py:526 cps/admin.py:536 -#: cps/templates/modal_dialogs.html:29 +#: cps/admin.py:526 +#, fuzzy +msgid "Are you sure you want to change locales of selected user(s)?" +msgstr "Voulez-vous vraiment supprimer l’étagère?" + +#: cps/admin.py:528 +msgid "Are you sure you want to change visible book languages for selected user(s)?" +msgstr "" + +#: cps/admin.py:530 +msgid "Are you sure you want to change the selected role for the selected user(s)?" +msgstr "" + +#: cps/admin.py:532 +#, fuzzy +msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" +msgstr "Voulez-vous vraiment supprimer l’étagère?" + +#: cps/admin.py:534 +msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:683 +msgid "Tag not found" +msgstr "" + +#: cps/admin.py:695 +msgid "Invalid Action" +msgstr "" + +#: cps/admin.py:800 cps/admin.py:806 cps/admin.py:816 cps/admin.py:826 +#: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:43 msgid "Deny" msgstr "Refuser" -#: cps/admin.py:512 cps/admin.py:518 cps/admin.py:528 cps/admin.py:538 -#: cps/templates/modal_dialogs.html:28 +#: cps/admin.py:802 cps/admin.py:808 cps/admin.py:818 cps/admin.py:828 +#: cps/templates/modal_dialogs.html:28 cps/templates/user_table.html:48 msgid "Allow" msgstr "Autoriser" -#: cps/admin.py:681 +#: cps/admin.py:971 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json n'est pas configuré pour l'application Web" -#: cps/admin.py:723 +#: cps/admin.py:1016 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "L'emplacement du fichier logfile est incorrect, veuillez saisir un chemin valide" -#: cps/admin.py:729 +#: cps/admin.py:1022 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "L'emplacement du fichier Access Logfile est incorrect, veuillez saisir un chemin valide" -#: cps/admin.py:738 +#: cps/admin.py:1052 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "Veuillez saisir un fournisseur LDAP, Port, DN et l'identifiant objet de l'utilisateur" -#: cps/admin.py:752 cps/admin.py:760 +#: cps/admin.py:1067 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "Le filtre objet du groupe LDAP a besoin d'un identifiant de format \"%s\"" -#: cps/admin.py:755 cps/admin.py:763 +#: cps/admin.py:1070 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "Le filtre objet du groupe LDAP a une parenthèse non gérée" -#: cps/admin.py:768 +#: cps/admin.py:1075 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "Le filtre objet de l'utilisateur LDAP a besoin d'un identifiant de format \"%s\"" -#: cps/admin.py:771 +#: cps/admin.py:1078 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "Le filtre objet de l'utilisateur LDAP a une parenthèse non gérée" -#: cps/admin.py:779 +#: cps/admin.py:1086 #, python-format msgid "LDAP Member User Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:782 +#: cps/admin.py:1089 msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:790 +#: cps/admin.py:1097 msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:841 +#: cps/admin.py:1123 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "L'emplacement du fichier Keyfile est incorrect, veuillez saisir un chemin valide" -#: cps/admin.py:847 +#: cps/admin.py:1129 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "L'emplacement du fichier Certfile est incorrect, veuillez saisir un chemin valide" -#: cps/admin.py:917 cps/admin.py:1024 cps/admin.py:1047 cps/admin.py:1168 -#: cps/shelf.py:102 cps/shelf.py:159 cps/shelf.py:200 cps/shelf.py:261 -#: cps/shelf.py:314 cps/shelf.py:348 cps/shelf.py:418 +#: cps/admin.py:1200 cps/admin.py:1303 cps/admin.py:1395 cps/admin.py:1461 +#: cps/shelf.py:103 cps/shelf.py:163 cps/shelf.py:206 cps/shelf.py:269 +#: cps/shelf.py:325 cps/shelf.py:360 cps/shelf.py:431 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:929 +#: cps/admin.py:1212 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "L'emplacement DB est incorrect, veuillez saisir un chemin valide" -#: cps/admin.py:933 +#: cps/admin.py:1216 msgid "DB is not Writeable" msgstr "La DB n'est pas accessible en écriture" -#: cps/admin.py:972 +#: cps/admin.py:1256 msgid "Basic Configuration" msgstr "Configuration principale" -#: cps/admin.py:987 cps/web.py:1358 +#: cps/admin.py:1272 cps/web.py:1417 msgid "Please fill out all fields!" msgstr "Veuillez compléter tous les champs !" -#: cps/admin.py:990 cps/admin.py:1002 cps/admin.py:1008 cps/admin.py:1138 -msgid "Add new user" -msgstr "Ajouter un nouvel utilisateur" - -#: cps/admin.py:999 cps/web.py:1496 +#: cps/admin.py:1280 msgid "E-mail is not from valid domain" msgstr "Cette adresse de courriel n’appartient pas à un domaine valide" -#: cps/admin.py:1006 cps/admin.py:1021 -msgid "Found an existing account for this e-mail address or nickname." -msgstr "Un compte existant a été trouvé pour cette adresse de courriel ou pour ce surnom." +#: cps/admin.py:1284 cps/admin.py:1414 +msgid "Add new user" +msgstr "Ajouter un nouvel utilisateur" -#: cps/admin.py:1017 +#: cps/admin.py:1293 #, python-format msgid "User '%(user)s' created" msgstr "Utilisateur '%(user)s' créé" -#: cps/admin.py:1031 +#: cps/admin.py:1299 +#, fuzzy +msgid "Found an existing account for this e-mail address or name." +msgstr "Un compte existant a été trouvé pour cette adresse de courriel ou pour ce surnom." + +#: cps/admin.py:1312 #, python-format msgid "User '%(nick)s' deleted" msgstr "Utilisateur '%(nick)s' supprimé" -#: cps/admin.py:1034 +#: cps/admin.py:1314 cps/admin.py:1315 +msgid "Can't delete Guest User" +msgstr "" + +#: cps/admin.py:1318 msgid "No admin user remaining, can't delete user" msgstr "Aucun utilisateur admin restant, impossible de supprimer l’utilisateur" -#: cps/admin.py:1041 -#, python-format -msgid "User '%(nick)s' updated" -msgstr "Utilisateur '%(nick)s' mis à jour" - -#: cps/admin.py:1044 -msgid "An unknown error occured." -msgstr "Oups ! Une erreur inconnue a eu lieu." - -#: cps/admin.py:1056 -msgid "No admin user remaining, can't remove admin role" -msgstr "Aucun utilisateur admin restant, impossible de supprimer le rôle admin" - -#: cps/admin.py:1092 cps/web.py:1554 -msgid "Found an existing account for this e-mail address." -msgstr "Un compte existant a été trouvé pour cette adresse de courriel." - -#: cps/admin.py:1101 cps/admin.py:1115 cps/admin.py:1209 cps/web.py:1516 +#: cps/admin.py:1383 cps/admin.py:1504 #, python-format msgid "Edit User %(nick)s" msgstr "Éditer l'utilisateur %(nick)s" -#: cps/admin.py:1107 cps/web.py:1509 -msgid "This username is already taken" -msgstr "Cet utilisateur est déjà pris" +#: cps/admin.py:1387 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "Utilisateur '%(nick)s' mis à jour" -#: cps/admin.py:1147 cps/templates/admin.html:78 +#: cps/admin.py:1391 +#, fuzzy +msgid "An unknown error occurred." +msgstr "Oups ! Une erreur inconnue a eu lieu." + +#: cps/admin.py:1423 cps/templates/admin.html:94 msgid "Edit E-mail Server Settings" msgstr "Modifier les paramètres du serveur de courriels" -#: cps/admin.py:1175 +#: cps/admin.py:1442 +msgid "G-Mail Account Verification Successful" +msgstr "" + +#: cps/admin.py:1468 #, python-format msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" msgstr "" -#: cps/admin.py:1178 +#: cps/admin.py:1471 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Il y a eu une erreur pendant l’envoi du courriel de test : %(res)s" -#: cps/admin.py:1180 +#: cps/admin.py:1473 msgid "Please configure your e-mail address first..." msgstr "Veuillez d'abord configurer votre adresse de courriel..." -#: cps/admin.py:1182 +#: cps/admin.py:1475 msgid "E-mail server settings updated" msgstr "Les paramètres du serveur de courriels ont été mis à jour" -#: cps/admin.py:1193 -msgid "User not found" -msgstr "L'utilisateur n'a pas été trouvé" - -#: cps/admin.py:1220 +#: cps/admin.py:1516 #, python-format msgid "Password for user %(user)s reset" msgstr "Le mot de passe de l’utilisateur %(user)s a été réinitialisé" -#: cps/admin.py:1223 cps/web.py:1388 cps/web.py:1452 +#: cps/admin.py:1519 cps/web.py:1442 cps/web.py:1503 msgid "An unknown error occurred. Please try again later." msgstr "Une erreur inconnue est survenue. Veuillez réessayer plus tard." -#: cps/admin.py:1226 cps/web.py:1320 +#: cps/admin.py:1522 cps/web.py:1382 msgid "Please configure the SMTP mail settings first..." msgstr "Veuillez configurer les paramètres SMTP au préalable..." -#: cps/admin.py:1237 +#: cps/admin.py:1533 msgid "Logfile viewer" msgstr "Visualiseur de fichier journal" -#: cps/admin.py:1303 +#: cps/admin.py:1599 msgid "Requesting update package" msgstr "Demande de mise à jour" -#: cps/admin.py:1304 +#: cps/admin.py:1600 msgid "Downloading update package" msgstr "Téléchargement de la mise à jour" -#: cps/admin.py:1305 +#: cps/admin.py:1601 msgid "Unzipping update package" msgstr "Décompression de la mise à jour" -#: cps/admin.py:1306 +#: cps/admin.py:1602 msgid "Replacing files" msgstr "Remplacement des fichiers" -#: cps/admin.py:1307 +#: cps/admin.py:1603 msgid "Database connections are closed" msgstr "Les connexions à la base de données ont été fermées" -#: cps/admin.py:1308 +#: cps/admin.py:1604 msgid "Stopping server" msgstr "Arrêt du serveur" -#: cps/admin.py:1309 +#: cps/admin.py:1605 msgid "Update finished, please press okay and reload page" msgstr "Mise à jour terminée, merci d’appuyer sur okay et de rafraîchir la page" -#: cps/admin.py:1310 cps/admin.py:1311 cps/admin.py:1312 cps/admin.py:1313 -#: cps/admin.py:1314 +#: cps/admin.py:1606 cps/admin.py:1607 cps/admin.py:1608 cps/admin.py:1609 +#: cps/admin.py:1610 msgid "Update failed:" msgstr "La mise à jour a échoué :" -#: cps/admin.py:1310 cps/updater.py:337 cps/updater.py:532 cps/updater.py:534 +#: cps/admin.py:1606 cps/updater.py:356 cps/updater.py:566 cps/updater.py:568 msgid "HTTP Error" msgstr "Erreur HTTP" -#: cps/admin.py:1311 cps/updater.py:339 cps/updater.py:536 +#: cps/admin.py:1607 cps/updater.py:358 cps/updater.py:570 msgid "Connection error" msgstr "Erreur de connexion" -#: cps/admin.py:1312 cps/updater.py:341 cps/updater.py:538 +#: cps/admin.py:1608 cps/updater.py:360 cps/updater.py:572 msgid "Timeout while establishing connection" msgstr "Délai d'attente dépassé lors de l'établissement de connexion" -#: cps/admin.py:1313 cps/updater.py:343 cps/updater.py:540 +#: cps/admin.py:1609 cps/updater.py:362 cps/updater.py:574 msgid "General error" msgstr "Erreur générale" -#: cps/admin.py:1314 +#: cps/admin.py:1610 msgid "Update File Could Not be Saved in Temp Dir" msgstr "Le fichier de mise à jour ne peut pas être sauvegardé dans le répertoire temporaire" -#: cps/admin.py:1376 +#: cps/admin.py:1671 msgid "Failed to Create at Least One LDAP User" msgstr "Impossible de créer au moins un utilisateur LDAP" -#: cps/admin.py:1389 +#: cps/admin.py:1684 #, python-format msgid "Error: %(ldaperror)s" msgstr "Erreur : %(ldaperror)s" -#: cps/admin.py:1393 +#: cps/admin.py:1688 msgid "Error: No user returned in response of LDAP server" msgstr "Erreur : Aucun utilisateur renvoyé dans la réponse LDAP du serveur" -#: cps/admin.py:1426 +#: cps/admin.py:1721 msgid "At Least One LDAP User Not Found in Database" msgstr "Au moins un utilisateur LDAP n'a pas été trouvé dans la base de données" -#: cps/admin.py:1428 +#: cps/admin.py:1723 msgid "{} User Successfully Imported" msgstr "" @@ -359,98 +454,98 @@ msgstr "non configuré" msgid "Execution permissions missing" msgstr "Les permissions d'exécutions manquantes" -#: cps/editbooks.py:267 cps/editbooks.py:269 +#: cps/editbooks.py:294 cps/editbooks.py:296 msgid "Book Format Successfully Deleted" msgstr "Le format du livre a été supprimé avec succès" -#: cps/editbooks.py:276 cps/editbooks.py:278 +#: cps/editbooks.py:303 cps/editbooks.py:305 msgid "Book Successfully Deleted" msgstr "Le livre a été supprimé avec succès" -#: cps/editbooks.py:325 cps/editbooks.py:646 cps/web.py:1598 cps/web.py:1634 -#: cps/web.py:1705 +#: cps/editbooks.py:361 cps/editbooks.py:724 cps/web.py:1627 cps/web.py:1663 +#: cps/web.py:1734 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Erreur à l’ouverture du livre. Le fichier n’existe pas ou n’est pas accessible" -#: cps/editbooks.py:359 +#: cps/editbooks.py:395 msgid "edit metadata" msgstr "modifier les métadonnées" -#: cps/editbooks.py:434 +#: cps/editbooks.py:473 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s n'est pas une langue valide" -#: cps/editbooks.py:556 cps/editbooks.py:905 +#: cps/editbooks.py:595 cps/editbooks.py:936 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "L’extension de fichier '%(ext)s' n’est pas autorisée pour être déposée sur ce serveur" -#: cps/editbooks.py:560 cps/editbooks.py:909 +#: cps/editbooks.py:599 cps/editbooks.py:940 msgid "File to be uploaded must have an extension" msgstr "Pour être déposé le fichier doit avoir une extension" -#: cps/editbooks.py:572 +#: cps/editbooks.py:611 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Impossible de créer le chemin %(path)s (Permission refusée)." -#: cps/editbooks.py:577 +#: cps/editbooks.py:616 #, python-format msgid "Failed to store file %(file)s." msgstr "Échec de la sauvegarde du fichier %(file)s." -#: cps/editbooks.py:595 cps/editbooks.py:972 cps/web.py:1559 +#: cps/editbooks.py:634 cps/editbooks.py:1027 cps/web.py:1588 #, python-format msgid "Database error: %(error)s." msgstr "Erreur de la base de données: %(error)s." -#: cps/editbooks.py:599 +#: cps/editbooks.py:638 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Le format de fichier %(ext)s a été ajouté à %(book)s" -#: cps/editbooks.py:726 +#: cps/editbooks.py:775 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:763 +#: cps/editbooks.py:807 msgid "Metadata successfully updated" msgstr "Les métadonnées ont bien été mises à jour" -#: cps/editbooks.py:772 +#: cps/editbooks.py:816 msgid "Error editing book, please check logfile for details" msgstr "Erreur d’édition du livre, veuillez consulter le journal (log) pour plus de détails" -#: cps/editbooks.py:810 +#: cps/editbooks.py:854 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Le fichier téléchargé existe probablement dans la librairie, veuillez le modifier avant de le télécharger de nouveau: " -#: cps/editbooks.py:917 +#: cps/editbooks.py:948 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "Le fichier %(filename)s ne peut pas être sauvegardé dans le répertoire temporaire" -#: cps/editbooks.py:947 +#: cps/editbooks.py:967 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "Impossible de déplacer le fichier de couverture %(file)s: %(error)s" -#: cps/editbooks.py:958 +#: cps/editbooks.py:1013 #, python-format msgid "File %(file)s uploaded" msgstr "Le fichier %(file)s a été téléchargé" -#: cps/editbooks.py:984 +#: cps/editbooks.py:1039 msgid "Source or destination format for conversion missing" msgstr "Le format de conversion de la source ou de la destination est manquant" -#: cps/editbooks.py:992 +#: cps/editbooks.py:1047 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Le livre a été mis avec succès en file de traitement pour conversion vers %(book_format)s" -#: cps/editbooks.py:996 +#: cps/editbooks.py:1051 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Une erreur est survenue au cours de la conversion du livre : %(res)s" @@ -558,55 +653,68 @@ msgstr "Le fichier %(file)s n'a pas été trouvé dans Google Drive" msgid "Book path %(path)s not found on Google Drive" msgstr "Le chemin du livre %(path)s n'a pas été trouvé dans Google Drive" -#: cps/helper.py:576 +#: cps/helper.py:511 +#, fuzzy +msgid "Found an existing account for this e-mail address" +msgstr "Un compte existant a été trouvé pour cette adresse de courriel." + +#: cps/helper.py:519 +msgid "This username is already taken" +msgstr "Cet utilisateur est déjà pris" + +#: cps/helper.py:529 +msgid "Invalid e-mail address format" +msgstr "" + +#: cps/helper.py:602 msgid "Error Downloading Cover" msgstr "Erreur lors du téléchargement de la couverture" -#: cps/helper.py:579 +#: cps/helper.py:605 msgid "Cover Format Error" msgstr "Erreur de format de couverture" -#: cps/helper.py:589 +#: cps/helper.py:615 msgid "Failed to create path for cover" msgstr "Impossible de créer le chemin pour la couverture" -#: cps/helper.py:605 +#: cps/helper.py:631 msgid "Cover-file is not a valid image file, or could not be stored" msgstr "Le fichier couverture n'est pas un fichier image valide, ou ne peut pas être stocké" -#: cps/helper.py:616 +#: cps/helper.py:642 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" msgstr "" -#: cps/helper.py:629 +#: cps/helper.py:655 msgid "Only jpg/jpeg files are supported as coverfile" msgstr "Seuls les fichiers jpg/jpeg sont supportés comme fichier de couverture" -#: cps/helper.py:680 +#: cps/helper.py:707 msgid "Unrar binary file not found" msgstr "Fichier binaire Unrar non trouvé" -#: cps/helper.py:694 +#: cps/helper.py:721 msgid "Error excecuting UnRar" msgstr "Une erreur est survenue lors de l'exécution d'UnRar" -#: cps/helper.py:743 +#: cps/helper.py:769 msgid "Waiting" msgstr "En attente" -#: cps/helper.py:745 +#: cps/helper.py:771 msgid "Failed" msgstr "Echoué" -#: cps/helper.py:747 +#: cps/helper.py:773 msgid "Started" msgstr "Débuté" -#: cps/helper.py:749 +#: cps/helper.py:775 msgid "Finished" msgstr "Terminé" -#: cps/helper.py:751 +#: cps/helper.py:777 msgid "Unknown Status" msgstr "Statut inconnu" @@ -618,65 +726,82 @@ msgstr "Veuilllez ne pas accéder à calibre-web par localhost pour obtenir un a msgid "Kobo Setup" msgstr "Configuration Kobo" -#: cps/oauth_bb.py:76 +#: cps/oauth_bb.py:78 #, python-format msgid "Register with %(provider)s" msgstr "Enregistrer avec %(provider)s" -#: cps/oauth_bb.py:137 cps/remotelogin.py:133 cps/web.py:1424 +#: cps/oauth_bb.py:139 cps/remotelogin.py:133 cps/web.py:1475 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "vous êtes maintenant connecté comme : '%(nickname)s'" -#: cps/oauth_bb.py:147 +#: cps/oauth_bb.py:149 #, python-format msgid "Link to %(oauth)s Succeeded" msgstr "Lien vers %(oauth)s effectué avec succès" -#: cps/oauth_bb.py:153 +#: cps/oauth_bb.py:156 msgid "Login failed, No User Linked With OAuth Account" msgstr "La connexion a échoué, aucun utilisateur lié au compte OAuth" -#: cps/oauth_bb.py:195 +#: cps/oauth_bb.py:198 #, python-format msgid "Unlink to %(oauth)s Succeeded" msgstr "Suppression de la liaison vers %(oauth)s effectuée avec succès" -#: cps/oauth_bb.py:199 +#: cps/oauth_bb.py:203 #, python-format msgid "Unlink to %(oauth)s Failed" msgstr "Suppression de la liaison vers %(oauth)s a échoué" -#: cps/oauth_bb.py:202 +#: cps/oauth_bb.py:206 #, python-format msgid "Not Linked to %(oauth)s" msgstr "" -#: cps/oauth_bb.py:259 +#: cps/oauth_bb.py:262 msgid "Failed to log in with GitHub." msgstr "Échec de la connexion avec GitHub." -#: cps/oauth_bb.py:264 +#: cps/oauth_bb.py:268 msgid "Failed to fetch user info from GitHub." msgstr "Impossible d’obtenir les informations d’utilisateur à partir de GitHub." -#: cps/oauth_bb.py:275 +#: cps/oauth_bb.py:280 msgid "Failed to log in with Google." msgstr "Échec de la connexion avec Google." -#: cps/oauth_bb.py:280 +#: cps/oauth_bb.py:286 msgid "Failed to fetch user info from Google." msgstr "Impossible d’obtenir les informations d’utilisateur avec Google." -#: cps/oauth_bb.py:312 +#: cps/oauth_bb.py:333 msgid "GitHub Oauth error, please retry later." msgstr "Erreur Oauth GitHub, veuillez réessayer plus tard." -#: cps/oauth_bb.py:331 +#: cps/oauth_bb.py:336 +msgid "GitHub Oauth error: {}" +msgstr "" + +#: cps/oauth_bb.py:357 msgid "Google Oauth error, please retry later." msgstr "Erreur Oauth Google, veuillez réessayer plus tard." -#: cps/remotelogin.py:65 cps/web.py:1471 +#: cps/oauth_bb.py:360 +msgid "Google Oauth error: {}" +msgstr "" + +#: cps/opds.py:110 cps/opds.py:199 cps/opds.py:276 cps/opds.py:328 +#: cps/templates/grid.html:14 cps/templates/list.html:14 +msgid "All" +msgstr "Tout" + +#: cps/opds.py:385 +msgid "{} Stars" +msgstr "" + +#: cps/remotelogin.py:65 cps/web.py:1522 msgid "login" msgstr "connexion" @@ -692,7 +817,7 @@ msgstr "Jeton expiré" msgid "Success! Please return to your device" msgstr "Réussite! Merci de vous tourner vers votre appareil" -#: cps/render_template.py:39 cps/web.py:415 +#: cps/render_template.py:39 cps/web.py:414 msgid "Books" msgstr "Livres" @@ -700,7 +825,7 @@ msgstr "Livres" msgid "Show recent books" msgstr "Afficher les livres récents" -#: cps/render_template.py:42 cps/templates/index.xml:18 +#: cps/render_template.py:42 cps/templates/index.xml:25 msgid "Hot Books" msgstr "Livres populaires" @@ -708,127 +833,130 @@ msgstr "Livres populaires" msgid "Show Hot Books" msgstr "Montrer les livres populaires" -#: cps/render_template.py:45 +#: cps/render_template.py:46 cps/render_template.py:51 msgid "Downloaded Books" msgstr "" -#: cps/render_template.py:47 +#: cps/render_template.py:48 cps/render_template.py:53 +#: cps/templates/user_table.html:151 msgid "Show Downloaded Books" msgstr "" -#: cps/render_template.py:50 cps/templates/index.xml:25 cps/web.py:425 +#: cps/render_template.py:56 cps/templates/index.xml:32 cps/web.py:424 msgid "Top Rated Books" msgstr "Livres les mieux notés" -#: cps/render_template.py:52 +#: cps/render_template.py:58 cps/templates/user_table.html:145 msgid "Show Top Rated Books" msgstr "Montrer les livres les mieux notés" -#: cps/render_template.py:53 cps/templates/index.xml:47 -#: cps/templates/index.xml:51 cps/web.py:642 +#: cps/render_template.py:59 cps/templates/index.xml:54 +#: cps/templates/index.xml:58 cps/web.py:650 msgid "Read Books" msgstr "Livres lus" -#: cps/render_template.py:55 +#: cps/render_template.py:61 msgid "Show read and unread" msgstr "Montrer lus et non-lus" -#: cps/render_template.py:57 cps/templates/index.xml:54 -#: cps/templates/index.xml:58 cps/web.py:645 +#: cps/render_template.py:63 cps/templates/index.xml:61 +#: cps/templates/index.xml:65 cps/web.py:653 msgid "Unread Books" msgstr "Livres non-lus" -#: cps/render_template.py:59 +#: cps/render_template.py:65 msgid "Show unread" msgstr "Afficher non-lus" -#: cps/render_template.py:60 +#: cps/render_template.py:66 msgid "Discover" msgstr "Découvrir" -#: cps/render_template.py:62 +#: cps/render_template.py:68 cps/templates/user_table.html:143 +#: cps/templates/user_table.html:146 msgid "Show random books" msgstr "Montrer des livres au hasard" -#: cps/render_template.py:63 cps/templates/book_table.html:50 -#: cps/templates/index.xml:76 cps/web.py:950 +#: cps/render_template.py:69 cps/templates/book_table.html:51 +#: cps/templates/index.xml:83 cps/web.py:1024 msgid "Categories" msgstr "Catégories" -#: cps/render_template.py:65 +#: cps/render_template.py:71 cps/templates/user_table.html:142 msgid "Show category selection" msgstr "Montrer la sélection par catégories" -#: cps/render_template.py:66 cps/templates/book_edit.html:84 -#: cps/templates/book_table.html:51 cps/templates/index.xml:83 -#: cps/templates/search_form.html:62 cps/web.py:854 cps/web.py:864 +#: cps/render_template.py:72 cps/templates/book_edit.html:84 +#: cps/templates/book_table.html:52 cps/templates/index.xml:90 +#: cps/templates/search_form.html:62 cps/web.py:921 cps/web.py:931 msgid "Series" msgstr "Séries" -#: cps/render_template.py:68 +#: cps/render_template.py:74 cps/templates/user_table.html:141 msgid "Show series selection" msgstr "Montrer la sélection par séries" -#: cps/render_template.py:69 cps/templates/book_table.html:49 -#: cps/templates/index.xml:62 +#: cps/render_template.py:75 cps/templates/book_table.html:50 +#: cps/templates/index.xml:69 msgid "Authors" msgstr "Auteurs" -#: cps/render_template.py:71 +#: cps/render_template.py:77 cps/templates/user_table.html:144 msgid "Show author selection" msgstr "Montrer la sélection par auteur" -#: cps/render_template.py:73 cps/templates/book_table.html:55 -#: cps/templates/index.xml:69 cps/web.py:833 +#: cps/render_template.py:79 cps/templates/book_table.html:56 +#: cps/templates/index.xml:76 cps/web.py:898 msgid "Publishers" msgstr "Éditeurs" -#: cps/render_template.py:75 +#: cps/render_template.py:81 cps/templates/user_table.html:147 msgid "Show publisher selection" msgstr "Montrer la sélection par éditeur" -#: cps/render_template.py:76 cps/templates/book_table.html:53 -#: cps/templates/index.xml:90 cps/templates/search_form.html:100 cps/web.py:929 +#: cps/render_template.py:82 cps/templates/book_table.html:54 +#: cps/templates/index.xml:97 cps/templates/search_form.html:100 +#: cps/web.py:1001 msgid "Languages" msgstr "Langues" -#: cps/render_template.py:79 +#: cps/render_template.py:85 cps/templates/user_table.html:139 msgid "Show language selection" msgstr "Montrer la sélection par langue" -#: cps/render_template.py:80 cps/templates/index.xml:97 +#: cps/render_template.py:86 cps/templates/index.xml:104 msgid "Ratings" msgstr "Notes" -#: cps/render_template.py:82 +#: cps/render_template.py:88 cps/templates/user_table.html:148 msgid "Show ratings selection" msgstr "Afficher la sélection des évaluations" -#: cps/render_template.py:83 cps/templates/index.xml:105 +#: cps/render_template.py:89 cps/templates/index.xml:112 msgid "File formats" msgstr "Formats de fichier" -#: cps/render_template.py:85 +#: cps/render_template.py:91 cps/templates/user_table.html:149 msgid "Show file formats selection" msgstr "Afficher la sélection des formats de fichiers" -#: cps/render_template.py:87 cps/web.py:669 +#: cps/render_template.py:93 cps/web.py:677 msgid "Archived Books" msgstr "Livres archivés" -#: cps/render_template.py:89 +#: cps/render_template.py:95 cps/templates/user_table.html:150 msgid "Show archived books" msgstr "Afficher les livres archivés" -#: cps/render_template.py:91 cps/web.py:743 +#: cps/render_template.py:97 cps/web.py:751 msgid "Books List" msgstr "" -#: cps/render_template.py:93 +#: cps/render_template.py:99 cps/templates/user_table.html:152 msgid "Show Books List" msgstr "" -#: cps/shelf.py:69 cps/shelf.py:122 +#: cps/shelf.py:69 cps/shelf.py:124 msgid "Invalid shelf specified" msgstr "L’étagère indiquée est invalide" @@ -842,303 +970,307 @@ msgstr "Désolé, vous n’êtes pas autorisé à ajouter un livre dans l’éta msgid "Book is already part of the shelf: %(shelfname)s" msgstr "Ce livre est déjà sur l’étagère : %(shelfname)s" -#: cps/shelf.py:108 +#: cps/shelf.py:110 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Le livre a bien été ajouté à l'étagère : %(sname)s" -#: cps/shelf.py:126 +#: cps/shelf.py:129 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Vous n’êtes pas autorisé à ajouter un livre dans l’étagère : %(name)s" -#: cps/shelf.py:144 +#: cps/shelf.py:147 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "Ces livres sont déjà sur l’étagère : %(name)s" -#: cps/shelf.py:156 +#: cps/shelf.py:159 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "Les livres ont été ajoutés à l’étagère : %(sname)s" -#: cps/shelf.py:161 +#: cps/shelf.py:166 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "Impossible d’ajouter les livres à l’étagère : %(sname)s" -#: cps/shelf.py:206 +#: cps/shelf.py:212 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Le livre a été supprimé de l'étagère %(sname)s" -#: cps/shelf.py:214 +#: cps/shelf.py:221 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Désolé, vous n’êtes pas autorisé à enlever un livre de cette étagère : %(sname)s" -#: cps/shelf.py:224 cps/templates/layout.html:140 +#: cps/shelf.py:231 cps/templates/layout.html:140 msgid "Create a Shelf" msgstr "Créer une étagère" -#: cps/shelf.py:231 +#: cps/shelf.py:238 msgid "Edit a shelf" msgstr "Modifier une étagère" -#: cps/shelf.py:249 +#: cps/shelf.py:256 #, python-format msgid "Shelf %(title)s created" msgstr "Étagère %(title)s créée" -#: cps/shelf.py:252 +#: cps/shelf.py:259 #, python-format msgid "Shelf %(title)s changed" msgstr "L’étagère %(title)s a été modifiée" -#: cps/shelf.py:265 +#: cps/shelf.py:273 msgid "There was an error" msgstr "Il y a eu une erreur" -#: cps/shelf.py:281 +#: cps/shelf.py:290 #, python-format msgid "A public shelf with the name '%(title)s' already exists." msgstr "Une étagère publique avec le nom '%(title)s' existe déjà." -#: cps/shelf.py:291 +#: cps/shelf.py:301 #, python-format msgid "A private shelf with the name '%(title)s' already exists." msgstr "Une étagère privée avec le nom '%(title)s' existe déjà." -#: cps/shelf.py:358 +#: cps/shelf.py:370 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Modifier l’arrangement de l’étagère : ‘%(name)s’" -#: cps/shelf.py:423 +#: cps/shelf.py:436 #, python-format msgid "Shelf: '%(name)s'" msgstr "Étagère : '%(name)s'" -#: cps/shelf.py:427 +#: cps/shelf.py:440 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Erreur à l’ouverture de l’étagère. Elle n’existe plus ou n’est plus accessible" -#: cps/updater.py:355 cps/updater.py:366 cps/updater.py:418 cps/updater.py:432 +#: cps/updater.py:374 cps/updater.py:385 cps/updater.py:485 cps/updater.py:500 msgid "Unexpected data while reading update information" msgstr "Données inattendues lors de la lecture des informations de mise à jour" -#: cps/updater.py:362 cps/updater.py:424 +#: cps/updater.py:381 cps/updater.py:492 msgid "No update available. You already have the latest version installed" msgstr "Aucune mise à jour disponible. Vous avez déjà la dernière version installée" -#: cps/updater.py:379 +#: cps/updater.py:399 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "Une nouvelle mise à jour est disponible. Cliquez sur le bouton ci-dessous pour charger la dernière version." -#: cps/updater.py:397 +#: cps/updater.py:417 msgid "Could not fetch update information" msgstr "Impossible d'extraire les informations de mise à jour" -#: cps/updater.py:411 -msgid "No release information available" -msgstr "Aucune information concernant cette version n’est disponible" +#: cps/updater.py:427 +msgid "Click on the button below to update to the latest stable version." +msgstr "Téléchargez la dernière version en cliquant sur le bouton ci-dessous." -#: cps/updater.py:468 cps/updater.py:479 cps/updater.py:498 +#: cps/updater.py:436 cps/updater.py:450 cps/updater.py:461 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "Une nouvelle mise à jour est disponible. Cliquez sur le bouton ci-dessous pour charger la version: %(version)s" -#: cps/updater.py:489 -msgid "Click on the button below to update to the latest stable version." -msgstr "Téléchargez la dernière version en cliquant sur le bouton ci-dessous." +#: cps/updater.py:478 +msgid "No release information available" +msgstr "Aucune information concernant cette version n’est disponible" -#: cps/templates/index.html:5 cps/web.py:435 +#: cps/templates/index.html:5 cps/web.py:434 msgid "Discover (Random Books)" msgstr "Découvrir (Livres au hasard)" -#: cps/web.py:461 +#: cps/web.py:460 msgid "Hot Books (Most Downloaded)" msgstr "Livres populaires (les plus téléchargés)" -#: cps/web.py:489 +#: cps/web.py:493 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:503 +#: cps/web.py:508 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Erreur d'ouverture du livre numérique. Le fichier n'existe pas ou n'est pas accessible" -#: cps/web.py:517 +#: cps/web.py:522 #, python-format msgid "Author: %(name)s" msgstr "Auteur : %(name)s" -#: cps/web.py:531 +#: cps/web.py:537 #, python-format msgid "Publisher: %(name)s" msgstr "Éditeur : '%(name)s'" -#: cps/web.py:544 +#: cps/web.py:550 #, python-format msgid "Series: %(serie)s" msgstr "Séries : %(serie)s" -#: cps/web.py:557 +#: cps/web.py:563 #, python-format msgid "Rating: %(rating)s stars" msgstr "Évaluation : %(rating)s étoiles" -#: cps/web.py:570 +#: cps/web.py:576 #, python-format msgid "File format: %(format)s" msgstr "Format de fichier : %(format)s" -#: cps/web.py:584 +#: cps/web.py:592 #, python-format msgid "Category: %(name)s" msgstr "Catégorie : %(name)s" -#: cps/web.py:603 +#: cps/web.py:611 #, python-format msgid "Language: %(name)s" msgstr "Langue : %(name)s" -#: cps/web.py:633 +#: cps/web.py:641 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "La colonne personnalisée No.%(column)d n'existe pas dans la base de données calibre" -#: cps/templates/layout.html:56 cps/web.py:703 cps/web.py:1248 +#: cps/templates/layout.html:56 cps/web.py:711 cps/web.py:1314 msgid "Advanced Search" msgstr "Recherche avancée" #: cps/templates/book_edit.html:214 cps/templates/feed.xml:33 #: cps/templates/index.xml:11 cps/templates/layout.html:45 #: cps/templates/layout.html:48 cps/templates/search_form.html:194 -#: cps/web.py:715 cps/web.py:987 +#: cps/web.py:723 cps/web.py:1061 msgid "Search" msgstr "Chercher" -#: cps/web.py:882 +#: cps/templates/admin.html:16 cps/web.py:876 +msgid "Downloads" +msgstr "Téléchargements" + +#: cps/web.py:952 msgid "Ratings list" msgstr "Liste des évaluations" -#: cps/web.py:901 +#: cps/web.py:973 msgid "File formats list" msgstr "Liste de formats de fichiers" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:964 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1038 msgid "Tasks" msgstr "Tâches" -#: cps/web.py:1108 +#: cps/web.py:1182 msgid "Published after " msgstr "Publié après le " -#: cps/web.py:1115 +#: cps/web.py:1189 msgid "Published before " msgstr "Publié avant le " -#: cps/web.py:1145 +#: cps/web.py:1211 #, python-format msgid "Rating <= %(rating)s" msgstr "Évaluation <= %(rating)s" -#: cps/web.py:1147 +#: cps/web.py:1213 #, python-format msgid "Rating >= %(rating)s" msgstr "Évaluation >= %(rating)s" -#: cps/web.py:1149 +#: cps/web.py:1215 #, python-format msgid "Read Status = %(status)s" msgstr "" -#: cps/web.py:1325 +#: cps/web.py:1387 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Le livre a été mis en file de traitement avec succès pour un envoi vers %(kindlemail)s" -#: cps/web.py:1329 +#: cps/web.py:1391 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Il y a eu une erreur en envoyant ce livre : %(res)s" -#: cps/web.py:1331 +#: cps/web.py:1393 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Veuillez mettre à jour votre profil avec une adresse de courriel Kindle valide." -#: cps/web.py:1348 +#: cps/web.py:1410 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "Le serveur de courriel n'est pas configuré, veuillez contacter votre administrateur!" -#: cps/web.py:1349 cps/web.py:1359 cps/web.py:1366 cps/web.py:1389 -#: cps/web.py:1393 cps/web.py:1398 cps/web.py:1402 +#: cps/web.py:1411 cps/web.py:1418 cps/web.py:1424 cps/web.py:1443 +#: cps/web.py:1447 cps/web.py:1453 msgid "register" msgstr "s’enregistrer" -#: cps/web.py:1364 -msgid "Invalid e-mail address format" -msgstr "" - -#: cps/web.py:1391 +#: cps/web.py:1445 msgid "Your e-mail is not allowed to register" msgstr "Votre adresse de courriel n’est pas autorisé pour une inscription" -#: cps/web.py:1394 +#: cps/web.py:1448 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Le courriel de confirmation a été envoyé à votre adresse." -#: cps/web.py:1397 -msgid "This username or e-mail address is already in use." -msgstr "Ce nom d’utilisateur ou cette adresse de courriel sont déjà utilisés." - -#: cps/web.py:1414 +#: cps/web.py:1465 msgid "Cannot activate LDAP authentication" msgstr "Impossible d’activer l’authentification LDAP" -#: cps/web.py:1431 +#: cps/web.py:1482 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "Connexion de secours comme: '%(nickname)s', le serveur LDAP est indisponible, ou l'utilisateur est inconnu" -#: cps/web.py:1437 +#: cps/web.py:1488 #, python-format msgid "Could not login: %(message)s" msgstr "Impossible de se connecter: %(message)s" -#: cps/web.py:1441 cps/web.py:1465 +#: cps/web.py:1492 cps/web.py:1516 msgid "Wrong Username or Password" msgstr "Mauvais nom d'utilisateur ou mot de passe" -#: cps/web.py:1448 +#: cps/web.py:1499 msgid "New Password was send to your email address" msgstr "Le nouveau mot de passe a été envoyé vers votre adresse de courriel" -#: cps/web.py:1454 +#: cps/web.py:1505 msgid "Please enter valid username to reset password" msgstr "Veuillez entrer un nom d'utilisateur valide pour réinitialiser le mot de passe" -#: cps/web.py:1460 +#: cps/web.py:1511 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Vous êtes maintenant connecté en tant que : ‘%(nickname)s’" -#: cps/web.py:1498 cps/web.py:1583 +#: cps/web.py:1565 cps/web.py:1612 #, python-format msgid "%(name)s's profile" msgstr "Profil de %(name)s" -#: cps/web.py:1550 +#: cps/web.py:1579 msgid "Profile updated" msgstr "Profil mis à jour" -#: cps/web.py:1610 cps/web.py:1613 cps/web.py:1616 cps/web.py:1619 -#: cps/web.py:1626 cps/web.py:1631 +#: cps/web.py:1583 +msgid "Found an existing account for this e-mail address." +msgstr "Un compte existant a été trouvé pour cette adresse de courriel." + +#: cps/web.py:1639 cps/web.py:1642 cps/web.py:1645 cps/web.py:1648 +#: cps/web.py:1655 cps/web.py:1660 msgid "Read a Book" msgstr "Lire un livre" +#: cps/services/gmail.py:41 +msgid "Found no valid gmail.json file with OAuth information" +msgstr "" + #: cps/tasks/convert.py:114 #, python-format msgid "Calibre ebook-convert %(tool)s not found" @@ -1177,221 +1309,231 @@ msgstr "" msgid "Users" msgstr "Liste des utilisateurs" -#: cps/templates/admin.html:12 cps/templates/login.html:8 +#: cps/templates/admin.html:13 cps/templates/login.html:8 #: cps/templates/login.html:9 cps/templates/register.html:8 -#: cps/templates/user_edit.html:9 +#: cps/templates/user_edit.html:9 cps/templates/user_table.html:121 msgid "Username" msgstr "Nom d'utilisateur" -#: cps/templates/admin.html:13 cps/templates/register.html:13 -#: cps/templates/user_edit.html:14 +#: cps/templates/admin.html:14 cps/templates/register.html:13 +#: cps/templates/user_edit.html:14 cps/templates/user_table.html:122 msgid "E-mail Address" msgstr "Adresse de courriel" -#: cps/templates/admin.html:14 cps/templates/user_edit.html:27 +#: cps/templates/admin.html:15 cps/templates/user_edit.html:27 msgid "Send to Kindle E-mail Address" msgstr "Envoyer vers une adresse de courriel Kindle" -#: cps/templates/admin.html:15 -msgid "Downloads" -msgstr "Téléchargements" - -#: cps/templates/admin.html:16 cps/templates/layout.html:77 +#: cps/templates/admin.html:17 cps/templates/layout.html:77 +#: cps/templates/user_table.html:130 msgid "Admin" msgstr "Administration" -#: cps/templates/admin.html:17 cps/templates/login.html:12 +#: cps/templates/admin.html:18 cps/templates/login.html:12 #: cps/templates/login.html:13 cps/templates/user_edit.html:22 msgid "Password" msgstr "Mot de passe" -#: cps/templates/admin.html:18 cps/templates/layout.html:66 +#: cps/templates/admin.html:19 cps/templates/layout.html:66 +#: cps/templates/user_table.html:132 msgid "Upload" msgstr "Téléverser" -#: cps/templates/admin.html:19 cps/templates/detail.html:18 +#: cps/templates/admin.html:20 cps/templates/detail.html:18 #: cps/templates/detail.html:27 cps/templates/shelf.html:6 +#: cps/templates/user_table.html:133 msgid "Download" msgstr "Télécharger" -#: cps/templates/admin.html:20 +#: cps/templates/admin.html:21 msgid "View Books" msgstr "Afficher les livres" -#: cps/templates/admin.html:21 +#: cps/templates/admin.html:22 cps/templates/user_table.html:118 +#: cps/templates/user_table.html:135 msgid "Edit" msgstr "Éditer" -#: cps/templates/admin.html:22 cps/templates/book_edit.html:16 -#: cps/templates/book_table.html:57 cps/templates/modal_dialogs.html:63 +#: cps/templates/admin.html:23 cps/templates/book_edit.html:16 +#: cps/templates/book_table.html:58 cps/templates/modal_dialogs.html:63 #: cps/templates/modal_dialogs.html:116 cps/templates/user_edit.html:66 +#: cps/templates/user_table.html:136 msgid "Delete" msgstr "Supprimer" -#: cps/templates/admin.html:23 +#: cps/templates/admin.html:24 msgid "Public Shelf" msgstr "Étagère publique" -#: cps/templates/admin.html:44 +#: cps/templates/admin.html:47 msgid "Add New User" msgstr "Ajouter un nouvel utilisateur" -#: cps/templates/admin.html:46 +#: cps/templates/admin.html:49 msgid "Import LDAP Users" msgstr "Importer des utilisateurs LDAP" -#: cps/templates/admin.html:53 +#: cps/templates/admin.html:56 msgid "E-mail Server Settings" msgstr "Paramètres du serveur de courriels" -#: cps/templates/admin.html:57 cps/templates/email_edit.html:11 +#: cps/templates/admin.html:61 cps/templates/email_edit.html:30 msgid "SMTP Hostname" msgstr "Nom d'hôte du serveur SMTP" -#: cps/templates/admin.html:61 cps/templates/email_edit.html:15 +#: cps/templates/admin.html:65 cps/templates/email_edit.html:34 msgid "SMTP Port" msgstr "Port du serveur SMTP" -#: cps/templates/admin.html:65 cps/templates/email_edit.html:19 +#: cps/templates/admin.html:69 cps/templates/email_edit.html:38 msgid "Encryption" msgstr "Chiffrement" -#: cps/templates/admin.html:69 cps/templates/email_edit.html:27 +#: cps/templates/admin.html:73 cps/templates/email_edit.html:46 msgid "SMTP Login" msgstr "Compte utilisateur SMTP" -#: cps/templates/admin.html:73 cps/templates/email_edit.html:35 +#: cps/templates/admin.html:77 cps/templates/admin.html:88 +#: cps/templates/email_edit.html:54 msgid "From E-mail" msgstr "Expéditeur des courriels" #: cps/templates/admin.html:84 +msgid "E-Mail Service" +msgstr "" + +#: cps/templates/admin.html:85 +msgid "Gmail via Oauth2" +msgstr "" + +#: cps/templates/admin.html:100 msgid "Configuration" msgstr "Configuration" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:103 msgid "Calibre Database Directory" msgstr "Répertoire de la base de données Calibre" -#: cps/templates/admin.html:91 cps/templates/config_edit.html:136 +#: cps/templates/admin.html:107 cps/templates/config_edit.html:136 msgid "Log Level" msgstr "Niveau de journalisation" -#: cps/templates/admin.html:95 +#: cps/templates/admin.html:111 msgid "Port" msgstr "Port" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:116 msgid "External Port" msgstr "" -#: cps/templates/admin.html:107 cps/templates/config_view_edit.html:27 +#: cps/templates/admin.html:123 cps/templates/config_view_edit.html:27 msgid "Books per Page" msgstr "Livres par page" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:127 msgid "Uploads" msgstr "Téléversements" -#: cps/templates/admin.html:115 +#: cps/templates/admin.html:131 msgid "Anonymous Browsing" msgstr "Navigation anonyme" -#: cps/templates/admin.html:119 +#: cps/templates/admin.html:135 msgid "Public Registration" msgstr "Inscription publique" -#: cps/templates/admin.html:123 +#: cps/templates/admin.html:139 msgid "Magic Link Remote Login" msgstr "Connexion à distance Magic Link" -#: cps/templates/admin.html:127 +#: cps/templates/admin.html:143 msgid "Reverse Proxy Login" msgstr "Compte du Reverse Proxy" -#: cps/templates/admin.html:132 +#: cps/templates/admin.html:148 msgid "Reverse proxy header name" msgstr "Nom de l'en-tête du Reverse Proxy" -#: cps/templates/admin.html:137 +#: cps/templates/admin.html:153 msgid "Edit Basic Configuration" msgstr "Éditer la configuration principale" -#: cps/templates/admin.html:138 +#: cps/templates/admin.html:154 msgid "Edit UI Configuration" msgstr "Configuration de l’interface utilisateur" -#: cps/templates/admin.html:143 +#: cps/templates/admin.html:159 msgid "Administration" msgstr "Administration" -#: cps/templates/admin.html:144 +#: cps/templates/admin.html:160 msgid "Download Debug Package" msgstr "" -#: cps/templates/admin.html:145 +#: cps/templates/admin.html:161 msgid "View Logs" msgstr "Afficher les fichiers journaux" -#: cps/templates/admin.html:148 +#: cps/templates/admin.html:164 msgid "Reconnect Calibre Database" msgstr "Reconnecter la base de données Calibre" -#: cps/templates/admin.html:149 +#: cps/templates/admin.html:165 msgid "Restart" msgstr "Redémarrer Calibre-Web" -#: cps/templates/admin.html:150 +#: cps/templates/admin.html:166 msgid "Shutdown" msgstr "Arrêter Calibre-Web" -#: cps/templates/admin.html:155 +#: cps/templates/admin.html:171 msgid "Update" msgstr "Mise à jour de Calibre-Web" -#: cps/templates/admin.html:159 +#: cps/templates/admin.html:175 msgid "Version" msgstr "Version" -#: cps/templates/admin.html:160 +#: cps/templates/admin.html:176 msgid "Details" msgstr "Détails" -#: cps/templates/admin.html:166 +#: cps/templates/admin.html:182 msgid "Current version" msgstr "Version actuelle" -#: cps/templates/admin.html:173 +#: cps/templates/admin.html:189 msgid "Check for Update" msgstr "Rechercher les mises à jour" -#: cps/templates/admin.html:174 +#: cps/templates/admin.html:190 msgid "Perform Update" msgstr "Effectuer la mise à jour" -#: cps/templates/admin.html:187 +#: cps/templates/admin.html:203 msgid "Are you sure you want to restart?" msgstr "Voulez-vous vraiment redémarrer Calibre-Web?" -#: cps/templates/admin.html:192 cps/templates/admin.html:206 -#: cps/templates/admin.html:226 cps/templates/shelf.html:95 +#: cps/templates/admin.html:208 cps/templates/admin.html:222 +#: cps/templates/admin.html:242 cps/templates/shelf.html:95 msgid "OK" msgstr "OK" -#: cps/templates/admin.html:193 cps/templates/admin.html:207 -#: cps/templates/book_edit.html:192 cps/templates/book_table.html:84 +#: cps/templates/admin.html:209 cps/templates/admin.html:223 +#: cps/templates/book_edit.html:192 cps/templates/book_table.html:85 #: cps/templates/config_edit.html:427 cps/templates/config_view_edit.html:151 -#: cps/templates/email_edit.html:47 cps/templates/modal_dialogs.html:64 -#: cps/templates/modal_dialogs.html:99 cps/templates/modal_dialogs.html:117 +#: cps/templates/modal_dialogs.html:64 cps/templates/modal_dialogs.html:99 +#: cps/templates/modal_dialogs.html:117 cps/templates/modal_dialogs.html:135 #: cps/templates/shelf.html:96 cps/templates/shelf_edit.html:19 #: cps/templates/user_edit.html:132 msgid "Cancel" msgstr "Annuler" -#: cps/templates/admin.html:205 +#: cps/templates/admin.html:221 msgid "Are you sure you want to shutdown?" msgstr "Voulez-vous vraiment arrêter Calibre-Web?" -#: cps/templates/admin.html:217 +#: cps/templates/admin.html:233 msgid "Updating, please do not reload this page" msgstr "Mise à jour en cours, ne pas rafraîchir la page" @@ -1499,6 +1641,7 @@ msgid "Identifier Value" msgstr "Valeur d'identifiant" #: cps/templates/book_edit.html:72 cps/templates/book_edit.html:289 +#: cps/templates/user_table.html:23 msgid "Remove" msgstr "Supprimer" @@ -1564,7 +1707,7 @@ msgid "Fetch Metadata" msgstr "Obtenir les métadonnées" #: cps/templates/book_edit.html:191 cps/templates/config_edit.html:424 -#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45 +#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:64 #: cps/templates/shelf_edit.html:17 cps/templates/shelf_order.html:40 #: cps/templates/user_edit.html:130 msgid "Save" @@ -1604,96 +1747,98 @@ msgstr "Erreur lors de la recherche!" msgid "No Result(s) found! Please try another keyword." msgstr "Aucun résultat. Veuillez essayer avec un nouveau mot clé." -#: cps/templates/book_table.html:10 cps/templates/book_table.html:52 +#: cps/templates/book_table.html:11 cps/templates/book_table.html:53 +#: cps/templates/user_table.html:13 cps/templates/user_table.html:65 +#: cps/templates/user_table.html:88 msgid "This Field is Required" msgstr "" -#: cps/templates/book_table.html:23 +#: cps/templates/book_table.html:24 msgid "Merge selected books" msgstr "" -#: cps/templates/book_table.html:24 +#: cps/templates/book_table.html:25 cps/templates/user_table.html:111 msgid "Remove Selections" msgstr "" -#: cps/templates/book_table.html:30 +#: cps/templates/book_table.html:31 msgid "Update Title Sort automatically" msgstr "" -#: cps/templates/book_table.html:34 +#: cps/templates/book_table.html:35 msgid "Update Author Sort automatically" msgstr "" -#: cps/templates/book_table.html:46 +#: cps/templates/book_table.html:47 msgid "Enter Title" msgstr "" -#: cps/templates/book_table.html:46 cps/templates/config_view_edit.html:23 +#: cps/templates/book_table.html:47 cps/templates/config_view_edit.html:23 #: cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Titre" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Enter Title Sort" msgstr "" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Title Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Enter Author Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Author Sort" msgstr "" -#: cps/templates/book_table.html:49 +#: cps/templates/book_table.html:50 msgid "Enter Authors" msgstr "" -#: cps/templates/book_table.html:50 +#: cps/templates/book_table.html:51 msgid "Enter Categories" msgstr "" -#: cps/templates/book_table.html:51 +#: cps/templates/book_table.html:52 msgid "Enter Series" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Enter title" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Series Index" msgstr "" -#: cps/templates/book_table.html:53 +#: cps/templates/book_table.html:54 msgid "Enter Languages" msgstr "" -#: cps/templates/book_table.html:54 +#: cps/templates/book_table.html:55 msgid "Publishing Date" msgstr "" -#: cps/templates/book_table.html:55 +#: cps/templates/book_table.html:56 msgid "Enter Publishers" msgstr "" -#: cps/templates/book_table.html:70 cps/templates/modal_dialogs.html:46 +#: cps/templates/book_table.html:71 cps/templates/modal_dialogs.html:46 msgid "Are you really sure?" msgstr "Êtes-vous vraiment sûr?" -#: cps/templates/book_table.html:74 +#: cps/templates/book_table.html:75 msgid "Books with Title will be merged from:" msgstr "" -#: cps/templates/book_table.html:78 +#: cps/templates/book_table.html:79 msgid "Into Book with Title:" msgstr "" -#: cps/templates/book_table.html:83 +#: cps/templates/book_table.html:84 msgid "Merge" msgstr "" @@ -1878,7 +2023,7 @@ msgid "LDAP Encryption" msgstr "Chiffrement LDAP" #: cps/templates/config_edit.html:268 cps/templates/config_view_edit.html:61 -#: cps/templates/email_edit.html:21 +#: cps/templates/email_edit.html:40 msgid "None" msgstr "Aucun" @@ -2091,6 +2236,7 @@ msgid "Default Visibilities for New Users" msgstr "Mode de visualisation par défaut pour les nouveaux utilisateurs" #: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82 +#: cps/templates/user_table.html:138 msgid "Show Random Books in Detail View" msgstr "Montrer aléatoirement des livres dans la vue détaillée" @@ -2164,43 +2310,69 @@ msgstr "(Public)" msgid "Edit Metadata" msgstr "Éditer les métadonnées" -#: cps/templates/email_edit.html:22 +#: cps/templates/email_edit.html:12 +msgid "Choose Server Type" +msgstr "" + +#: cps/templates/email_edit.html:14 +msgid "Use Standard E-Mail Account" +msgstr "" + +#: cps/templates/email_edit.html:15 +msgid "Gmail Account with OAuth2 Verfification" +msgstr "" + +#: cps/templates/email_edit.html:21 +msgid "Setup Gmail Account as E-Mail Server" +msgstr "" + +#: cps/templates/email_edit.html:23 +msgid "Revoke Gmail Access" +msgstr "" + +#: cps/templates/email_edit.html:41 msgid "STARTTLS" msgstr "STARTTLS" -#: cps/templates/email_edit.html:23 +#: cps/templates/email_edit.html:42 msgid "SSL/TLS" msgstr "SSL/TLS" -#: cps/templates/email_edit.html:31 +#: cps/templates/email_edit.html:50 msgid "SMTP Password" msgstr "Mot de passe SMTP" -#: cps/templates/email_edit.html:38 +#: cps/templates/email_edit.html:57 msgid "Attachment Size Limit" msgstr "Limite de la taille de la pièce jointe" -#: cps/templates/email_edit.html:46 +#: cps/templates/email_edit.html:65 msgid "Save and Send Test E-mail" msgstr "Sauvegarder les réglages et tester l’envoi d’un courriel" -#: cps/templates/email_edit.html:51 +#: cps/templates/email_edit.html:69 cps/templates/layout.html:29 +#: cps/templates/shelf_order.html:41 cps/templates/user_table.html:158 +msgid "Back" +msgstr "Retour" + +#: cps/templates/email_edit.html:73 msgid "Allowed Domains (Whitelist)" msgstr "Domaines autorisés (Liste blanche)" -#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80 +#: cps/templates/email_edit.html:76 cps/templates/email_edit.html:102 msgid "Add Domain" msgstr "Ajouter un domaine" -#: cps/templates/email_edit.html:57 cps/templates/email_edit.html:83 +#: cps/templates/email_edit.html:79 cps/templates/email_edit.html:105 +#: cps/templates/user_table.html:26 msgid "Add" msgstr "Ajouter" -#: cps/templates/email_edit.html:62 cps/templates/email_edit.html:72 +#: cps/templates/email_edit.html:84 cps/templates/email_edit.html:94 msgid "Enter domainname" msgstr "Saisir le nom du domaine" -#: cps/templates/email_edit.html:68 +#: cps/templates/email_edit.html:90 msgid "Denied Domains (Blacklist)" msgstr "Domaines refusés (Liste noire)" @@ -2212,10 +2384,6 @@ msgstr "Suivant" msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):" msgstr "Ouvrir le fichier .kobo/Kobo eReader.conf dans un éditeur de texte et ajouter (ou éditer):" -#: cps/templates/grid.html:14 cps/templates/list.html:14 -msgid "All" -msgstr "Tout" - #: cps/templates/http_error.html:38 msgid "Create Issue" msgstr "Signaler un problème" @@ -2246,64 +2414,72 @@ msgstr "" msgid "Start" msgstr "Démarrer" +#: cps/templates/index.xml:18 +msgid "Alphabetical Books" +msgstr "" + #: cps/templates/index.xml:22 +msgid "Books sorted alphabetically" +msgstr "" + +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Downloads." msgstr "Publications populaires depuis le catalogue basées sur les téléchargements." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:36 msgid "Popular publications from this catalog based on Rating." msgstr "Publications populaires de ce catalogue sur la base des évaluations." -#: cps/templates/index.xml:32 +#: cps/templates/index.xml:39 msgid "Recently added Books" msgstr "Livres récents ajoutés" -#: cps/templates/index.xml:36 +#: cps/templates/index.xml:43 msgid "The latest Books" msgstr "Les derniers livres" -#: cps/templates/index.xml:39 +#: cps/templates/index.xml:46 msgid "Random Books" msgstr "Livres au hasard" -#: cps/templates/index.xml:43 +#: cps/templates/index.xml:50 msgid "Show Random Books" msgstr "Montrer des livres au hasard" -#: cps/templates/index.xml:66 +#: cps/templates/index.xml:73 msgid "Books ordered by Author" msgstr "Livres classés par auteur" -#: cps/templates/index.xml:73 +#: cps/templates/index.xml:80 msgid "Books ordered by publisher" msgstr "Livres classés par éditeur" -#: cps/templates/index.xml:80 +#: cps/templates/index.xml:87 msgid "Books ordered by category" msgstr "Livres classés par catégorie" -#: cps/templates/index.xml:87 +#: cps/templates/index.xml:94 msgid "Books ordered by series" msgstr "Livres classés par série" -#: cps/templates/index.xml:94 +#: cps/templates/index.xml:101 msgid "Books ordered by Languages" msgstr "Livres classés par langue" -#: cps/templates/index.xml:101 +#: cps/templates/index.xml:108 msgid "Books ordered by Rating" msgstr "Livres classés par évaluation" -#: cps/templates/index.xml:109 +#: cps/templates/index.xml:116 msgid "Books ordered by file formats" msgstr "Livres classés par formats de fichiers" -#: cps/templates/index.xml:112 cps/templates/layout.html:135 +#: cps/templates/index.xml:119 cps/templates/layout.html:135 #: cps/templates/search_form.html:80 msgid "Shelves" msgstr "Etagères" -#: cps/templates/index.xml:116 +#: cps/templates/index.xml:123 msgid "Books organized in shelves" msgstr "Livres organisés par étagères" @@ -2311,10 +2487,6 @@ msgstr "Livres organisés par étagères" msgid "Home" msgstr "Accueil" -#: cps/templates/layout.html:29 cps/templates/shelf_order.html:41 -msgid "Back" -msgstr "Retour" - #: cps/templates/layout.html:35 msgid "Toggle Navigation" msgstr "Basculer la navigation" @@ -2476,6 +2648,11 @@ msgstr "" msgid "Select" msgstr "" +#: cps/templates/modal_dialogs.html:134 +#, fuzzy +msgid "Ok" +msgstr "Livre" + #: cps/templates/osd.xml:5 msgid "Calibre-Web eBook Catalog" msgstr "Catalogue de livres électroniques Calibre-Web" @@ -2781,10 +2958,6 @@ msgstr "Réinitialiser le mot de passe de l’utilisateur" msgid "Language of Books" msgstr "Montrer les livres dans la langue" -#: cps/templates/user_edit.html:44 -msgid "Show All" -msgstr "Montrer tout" - #: cps/templates/user_edit.html:53 msgid "OAuth Settings" msgstr "Réglages OAuth" @@ -2809,7 +2982,7 @@ msgstr "Créer/visualiser" msgid "Add allowed/Denied Custom Column Values" msgstr "Ajouter les valeurs de colonnes personnalisées autorisées/refusées" -#: cps/templates/user_edit.html:135 +#: cps/templates/user_edit.html:135 cps/templates/user_table.html:153 msgid "Delete User" msgstr "Supprimer l'utilisateur" @@ -2817,3 +2990,98 @@ msgstr "Supprimer l'utilisateur" msgid "Generate Kobo Auth URL" msgstr "Générer l'URL d'authentification Kobo" +#: cps/templates/user_table.html:68 cps/templates/user_table.html:91 +msgid "Select..." +msgstr "" + +#: cps/templates/user_table.html:118 +#, fuzzy +msgid "Edit User" +msgstr "Utilisateur admin" + +#: cps/templates/user_table.html:121 +#, fuzzy +msgid "Enter Username" +msgstr "Choisissez un nom d'utilisateur" + +#: cps/templates/user_table.html:122 +#, fuzzy +msgid "Enter E-mail Address" +msgstr "Votre adresse de courriel" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Enter Kindle E-mail Address" +msgstr "Envoyer vers une adresse de courriel Kindle" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Kindle E-mail" +msgstr "Courriel de test" + +#: cps/templates/user_table.html:124 +#, fuzzy +msgid "Locale" +msgstr "Échelle" + +#: cps/templates/user_table.html:125 +msgid "Visible Book Languages" +msgstr "" + +#: cps/templates/user_table.html:126 +#, fuzzy +msgid "Edit Denied Tags" +msgstr "Sélectionner les étiquettes autorisées/refusées" + +#: cps/templates/user_table.html:126 +msgid "Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +#, fuzzy +msgid "Edit Allowed Tags" +msgstr "Sélectionner les étiquettes autorisées/refusées" + +#: cps/templates/user_table.html:127 +msgid "Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Edit Allowed Column Values" +msgstr "Ajouter les valeurs de colonnes autorisées/refusées" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Allowed Column Values" +msgstr "Ajouter les valeurs de colonnes autorisées/refusées" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Edit Denied Column Values" +msgstr "Ajouter les valeurs de colonnes autorisées/refusées" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Denied Columns Values" +msgstr "Ajouter les valeurs de colonnes autorisées/refusées" + +#: cps/templates/user_table.html:131 +#, fuzzy +msgid "Change Password" +msgstr "Permettre le changement de mot de passe" + +#: cps/templates/user_table.html:134 +msgid "View" +msgstr "" + +#: cps/templates/user_table.html:137 +#, fuzzy +msgid "Edit Public Shelfs" +msgstr "Étagère publique" + +#: cps/templates/user_table.html:140 +#, fuzzy +msgid "Show read/unread selection" +msgstr "Montrer la sélection par séries" + diff --git a/cps/translations/hu/LC_MESSAGES/messages.mo b/cps/translations/hu/LC_MESSAGES/messages.mo index 06c81351..277c70b2 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 d28a7c91..5d1cc0d7 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: 2021-03-27 12:16+0100\n" +"POT-Creation-Date: 2021-05-01 16:33+0200\n" "PO-Revision-Date: 2019-04-06 23:36+0200\n" "Last-Translator: \n" "Language: hu\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" +"Generated-By: Babel 2.8.0\n" #: cps/about.py:43 msgid "installed" @@ -30,310 +30,404 @@ msgstr "nincs telepítve" msgid "Statistics" msgstr "Statisztika" -#: cps/admin.py:149 +#: cps/admin.py:151 msgid "Server restarted, please reload page" msgstr "A kiszolgáló újraindult, tölts be újra az oldalt!" -#: cps/admin.py:151 +#: cps/admin.py:153 msgid "Performing shutdown of server, please close window" msgstr "A kiszolgáló leállítása folyamatban, zárd be ezt az ablakot" -#: cps/admin.py:159 +#: cps/admin.py:161 msgid "Reconnect successful" msgstr "" -#: cps/admin.py:162 +#: cps/admin.py:164 msgid "Unknown command" msgstr "" -#: cps/admin.py:172 cps/editbooks.py:662 cps/editbooks.py:674 -#: cps/editbooks.py:777 cps/editbooks.py:779 cps/editbooks.py:806 -#: cps/editbooks.py:822 cps/updater.py:521 cps/uploader.py:94 +#: cps/admin.py:174 cps/editbooks.py:668 cps/editbooks.py:682 +#: cps/editbooks.py:821 cps/editbooks.py:823 cps/editbooks.py:850 +#: cps/editbooks.py:866 cps/updater.py:555 cps/uploader.py:94 #: cps/uploader.py:104 msgid "Unknown" msgstr "Ismeretlen" -#: cps/admin.py:193 +#: cps/admin.py:195 msgid "Admin page" msgstr "Rendszergazda oldala" -#: cps/admin.py:215 +#: cps/admin.py:217 msgid "UI Configuration" msgstr "Felhasználói felület beállításai" -#: cps/admin.py:247 cps/admin.py:936 +#: cps/admin.py:249 cps/templates/admin.html:46 +#, fuzzy +msgid "Edit Users" +msgstr "Rendszergazda felhasználó" + +#: cps/admin.py:290 +msgid "all" +msgstr "" + +#: cps/admin.py:315 cps/admin.py:1486 +msgid "User not found" +msgstr "" + +#: cps/admin.py:329 +msgid "{} users deleted successfully" +msgstr "" + +#: cps/admin.py:351 cps/templates/user_edit.html:44 +#: cps/templates/user_table.html:69 +msgid "Show All" +msgstr "Mindent mutass" + +#: cps/admin.py:372 cps/admin.py:378 +msgid "Malformed request" +msgstr "" + +#: cps/admin.py:390 cps/admin.py:1368 +msgid "Guest Name can't be changed" +msgstr "" + +#: cps/admin.py:400 +msgid "Guest can't have this role" +msgstr "" + +#: cps/admin.py:412 cps/admin.py:1333 +msgid "No admin user remaining, can't remove admin role" +msgstr "" + +#: cps/admin.py:416 cps/admin.py:430 +msgid "Value has to be true or false" +msgstr "" + +#: cps/admin.py:418 +msgid "Invalid role" +msgstr "" + +#: cps/admin.py:422 +msgid "Guest can't have this view" +msgstr "" + +#: cps/admin.py:432 +msgid "Invalid view" +msgstr "" + +#: cps/admin.py:435 +msgid "Guest's Locale is determined automatically and can't be set" +msgstr "" + +#: cps/admin.py:439 +msgid "No Valid Locale Given" +msgstr "" + +#: cps/admin.py:450 +msgid "No Valid Book Language Given" +msgstr "" + +#: cps/admin.py:452 +msgid "Parameter not found" +msgstr "" + +#: cps/admin.py:506 cps/admin.py:1219 msgid "Calibre-Web configuration updated" msgstr "A Calibre-Web konfigurációja frissítve." -#: cps/admin.py:258 +#: cps/admin.py:518 msgid "Do you really want to delete the Kobo Token?" msgstr "" -#: cps/admin.py:260 +#: cps/admin.py:520 msgid "Do you really want to delete this domain?" msgstr "" -#: cps/admin.py:262 +#: cps/admin.py:522 msgid "Do you really want to delete this user?" msgstr "" -#: cps/admin.py:264 cps/templates/shelf.html:90 +#: cps/admin.py:524 cps/templates/shelf.html:90 msgid "Are you sure you want to delete this shelf?" msgstr "Valóban törölni akarod a polcot?" -#: cps/admin.py:510 cps/admin.py:516 cps/admin.py:526 cps/admin.py:536 -#: cps/templates/modal_dialogs.html:29 +#: cps/admin.py:526 +#, fuzzy +msgid "Are you sure you want to change locales of selected user(s)?" +msgstr "Valóban törölni akarod a polcot?" + +#: cps/admin.py:528 +msgid "Are you sure you want to change visible book languages for selected user(s)?" +msgstr "" + +#: cps/admin.py:530 +msgid "Are you sure you want to change the selected role for the selected user(s)?" +msgstr "" + +#: cps/admin.py:532 +#, fuzzy +msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" +msgstr "Valóban törölni akarod a polcot?" + +#: cps/admin.py:534 +msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:683 +msgid "Tag not found" +msgstr "" + +#: cps/admin.py:695 +msgid "Invalid Action" +msgstr "" + +#: cps/admin.py:800 cps/admin.py:806 cps/admin.py:816 cps/admin.py:826 +#: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:43 msgid "Deny" msgstr "" -#: cps/admin.py:512 cps/admin.py:518 cps/admin.py:528 cps/admin.py:538 -#: cps/templates/modal_dialogs.html:28 +#: cps/admin.py:802 cps/admin.py:808 cps/admin.py:818 cps/admin.py:828 +#: cps/templates/modal_dialogs.html:28 cps/templates/user_table.html:48 msgid "Allow" msgstr "" -#: cps/admin.py:681 +#: cps/admin.py:971 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "" -#: cps/admin.py:723 +#: cps/admin.py:1016 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:729 +#: cps/admin.py:1022 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:738 +#: cps/admin.py:1052 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "" -#: cps/admin.py:752 cps/admin.py:760 +#: cps/admin.py:1067 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:755 cps/admin.py:763 +#: cps/admin.py:1070 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:768 +#: cps/admin.py:1075 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:771 +#: cps/admin.py:1078 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:779 +#: cps/admin.py:1086 #, python-format msgid "LDAP Member User Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:782 +#: cps/admin.py:1089 msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:790 +#: cps/admin.py:1097 msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:841 +#: cps/admin.py:1123 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:847 +#: cps/admin.py:1129 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:917 cps/admin.py:1024 cps/admin.py:1047 cps/admin.py:1168 -#: cps/shelf.py:102 cps/shelf.py:159 cps/shelf.py:200 cps/shelf.py:261 -#: cps/shelf.py:314 cps/shelf.py:348 cps/shelf.py:418 +#: cps/admin.py:1200 cps/admin.py:1303 cps/admin.py:1395 cps/admin.py:1461 +#: cps/shelf.py:103 cps/shelf.py:163 cps/shelf.py:206 cps/shelf.py:269 +#: cps/shelf.py:325 cps/shelf.py:360 cps/shelf.py:431 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:929 +#: cps/admin.py:1212 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:933 +#: cps/admin.py:1216 msgid "DB is not Writeable" msgstr "" -#: cps/admin.py:972 +#: cps/admin.py:1256 msgid "Basic Configuration" msgstr "Alapvető beállítások" -#: cps/admin.py:987 cps/web.py:1358 +#: cps/admin.py:1272 cps/web.py:1417 msgid "Please fill out all fields!" msgstr "Az összes mezőt ki kell tölteni!" -#: cps/admin.py:990 cps/admin.py:1002 cps/admin.py:1008 cps/admin.py:1138 -msgid "Add new user" -msgstr "Új felhasználó hozzáadása" - -#: cps/admin.py:999 cps/web.py:1496 +#: cps/admin.py:1280 msgid "E-mail is not from valid domain" msgstr "Az e-mail tartománya nem érvényes." -#: cps/admin.py:1006 cps/admin.py:1021 -msgid "Found an existing account for this e-mail address or nickname." -msgstr "Már létezik felhasználó ehhez az e-mail címhez vagy felhasználói névhez." +#: cps/admin.py:1284 cps/admin.py:1414 +msgid "Add new user" +msgstr "Új felhasználó hozzáadása" -#: cps/admin.py:1017 +#: cps/admin.py:1293 #, python-format msgid "User '%(user)s' created" msgstr "A következő felhasználó létrehozva: %(user)s" -#: cps/admin.py:1031 +#: cps/admin.py:1299 +#, fuzzy +msgid "Found an existing account for this e-mail address or name." +msgstr "Már létezik felhasználó ehhez az e-mail címhez vagy felhasználói névhez." + +#: cps/admin.py:1312 #, python-format msgid "User '%(nick)s' deleted" msgstr "A felhasználó törölve: %(nick)s" -#: cps/admin.py:1034 +#: cps/admin.py:1314 cps/admin.py:1315 +msgid "Can't delete Guest User" +msgstr "" + +#: cps/admin.py:1318 msgid "No admin user remaining, can't delete user" msgstr "" -#: cps/admin.py:1041 -#, python-format -msgid "User '%(nick)s' updated" -msgstr "A felhasználó frissítve: %(nick)s" - -#: cps/admin.py:1044 -msgid "An unknown error occured." -msgstr "Ismeretlen hiba történt." - -#: cps/admin.py:1056 -msgid "No admin user remaining, can't remove admin role" -msgstr "" - -#: cps/admin.py:1092 cps/web.py:1554 -msgid "Found an existing account for this e-mail address." -msgstr "Már létezik felhasználó ehhez az e-mail címhez." - -#: cps/admin.py:1101 cps/admin.py:1115 cps/admin.py:1209 cps/web.py:1516 +#: cps/admin.py:1383 cps/admin.py:1504 #, python-format msgid "Edit User %(nick)s" msgstr " A felhasználó szerkesztése: %(nick)s" -#: cps/admin.py:1107 cps/web.py:1509 -msgid "This username is already taken" -msgstr "" +#: cps/admin.py:1387 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "A felhasználó frissítve: %(nick)s" -#: cps/admin.py:1147 cps/templates/admin.html:78 +#: cps/admin.py:1391 +#, fuzzy +msgid "An unknown error occurred." +msgstr "Ismeretlen hiba történt." + +#: cps/admin.py:1423 cps/templates/admin.html:94 msgid "Edit E-mail Server Settings" msgstr "SMTP beállítások változtatása" -#: cps/admin.py:1175 +#: cps/admin.py:1442 +msgid "G-Mail Account Verification Successful" +msgstr "" + +#: cps/admin.py:1468 #, python-format msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" msgstr "" -#: cps/admin.py:1178 +#: cps/admin.py:1471 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Hiba történt a teszt levél küldése során: %(res)s" -#: cps/admin.py:1180 +#: cps/admin.py:1473 msgid "Please configure your e-mail address first..." msgstr "" -#: cps/admin.py:1182 +#: cps/admin.py:1475 msgid "E-mail server settings updated" msgstr "Az e-mail kiszolgáló beállításai frissítve." -#: cps/admin.py:1193 -msgid "User not found" -msgstr "" - -#: cps/admin.py:1220 +#: cps/admin.py:1516 #, python-format msgid "Password for user %(user)s reset" msgstr "A(z) %(user)s felhasználó jelszavának alaphelyzetbe állítása" -#: cps/admin.py:1223 cps/web.py:1388 cps/web.py:1452 +#: cps/admin.py:1519 cps/web.py:1442 cps/web.py:1503 msgid "An unknown error occurred. Please try again later." msgstr "Ismeretlen hiba történt. Próbáld újra később!" -#: cps/admin.py:1226 cps/web.py:1320 +#: cps/admin.py:1522 cps/web.py:1382 msgid "Please configure the SMTP mail settings first..." msgstr "Először be kell állítani az SMTP levelező beállításokat..." -#: cps/admin.py:1237 +#: cps/admin.py:1533 msgid "Logfile viewer" msgstr "" -#: cps/admin.py:1303 +#: cps/admin.py:1599 msgid "Requesting update package" msgstr "Frissítési csomag kérése" -#: cps/admin.py:1304 +#: cps/admin.py:1600 msgid "Downloading update package" msgstr "Frissítési csomag letöltése" -#: cps/admin.py:1305 +#: cps/admin.py:1601 msgid "Unzipping update package" msgstr "Frissítési csomag kitömörítése" -#: cps/admin.py:1306 +#: cps/admin.py:1602 msgid "Replacing files" msgstr "Fájlok cserélése" -#: cps/admin.py:1307 +#: cps/admin.py:1603 msgid "Database connections are closed" msgstr "Adatbázis kapcsolatok lezárva" -#: cps/admin.py:1308 +#: cps/admin.py:1604 msgid "Stopping server" msgstr "Szerver leállítása" -#: cps/admin.py:1309 +#: cps/admin.py:1605 msgid "Update finished, please press okay and reload page" msgstr "A frissítés települt, kattints az OK-ra és újra tölt az oldal" -#: cps/admin.py:1310 cps/admin.py:1311 cps/admin.py:1312 cps/admin.py:1313 -#: cps/admin.py:1314 +#: cps/admin.py:1606 cps/admin.py:1607 cps/admin.py:1608 cps/admin.py:1609 +#: cps/admin.py:1610 msgid "Update failed:" msgstr "A frissítés nem sikerült:" -#: cps/admin.py:1310 cps/updater.py:337 cps/updater.py:532 cps/updater.py:534 +#: cps/admin.py:1606 cps/updater.py:356 cps/updater.py:566 cps/updater.py:568 msgid "HTTP Error" msgstr "HTTP hiba" -#: cps/admin.py:1311 cps/updater.py:339 cps/updater.py:536 +#: cps/admin.py:1607 cps/updater.py:358 cps/updater.py:570 msgid "Connection error" msgstr "Kapcsolódási hiba" -#: cps/admin.py:1312 cps/updater.py:341 cps/updater.py:538 +#: cps/admin.py:1608 cps/updater.py:360 cps/updater.py:572 msgid "Timeout while establishing connection" msgstr "Időtúllépés a kapcsolódás során" -#: cps/admin.py:1313 cps/updater.py:343 cps/updater.py:540 +#: cps/admin.py:1609 cps/updater.py:362 cps/updater.py:574 msgid "General error" msgstr "Általános hiba" -#: cps/admin.py:1314 +#: cps/admin.py:1610 msgid "Update File Could Not be Saved in Temp Dir" msgstr "" -#: cps/admin.py:1376 +#: cps/admin.py:1671 msgid "Failed to Create at Least One LDAP User" msgstr "" -#: cps/admin.py:1389 +#: cps/admin.py:1684 #, python-format msgid "Error: %(ldaperror)s" msgstr "" -#: cps/admin.py:1393 +#: cps/admin.py:1688 msgid "Error: No user returned in response of LDAP server" msgstr "" -#: cps/admin.py:1426 +#: cps/admin.py:1721 msgid "At Least One LDAP User Not Found in Database" msgstr "" -#: cps/admin.py:1428 +#: cps/admin.py:1723 msgid "{} User Successfully Imported" msgstr "" @@ -345,98 +439,98 @@ msgstr "" msgid "Execution permissions missing" msgstr "" -#: cps/editbooks.py:267 cps/editbooks.py:269 +#: cps/editbooks.py:294 cps/editbooks.py:296 msgid "Book Format Successfully Deleted" msgstr "" -#: cps/editbooks.py:276 cps/editbooks.py:278 +#: cps/editbooks.py:303 cps/editbooks.py:305 msgid "Book Successfully Deleted" msgstr "" -#: cps/editbooks.py:325 cps/editbooks.py:646 cps/web.py:1598 cps/web.py:1634 -#: cps/web.py:1705 +#: cps/editbooks.py:361 cps/editbooks.py:724 cps/web.py:1627 cps/web.py:1663 +#: cps/web.py:1734 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Hiba az ekönyv megnyitásakor. A fájl nem létezik vagy nem elérhető." -#: cps/editbooks.py:359 +#: cps/editbooks.py:395 msgid "edit metadata" msgstr "Metaadatok szerkesztése" -#: cps/editbooks.py:434 +#: cps/editbooks.py:473 #, python-format msgid "%(langname)s is not a valid language" msgstr "A(z) %(langname)s nem érvényes nyelv" -#: cps/editbooks.py:556 cps/editbooks.py:905 +#: cps/editbooks.py:595 cps/editbooks.py:936 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "A(z) \"%(ext)s\" kiterjesztésű fájlok feltöltése nincs engedélyezve ezen a szerveren." -#: cps/editbooks.py:560 cps/editbooks.py:909 +#: cps/editbooks.py:599 cps/editbooks.py:940 msgid "File to be uploaded must have an extension" msgstr "A feltöltendő fájlnak kiterjesztéssel kell rendelkeznie!" -#: cps/editbooks.py:572 +#: cps/editbooks.py:611 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Nem sikerült létrehozni az elérési utat (engedély megtagadva): %(path)s." -#: cps/editbooks.py:577 +#: cps/editbooks.py:616 #, python-format msgid "Failed to store file %(file)s." msgstr "Nem sikerült elmenteni a %(file)s fájlt." -#: cps/editbooks.py:595 cps/editbooks.py:972 cps/web.py:1559 +#: cps/editbooks.py:634 cps/editbooks.py:1027 cps/web.py:1588 #, python-format msgid "Database error: %(error)s." msgstr "" -#: cps/editbooks.py:599 +#: cps/editbooks.py:638 #, python-format 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/editbooks.py:726 +#: cps/editbooks.py:775 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:763 +#: cps/editbooks.py:807 msgid "Metadata successfully updated" msgstr "A metaadatok sikeresen frissültek" -#: cps/editbooks.py:772 +#: cps/editbooks.py:816 msgid "Error editing book, please check logfile for details" msgstr "Hiba a könyv szerkesztése során, további részletek a naplófájlban." -#: cps/editbooks.py:810 +#: cps/editbooks.py:854 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "" -#: cps/editbooks.py:917 +#: cps/editbooks.py:948 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "" -#: cps/editbooks.py:947 +#: cps/editbooks.py:967 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "" -#: cps/editbooks.py:958 +#: cps/editbooks.py:1013 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:984 +#: cps/editbooks.py:1039 msgid "Source or destination format for conversion missing" msgstr "Az átalakításhoz hiányzik a forrás- vagy a célformátum!" -#: cps/editbooks.py:992 +#: cps/editbooks.py:1047 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "A könyv sikeresen átalakításra lett jelölve a következő formátumra: %(book_format)s" -#: cps/editbooks.py:996 +#: cps/editbooks.py:1051 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Hiba történt a könyv átalakításakor: %(res)s" @@ -544,55 +638,68 @@ msgstr "A \"%(file)s\" fájl nem található a Google Drive-on" msgid "Book path %(path)s not found on Google Drive" msgstr "A könyv elérési útja (\"%(path)s\") nem található a Google Drive-on" -#: cps/helper.py:576 +#: cps/helper.py:511 +#, fuzzy +msgid "Found an existing account for this e-mail address" +msgstr "Már létezik felhasználó ehhez az e-mail címhez." + +#: cps/helper.py:519 +msgid "This username is already taken" +msgstr "" + +#: cps/helper.py:529 +msgid "Invalid e-mail address format" +msgstr "" + +#: cps/helper.py:602 msgid "Error Downloading Cover" msgstr "" -#: cps/helper.py:579 +#: cps/helper.py:605 msgid "Cover Format Error" msgstr "" -#: cps/helper.py:589 +#: cps/helper.py:615 msgid "Failed to create path for cover" msgstr "" -#: cps/helper.py:605 +#: cps/helper.py:631 msgid "Cover-file is not a valid image file, or could not be stored" msgstr "" -#: cps/helper.py:616 +#: cps/helper.py:642 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" msgstr "" -#: cps/helper.py:629 +#: cps/helper.py:655 msgid "Only jpg/jpeg files are supported as coverfile" msgstr "" -#: cps/helper.py:680 +#: cps/helper.py:707 msgid "Unrar binary file not found" msgstr "" -#: cps/helper.py:694 +#: cps/helper.py:721 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:743 +#: cps/helper.py:769 msgid "Waiting" msgstr "Várakozás" -#: cps/helper.py:745 +#: cps/helper.py:771 msgid "Failed" msgstr "Nem sikerült" -#: cps/helper.py:747 +#: cps/helper.py:773 msgid "Started" msgstr "Elindítva" -#: cps/helper.py:749 +#: cps/helper.py:775 msgid "Finished" msgstr "Végrehajtva" -#: cps/helper.py:751 +#: cps/helper.py:777 msgid "Unknown Status" msgstr "Ismeretlen állapot" @@ -604,65 +711,82 @@ msgstr "" msgid "Kobo Setup" msgstr "" -#: cps/oauth_bb.py:76 +#: cps/oauth_bb.py:78 #, python-format msgid "Register with %(provider)s" msgstr "" -#: cps/oauth_bb.py:137 cps/remotelogin.py:133 cps/web.py:1424 +#: cps/oauth_bb.py:139 cps/remotelogin.py:133 cps/web.py:1475 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "Be vagy jelentkezve mint: %(nickname)s" -#: cps/oauth_bb.py:147 +#: cps/oauth_bb.py:149 #, python-format msgid "Link to %(oauth)s Succeeded" msgstr "" -#: cps/oauth_bb.py:153 +#: cps/oauth_bb.py:156 msgid "Login failed, No User Linked With OAuth Account" msgstr "" -#: cps/oauth_bb.py:195 +#: cps/oauth_bb.py:198 #, python-format msgid "Unlink to %(oauth)s Succeeded" msgstr "" -#: cps/oauth_bb.py:199 +#: cps/oauth_bb.py:203 #, python-format msgid "Unlink to %(oauth)s Failed" msgstr "" -#: cps/oauth_bb.py:202 +#: cps/oauth_bb.py:206 #, python-format msgid "Not Linked to %(oauth)s" msgstr "" -#: cps/oauth_bb.py:259 +#: cps/oauth_bb.py:262 msgid "Failed to log in with GitHub." msgstr "" -#: cps/oauth_bb.py:264 +#: cps/oauth_bb.py:268 msgid "Failed to fetch user info from GitHub." msgstr "" -#: cps/oauth_bb.py:275 +#: cps/oauth_bb.py:280 msgid "Failed to log in with Google." msgstr "" -#: cps/oauth_bb.py:280 +#: cps/oauth_bb.py:286 msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:312 +#: cps/oauth_bb.py:333 msgid "GitHub Oauth error, please retry later." msgstr "" -#: cps/oauth_bb.py:331 +#: cps/oauth_bb.py:336 +msgid "GitHub Oauth error: {}" +msgstr "" + +#: cps/oauth_bb.py:357 msgid "Google Oauth error, please retry later." msgstr "" -#: cps/remotelogin.py:65 cps/web.py:1471 +#: cps/oauth_bb.py:360 +msgid "Google Oauth error: {}" +msgstr "" + +#: cps/opds.py:110 cps/opds.py:199 cps/opds.py:276 cps/opds.py:328 +#: cps/templates/grid.html:14 cps/templates/list.html:14 +msgid "All" +msgstr "" + +#: cps/opds.py:385 +msgid "{} Stars" +msgstr "" + +#: cps/remotelogin.py:65 cps/web.py:1522 msgid "login" msgstr "belépés" @@ -678,7 +802,7 @@ msgstr "A token érvényessége lejárt." msgid "Success! Please return to your device" msgstr "Sikerült! Újra használható az eszköz." -#: cps/render_template.py:39 cps/web.py:415 +#: cps/render_template.py:39 cps/web.py:414 msgid "Books" msgstr "" @@ -686,7 +810,7 @@ msgstr "" msgid "Show recent books" msgstr "Legutóbbi könyvek mutatása" -#: cps/render_template.py:42 cps/templates/index.xml:18 +#: cps/render_template.py:42 cps/templates/index.xml:25 msgid "Hot Books" msgstr "Kelendő könyvek" @@ -694,127 +818,130 @@ msgstr "Kelendő könyvek" msgid "Show Hot Books" msgstr "Kelendő könyvek mutatása" -#: cps/render_template.py:45 +#: cps/render_template.py:46 cps/render_template.py:51 msgid "Downloaded Books" msgstr "" -#: cps/render_template.py:47 +#: cps/render_template.py:48 cps/render_template.py:53 +#: cps/templates/user_table.html:151 msgid "Show Downloaded Books" msgstr "" -#: cps/render_template.py:50 cps/templates/index.xml:25 cps/web.py:425 +#: cps/render_template.py:56 cps/templates/index.xml:32 cps/web.py:424 msgid "Top Rated Books" msgstr "Legjobb könyvek" -#: cps/render_template.py:52 +#: cps/render_template.py:58 cps/templates/user_table.html:145 msgid "Show Top Rated Books" msgstr "Legjobbra értékelt könyvek mutatása" -#: cps/render_template.py:53 cps/templates/index.xml:47 -#: cps/templates/index.xml:51 cps/web.py:642 +#: cps/render_template.py:59 cps/templates/index.xml:54 +#: cps/templates/index.xml:58 cps/web.py:650 msgid "Read Books" msgstr "Olvasott könyvek" -#: cps/render_template.py:55 +#: cps/render_template.py:61 msgid "Show read and unread" msgstr "Mutassa az olvasva/olvasatlan állapotot" -#: cps/render_template.py:57 cps/templates/index.xml:54 -#: cps/templates/index.xml:58 cps/web.py:645 +#: cps/render_template.py:63 cps/templates/index.xml:61 +#: cps/templates/index.xml:65 cps/web.py:653 msgid "Unread Books" msgstr "Olvasatlan könyvek" -#: cps/render_template.py:59 +#: cps/render_template.py:65 msgid "Show unread" msgstr "" -#: cps/render_template.py:60 +#: cps/render_template.py:66 msgid "Discover" msgstr "Felfedezés" -#: cps/render_template.py:62 +#: cps/render_template.py:68 cps/templates/user_table.html:143 +#: cps/templates/user_table.html:146 msgid "Show random books" msgstr "Könyvek találomra mutatása" -#: cps/render_template.py:63 cps/templates/book_table.html:50 -#: cps/templates/index.xml:76 cps/web.py:950 +#: cps/render_template.py:69 cps/templates/book_table.html:51 +#: cps/templates/index.xml:83 cps/web.py:1024 msgid "Categories" msgstr "Címkék" -#: cps/render_template.py:65 +#: cps/render_template.py:71 cps/templates/user_table.html:142 msgid "Show category selection" msgstr "Címke választó mutatása" -#: cps/render_template.py:66 cps/templates/book_edit.html:84 -#: cps/templates/book_table.html:51 cps/templates/index.xml:83 -#: cps/templates/search_form.html:62 cps/web.py:854 cps/web.py:864 +#: cps/render_template.py:72 cps/templates/book_edit.html:84 +#: cps/templates/book_table.html:52 cps/templates/index.xml:90 +#: cps/templates/search_form.html:62 cps/web.py:921 cps/web.py:931 msgid "Series" msgstr "Sorozatok" -#: cps/render_template.py:68 +#: cps/render_template.py:74 cps/templates/user_table.html:141 msgid "Show series selection" msgstr "Sorozat választó mutatása" -#: cps/render_template.py:69 cps/templates/book_table.html:49 -#: cps/templates/index.xml:62 +#: cps/render_template.py:75 cps/templates/book_table.html:50 +#: cps/templates/index.xml:69 msgid "Authors" msgstr "Szerzők" -#: cps/render_template.py:71 +#: cps/render_template.py:77 cps/templates/user_table.html:144 msgid "Show author selection" msgstr "Szerző választó mutatása" -#: cps/render_template.py:73 cps/templates/book_table.html:55 -#: cps/templates/index.xml:69 cps/web.py:833 +#: cps/render_template.py:79 cps/templates/book_table.html:56 +#: cps/templates/index.xml:76 cps/web.py:898 msgid "Publishers" msgstr "Kiadók" -#: cps/render_template.py:75 +#: cps/render_template.py:81 cps/templates/user_table.html:147 msgid "Show publisher selection" msgstr "Kiadó választó mutatása" -#: cps/render_template.py:76 cps/templates/book_table.html:53 -#: cps/templates/index.xml:90 cps/templates/search_form.html:100 cps/web.py:929 +#: cps/render_template.py:82 cps/templates/book_table.html:54 +#: cps/templates/index.xml:97 cps/templates/search_form.html:100 +#: cps/web.py:1001 msgid "Languages" msgstr "Nyelvek" -#: cps/render_template.py:79 +#: cps/render_template.py:85 cps/templates/user_table.html:139 msgid "Show language selection" msgstr "Nyelv választó mutatása" -#: cps/render_template.py:80 cps/templates/index.xml:97 +#: cps/render_template.py:86 cps/templates/index.xml:104 msgid "Ratings" msgstr "" -#: cps/render_template.py:82 +#: cps/render_template.py:88 cps/templates/user_table.html:148 msgid "Show ratings selection" msgstr "" -#: cps/render_template.py:83 cps/templates/index.xml:105 +#: cps/render_template.py:89 cps/templates/index.xml:112 msgid "File formats" msgstr "" -#: cps/render_template.py:85 +#: cps/render_template.py:91 cps/templates/user_table.html:149 msgid "Show file formats selection" msgstr "" -#: cps/render_template.py:87 cps/web.py:669 +#: cps/render_template.py:93 cps/web.py:677 msgid "Archived Books" msgstr "" -#: cps/render_template.py:89 +#: cps/render_template.py:95 cps/templates/user_table.html:150 msgid "Show archived books" msgstr "" -#: cps/render_template.py:91 cps/web.py:743 +#: cps/render_template.py:97 cps/web.py:751 msgid "Books List" msgstr "" -#: cps/render_template.py:93 +#: cps/render_template.py:99 cps/templates/user_table.html:152 msgid "Show Books List" msgstr "" -#: cps/shelf.py:69 cps/shelf.py:122 +#: cps/shelf.py:69 cps/shelf.py:124 msgid "Invalid shelf specified" msgstr "A megadott polc érvénytelen!" @@ -828,303 +955,307 @@ msgstr "Elnézést, nem vagy jogosult hozzáadni a könyvet a következő polcra msgid "Book is already part of the shelf: %(shelfname)s" msgstr "A könyv már a következő polcon van: %(shelfname)s" -#: cps/shelf.py:108 +#: cps/shelf.py:110 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "A könyv hozzá lett adva a következő polchoz: %(sname)s" -#: cps/shelf.py:126 +#: cps/shelf.py:129 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Nincs jogosultságod könyvet tenni a következő polcra: %(name)s." -#: cps/shelf.py:144 +#: cps/shelf.py:147 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "A könyvek már a következő polcon vannak: %(name)s" -#: cps/shelf.py:156 +#: cps/shelf.py:159 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "A könyvek hozzá lettek adva a következő polchoz: %(sname)s" -#: cps/shelf.py:161 +#: cps/shelf.py:166 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "Nem sikerült hozzáadni a könyveket a polchoz: %(sname)s" -#: cps/shelf.py:206 +#: cps/shelf.py:212 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "A könyv el lett távolítva a polcról: %(sname)s" -#: cps/shelf.py:214 +#: cps/shelf.py:221 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Sajnálom, nincs jogosultságot eltávolítani könyvet erről a polcról: %(sname)s" -#: cps/shelf.py:224 cps/templates/layout.html:140 +#: cps/shelf.py:231 cps/templates/layout.html:140 msgid "Create a Shelf" msgstr "Polc készítése" -#: cps/shelf.py:231 +#: cps/shelf.py:238 msgid "Edit a shelf" msgstr "Polc szerkesztése" -#: cps/shelf.py:249 +#: cps/shelf.py:256 #, python-format msgid "Shelf %(title)s created" msgstr "A következő polc létre lett hozva: %(title)s" -#: cps/shelf.py:252 +#: cps/shelf.py:259 #, python-format msgid "Shelf %(title)s changed" msgstr "A következő polc megváltoztatva: %(title)s" -#: cps/shelf.py:265 +#: cps/shelf.py:273 msgid "There was an error" msgstr "Hiba történt" -#: cps/shelf.py:281 +#: cps/shelf.py:290 #, python-format msgid "A public shelf with the name '%(title)s' already exists." msgstr "" -#: cps/shelf.py:291 +#: cps/shelf.py:301 #, python-format msgid "A private shelf with the name '%(title)s' already exists." msgstr "" -#: cps/shelf.py:358 +#: cps/shelf.py:370 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "A következő polc átrendezése: %(name)s" -#: cps/shelf.py:423 +#: cps/shelf.py:436 #, python-format msgid "Shelf: '%(name)s'" msgstr "Polc: '%(name)s'" -#: cps/shelf.py:427 +#: cps/shelf.py:440 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Hiba a polc megnyitásakor. A polc nem létezik vagy nem elérhető." -#: cps/updater.py:355 cps/updater.py:366 cps/updater.py:418 cps/updater.py:432 +#: cps/updater.py:374 cps/updater.py:385 cps/updater.py:485 cps/updater.py:500 msgid "Unexpected data while reading update information" msgstr "Ismeretlen adat a frissítési információk olvasásakor" -#: cps/updater.py:362 cps/updater.py:424 +#: cps/updater.py:381 cps/updater.py:492 msgid "No update available. You already have the latest version installed" msgstr "Nem érhető el újabb frissítés. Már a legújabb verzió van telepítve." -#: cps/updater.py:379 +#: cps/updater.py:399 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "Egy új frissítés érhető el. Kattints a lenti gombra a legújabb verzió frissítésére" -#: cps/updater.py:397 +#: cps/updater.py:417 msgid "Could not fetch update information" msgstr "Nem lehetett begyűjteni a frissítési információkat" -#: cps/updater.py:411 -msgid "No release information available" -msgstr "Nincs információ a kiadásról." +#: cps/updater.py:427 +msgid "Click on the button below to update to the latest stable version." +msgstr "" -#: cps/updater.py:468 cps/updater.py:479 cps/updater.py:498 +#: cps/updater.py:436 cps/updater.py:450 cps/updater.py:461 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "Új frissítés érhető el. Kattints az alábbi gombra a frissítéshez a következő verzióra: %(version)s" -#: cps/updater.py:489 -msgid "Click on the button below to update to the latest stable version." -msgstr "" +#: cps/updater.py:478 +msgid "No release information available" +msgstr "Nincs információ a kiadásról." -#: cps/templates/index.html:5 cps/web.py:435 +#: cps/templates/index.html:5 cps/web.py:434 msgid "Discover (Random Books)" msgstr "Felfedezés (könyvek találomra)" -#: cps/web.py:461 +#: cps/web.py:460 msgid "Hot Books (Most Downloaded)" msgstr "Kelendő könyvek (legtöbbet letöltöttek)" -#: cps/web.py:489 +#: cps/web.py:493 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:503 +#: cps/web.py:508 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Hiba történt az e-könyv megnyitásakor. A fájl nem létezik vagy nem érhető el:" -#: cps/web.py:517 +#: cps/web.py:522 #, python-format msgid "Author: %(name)s" msgstr "" -#: cps/web.py:531 +#: cps/web.py:537 #, python-format msgid "Publisher: %(name)s" msgstr "Kiadó: %(name)s" -#: cps/web.py:544 +#: cps/web.py:550 #, python-format msgid "Series: %(serie)s" msgstr "Sorozat: %(serie)s" -#: cps/web.py:557 +#: cps/web.py:563 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:570 +#: cps/web.py:576 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:584 +#: cps/web.py:592 #, python-format msgid "Category: %(name)s" msgstr "Címke: %(name)s" -#: cps/web.py:603 +#: cps/web.py:611 #, python-format msgid "Language: %(name)s" msgstr "Nyelv: %(name)s" -#: cps/web.py:633 +#: cps/web.py:641 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:703 cps/web.py:1248 +#: cps/templates/layout.html:56 cps/web.py:711 cps/web.py:1314 msgid "Advanced Search" msgstr "Részletes keresés" #: cps/templates/book_edit.html:214 cps/templates/feed.xml:33 #: cps/templates/index.xml:11 cps/templates/layout.html:45 #: cps/templates/layout.html:48 cps/templates/search_form.html:194 -#: cps/web.py:715 cps/web.py:987 +#: cps/web.py:723 cps/web.py:1061 msgid "Search" msgstr "Keresés" -#: cps/web.py:882 +#: cps/templates/admin.html:16 cps/web.py:876 +msgid "Downloads" +msgstr "Letöltések" + +#: cps/web.py:952 msgid "Ratings list" msgstr "" -#: cps/web.py:901 +#: cps/web.py:973 msgid "File formats list" msgstr "" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:964 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1038 msgid "Tasks" msgstr "Feladatok" -#: cps/web.py:1108 +#: cps/web.py:1182 msgid "Published after " msgstr "Kiadva ezután: " -#: cps/web.py:1115 +#: cps/web.py:1189 msgid "Published before " msgstr "Kiadva ezelőtt: " -#: cps/web.py:1145 +#: cps/web.py:1211 #, python-format msgid "Rating <= %(rating)s" msgstr "Értékelés <= %(rating)s" -#: cps/web.py:1147 +#: cps/web.py:1213 #, python-format msgid "Rating >= %(rating)s" msgstr "Értékelés <= %(rating)s" -#: cps/web.py:1149 +#: cps/web.py:1215 #, python-format msgid "Read Status = %(status)s" msgstr "" -#: cps/web.py:1325 +#: cps/web.py:1387 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "A könyv sikeresen küldésre lett jelölve a következő címre: %(kindlemail)s" -#: cps/web.py:1329 +#: cps/web.py:1391 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Hiba történt a könyv küldésekor: %(res)s" -#: cps/web.py:1331 +#: cps/web.py:1393 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Először be kell állítani a kindle e-mail címet..." -#: cps/web.py:1348 +#: cps/web.py:1410 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "" -#: cps/web.py:1349 cps/web.py:1359 cps/web.py:1366 cps/web.py:1389 -#: cps/web.py:1393 cps/web.py:1398 cps/web.py:1402 +#: cps/web.py:1411 cps/web.py:1418 cps/web.py:1424 cps/web.py:1443 +#: cps/web.py:1447 cps/web.py:1453 msgid "register" msgstr "regisztrálás" -#: cps/web.py:1364 -msgid "Invalid e-mail address format" -msgstr "" - -#: cps/web.py:1391 +#: cps/web.py:1445 msgid "Your e-mail is not allowed to register" msgstr "Nem engedélyezett a megadott e-mail cím bejegyzése" -#: cps/web.py:1394 +#: cps/web.py:1448 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Jóváhagyó levél elküldve az email címedre." -#: cps/web.py:1397 -msgid "This username or e-mail address is already in use." -msgstr "Ez a felhasználónév vagy e-mail cím már használatban van." - -#: cps/web.py:1414 +#: cps/web.py:1465 msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1431 +#: cps/web.py:1482 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "" -#: cps/web.py:1437 +#: cps/web.py:1488 #, python-format msgid "Could not login: %(message)s" msgstr "" -#: cps/web.py:1441 cps/web.py:1465 +#: cps/web.py:1492 cps/web.py:1516 msgid "Wrong Username or Password" msgstr "Rossz felhasználó név vagy jelszó!" -#: cps/web.py:1448 +#: cps/web.py:1499 msgid "New Password was send to your email address" msgstr "" -#: cps/web.py:1454 +#: cps/web.py:1505 msgid "Please enter valid username to reset password" msgstr "" -#: cps/web.py:1460 +#: cps/web.py:1511 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "" -#: cps/web.py:1498 cps/web.py:1583 +#: cps/web.py:1565 cps/web.py:1612 #, python-format msgid "%(name)s's profile" msgstr "%(name)s profilja" -#: cps/web.py:1550 +#: cps/web.py:1579 msgid "Profile updated" msgstr "A profil frissítve." -#: cps/web.py:1610 cps/web.py:1613 cps/web.py:1616 cps/web.py:1619 -#: cps/web.py:1626 cps/web.py:1631 +#: cps/web.py:1583 +msgid "Found an existing account for this e-mail address." +msgstr "Már létezik felhasználó ehhez az e-mail címhez." + +#: cps/web.py:1639 cps/web.py:1642 cps/web.py:1645 cps/web.py:1648 +#: cps/web.py:1655 cps/web.py:1660 msgid "Read a Book" msgstr "Egy olvasott könyv" +#: cps/services/gmail.py:41 +msgid "Found no valid gmail.json file with OAuth information" +msgstr "" + #: cps/tasks/convert.py:114 #, python-format msgid "Calibre ebook-convert %(tool)s not found" @@ -1163,221 +1294,231 @@ msgstr "" msgid "Users" msgstr "Felhasználók listája" -#: cps/templates/admin.html:12 cps/templates/login.html:8 +#: cps/templates/admin.html:13 cps/templates/login.html:8 #: cps/templates/login.html:9 cps/templates/register.html:8 -#: cps/templates/user_edit.html:9 +#: cps/templates/user_edit.html:9 cps/templates/user_table.html:121 msgid "Username" msgstr "Felhasználói név" -#: cps/templates/admin.html:13 cps/templates/register.html:13 -#: cps/templates/user_edit.html:14 +#: cps/templates/admin.html:14 cps/templates/register.html:13 +#: cps/templates/user_edit.html:14 cps/templates/user_table.html:122 msgid "E-mail Address" msgstr "E-mail" -#: cps/templates/admin.html:14 cps/templates/user_edit.html:27 +#: cps/templates/admin.html:15 cps/templates/user_edit.html:27 msgid "Send to Kindle E-mail Address" msgstr "Kindle" -#: cps/templates/admin.html:15 -msgid "Downloads" -msgstr "Letöltések" - -#: cps/templates/admin.html:16 cps/templates/layout.html:77 +#: cps/templates/admin.html:17 cps/templates/layout.html:77 +#: cps/templates/user_table.html:130 msgid "Admin" msgstr "Rendszergazda" -#: cps/templates/admin.html:17 cps/templates/login.html:12 +#: cps/templates/admin.html:18 cps/templates/login.html:12 #: cps/templates/login.html:13 cps/templates/user_edit.html:22 msgid "Password" msgstr "Jelszó" -#: cps/templates/admin.html:18 cps/templates/layout.html:66 +#: cps/templates/admin.html:19 cps/templates/layout.html:66 +#: cps/templates/user_table.html:132 msgid "Upload" msgstr "Feltöltés" -#: cps/templates/admin.html:19 cps/templates/detail.html:18 +#: cps/templates/admin.html:20 cps/templates/detail.html:18 #: cps/templates/detail.html:27 cps/templates/shelf.html:6 +#: cps/templates/user_table.html:133 msgid "Download" msgstr "Letöltés" -#: cps/templates/admin.html:20 +#: cps/templates/admin.html:21 msgid "View Books" msgstr "" -#: cps/templates/admin.html:21 +#: cps/templates/admin.html:22 cps/templates/user_table.html:118 +#: cps/templates/user_table.html:135 msgid "Edit" msgstr "Szerkesztés" -#: cps/templates/admin.html:22 cps/templates/book_edit.html:16 -#: cps/templates/book_table.html:57 cps/templates/modal_dialogs.html:63 +#: cps/templates/admin.html:23 cps/templates/book_edit.html:16 +#: cps/templates/book_table.html:58 cps/templates/modal_dialogs.html:63 #: cps/templates/modal_dialogs.html:116 cps/templates/user_edit.html:66 +#: cps/templates/user_table.html:136 msgid "Delete" msgstr "Törlés" -#: cps/templates/admin.html:23 +#: cps/templates/admin.html:24 msgid "Public Shelf" msgstr "" -#: cps/templates/admin.html:44 +#: cps/templates/admin.html:47 msgid "Add New User" msgstr "" -#: cps/templates/admin.html:46 +#: cps/templates/admin.html:49 msgid "Import LDAP Users" msgstr "" -#: cps/templates/admin.html:53 +#: cps/templates/admin.html:56 msgid "E-mail Server Settings" msgstr "SMTP e-mail kiszolgáló beállítások" -#: cps/templates/admin.html:57 cps/templates/email_edit.html:11 +#: cps/templates/admin.html:61 cps/templates/email_edit.html:30 msgid "SMTP Hostname" msgstr "SMTP szervernév" -#: cps/templates/admin.html:61 cps/templates/email_edit.html:15 +#: cps/templates/admin.html:65 cps/templates/email_edit.html:34 msgid "SMTP Port" msgstr "SMTP port" -#: cps/templates/admin.html:65 cps/templates/email_edit.html:19 +#: cps/templates/admin.html:69 cps/templates/email_edit.html:38 msgid "Encryption" msgstr "SSL" -#: cps/templates/admin.html:69 cps/templates/email_edit.html:27 +#: cps/templates/admin.html:73 cps/templates/email_edit.html:46 msgid "SMTP Login" msgstr "SMTP felhasználó" -#: cps/templates/admin.html:73 cps/templates/email_edit.html:35 +#: cps/templates/admin.html:77 cps/templates/admin.html:88 +#: cps/templates/email_edit.html:54 msgid "From E-mail" msgstr "Küldő e-mail cím" #: cps/templates/admin.html:84 +msgid "E-Mail Service" +msgstr "" + +#: cps/templates/admin.html:85 +msgid "Gmail via Oauth2" +msgstr "" + +#: cps/templates/admin.html:100 msgid "Configuration" msgstr "Konfiguráció" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:103 msgid "Calibre Database Directory" msgstr "Calibre adatbázis mappája:" -#: cps/templates/admin.html:91 cps/templates/config_edit.html:136 +#: cps/templates/admin.html:107 cps/templates/config_edit.html:136 msgid "Log Level" msgstr "Naplózás szintje:" -#: cps/templates/admin.html:95 +#: cps/templates/admin.html:111 msgid "Port" msgstr "Port:" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:116 msgid "External Port" msgstr "" -#: cps/templates/admin.html:107 cps/templates/config_view_edit.html:27 +#: cps/templates/admin.html:123 cps/templates/config_view_edit.html:27 msgid "Books per Page" msgstr "Könyvek oldalanként:" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:127 msgid "Uploads" msgstr "Feltöltés:" -#: cps/templates/admin.html:115 +#: cps/templates/admin.html:131 msgid "Anonymous Browsing" msgstr "Böngészés bejelentkezés nélkül:" -#: cps/templates/admin.html:119 +#: cps/templates/admin.html:135 msgid "Public Registration" msgstr "Nyílvános regisztráció:" -#: cps/templates/admin.html:123 +#: cps/templates/admin.html:139 msgid "Magic Link Remote Login" msgstr "Távoli belépés:" -#: cps/templates/admin.html:127 +#: cps/templates/admin.html:143 msgid "Reverse Proxy Login" msgstr "" -#: cps/templates/admin.html:132 +#: cps/templates/admin.html:148 msgid "Reverse proxy header name" msgstr "" -#: cps/templates/admin.html:137 +#: cps/templates/admin.html:153 msgid "Edit Basic Configuration" msgstr "" -#: cps/templates/admin.html:138 +#: cps/templates/admin.html:154 msgid "Edit UI Configuration" msgstr "" -#: cps/templates/admin.html:143 +#: cps/templates/admin.html:159 msgid "Administration" msgstr "Adminisztráció" -#: cps/templates/admin.html:144 +#: cps/templates/admin.html:160 msgid "Download Debug Package" msgstr "" -#: cps/templates/admin.html:145 +#: cps/templates/admin.html:161 msgid "View Logs" msgstr "" -#: cps/templates/admin.html:148 +#: cps/templates/admin.html:164 msgid "Reconnect Calibre Database" msgstr "Újracsatlakozás a Calibre adatbázishoz" -#: cps/templates/admin.html:149 +#: cps/templates/admin.html:165 msgid "Restart" msgstr "A Calibre adatbázis újraindítása" -#: cps/templates/admin.html:150 +#: cps/templates/admin.html:166 msgid "Shutdown" msgstr "A Calibre adatbázis leállítása" -#: cps/templates/admin.html:155 +#: cps/templates/admin.html:171 msgid "Update" msgstr "Frissítés" -#: cps/templates/admin.html:159 +#: cps/templates/admin.html:175 msgid "Version" msgstr "Verzió" -#: cps/templates/admin.html:160 +#: cps/templates/admin.html:176 msgid "Details" msgstr "Részletek" -#: cps/templates/admin.html:166 +#: cps/templates/admin.html:182 msgid "Current version" msgstr "Jelenlegi verzió" -#: cps/templates/admin.html:173 +#: cps/templates/admin.html:189 msgid "Check for Update" msgstr "Frissítés keresése" -#: cps/templates/admin.html:174 +#: cps/templates/admin.html:190 msgid "Perform Update" msgstr "Frissítés elkezdése" -#: cps/templates/admin.html:187 +#: cps/templates/admin.html:203 msgid "Are you sure you want to restart?" msgstr "Valóban újra akarod indítani a Calibre-Web-et?" -#: cps/templates/admin.html:192 cps/templates/admin.html:206 -#: cps/templates/admin.html:226 cps/templates/shelf.html:95 +#: cps/templates/admin.html:208 cps/templates/admin.html:222 +#: cps/templates/admin.html:242 cps/templates/shelf.html:95 msgid "OK" msgstr "OK" -#: cps/templates/admin.html:193 cps/templates/admin.html:207 -#: cps/templates/book_edit.html:192 cps/templates/book_table.html:84 +#: cps/templates/admin.html:209 cps/templates/admin.html:223 +#: cps/templates/book_edit.html:192 cps/templates/book_table.html:85 #: cps/templates/config_edit.html:427 cps/templates/config_view_edit.html:151 -#: cps/templates/email_edit.html:47 cps/templates/modal_dialogs.html:64 -#: cps/templates/modal_dialogs.html:99 cps/templates/modal_dialogs.html:117 +#: cps/templates/modal_dialogs.html:64 cps/templates/modal_dialogs.html:99 +#: cps/templates/modal_dialogs.html:117 cps/templates/modal_dialogs.html:135 #: cps/templates/shelf.html:96 cps/templates/shelf_edit.html:19 #: cps/templates/user_edit.html:132 msgid "Cancel" msgstr "" -#: cps/templates/admin.html:205 +#: cps/templates/admin.html:221 msgid "Are you sure you want to shutdown?" msgstr "Valóban le akarod állítani a Calibre-Web-et?" -#: cps/templates/admin.html:217 +#: cps/templates/admin.html:233 msgid "Updating, please do not reload this page" msgstr "Frissítés folyamatban, ne töltsd újra az oldalt" @@ -1485,6 +1626,7 @@ msgid "Identifier Value" msgstr "" #: cps/templates/book_edit.html:72 cps/templates/book_edit.html:289 +#: cps/templates/user_table.html:23 msgid "Remove" msgstr "" @@ -1550,7 +1692,7 @@ msgid "Fetch Metadata" msgstr "Metaadatok beszerzése" #: cps/templates/book_edit.html:191 cps/templates/config_edit.html:424 -#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45 +#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:64 #: cps/templates/shelf_edit.html:17 cps/templates/shelf_order.html:40 #: cps/templates/user_edit.html:130 msgid "Save" @@ -1590,96 +1732,98 @@ msgstr "Keresési hiba!" msgid "No Result(s) found! Please try another keyword." msgstr "Nincs találat! Próbálj másik kulcsszót." -#: cps/templates/book_table.html:10 cps/templates/book_table.html:52 +#: cps/templates/book_table.html:11 cps/templates/book_table.html:53 +#: cps/templates/user_table.html:13 cps/templates/user_table.html:65 +#: cps/templates/user_table.html:88 msgid "This Field is Required" msgstr "" -#: cps/templates/book_table.html:23 +#: cps/templates/book_table.html:24 msgid "Merge selected books" msgstr "" -#: cps/templates/book_table.html:24 +#: cps/templates/book_table.html:25 cps/templates/user_table.html:111 msgid "Remove Selections" msgstr "" -#: cps/templates/book_table.html:30 +#: cps/templates/book_table.html:31 msgid "Update Title Sort automatically" msgstr "" -#: cps/templates/book_table.html:34 +#: cps/templates/book_table.html:35 msgid "Update Author Sort automatically" msgstr "" -#: cps/templates/book_table.html:46 +#: cps/templates/book_table.html:47 msgid "Enter Title" msgstr "" -#: cps/templates/book_table.html:46 cps/templates/config_view_edit.html:23 +#: cps/templates/book_table.html:47 cps/templates/config_view_edit.html:23 #: cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Név" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Enter Title Sort" msgstr "" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Title Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Enter Author Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Author Sort" msgstr "" -#: cps/templates/book_table.html:49 +#: cps/templates/book_table.html:50 msgid "Enter Authors" msgstr "" -#: cps/templates/book_table.html:50 +#: cps/templates/book_table.html:51 msgid "Enter Categories" msgstr "" -#: cps/templates/book_table.html:51 +#: cps/templates/book_table.html:52 msgid "Enter Series" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Enter title" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Series Index" msgstr "" -#: cps/templates/book_table.html:53 +#: cps/templates/book_table.html:54 msgid "Enter Languages" msgstr "" -#: cps/templates/book_table.html:54 +#: cps/templates/book_table.html:55 msgid "Publishing Date" msgstr "" -#: cps/templates/book_table.html:55 +#: cps/templates/book_table.html:56 msgid "Enter Publishers" msgstr "" -#: cps/templates/book_table.html:70 cps/templates/modal_dialogs.html:46 +#: cps/templates/book_table.html:71 cps/templates/modal_dialogs.html:46 msgid "Are you really sure?" msgstr "Biztosan?" -#: cps/templates/book_table.html:74 +#: cps/templates/book_table.html:75 msgid "Books with Title will be merged from:" msgstr "" -#: cps/templates/book_table.html:78 +#: cps/templates/book_table.html:79 msgid "Into Book with Title:" msgstr "" -#: cps/templates/book_table.html:83 +#: cps/templates/book_table.html:84 msgid "Merge" msgstr "" @@ -1864,7 +2008,7 @@ msgid "LDAP Encryption" msgstr "" #: cps/templates/config_edit.html:268 cps/templates/config_view_edit.html:61 -#: cps/templates/email_edit.html:21 +#: cps/templates/email_edit.html:40 msgid "None" msgstr "Nincs" @@ -2077,6 +2221,7 @@ msgid "Default Visibilities for New Users" msgstr "Új felhasználók alapértelmezett látható elemei" #: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82 +#: cps/templates/user_table.html:138 msgid "Show Random Books in Detail View" msgstr "Mutasson könyveket találomra a részletes nézetben" @@ -2150,43 +2295,69 @@ msgstr "" msgid "Edit Metadata" msgstr "Metaadatok szerkesztése" -#: cps/templates/email_edit.html:22 +#: cps/templates/email_edit.html:12 +msgid "Choose Server Type" +msgstr "" + +#: cps/templates/email_edit.html:14 +msgid "Use Standard E-Mail Account" +msgstr "" + +#: cps/templates/email_edit.html:15 +msgid "Gmail Account with OAuth2 Verfification" +msgstr "" + +#: cps/templates/email_edit.html:21 +msgid "Setup Gmail Account as E-Mail Server" +msgstr "" + +#: cps/templates/email_edit.html:23 +msgid "Revoke Gmail Access" +msgstr "" + +#: cps/templates/email_edit.html:41 msgid "STARTTLS" msgstr "STARTTLS" -#: cps/templates/email_edit.html:23 +#: cps/templates/email_edit.html:42 msgid "SSL/TLS" msgstr "SSL/TLS" -#: cps/templates/email_edit.html:31 +#: cps/templates/email_edit.html:50 msgid "SMTP Password" msgstr "SMTP jelszó" -#: cps/templates/email_edit.html:38 +#: cps/templates/email_edit.html:57 msgid "Attachment Size Limit" msgstr "" -#: cps/templates/email_edit.html:46 +#: cps/templates/email_edit.html:65 msgid "Save and Send Test E-mail" msgstr "Beállítások mentése és teszt e-mail küldése" -#: cps/templates/email_edit.html:51 +#: cps/templates/email_edit.html:69 cps/templates/layout.html:29 +#: cps/templates/shelf_order.html:41 cps/templates/user_table.html:158 +msgid "Back" +msgstr "Vissza" + +#: cps/templates/email_edit.html:73 msgid "Allowed Domains (Whitelist)" msgstr "Regisztráláshoz engedélyezett tartományok" -#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80 +#: cps/templates/email_edit.html:76 cps/templates/email_edit.html:102 msgid "Add Domain" msgstr "Tartomány hozzáadása" -#: cps/templates/email_edit.html:57 cps/templates/email_edit.html:83 +#: cps/templates/email_edit.html:79 cps/templates/email_edit.html:105 +#: cps/templates/user_table.html:26 msgid "Add" msgstr "Hozzáadás" -#: cps/templates/email_edit.html:62 cps/templates/email_edit.html:72 +#: cps/templates/email_edit.html:84 cps/templates/email_edit.html:94 msgid "Enter domainname" msgstr "Tartomány megadása" -#: cps/templates/email_edit.html:68 +#: cps/templates/email_edit.html:90 msgid "Denied Domains (Blacklist)" msgstr "" @@ -2198,10 +2369,6 @@ msgstr "Következő" msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):" msgstr "" -#: cps/templates/grid.html:14 cps/templates/list.html:14 -msgid "All" -msgstr "" - #: cps/templates/http_error.html:38 msgid "Create Issue" msgstr "" @@ -2232,64 +2399,72 @@ msgstr "" msgid "Start" msgstr "Kezdés" +#: cps/templates/index.xml:18 +msgid "Alphabetical Books" +msgstr "" + #: cps/templates/index.xml:22 +msgid "Books sorted alphabetically" +msgstr "" + +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Downloads." msgstr "Ebből a katalógusból származó népszerű kiadványok letöltések alapján." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:36 msgid "Popular publications from this catalog based on Rating." msgstr "Ebből a katalógusból származó népszerű kiadványok értékelések alapján." -#: cps/templates/index.xml:32 +#: cps/templates/index.xml:39 msgid "Recently added Books" msgstr "" -#: cps/templates/index.xml:36 +#: cps/templates/index.xml:43 msgid "The latest Books" msgstr "A legfrissebb könyvek" -#: cps/templates/index.xml:39 +#: cps/templates/index.xml:46 msgid "Random Books" msgstr "Könyvek találomra" -#: cps/templates/index.xml:43 +#: cps/templates/index.xml:50 msgid "Show Random Books" msgstr "Mutass könyveket találomra" -#: cps/templates/index.xml:66 +#: cps/templates/index.xml:73 msgid "Books ordered by Author" msgstr "Könyvek szerző szerint rendezve" -#: cps/templates/index.xml:73 +#: cps/templates/index.xml:80 msgid "Books ordered by publisher" msgstr "Könyvek kiadók szerint rendezve" -#: cps/templates/index.xml:80 +#: cps/templates/index.xml:87 msgid "Books ordered by category" msgstr "Könyvek címke szerint rendezve" -#: cps/templates/index.xml:87 +#: cps/templates/index.xml:94 msgid "Books ordered by series" msgstr "Könyvek sorozat szerint rendezve" -#: cps/templates/index.xml:94 +#: cps/templates/index.xml:101 msgid "Books ordered by Languages" msgstr "" -#: cps/templates/index.xml:101 +#: cps/templates/index.xml:108 msgid "Books ordered by Rating" msgstr "" -#: cps/templates/index.xml:109 +#: cps/templates/index.xml:116 msgid "Books ordered by file formats" msgstr "" -#: cps/templates/index.xml:112 cps/templates/layout.html:135 +#: cps/templates/index.xml:119 cps/templates/layout.html:135 #: cps/templates/search_form.html:80 msgid "Shelves" msgstr "" -#: cps/templates/index.xml:116 +#: cps/templates/index.xml:123 msgid "Books organized in shelves" msgstr "" @@ -2297,10 +2472,6 @@ msgstr "" msgid "Home" msgstr "Kezdőlap" -#: cps/templates/layout.html:29 cps/templates/shelf_order.html:41 -msgid "Back" -msgstr "Vissza" - #: cps/templates/layout.html:35 msgid "Toggle Navigation" msgstr "Navigáció átkapcsolása" @@ -2462,6 +2633,11 @@ msgstr "" msgid "Select" msgstr "" +#: cps/templates/modal_dialogs.html:134 +#, fuzzy +msgid "Ok" +msgstr " " + #: cps/templates/osd.xml:5 msgid "Calibre-Web eBook Catalog" msgstr "Calibre-Web e-könyv katalógus" @@ -2767,10 +2943,6 @@ msgstr "Felhasználó jelszavának alaphelyzetbe állítása" msgid "Language of Books" msgstr "Mutasd a könyveket a következő nyelvvel" -#: cps/templates/user_edit.html:44 -msgid "Show All" -msgstr "Mindent mutass" - #: cps/templates/user_edit.html:53 msgid "OAuth Settings" msgstr "" @@ -2795,7 +2967,7 @@ msgstr "" msgid "Add allowed/Denied Custom Column Values" msgstr "" -#: cps/templates/user_edit.html:135 +#: cps/templates/user_edit.html:135 cps/templates/user_table.html:153 msgid "Delete User" msgstr "A felhasználó törlése" @@ -2803,3 +2975,92 @@ msgstr "A felhasználó törlése" msgid "Generate Kobo Auth URL" msgstr "" +#: cps/templates/user_table.html:68 cps/templates/user_table.html:91 +msgid "Select..." +msgstr "" + +#: cps/templates/user_table.html:118 +#, fuzzy +msgid "Edit User" +msgstr "Rendszergazda felhasználó" + +#: cps/templates/user_table.html:121 +#, fuzzy +msgid "Enter Username" +msgstr "Válassz egy felhasználónevet" + +#: cps/templates/user_table.html:122 +#, fuzzy +msgid "Enter E-mail Address" +msgstr "Az e-mail címed" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Enter Kindle E-mail Address" +msgstr "Kindle" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Kindle E-mail" +msgstr "Teszt e-mail" + +#: cps/templates/user_table.html:124 +#, fuzzy +msgid "Locale" +msgstr "Méretezés" + +#: cps/templates/user_table.html:125 +msgid "Visible Book Languages" +msgstr "" + +#: cps/templates/user_table.html:126 +msgid "Edit Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:126 +msgid "Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +msgid "Edit Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +msgid "Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:128 +msgid "Edit Allowed Column Values" +msgstr "" + +#: cps/templates/user_table.html:128 +msgid "Allowed Column Values" +msgstr "" + +#: cps/templates/user_table.html:129 +msgid "Edit Denied Column Values" +msgstr "" + +#: cps/templates/user_table.html:129 +msgid "Denied Columns Values" +msgstr "" + +#: cps/templates/user_table.html:131 +#, fuzzy +msgid "Change Password" +msgstr "Jelszó változtatásának engedélyezése" + +#: cps/templates/user_table.html:134 +msgid "View" +msgstr "" + +#: cps/templates/user_table.html:137 +#, fuzzy +msgid "Edit Public Shelfs" +msgstr "Polc szerkesztése" + +#: cps/templates/user_table.html:140 +#, fuzzy +msgid "Show read/unread selection" +msgstr "Sorozat választó mutatása" + diff --git a/cps/translations/it/LC_MESSAGES/messages.mo b/cps/translations/it/LC_MESSAGES/messages.mo index 000c2fe8..36e5189a 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 75a73fba..b8936aa6 100644 --- a/cps/translations/it/LC_MESSAGES/messages.po +++ b/cps/translations/it/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: 2021-03-27 12:16+0100\n" +"POT-Creation-Date: 2021-05-01 16:33+0200\n" "PO-Revision-Date: 2017-04-04 15:09+0200\n" "Last-Translator: ElQuimm \n" "Language: it\n" @@ -15,7 +15,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" +"Generated-By: Babel 2.8.0\n" #: cps/about.py:43 msgid "installed" @@ -29,310 +29,402 @@ msgstr "non installato" msgid "Statistics" msgstr "Statistiche" -#: cps/admin.py:149 +#: cps/admin.py:151 msgid "Server restarted, please reload page" msgstr "Server riavviato, per favore ricarica la pagina" -#: cps/admin.py:151 +#: cps/admin.py:153 msgid "Performing shutdown of server, please close window" msgstr "Eseguo l'arresto del server, per favore chiudi la finestra" -#: cps/admin.py:159 +#: cps/admin.py:161 msgid "Reconnect successful" msgstr "Ricollegato con successo" -#: cps/admin.py:162 +#: cps/admin.py:164 msgid "Unknown command" msgstr "Comando sconosciuto" -#: cps/admin.py:172 cps/editbooks.py:662 cps/editbooks.py:674 -#: cps/editbooks.py:777 cps/editbooks.py:779 cps/editbooks.py:806 -#: cps/editbooks.py:822 cps/updater.py:521 cps/uploader.py:94 +#: cps/admin.py:174 cps/editbooks.py:668 cps/editbooks.py:682 +#: cps/editbooks.py:821 cps/editbooks.py:823 cps/editbooks.py:850 +#: cps/editbooks.py:866 cps/updater.py:555 cps/uploader.py:94 #: cps/uploader.py:104 msgid "Unknown" msgstr "Sconosciuto" -#: cps/admin.py:193 +#: cps/admin.py:195 msgid "Admin page" msgstr "Pagina di amministrazione" -#: cps/admin.py:215 +#: cps/admin.py:217 msgid "UI Configuration" msgstr "Configurazione dell'interfaccia utente" -#: cps/admin.py:247 cps/admin.py:936 +#: cps/admin.py:249 cps/templates/admin.html:46 +msgid "Edit Users" +msgstr "Modifica gli utenti" + +#: cps/admin.py:290 +msgid "all" +msgstr "tutti" + +#: cps/admin.py:315 cps/admin.py:1486 +msgid "User not found" +msgstr "Utente non trovato" + +#: cps/admin.py:329 +#, fuzzy +msgid "{} users deleted successfully" +msgstr "{} utente importato con successo" + +#: cps/admin.py:351 cps/templates/user_edit.html:44 +#: cps/templates/user_table.html:69 +msgid "Show All" +msgstr "tutte le lingue presenti" + +#: cps/admin.py:372 cps/admin.py:378 +msgid "Malformed request" +msgstr "" + +#: cps/admin.py:390 cps/admin.py:1368 +msgid "Guest Name can't be changed" +msgstr "Il nome dell'utente Guest (ospite) non può essere modificato" + +#: cps/admin.py:400 +msgid "Guest can't have this role" +msgstr "L'utente Guest (ospite) non può avere questo ruolo" + +#: cps/admin.py:412 cps/admin.py:1333 +msgid "No admin user remaining, can't remove admin role" +msgstr "Non rimarrebbe nessun utente amministratore, non posso rimuovere il ruolo di amministratore" + +#: cps/admin.py:416 cps/admin.py:430 +msgid "Value has to be true or false" +msgstr "" + +#: cps/admin.py:418 +msgid "Invalid role" +msgstr "" + +#: cps/admin.py:422 +msgid "Guest can't have this view" +msgstr " L'utente Guest (ospite) non può avere questa schermata" + +#: cps/admin.py:432 +msgid "Invalid view" +msgstr "" + +#: cps/admin.py:435 +msgid "Guest's Locale is determined automatically and can't be set" +msgstr "Le impostazioni locali dell'utente Guest (ospite) sono determinate automaticamente e non possono essere configurate" + +#: cps/admin.py:439 +msgid "No Valid Locale Given" +msgstr "" + +#: cps/admin.py:450 +msgid "No Valid Book Language Given" +msgstr "" + +#: cps/admin.py:452 +msgid "Parameter not found" +msgstr "" + +#: cps/admin.py:506 cps/admin.py:1219 msgid "Calibre-Web configuration updated" msgstr "La configurazione di Calibre-Web è stata aggiornata" -#: cps/admin.py:258 +#: cps/admin.py:518 msgid "Do you really want to delete the Kobo Token?" msgstr "Vuoi veramente eliminare il token di Kobo?" -#: cps/admin.py:260 +#: cps/admin.py:520 msgid "Do you really want to delete this domain?" msgstr "Vuoi veramente eliminare questo dominio?" -#: cps/admin.py:262 +#: cps/admin.py:522 msgid "Do you really want to delete this user?" msgstr "Vuoi veramente eliminare questo utente?" -#: cps/admin.py:264 cps/templates/shelf.html:90 +#: cps/admin.py:524 cps/templates/shelf.html:90 msgid "Are you sure you want to delete this shelf?" msgstr "Vuoi veramente eliminare questo scaffale?" -#: cps/admin.py:510 cps/admin.py:516 cps/admin.py:526 cps/admin.py:536 -#: cps/templates/modal_dialogs.html:29 +#: cps/admin.py:526 +msgid "Are you sure you want to change locales of selected user(s)?" +msgstr "Sei sicuro di voler modificare le impostazioni locali dell'/degli utente/i selezionato/i?" + +#: cps/admin.py:528 +msgid "Are you sure you want to change visible book languages for selected user(s)?" +msgstr "Sei sicuro di voler modificare le impostazioni delle lingue visualizzabili dell'/degli utente/i selezionato/i?" + +#: cps/admin.py:530 +msgid "Are you sure you want to change the selected role for the selected user(s)?" +msgstr "Sei sicuro di voler modificare il ruolo evidenziato dell'/degli utente/i selezionato/i?" + +#: cps/admin.py:532 +#, fuzzy +msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" +msgstr "Sei sicuro di voler modificare le impostazioni delle restrizioni di visualizzazione dell'/degli utente/i selezionato/i?" + +#: cps/admin.py:534 +msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" +msgstr "Sei sicuro di voler modificare le impostazioni delle restrizioni di visualizzazione dell'/degli utente/i selezionato/i?" + +#: cps/admin.py:683 +msgid "Tag not found" +msgstr "" + +#: cps/admin.py:695 +msgid "Invalid Action" +msgstr "" + +#: cps/admin.py:800 cps/admin.py:806 cps/admin.py:816 cps/admin.py:826 +#: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:43 msgid "Deny" msgstr "Nega" -#: cps/admin.py:512 cps/admin.py:518 cps/admin.py:528 cps/admin.py:538 -#: cps/templates/modal_dialogs.html:28 +#: cps/admin.py:802 cps/admin.py:808 cps/admin.py:818 cps/admin.py:828 +#: cps/templates/modal_dialogs.html:28 cps/templates/user_table.html:48 msgid "Allow" msgstr "Permetti" -#: cps/admin.py:681 +#: cps/admin.py:971 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json non è configurato per Web Application" -#: cps/admin.py:723 +#: cps/admin.py:1016 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "La posizione del Logfile non è valida, per favore indica il percorso corretto" -#: cps/admin.py:729 +#: cps/admin.py:1022 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "La posizione dell'Access Logfile non è valida, per favore indica il percorso corretto" -#: cps/admin.py:738 +#: cps/admin.py:1052 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "Per favore digita un Provider LDAP, porta, DN e User Object Identifier" -#: cps/admin.py:752 cps/admin.py:760 +#: cps/admin.py:1067 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "LDAP Group Object Filter deve avere un \"%s\" Format Identifier" -#: cps/admin.py:755 cps/admin.py:763 +#: cps/admin.py:1070 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "LDAP Group Object Filter contiene una parentesi senza la corrispettiva" -#: cps/admin.py:768 +#: cps/admin.py:1075 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "LDAP User Object Filter deve avere un \"%s\" Format Identifier" -#: cps/admin.py:771 +#: cps/admin.py:1078 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "LDAP User Object Filter contiene una parentesi senza la corrispettiva" -#: cps/admin.py:779 +#: cps/admin.py:1086 #, python-format msgid "LDAP Member User Filter needs to Have One \"%s\" Format Identifier" msgstr "LDAP Member User Filter deve avere un \"%s\" Format Identifier" -#: cps/admin.py:782 +#: cps/admin.py:1089 msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "LDAP Member User Filter contiene una parentesi senza la corrispettiva" -#: cps/admin.py:790 +#: cps/admin.py:1097 msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" msgstr "LDAP CACertificate, il certificato o la posizione della chiave non sono corretti, per favore indica il percorso corretto" -#: cps/admin.py:841 +#: cps/admin.py:1123 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "La posizione del Keyfile non è valida, per favore indica il percorso corretto" -#: cps/admin.py:847 +#: cps/admin.py:1129 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "La posizione del Certfile non è valida, per favore indica il percorso corretto" -#: cps/admin.py:917 cps/admin.py:1024 cps/admin.py:1047 cps/admin.py:1168 -#: cps/shelf.py:102 cps/shelf.py:159 cps/shelf.py:200 cps/shelf.py:261 -#: cps/shelf.py:314 cps/shelf.py:348 cps/shelf.py:418 +#: cps/admin.py:1200 cps/admin.py:1303 cps/admin.py:1395 cps/admin.py:1461 +#: cps/shelf.py:103 cps/shelf.py:163 cps/shelf.py:206 cps/shelf.py:269 +#: cps/shelf.py:325 cps/shelf.py:360 cps/shelf.py:431 msgid "Settings DB is not Writeable" msgstr "I parametri del DB non sono scrivibili" -#: cps/admin.py:929 +#: cps/admin.py:1212 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "La posizione del DB non è valida, per favore indica il percorso corretto" -#: cps/admin.py:933 +#: cps/admin.py:1216 msgid "DB is not Writeable" msgstr "Il DB non è scrivibile" -#: cps/admin.py:972 +#: cps/admin.py:1256 msgid "Basic Configuration" msgstr "Configurazione di base" -#: cps/admin.py:987 cps/web.py:1358 +#: cps/admin.py:1272 cps/web.py:1417 msgid "Please fill out all fields!" msgstr "Per favore compila tutti i campi!" -#: cps/admin.py:990 cps/admin.py:1002 cps/admin.py:1008 cps/admin.py:1138 -msgid "Add new user" -msgstr "Aggiungi un nuovo utente" - -#: cps/admin.py:999 cps/web.py:1496 +#: cps/admin.py:1280 msgid "E-mail is not from valid domain" msgstr "L'e-mail non proviene da un dominio valido" -#: cps/admin.py:1006 cps/admin.py:1021 -msgid "Found an existing account for this e-mail address or nickname." -msgstr "Trovato un account esistente con questo e-mail o nome di utente" +#: cps/admin.py:1284 cps/admin.py:1414 +msgid "Add new user" +msgstr "Aggiungi un nuovo utente" -#: cps/admin.py:1017 +#: cps/admin.py:1293 #, python-format msgid "User '%(user)s' created" msgstr "L'utente '%(user)s' è stato creato" -#: cps/admin.py:1031 +#: cps/admin.py:1299 +msgid "Found an existing account for this e-mail address or name." +msgstr "Trovato un account esistente con questo e-mail o nome di utente" + +#: cps/admin.py:1312 #, python-format msgid "User '%(nick)s' deleted" msgstr "L'utente '%(nick)s' è stato eliminato" -#: cps/admin.py:1034 +#: cps/admin.py:1314 cps/admin.py:1315 +msgid "Can't delete Guest User" +msgstr "Non posso eliminare l'utente Guest (ospite)" + +#: cps/admin.py:1318 msgid "No admin user remaining, can't delete user" msgstr "Non rimarrebbe nessun utente amministratore, non posso eliminare l'utente" -#: cps/admin.py:1041 -#, python-format -msgid "User '%(nick)s' updated" -msgstr "L'utente '%(nick)s' è stato aggiornato" - -#: cps/admin.py:1044 -msgid "An unknown error occured." -msgstr "Si è verificato un errore imprevisto." - -#: cps/admin.py:1056 -msgid "No admin user remaining, can't remove admin role" -msgstr "Non rimarrebbe nessun utente amministratore, non posso rimuovere il ruolo di amministratore" - -#: cps/admin.py:1092 cps/web.py:1554 -msgid "Found an existing account for this e-mail address." -msgstr "Ho trovato un account creato in precedenza con questa e-mail." - -#: cps/admin.py:1101 cps/admin.py:1115 cps/admin.py:1209 cps/web.py:1516 +#: cps/admin.py:1383 cps/admin.py:1504 #, python-format msgid "Edit User %(nick)s" msgstr "Modifica l'utente %(nick)s" -#: cps/admin.py:1107 cps/web.py:1509 -msgid "This username is already taken" -msgstr "Questo nome di utente è già utilizzato" +#: cps/admin.py:1387 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "L'utente '%(nick)s' è stato aggiornato" -#: cps/admin.py:1147 cps/templates/admin.html:78 +#: cps/admin.py:1391 +#, fuzzy +msgid "An unknown error occurred." +msgstr "Si è verificato un errore imprevisto." + +#: cps/admin.py:1423 cps/templates/admin.html:94 msgid "Edit E-mail Server Settings" msgstr "Modifica le impostazioni del server e-mail" -#: cps/admin.py:1175 +#: cps/admin.py:1442 +msgid "G-Mail Account Verification Successful" +msgstr "L'account g-mail è stato verificato con successo" + +#: cps/admin.py:1468 #, python-format msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" -msgstr "" +msgstr "L'e-mail di test è stato accodato con successo per essere spedito a %(email)s, per favore verifica tramite il pulsante 'Compito' il risultato" -#: cps/admin.py:1178 +#: cps/admin.py:1471 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Si è verificato un errore nell'invio dell'e-mail di test: %(res)s" -#: cps/admin.py:1180 +#: cps/admin.py:1473 msgid "Please configure your e-mail address first..." msgstr "Per favore prima configura il tuo indirizzo e-mail..." -#: cps/admin.py:1182 +#: cps/admin.py:1475 msgid "E-mail server settings updated" msgstr "Configurazione del server e-mail aggiornata" -#: cps/admin.py:1193 -msgid "User not found" -msgstr "Utente non trovato" - -#: cps/admin.py:1220 +#: cps/admin.py:1516 #, python-format msgid "Password for user %(user)s reset" msgstr "La password dell'utente %(user)s è stata resettata" -#: cps/admin.py:1223 cps/web.py:1388 cps/web.py:1452 +#: cps/admin.py:1519 cps/web.py:1442 cps/web.py:1503 msgid "An unknown error occurred. Please try again later." msgstr "Si è verificato un errore sconosciuto: per favore riprova." -#: cps/admin.py:1226 cps/web.py:1320 +#: cps/admin.py:1522 cps/web.py:1382 msgid "Please configure the SMTP mail settings first..." msgstr "Configura dapprima le impostazioni del server SMTP..." -#: cps/admin.py:1237 +#: cps/admin.py:1533 msgid "Logfile viewer" msgstr "Visualizzatore del Logfile" -#: cps/admin.py:1303 +#: cps/admin.py:1599 msgid "Requesting update package" msgstr "Richiedo il pacchetto di aggiornamento" -#: cps/admin.py:1304 +#: cps/admin.py:1600 msgid "Downloading update package" msgstr "Scarico il pacchetto di aggiornamento" -#: cps/admin.py:1305 +#: cps/admin.py:1601 msgid "Unzipping update package" msgstr "Decomprimo il pacchetto di aggiornamento" -#: cps/admin.py:1306 +#: cps/admin.py:1602 msgid "Replacing files" msgstr "Sostituisco i file" -#: cps/admin.py:1307 +#: cps/admin.py:1603 msgid "Database connections are closed" msgstr "Le connessioni al database sono chiuse" -#: cps/admin.py:1308 +#: cps/admin.py:1604 msgid "Stopping server" msgstr "Arresto il server" -#: cps/admin.py:1309 +#: cps/admin.py:1605 msgid "Update finished, please press okay and reload page" msgstr "Aggiornamento completato, per favore premi ok e ricarica la pagina" -#: cps/admin.py:1310 cps/admin.py:1311 cps/admin.py:1312 cps/admin.py:1313 -#: cps/admin.py:1314 +#: cps/admin.py:1606 cps/admin.py:1607 cps/admin.py:1608 cps/admin.py:1609 +#: cps/admin.py:1610 msgid "Update failed:" msgstr "Aggiornamento non riuscito:" -#: cps/admin.py:1310 cps/updater.py:337 cps/updater.py:532 cps/updater.py:534 +#: cps/admin.py:1606 cps/updater.py:356 cps/updater.py:566 cps/updater.py:568 msgid "HTTP Error" msgstr "Errore HTTP" -#: cps/admin.py:1311 cps/updater.py:339 cps/updater.py:536 +#: cps/admin.py:1607 cps/updater.py:358 cps/updater.py:570 msgid "Connection error" msgstr "Errore di connessione" -#: cps/admin.py:1312 cps/updater.py:341 cps/updater.py:538 +#: cps/admin.py:1608 cps/updater.py:360 cps/updater.py:572 msgid "Timeout while establishing connection" msgstr "Tempo scaduto nello stabilire la connessione" -#: cps/admin.py:1313 cps/updater.py:343 cps/updater.py:540 +#: cps/admin.py:1609 cps/updater.py:362 cps/updater.py:574 msgid "General error" msgstr "Errore generale" -#: cps/admin.py:1314 +#: cps/admin.py:1610 msgid "Update File Could Not be Saved in Temp Dir" msgstr "Il file di aggiornamento non può essere salvato nella cartella temporanea" -#: cps/admin.py:1376 +#: cps/admin.py:1671 msgid "Failed to Create at Least One LDAP User" msgstr "Fallita la creazione di almeno un utente LDAP" -#: cps/admin.py:1389 +#: cps/admin.py:1684 #, python-format msgid "Error: %(ldaperror)s" msgstr "Errore: %(ldaperror)s" -#: cps/admin.py:1393 +#: cps/admin.py:1688 msgid "Error: No user returned in response of LDAP server" msgstr "Errore: nessun utente restituito in risposta dal server LDAP" -#: cps/admin.py:1426 +#: cps/admin.py:1721 msgid "At Least One LDAP User Not Found in Database" msgstr "Almeno un utente LDAP non è stato trovato nel database" -#: cps/admin.py:1428 +#: cps/admin.py:1723 msgid "{} User Successfully Imported" msgstr "{} utente importato con successo" @@ -344,98 +436,98 @@ msgstr "non configurato" msgid "Execution permissions missing" msgstr "Mancano i permessi di esecuzione" -#: cps/editbooks.py:267 cps/editbooks.py:269 +#: cps/editbooks.py:294 cps/editbooks.py:296 msgid "Book Format Successfully Deleted" msgstr "Il formato del libro è stato eliminato con successo" -#: cps/editbooks.py:276 cps/editbooks.py:278 +#: cps/editbooks.py:303 cps/editbooks.py:305 msgid "Book Successfully Deleted" msgstr "Il libro é stato eliminato con successo" -#: cps/editbooks.py:325 cps/editbooks.py:646 cps/web.py:1598 cps/web.py:1634 -#: cps/web.py:1705 +#: cps/editbooks.py:361 cps/editbooks.py:724 cps/web.py:1627 cps/web.py:1663 +#: cps/web.py:1734 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Errore durante l'apertura del libro. Il file non esiste o il file non è accessibile" -#: cps/editbooks.py:359 +#: cps/editbooks.py:395 msgid "edit metadata" msgstr "modifica i metadati" -#: cps/editbooks.py:434 +#: cps/editbooks.py:473 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s non è una lingua valida" -#: cps/editbooks.py:556 cps/editbooks.py:905 +#: cps/editbooks.py:595 cps/editbooks.py:936 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Non è consentito caricare file con l'estensione '%(ext)s' su questo server" -#: cps/editbooks.py:560 cps/editbooks.py:909 +#: cps/editbooks.py:599 cps/editbooks.py:940 msgid "File to be uploaded must have an extension" msgstr "Il file da caricare deve avere un'estensione" -#: cps/editbooks.py:572 +#: cps/editbooks.py:611 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Impossibile creare la cartella %(path)s (autorizzazione negata)." -#: cps/editbooks.py:577 +#: cps/editbooks.py:616 #, python-format msgid "Failed to store file %(file)s." msgstr "Il salvataggio del file %(file)s non è riuscito." -#: cps/editbooks.py:595 cps/editbooks.py:972 cps/web.py:1559 +#: cps/editbooks.py:634 cps/editbooks.py:1027 cps/web.py:1588 #, python-format msgid "Database error: %(error)s." msgstr "Errore nel database: %(error)s." -#: cps/editbooks.py:599 +#: cps/editbooks.py:638 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Ho aggiunto il formato %(ext)s al libro %(book)s" -#: cps/editbooks.py:726 +#: cps/editbooks.py:775 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "Gli identificatori non tengono conto delle lettere maiuscole o minuscole, sovrascrivo l'identificatore precedente" -#: cps/editbooks.py:763 +#: cps/editbooks.py:807 msgid "Metadata successfully updated" msgstr "I metadati sono stati aggiornati con successo" -#: cps/editbooks.py:772 +#: cps/editbooks.py:816 msgid "Error editing book, please check logfile for details" msgstr "Errore nella modifica del libro. Per favore verifica i dettagli nel file di registro (logfile)" -#: cps/editbooks.py:810 +#: cps/editbooks.py:854 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Probabilmente il libro caricato esiste già nella libreria; considera di cambiare prima di sottoporlo nuovamente: " -#: cps/editbooks.py:917 +#: cps/editbooks.py:948 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "Il file %(filename)s non può essere salvato nella cartella temporanea" -#: cps/editbooks.py:947 +#: cps/editbooks.py:967 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "Impossibile spostare il file della copertina %(file)s: %(error)s" -#: cps/editbooks.py:958 +#: cps/editbooks.py:1013 #, python-format msgid "File %(file)s uploaded" msgstr "Il file %(file)s è stato caricato" -#: cps/editbooks.py:984 +#: cps/editbooks.py:1039 msgid "Source or destination format for conversion missing" msgstr "Mancano o il formato sorgente o quello di destinazione, entrambi necessari alla conversione" -#: cps/editbooks.py:992 +#: cps/editbooks.py:1047 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Libro accodato con successo per essere convertito in %(book_format)s" -#: cps/editbooks.py:996 +#: cps/editbooks.py:1051 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Si è verificato un errore durante la conversione del libro: %(res)s" @@ -543,55 +635,67 @@ msgstr "File %(file)s non trovato su Google Drive" msgid "Book path %(path)s not found on Google Drive" msgstr "Non ho trovato la cartella %(path)s del libro su Google Drive" -#: cps/helper.py:576 +#: cps/helper.py:511 +msgid "Found an existing account for this e-mail address" +msgstr "Ho trovato un account creato in precedenza con questo indirizzo e-mail." + +#: cps/helper.py:519 +msgid "This username is already taken" +msgstr "Questo nome di utente è già utilizzato" + +#: cps/helper.py:529 +msgid "Invalid e-mail address format" +msgstr "L'e-mail non è scritto in un formato valido" + +#: cps/helper.py:602 msgid "Error Downloading Cover" msgstr "Errore nello scaricare la copertina" -#: cps/helper.py:579 +#: cps/helper.py:605 msgid "Cover Format Error" msgstr "Errore di formato della copertina" -#: cps/helper.py:589 +#: cps/helper.py:615 msgid "Failed to create path for cover" msgstr "Errore nel creare la cartella per la copertina" -#: cps/helper.py:605 +#: cps/helper.py:631 msgid "Cover-file is not a valid image file, or could not be stored" msgstr "Il file della copertina non è in un formato immagine valido o non può essere salvato" -#: cps/helper.py:616 +#: cps/helper.py:642 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" msgstr "Solamente i file nei formati jpg/jpeg/png/webp/bmp sono supportati per le copertine" -#: cps/helper.py:629 +#: cps/helper.py:655 msgid "Only jpg/jpeg files are supported as coverfile" msgstr "Solamente i file nei formati jpg/jpeg sono supportati per le copertine" -#: cps/helper.py:680 +#: cps/helper.py:707 msgid "Unrar binary file not found" msgstr "Non ho trovato il file binario di UnRar" -#: cps/helper.py:694 +#: cps/helper.py:721 msgid "Error excecuting UnRar" msgstr "Errore nell'eseguire UnRar" -#: cps/helper.py:743 +#: cps/helper.py:769 msgid "Waiting" msgstr "Attendi" -#: cps/helper.py:745 +#: cps/helper.py:771 msgid "Failed" msgstr "Non riuscito" -#: cps/helper.py:747 +#: cps/helper.py:773 msgid "Started" msgstr "Avviato" -#: cps/helper.py:749 +#: cps/helper.py:775 msgid "Finished" msgstr "Terminato" -#: cps/helper.py:751 +#: cps/helper.py:777 msgid "Unknown Status" msgstr "Stato sconosciuto" @@ -603,65 +707,82 @@ msgstr "Per favore accedi a calibe-web non da localhost per ottenere un api-endp msgid "Kobo Setup" msgstr "Configurazione di Kobo" -#: cps/oauth_bb.py:76 +#: cps/oauth_bb.py:78 #, python-format msgid "Register with %(provider)s" msgstr "Registra con %(provider)s" -#: cps/oauth_bb.py:137 cps/remotelogin.py:133 cps/web.py:1424 +#: cps/oauth_bb.py:139 cps/remotelogin.py:133 cps/web.py:1475 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "ora sei connesso come: '%(nickname)s'" -#: cps/oauth_bb.py:147 +#: cps/oauth_bb.py:149 #, python-format msgid "Link to %(oauth)s Succeeded" msgstr "Collegamento a %(oauth)s avvenuto con successo" -#: cps/oauth_bb.py:153 +#: cps/oauth_bb.py:156 msgid "Login failed, No User Linked With OAuth Account" msgstr "Accesso non riuscito, non c'è un utente collegato all'account OAuth" -#: cps/oauth_bb.py:195 +#: cps/oauth_bb.py:198 #, python-format msgid "Unlink to %(oauth)s Succeeded" msgstr "Scollegamento da %(oauth)s avvenuto con successo" -#: cps/oauth_bb.py:199 +#: cps/oauth_bb.py:203 #, python-format msgid "Unlink to %(oauth)s Failed" msgstr "Scollegamento da %(oauth)s non riuscito" -#: cps/oauth_bb.py:202 +#: cps/oauth_bb.py:206 #, python-format msgid "Not Linked to %(oauth)s" msgstr "Non collegato a %(oauth)s" -#: cps/oauth_bb.py:259 +#: cps/oauth_bb.py:262 msgid "Failed to log in with GitHub." msgstr "Accesso con GitHub non è riuscito." -#: cps/oauth_bb.py:264 +#: cps/oauth_bb.py:268 msgid "Failed to fetch user info from GitHub." msgstr "Il recupero delle informazioni dell'utente da GitHub non è riuscito." -#: cps/oauth_bb.py:275 +#: cps/oauth_bb.py:280 msgid "Failed to log in with Google." msgstr "L'accesso con Google non è riuscito." -#: cps/oauth_bb.py:280 +#: cps/oauth_bb.py:286 msgid "Failed to fetch user info from Google." msgstr "Il recupero delle informazioni dell'utente da Google non è riuscito." -#: cps/oauth_bb.py:312 +#: cps/oauth_bb.py:333 msgid "GitHub Oauth error, please retry later." msgstr "GitHub, errore Oauth: per favore riprova più tardi." -#: cps/oauth_bb.py:331 +#: cps/oauth_bb.py:336 +msgid "GitHub Oauth error: {}" +msgstr "GitHub, errore Oauth: {}" + +#: cps/oauth_bb.py:357 msgid "Google Oauth error, please retry later." msgstr "Google, errore Oauth: per favore riprova più tardi." -#: cps/remotelogin.py:65 cps/web.py:1471 +#: cps/oauth_bb.py:360 +msgid "Google Oauth error: {}" +msgstr "Google, errore Oauth: {}" + +#: cps/opds.py:110 cps/opds.py:199 cps/opds.py:276 cps/opds.py:328 +#: cps/templates/grid.html:14 cps/templates/list.html:14 +msgid "All" +msgstr "Tutti" + +#: cps/opds.py:385 +msgid "{} Stars" +msgstr "{} Stelle" + +#: cps/remotelogin.py:65 cps/web.py:1522 msgid "login" msgstr "accedi" @@ -677,7 +798,7 @@ msgstr "Il token è scaduto" msgid "Success! Please return to your device" msgstr "Riuscito! Torna al tuo dispositivo" -#: cps/render_template.py:39 cps/web.py:415 +#: cps/render_template.py:39 cps/web.py:414 msgid "Books" msgstr "Libri" @@ -685,7 +806,7 @@ msgstr "Libri" msgid "Show recent books" msgstr "Mostra l'opzione per la selezione dei libri più recenti" -#: cps/render_template.py:42 cps/templates/index.xml:18 +#: cps/render_template.py:42 cps/templates/index.xml:25 msgid "Hot Books" msgstr "Libri popolari" @@ -693,127 +814,130 @@ msgstr "Libri popolari" msgid "Show Hot Books" msgstr "Mostra l'opzione per la selezione dei libri più popolari" -#: cps/render_template.py:45 +#: cps/render_template.py:46 cps/render_template.py:51 msgid "Downloaded Books" msgstr "Libri scaricati" -#: cps/render_template.py:47 +#: cps/render_template.py:48 cps/render_template.py:53 +#: cps/templates/user_table.html:151 msgid "Show Downloaded Books" msgstr "Mostra l'opzione per la visualizzazione dei libri scaricati" -#: cps/render_template.py:50 cps/templates/index.xml:25 cps/web.py:425 +#: cps/render_template.py:56 cps/templates/index.xml:32 cps/web.py:424 msgid "Top Rated Books" msgstr "Libri meglio valutati" -#: cps/render_template.py:52 +#: cps/render_template.py:58 cps/templates/user_table.html:145 msgid "Show Top Rated Books" msgstr "Mostra l'opzione per la selezione dei libri meglio valutati" -#: cps/render_template.py:53 cps/templates/index.xml:47 -#: cps/templates/index.xml:51 cps/web.py:642 +#: cps/render_template.py:59 cps/templates/index.xml:54 +#: cps/templates/index.xml:58 cps/web.py:650 msgid "Read Books" msgstr "Libri da leggere" -#: cps/render_template.py:55 +#: cps/render_template.py:61 msgid "Show read and unread" msgstr "Mostra l'opzione per la selezione letto e non letto" -#: cps/render_template.py:57 cps/templates/index.xml:54 -#: cps/templates/index.xml:58 cps/web.py:645 +#: cps/render_template.py:63 cps/templates/index.xml:61 +#: cps/templates/index.xml:65 cps/web.py:653 msgid "Unread Books" msgstr "Libri non letti" -#: cps/render_template.py:59 +#: cps/render_template.py:65 msgid "Show unread" msgstr "Mostra l'opzione per la selezione dei libri non letti" -#: cps/render_template.py:60 +#: cps/render_template.py:66 msgid "Discover" msgstr "Per scoprire" -#: cps/render_template.py:62 +#: cps/render_template.py:68 cps/templates/user_table.html:143 +#: cps/templates/user_table.html:146 msgid "Show random books" msgstr "Mostra l'opzione per presentare libri aleatoriamente" -#: cps/render_template.py:63 cps/templates/book_table.html:50 -#: cps/templates/index.xml:76 cps/web.py:950 +#: cps/render_template.py:69 cps/templates/book_table.html:51 +#: cps/templates/index.xml:83 cps/web.py:1024 msgid "Categories" msgstr "Categorie" -#: cps/render_template.py:65 +#: cps/render_template.py:71 cps/templates/user_table.html:142 msgid "Show category selection" msgstr "Mostra l'opzione per la selezione delle categorie" -#: cps/render_template.py:66 cps/templates/book_edit.html:84 -#: cps/templates/book_table.html:51 cps/templates/index.xml:83 -#: cps/templates/search_form.html:62 cps/web.py:854 cps/web.py:864 +#: cps/render_template.py:72 cps/templates/book_edit.html:84 +#: cps/templates/book_table.html:52 cps/templates/index.xml:90 +#: cps/templates/search_form.html:62 cps/web.py:921 cps/web.py:931 msgid "Series" msgstr "Serie" -#: cps/render_template.py:68 +#: cps/render_template.py:74 cps/templates/user_table.html:141 msgid "Show series selection" msgstr "Mostra l'opzione per la selezione delle serie" -#: cps/render_template.py:69 cps/templates/book_table.html:49 -#: cps/templates/index.xml:62 +#: cps/render_template.py:75 cps/templates/book_table.html:50 +#: cps/templates/index.xml:69 msgid "Authors" msgstr "Autori" -#: cps/render_template.py:71 +#: cps/render_template.py:77 cps/templates/user_table.html:144 msgid "Show author selection" msgstr "Mostra l'opzione per la selezione degli autori" -#: cps/render_template.py:73 cps/templates/book_table.html:55 -#: cps/templates/index.xml:69 cps/web.py:833 +#: cps/render_template.py:79 cps/templates/book_table.html:56 +#: cps/templates/index.xml:76 cps/web.py:898 msgid "Publishers" msgstr "Editori" -#: cps/render_template.py:75 +#: cps/render_template.py:81 cps/templates/user_table.html:147 msgid "Show publisher selection" msgstr "Mostra l'opzione per la selezione degli editori" -#: cps/render_template.py:76 cps/templates/book_table.html:53 -#: cps/templates/index.xml:90 cps/templates/search_form.html:100 cps/web.py:929 +#: cps/render_template.py:82 cps/templates/book_table.html:54 +#: cps/templates/index.xml:97 cps/templates/search_form.html:100 +#: cps/web.py:1001 msgid "Languages" msgstr "Lingue" -#: cps/render_template.py:79 +#: cps/render_template.py:85 cps/templates/user_table.html:139 msgid "Show language selection" msgstr "Mostra l'opzione per la selezione delle lingue" -#: cps/render_template.py:80 cps/templates/index.xml:97 +#: cps/render_template.py:86 cps/templates/index.xml:104 msgid "Ratings" msgstr "Valutazioni" -#: cps/render_template.py:82 +#: cps/render_template.py:88 cps/templates/user_table.html:148 msgid "Show ratings selection" msgstr "Mostra l'opzione per la selezione della valutazione" -#: cps/render_template.py:83 cps/templates/index.xml:105 +#: cps/render_template.py:89 cps/templates/index.xml:112 msgid "File formats" msgstr "Formati file" -#: cps/render_template.py:85 +#: cps/render_template.py:91 cps/templates/user_table.html:149 msgid "Show file formats selection" msgstr "Mostra l'opzione per la selezione del formato dei file" -#: cps/render_template.py:87 cps/web.py:669 +#: cps/render_template.py:93 cps/web.py:677 msgid "Archived Books" msgstr "Libri archiviati" -#: cps/render_template.py:89 +#: cps/render_template.py:95 cps/templates/user_table.html:150 msgid "Show archived books" msgstr "Mostra l'opzione per la selezione dei libri archiviati" -#: cps/render_template.py:91 cps/web.py:743 +#: cps/render_template.py:97 cps/web.py:751 msgid "Books List" msgstr "Elenco libri" -#: cps/render_template.py:93 +#: cps/render_template.py:99 cps/templates/user_table.html:152 msgid "Show Books List" msgstr "Mostra l'opzione per visualizzare i libri sottoforma di elenco" -#: cps/shelf.py:69 cps/shelf.py:122 +#: cps/shelf.py:69 cps/shelf.py:124 msgid "Invalid shelf specified" msgstr "Lo scaffale specificato non è valido" @@ -827,303 +951,307 @@ msgstr "Mi spiace, ma non sei autorizzato ad aggiungere libri allo scaffale: %(s msgid "Book is already part of the shelf: %(shelfname)s" msgstr "Il libro è gia presente nello scaffale: %(shelfname)s" -#: cps/shelf.py:108 +#: cps/shelf.py:110 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Il libro è stato aggiunto allo scaffale: %(sname)s" -#: cps/shelf.py:126 +#: cps/shelf.py:129 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Non sei autorizzato ad aggiungere libri allo scaffale: %(name)s" -#: cps/shelf.py:144 +#: cps/shelf.py:147 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "I libri sono già presenti nello scaffale: %(name)s" -#: cps/shelf.py:156 +#: cps/shelf.py:159 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "I libri sono stati aggiunti allo scaffale: %(sname)s" -#: cps/shelf.py:161 +#: cps/shelf.py:166 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "Non posso aggiungere libri allo scaffale: %(sname)s" -#: cps/shelf.py:206 +#: cps/shelf.py:212 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Il libro è stato rimosso dallo scaffale: %(sname)s" -#: cps/shelf.py:214 +#: cps/shelf.py:221 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Spiacente, ma non sei autorizzato a togliere libri dallo scaffale: %(sname)s" -#: cps/shelf.py:224 cps/templates/layout.html:140 +#: cps/shelf.py:231 cps/templates/layout.html:140 msgid "Create a Shelf" msgstr "Crea uno scaffale" -#: cps/shelf.py:231 +#: cps/shelf.py:238 msgid "Edit a shelf" msgstr "Modifica uno scaffale" -#: cps/shelf.py:249 +#: cps/shelf.py:256 #, python-format msgid "Shelf %(title)s created" msgstr "Lo scaffale %(title)s è stato creato" -#: cps/shelf.py:252 +#: cps/shelf.py:259 #, python-format msgid "Shelf %(title)s changed" msgstr "Lo scaffale %(title)s è stato modificato" -#: cps/shelf.py:265 +#: cps/shelf.py:273 msgid "There was an error" msgstr "C'era un errore" -#: cps/shelf.py:281 +#: cps/shelf.py:290 #, python-format msgid "A public shelf with the name '%(title)s' already exists." msgstr "Esiste già uno scaffale pubblico denominato '%(title)s'." -#: cps/shelf.py:291 +#: cps/shelf.py:301 #, python-format msgid "A private shelf with the name '%(title)s' already exists." msgstr "Esiste già uno scaffale privato denominato '%(title)s'." -#: cps/shelf.py:358 +#: cps/shelf.py:370 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Modifica l'ordine dello scaffale: '%(name)s'" -#: cps/shelf.py:423 +#: cps/shelf.py:436 #, python-format msgid "Shelf: '%(name)s'" msgstr "Scaffale: '%(name)s'" -#: cps/shelf.py:427 +#: cps/shelf.py:440 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Errore durante l'apertura dello scaffale. Lo scaffale non esiste o non è accessibile" -#: cps/updater.py:355 cps/updater.py:366 cps/updater.py:418 cps/updater.py:432 +#: cps/updater.py:374 cps/updater.py:385 cps/updater.py:485 cps/updater.py:500 msgid "Unexpected data while reading update information" msgstr "Dati inattesi durante il processo di aggiornamento" -#: cps/updater.py:362 cps/updater.py:424 +#: cps/updater.py:381 cps/updater.py:492 msgid "No update available. You already have the latest version installed" msgstr "Nessun aggiornamento disponibile. Hai già installata l'ultima versione" -#: cps/updater.py:379 +#: cps/updater.py:399 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "Nuovo aggiornamento disponibile. Clicca sul pulsante sottostante per aggiornare all'ultima versione." -#: cps/updater.py:397 +#: cps/updater.py:417 msgid "Could not fetch update information" msgstr "Impossibile recuperare le informazioni di aggiornamento" -#: cps/updater.py:411 -msgid "No release information available" -msgstr "Non sono disponibili informazioni sulla versione" +#: cps/updater.py:427 +msgid "Click on the button below to update to the latest stable version." +msgstr "Clicca sul pulsante per aggiornare all'ultima versione stabile." -#: cps/updater.py:468 cps/updater.py:479 cps/updater.py:498 +#: cps/updater.py:436 cps/updater.py:450 cps/updater.py:461 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "Nuovo aggiornamento disponibile. Clicca sul pulsante sottostante per aggiornare alla versione: %(version)s" -#: cps/updater.py:489 -msgid "Click on the button below to update to the latest stable version." -msgstr "Clicca sul pulsante per aggiornare all'ultima versione stabile." +#: cps/updater.py:478 +msgid "No release information available" +msgstr "Non sono disponibili informazioni sulla versione" -#: cps/templates/index.html:5 cps/web.py:435 +#: cps/templates/index.html:5 cps/web.py:434 msgid "Discover (Random Books)" msgstr "Scopri (libri casuali)" -#: cps/web.py:461 +#: cps/web.py:460 msgid "Hot Books (Most Downloaded)" msgstr "I libri più richiesti" -#: cps/web.py:489 +#: cps/web.py:493 #, python-format msgid "Downloaded books by %(user)s" msgstr "I libri scaricati da %(user)s" -#: cps/web.py:503 +#: cps/web.py:508 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Errore durante l'apertura del libro selezionato. Il file non esiste o il file non è accessibile" -#: cps/web.py:517 +#: cps/web.py:522 #, python-format msgid "Author: %(name)s" msgstr "Autore: %(name)s" -#: cps/web.py:531 +#: cps/web.py:537 #, python-format msgid "Publisher: %(name)s" msgstr "Editore: %(name)s" -#: cps/web.py:544 +#: cps/web.py:550 #, python-format msgid "Series: %(serie)s" msgstr "Serie: %(serie)s" -#: cps/web.py:557 +#: cps/web.py:563 #, python-format msgid "Rating: %(rating)s stars" msgstr "Valutazione: %(rating)s stelle" -#: cps/web.py:570 +#: cps/web.py:576 #, python-format msgid "File format: %(format)s" msgstr "Formato del file: %(format)s" -#: cps/web.py:584 +#: cps/web.py:592 #, python-format msgid "Category: %(name)s" msgstr "Categoria: %(name)s" -#: cps/web.py:603 +#: cps/web.py:611 #, python-format msgid "Language: %(name)s" msgstr "Lingua: %(name)s" -#: cps/web.py:633 +#: cps/web.py:641 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "La colonna personale no.%(column)d non esiste nel database di Calibre" -#: cps/templates/layout.html:56 cps/web.py:703 cps/web.py:1248 +#: cps/templates/layout.html:56 cps/web.py:711 cps/web.py:1314 msgid "Advanced Search" msgstr "Ricerca avanzata" #: cps/templates/book_edit.html:214 cps/templates/feed.xml:33 #: cps/templates/index.xml:11 cps/templates/layout.html:45 #: cps/templates/layout.html:48 cps/templates/search_form.html:194 -#: cps/web.py:715 cps/web.py:987 +#: cps/web.py:723 cps/web.py:1061 msgid "Search" msgstr "Cerca" -#: cps/web.py:882 +#: cps/templates/admin.html:16 cps/web.py:876 +msgid "Downloads" +msgstr "Downloads" + +#: cps/web.py:952 msgid "Ratings list" msgstr "Elenco delle valutazioni" -#: cps/web.py:901 +#: cps/web.py:973 msgid "File formats list" msgstr "Elenco dei formati" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:964 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1038 msgid "Tasks" msgstr "Compito" -#: cps/web.py:1108 +#: cps/web.py:1182 msgid "Published after " msgstr "Pubblicato dopo il " -#: cps/web.py:1115 +#: cps/web.py:1189 msgid "Published before " msgstr "Pubblicato prima del " -#: cps/web.py:1145 +#: cps/web.py:1211 #, python-format msgid "Rating <= %(rating)s" msgstr "Valutazione <= %(rating)s" -#: cps/web.py:1147 +#: cps/web.py:1213 #, python-format msgid "Rating >= %(rating)s" msgstr "Valutazione >= %(rating)s" -#: cps/web.py:1149 +#: cps/web.py:1215 #, python-format msgid "Read Status = %(status)s" msgstr "Stato di lettura = %(status)s" -#: cps/web.py:1325 +#: cps/web.py:1387 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Libro accodato con successo per essere spedito a %(kindlemail)s" -#: cps/web.py:1329 +#: cps/web.py:1391 #, python-format msgid "Oops! There was an error sending this book: %(res)s" -msgstr "Si è verificato un errore durante l'invio di questo libro: %(res)s" +msgstr "Oops! Si è verificato un errore durante l'invio di questo libro: %(res)s" -#: cps/web.py:1331 +#: cps/web.py:1393 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Per favore aggiorna il tuo profilo con un indirizzo e-mail Kindle a cui inviare i libri." -#: cps/web.py:1348 +#: cps/web.py:1410 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "Il server e-mail non è configurato, per favore contatta l'amministratore" -#: cps/web.py:1349 cps/web.py:1359 cps/web.py:1366 cps/web.py:1389 -#: cps/web.py:1393 cps/web.py:1398 cps/web.py:1402 +#: cps/web.py:1411 cps/web.py:1418 cps/web.py:1424 cps/web.py:1443 +#: cps/web.py:1447 cps/web.py:1453 msgid "register" msgstr "registra" -#: cps/web.py:1364 -msgid "Invalid e-mail address format" -msgstr "L'e-mail non è scritto in un formato valido" - -#: cps/web.py:1391 +#: cps/web.py:1445 msgid "Your e-mail is not allowed to register" msgstr "Il tuo e-mail non è autorizzato alla registrazione" -#: cps/web.py:1394 +#: cps/web.py:1448 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Un messaggio di conferma è stato inviato al tuo recapito e-mail." -#: cps/web.py:1397 -msgid "This username or e-mail address is already in use." -msgstr "Questo nome di utente o questo e-mail sono già utilizzati." - -#: cps/web.py:1414 +#: cps/web.py:1465 msgid "Cannot activate LDAP authentication" msgstr "Non posso attivare l'autenticazione LDAP" -#: cps/web.py:1431 +#: cps/web.py:1482 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "Fallback login come: '%(nickname)s', il server LDAP non è raggiungibile o l'utente è sconosciuto" -#: cps/web.py:1437 +#: cps/web.py:1488 #, python-format msgid "Could not login: %(message)s" msgstr "Non posso accedere: %(message)s" -#: cps/web.py:1441 cps/web.py:1465 +#: cps/web.py:1492 cps/web.py:1516 msgid "Wrong Username or Password" msgstr "Nome utente o password errati" -#: cps/web.py:1448 +#: cps/web.py:1499 msgid "New Password was send to your email address" msgstr "Una nuova password è stata inviata al tuo recapito e-mail" -#: cps/web.py:1454 +#: cps/web.py:1505 msgid "Please enter valid username to reset password" msgstr "Per favore digita un nome di utente valido per resettare la password" -#: cps/web.py:1460 +#: cps/web.py:1511 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Ora sei connesso come '%(nickname)s'" -#: cps/web.py:1498 cps/web.py:1583 +#: cps/web.py:1565 cps/web.py:1612 #, python-format msgid "%(name)s's profile" msgstr "Profilo di %(name)s" -#: cps/web.py:1550 +#: cps/web.py:1579 msgid "Profile updated" msgstr "Profilo aggiornato" -#: cps/web.py:1610 cps/web.py:1613 cps/web.py:1616 cps/web.py:1619 -#: cps/web.py:1626 cps/web.py:1631 +#: cps/web.py:1583 +msgid "Found an existing account for this e-mail address." +msgstr "Ho trovato un account creato in precedenza con questa e-mail." + +#: cps/web.py:1639 cps/web.py:1642 cps/web.py:1645 cps/web.py:1648 +#: cps/web.py:1655 cps/web.py:1660 msgid "Read a Book" msgstr "Leggi un libro" +#: cps/services/gmail.py:41 +msgid "Found no valid gmail.json file with OAuth information" +msgstr "Ho trovato un gmail.json file senza informazione OAuth" + #: cps/tasks/convert.py:114 #, python-format msgid "Calibre ebook-convert %(tool)s not found" @@ -1162,221 +1290,231 @@ msgstr "Si è verificato un errore con Calibre: %(error)s" msgid "Users" msgstr "Elenco utenti" -#: cps/templates/admin.html:12 cps/templates/login.html:8 +#: cps/templates/admin.html:13 cps/templates/login.html:8 #: cps/templates/login.html:9 cps/templates/register.html:8 -#: cps/templates/user_edit.html:9 +#: cps/templates/user_edit.html:9 cps/templates/user_table.html:121 msgid "Username" msgstr "Utente" -#: cps/templates/admin.html:13 cps/templates/register.html:13 -#: cps/templates/user_edit.html:14 +#: cps/templates/admin.html:14 cps/templates/register.html:13 +#: cps/templates/user_edit.html:14 cps/templates/user_table.html:122 msgid "E-mail Address" -msgstr "E-mail" +msgstr "Indirizzo e-mail" -#: cps/templates/admin.html:14 cps/templates/user_edit.html:27 +#: cps/templates/admin.html:15 cps/templates/user_edit.html:27 msgid "Send to Kindle E-mail Address" -msgstr "Invia all'email di Kindle" +msgstr "Invia all'indirizzo e-mail di Kindle" -#: cps/templates/admin.html:15 -msgid "Downloads" -msgstr "Downloads" - -#: cps/templates/admin.html:16 cps/templates/layout.html:77 +#: cps/templates/admin.html:17 cps/templates/layout.html:77 +#: cps/templates/user_table.html:130 msgid "Admin" msgstr "Amministrazione" -#: cps/templates/admin.html:17 cps/templates/login.html:12 +#: cps/templates/admin.html:18 cps/templates/login.html:12 #: cps/templates/login.html:13 cps/templates/user_edit.html:22 msgid "Password" msgstr "Password" -#: cps/templates/admin.html:18 cps/templates/layout.html:66 +#: cps/templates/admin.html:19 cps/templates/layout.html:66 +#: cps/templates/user_table.html:132 msgid "Upload" msgstr "Upload" -#: cps/templates/admin.html:19 cps/templates/detail.html:18 +#: cps/templates/admin.html:20 cps/templates/detail.html:18 #: cps/templates/detail.html:27 cps/templates/shelf.html:6 +#: cps/templates/user_table.html:133 msgid "Download" msgstr "Download" -#: cps/templates/admin.html:20 +#: cps/templates/admin.html:21 msgid "View Books" msgstr "Vedi libri" -#: cps/templates/admin.html:21 +#: cps/templates/admin.html:22 cps/templates/user_table.html:118 +#: cps/templates/user_table.html:135 msgid "Edit" msgstr "Modifica" -#: cps/templates/admin.html:22 cps/templates/book_edit.html:16 -#: cps/templates/book_table.html:57 cps/templates/modal_dialogs.html:63 +#: cps/templates/admin.html:23 cps/templates/book_edit.html:16 +#: cps/templates/book_table.html:58 cps/templates/modal_dialogs.html:63 #: cps/templates/modal_dialogs.html:116 cps/templates/user_edit.html:66 +#: cps/templates/user_table.html:136 msgid "Delete" msgstr "Elimina" -#: cps/templates/admin.html:23 +#: cps/templates/admin.html:24 msgid "Public Shelf" msgstr "Scaffale pubblico" -#: cps/templates/admin.html:44 +#: cps/templates/admin.html:47 msgid "Add New User" msgstr "Aggiungi un nuovo utente" -#: cps/templates/admin.html:46 +#: cps/templates/admin.html:49 msgid "Import LDAP Users" msgstr "Importa gli utenti LDAP" -#: cps/templates/admin.html:53 +#: cps/templates/admin.html:56 msgid "E-mail Server Settings" msgstr "Configurazione server e-mail" -#: cps/templates/admin.html:57 cps/templates/email_edit.html:11 +#: cps/templates/admin.html:61 cps/templates/email_edit.html:30 msgid "SMTP Hostname" msgstr "Indirizzo server SMTP" -#: cps/templates/admin.html:61 cps/templates/email_edit.html:15 +#: cps/templates/admin.html:65 cps/templates/email_edit.html:34 msgid "SMTP Port" msgstr "Porta SMTP" -#: cps/templates/admin.html:65 cps/templates/email_edit.html:19 +#: cps/templates/admin.html:69 cps/templates/email_edit.html:38 msgid "Encryption" msgstr "Crittografia" -#: cps/templates/admin.html:69 cps/templates/email_edit.html:27 +#: cps/templates/admin.html:73 cps/templates/email_edit.html:46 msgid "SMTP Login" msgstr "Login SMTP" -#: cps/templates/admin.html:73 cps/templates/email_edit.html:35 +#: cps/templates/admin.html:77 cps/templates/admin.html:88 +#: cps/templates/email_edit.html:54 msgid "From E-mail" msgstr "E-mail da" #: cps/templates/admin.html:84 +msgid "E-Mail Service" +msgstr "Servizio e-mail" + +#: cps/templates/admin.html:85 +msgid "Gmail via Oauth2" +msgstr "Gmail via Oauth2" + +#: cps/templates/admin.html:100 msgid "Configuration" msgstr "Configurazione" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:103 msgid "Calibre Database Directory" msgstr "Cartella del database di Calibre" -#: cps/templates/admin.html:91 cps/templates/config_edit.html:136 +#: cps/templates/admin.html:107 cps/templates/config_edit.html:136 msgid "Log Level" msgstr "Livello di log" -#: cps/templates/admin.html:95 +#: cps/templates/admin.html:111 msgid "Port" msgstr "Porta" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:116 msgid "External Port" msgstr "Porta esterna" -#: cps/templates/admin.html:107 cps/templates/config_view_edit.html:27 +#: cps/templates/admin.html:123 cps/templates/config_view_edit.html:27 msgid "Books per Page" msgstr "Libri per pagina" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:127 msgid "Uploads" msgstr "Uploads" -#: cps/templates/admin.html:115 +#: cps/templates/admin.html:131 msgid "Anonymous Browsing" msgstr "Navigazione anonima" -#: cps/templates/admin.html:119 +#: cps/templates/admin.html:135 msgid "Public Registration" msgstr "Registrazione pubblica" -#: cps/templates/admin.html:123 +#: cps/templates/admin.html:139 msgid "Magic Link Remote Login" msgstr "Magic Link Login remoto" -#: cps/templates/admin.html:127 +#: cps/templates/admin.html:143 msgid "Reverse Proxy Login" msgstr "Login reverse proxy" -#: cps/templates/admin.html:132 +#: cps/templates/admin.html:148 msgid "Reverse proxy header name" msgstr "Nome intestazione reverse proxy" -#: cps/templates/admin.html:137 +#: cps/templates/admin.html:153 msgid "Edit Basic Configuration" -msgstr "Edita la configurazione di base" +msgstr "Modifica la configurazione di base" -#: cps/templates/admin.html:138 +#: cps/templates/admin.html:154 msgid "Edit UI Configuration" -msgstr "Edita la configurazione dell'interfaccia utente" +msgstr "Modifica la configurazione dell'interfaccia utente" -#: cps/templates/admin.html:143 +#: cps/templates/admin.html:159 msgid "Administration" msgstr "Amministrazione" -#: cps/templates/admin.html:144 +#: cps/templates/admin.html:160 msgid "Download Debug Package" msgstr "Scarica Debug Package" -#: cps/templates/admin.html:145 +#: cps/templates/admin.html:161 msgid "View Logs" msgstr "Visualizza Logfile" -#: cps/templates/admin.html:148 +#: cps/templates/admin.html:164 msgid "Reconnect Calibre Database" msgstr "Ricollega il database di Calibre" -#: cps/templates/admin.html:149 +#: cps/templates/admin.html:165 msgid "Restart" msgstr "Riavvia Calibre-Web" -#: cps/templates/admin.html:150 +#: cps/templates/admin.html:166 msgid "Shutdown" msgstr "Arresta Calibre-Web" -#: cps/templates/admin.html:155 +#: cps/templates/admin.html:171 msgid "Update" msgstr "Aggiornamento" -#: cps/templates/admin.html:159 +#: cps/templates/admin.html:175 msgid "Version" msgstr "Versione" -#: cps/templates/admin.html:160 +#: cps/templates/admin.html:176 msgid "Details" msgstr "Dettagli" -#: cps/templates/admin.html:166 +#: cps/templates/admin.html:182 msgid "Current version" msgstr "Versione attuale" -#: cps/templates/admin.html:173 +#: cps/templates/admin.html:189 msgid "Check for Update" msgstr "Ricerca aggiornamenti" -#: cps/templates/admin.html:174 +#: cps/templates/admin.html:190 msgid "Perform Update" msgstr "Esegui l'aggiornamento" -#: cps/templates/admin.html:187 +#: cps/templates/admin.html:203 msgid "Are you sure you want to restart?" msgstr "Vuoi veramente riavviare Calibre-Web?" -#: cps/templates/admin.html:192 cps/templates/admin.html:206 -#: cps/templates/admin.html:226 cps/templates/shelf.html:95 +#: cps/templates/admin.html:208 cps/templates/admin.html:222 +#: cps/templates/admin.html:242 cps/templates/shelf.html:95 msgid "OK" msgstr "Ok" -#: cps/templates/admin.html:193 cps/templates/admin.html:207 -#: cps/templates/book_edit.html:192 cps/templates/book_table.html:84 +#: cps/templates/admin.html:209 cps/templates/admin.html:223 +#: cps/templates/book_edit.html:192 cps/templates/book_table.html:85 #: cps/templates/config_edit.html:427 cps/templates/config_view_edit.html:151 -#: cps/templates/email_edit.html:47 cps/templates/modal_dialogs.html:64 -#: cps/templates/modal_dialogs.html:99 cps/templates/modal_dialogs.html:117 +#: cps/templates/modal_dialogs.html:64 cps/templates/modal_dialogs.html:99 +#: cps/templates/modal_dialogs.html:117 cps/templates/modal_dialogs.html:135 #: cps/templates/shelf.html:96 cps/templates/shelf_edit.html:19 #: cps/templates/user_edit.html:132 msgid "Cancel" msgstr "Annulla" -#: cps/templates/admin.html:205 +#: cps/templates/admin.html:221 msgid "Are you sure you want to shutdown?" msgstr "Vuoi veramente arrestare Calibre-Web?" -#: cps/templates/admin.html:217 +#: cps/templates/admin.html:233 msgid "Updating, please do not reload this page" msgstr "Aggiornamento, non ricaricare la pagina." @@ -1484,6 +1622,7 @@ msgid "Identifier Value" msgstr "Valore dell'identificatore" #: cps/templates/book_edit.html:72 cps/templates/book_edit.html:289 +#: cps/templates/user_table.html:23 msgid "Remove" msgstr "Rimuovi" @@ -1549,7 +1688,7 @@ msgid "Fetch Metadata" msgstr "Ottieni metadati" #: cps/templates/book_edit.html:191 cps/templates/config_edit.html:424 -#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45 +#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:64 #: cps/templates/shelf_edit.html:17 cps/templates/shelf_order.html:40 #: cps/templates/user_edit.html:130 msgid "Save" @@ -1589,96 +1728,98 @@ msgstr "Errore nella ricerca!" msgid "No Result(s) found! Please try another keyword." msgstr "Nessun risultato! Prova con un altro criterio di ricerca." -#: cps/templates/book_table.html:10 cps/templates/book_table.html:52 +#: cps/templates/book_table.html:11 cps/templates/book_table.html:53 +#: cps/templates/user_table.html:13 cps/templates/user_table.html:65 +#: cps/templates/user_table.html:88 msgid "This Field is Required" msgstr "Questo campo è obbligatorio" -#: cps/templates/book_table.html:23 +#: cps/templates/book_table.html:24 msgid "Merge selected books" msgstr "Unisci i libri selezionati" -#: cps/templates/book_table.html:24 +#: cps/templates/book_table.html:25 cps/templates/user_table.html:111 msgid "Remove Selections" msgstr "Rimuovi le selezioni" -#: cps/templates/book_table.html:30 +#: cps/templates/book_table.html:31 msgid "Update Title Sort automatically" msgstr "Aggiorna automaticamente l'ordinamento dei titoli" -#: cps/templates/book_table.html:34 +#: cps/templates/book_table.html:35 msgid "Update Author Sort automatically" msgstr "Aggiorna automaticamente l'ordinamento degli autori" -#: cps/templates/book_table.html:46 +#: cps/templates/book_table.html:47 msgid "Enter Title" msgstr "Indica il titolo" -#: cps/templates/book_table.html:46 cps/templates/config_view_edit.html:23 +#: cps/templates/book_table.html:47 cps/templates/config_view_edit.html:23 #: cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Titolo" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Enter Title Sort" msgstr "Indica l'ordinamento del titolo" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Title Sort" msgstr "Ordinamento del titolo" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Enter Author Sort" msgstr "Indica l'ordinamento dell'autore" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Author Sort" msgstr "Ordinamento dell'autore" -#: cps/templates/book_table.html:49 +#: cps/templates/book_table.html:50 msgid "Enter Authors" msgstr "Indica gli autori" -#: cps/templates/book_table.html:50 +#: cps/templates/book_table.html:51 msgid "Enter Categories" msgstr "Indica le categorie" -#: cps/templates/book_table.html:51 +#: cps/templates/book_table.html:52 msgid "Enter Series" msgstr "Indica le serie" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Enter title" msgstr "Indica il titolo" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Series Index" msgstr "Indice delle serie" -#: cps/templates/book_table.html:53 +#: cps/templates/book_table.html:54 msgid "Enter Languages" msgstr "Indica le lingue" -#: cps/templates/book_table.html:54 +#: cps/templates/book_table.html:55 msgid "Publishing Date" msgstr "Data di pubblicazione" -#: cps/templates/book_table.html:55 +#: cps/templates/book_table.html:56 msgid "Enter Publishers" msgstr "Indica gli editori" -#: cps/templates/book_table.html:70 cps/templates/modal_dialogs.html:46 +#: cps/templates/book_table.html:71 cps/templates/modal_dialogs.html:46 msgid "Are you really sure?" msgstr "Sei veramente sicuro?" -#: cps/templates/book_table.html:74 +#: cps/templates/book_table.html:75 msgid "Books with Title will be merged from:" msgstr "I libri con il titolo vengono uniti da:" -#: cps/templates/book_table.html:78 +#: cps/templates/book_table.html:79 msgid "Into Book with Title:" msgstr "Nel libro con il titolo:" -#: cps/templates/book_table.html:83 +#: cps/templates/book_table.html:84 msgid "Merge" msgstr "Unisci" @@ -1708,7 +1849,7 @@ msgstr "Autenticazione Google Drive" #: cps/templates/config_edit.html:51 msgid "Please hit save to continue with setup" -msgstr "Per favore premi invio per proseguire con la configurazione" +msgstr "Per favore premi invio per proseguire la configurazione" #: cps/templates/config_edit.html:54 msgid "Please finish Google Drive setup after login" @@ -1863,7 +2004,7 @@ msgid "LDAP Encryption" msgstr "Crittografia LDAP" #: cps/templates/config_edit.html:268 cps/templates/config_view_edit.html:61 -#: cps/templates/email_edit.html:21 +#: cps/templates/email_edit.html:40 msgid "None" msgstr "Nessuna" @@ -1945,7 +2086,7 @@ msgstr "LDAP Member User Filter Detection" #: cps/templates/config_edit.html:344 msgid "Autodetect" -msgstr "Autodetect - determina automaticamente" +msgstr "Autodetect - identifica automaticamente" #: cps/templates/config_edit.html:345 msgid "Custom Filter" @@ -2076,6 +2217,7 @@ msgid "Default Visibilities for New Users" msgstr "Visibilità di base per i nuovi utenti" #: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82 +#: cps/templates/user_table.html:138 msgid "Show Random Books in Detail View" msgstr "Mostra libri scelti aleatoriamente nella vista dettagliata" @@ -2149,43 +2291,71 @@ msgstr "(Pubblico)" msgid "Edit Metadata" msgstr "Modifica metadati" -#: cps/templates/email_edit.html:22 +#: cps/templates/email_edit.html:12 +msgid "Choose Server Type" +msgstr "Scegli il tipo di server" + +#: cps/templates/email_edit.html:14 +msgid "Use Standard E-Mail Account" +msgstr "Utilizza un account e-mail standard" + +#: cps/templates/email_edit.html:15 +#, fuzzy +msgid "Gmail Account with OAuth2 Verfification" +msgstr "Utilizza un account g-mail con la verifica OAuth2" + +#: cps/templates/email_edit.html:21 +msgid "Setup Gmail Account as E-Mail Server" +msgstr "Configura l'account gmail quale server e-mail" + +#: cps/templates/email_edit.html:23 +#, fuzzy +msgid "Revoke Gmail Access" +msgstr "Revoca l'accesso g-mail" + +#: cps/templates/email_edit.html:41 msgid "STARTTLS" msgstr "STARTTLS" -#: cps/templates/email_edit.html:23 +#: cps/templates/email_edit.html:42 msgid "SSL/TLS" msgstr "SSL/TLS" -#: cps/templates/email_edit.html:31 +#: cps/templates/email_edit.html:50 msgid "SMTP Password" msgstr "Password SMTP" -#: cps/templates/email_edit.html:38 +#: cps/templates/email_edit.html:57 msgid "Attachment Size Limit" msgstr "Dimensione massima dell'allegato" -#: cps/templates/email_edit.html:46 +#: cps/templates/email_edit.html:65 msgid "Save and Send Test E-mail" msgstr "Salva le impostazioni e invia e-mail di test" -#: cps/templates/email_edit.html:51 +#: cps/templates/email_edit.html:69 cps/templates/layout.html:29 +#: cps/templates/shelf_order.html:41 cps/templates/user_table.html:158 +msgid "Back" +msgstr "Indietro" + +#: cps/templates/email_edit.html:73 msgid "Allowed Domains (Whitelist)" msgstr "Dominii autorizzati alla registrazione (Whitelist)" -#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80 +#: cps/templates/email_edit.html:76 cps/templates/email_edit.html:102 msgid "Add Domain" msgstr "Aggiungi dominio" -#: cps/templates/email_edit.html:57 cps/templates/email_edit.html:83 +#: cps/templates/email_edit.html:79 cps/templates/email_edit.html:105 +#: cps/templates/user_table.html:26 msgid "Add" msgstr "Aggiungi" -#: cps/templates/email_edit.html:62 cps/templates/email_edit.html:72 +#: cps/templates/email_edit.html:84 cps/templates/email_edit.html:94 msgid "Enter domainname" msgstr "Digita il nome di dominio" -#: cps/templates/email_edit.html:68 +#: cps/templates/email_edit.html:90 msgid "Denied Domains (Blacklist)" msgstr "Dominii bloccati per la registrazione (Blacklist)" @@ -2197,13 +2367,9 @@ msgstr "Prossimo" msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):" msgstr "Apri il file .kobo/Kobo eReader.conf in un editore di testi e aggiungi (o edita):" -#: cps/templates/grid.html:14 cps/templates/list.html:14 -msgid "All" -msgstr "Tutti" - #: cps/templates/http_error.html:38 msgid "Create Issue" -msgstr "Crea un rapporto di segnalazione di un problema" +msgstr "Crea un rapporto di segnalazione di problema" #: cps/templates/http_error.html:45 msgid "Return to Home" @@ -2231,64 +2397,72 @@ msgstr "Ordina in ordine discendente secondo l'indice della serie" msgid "Start" msgstr "Avvio" +#: cps/templates/index.xml:18 +msgid "Alphabetical Books" +msgstr "Libri in ordine alfabetico" + #: cps/templates/index.xml:22 +msgid "Books sorted alphabetically" +msgstr "Libri ordinati alfabeticamente" + +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Downloads." msgstr "Pubblicazioni popolari in questo catalogo in base ai download." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:36 msgid "Popular publications from this catalog based on Rating." msgstr "Pubblicazioni popolari in questo catalogo in base alle valutazioni." -#: cps/templates/index.xml:32 +#: cps/templates/index.xml:39 msgid "Recently added Books" msgstr "Libri aggiunti di recente" -#: cps/templates/index.xml:36 +#: cps/templates/index.xml:43 msgid "The latest Books" msgstr "Gli ultimi libri" -#: cps/templates/index.xml:39 +#: cps/templates/index.xml:46 msgid "Random Books" msgstr "Libri presentati aleatoriamente" -#: cps/templates/index.xml:43 +#: cps/templates/index.xml:50 msgid "Show Random Books" msgstr "Mostra libri casualmente" -#: cps/templates/index.xml:66 +#: cps/templates/index.xml:73 msgid "Books ordered by Author" msgstr "Libri ordinati per autore" -#: cps/templates/index.xml:73 +#: cps/templates/index.xml:80 msgid "Books ordered by publisher" msgstr "Libri ordinati per editore" -#: cps/templates/index.xml:80 +#: cps/templates/index.xml:87 msgid "Books ordered by category" msgstr "Libri ordinati per categoria" -#: cps/templates/index.xml:87 +#: cps/templates/index.xml:94 msgid "Books ordered by series" msgstr "Libri ordinati per serie" -#: cps/templates/index.xml:94 +#: cps/templates/index.xml:101 msgid "Books ordered by Languages" msgstr "Libri ordinati per lingua" -#: cps/templates/index.xml:101 +#: cps/templates/index.xml:108 msgid "Books ordered by Rating" msgstr "Libri ordinati per valutazione" -#: cps/templates/index.xml:109 +#: cps/templates/index.xml:116 msgid "Books ordered by file formats" msgstr "Libri ordinati per formato" -#: cps/templates/index.xml:112 cps/templates/layout.html:135 +#: cps/templates/index.xml:119 cps/templates/layout.html:135 #: cps/templates/search_form.html:80 msgid "Shelves" msgstr "Scaffali" -#: cps/templates/index.xml:116 +#: cps/templates/index.xml:123 msgid "Books organized in shelves" msgstr "Libri organizzati in scaffali" @@ -2296,10 +2470,6 @@ msgstr "Libri organizzati in scaffali" msgid "Home" msgstr "Home" -#: cps/templates/layout.html:29 cps/templates/shelf_order.html:41 -msgid "Back" -msgstr "Indietro" - #: cps/templates/layout.html:35 msgid "Toggle Navigation" msgstr "Alterna navigazione" @@ -2461,6 +2631,10 @@ msgstr "Cartella principale" msgid "Select" msgstr "Seleziona" +#: cps/templates/modal_dialogs.html:134 +msgid "Ok" +msgstr "Ok" + #: cps/templates/osd.xml:5 msgid "Calibre-Web eBook Catalog" msgstr "Catalogo Calibre-Web" @@ -2634,9 +2808,8 @@ msgid "Exclude Series" msgstr "Escludi serie" #: cps/templates/search_form.html:88 -#, fuzzy msgid "Exclude Shelves" -msgstr "Escludi serie" +msgstr "Escludi scaffali" #: cps/templates/search_form.html:108 msgid "Exclude Languages" @@ -2766,10 +2939,6 @@ msgstr "Reimposta la password dell'utente" msgid "Language of Books" msgstr "Mostra libri in" -#: cps/templates/user_edit.html:44 -msgid "Show All" -msgstr "tutte le lingue presenti" - #: cps/templates/user_edit.html:53 msgid "OAuth Settings" msgstr "Configurazione OAuth" @@ -2794,11 +2963,91 @@ msgstr "Crea/Visualizza" msgid "Add allowed/Denied Custom Column Values" msgstr "Aggiungi valori personali permessi/negati nelle colonne" -#: cps/templates/user_edit.html:135 +#: cps/templates/user_edit.html:135 cps/templates/user_table.html:153 msgid "Delete User" -msgstr "Elimina questo utente" +msgstr "Elimina utente" #: cps/templates/user_edit.html:146 msgid "Generate Kobo Auth URL" msgstr "Genera un URL di autenticazione per Kobo" +#: cps/templates/user_table.html:68 cps/templates/user_table.html:91 +msgid "Select..." +msgstr "Seleziona..." + +#: cps/templates/user_table.html:118 +msgid "Edit User" +msgstr "Modifica utente" + +#: cps/templates/user_table.html:121 +msgid "Enter Username" +msgstr "Digita il nome utente" + +#: cps/templates/user_table.html:122 +msgid "Enter E-mail Address" +msgstr "Digita l'indirizzo e-mail" + +#: cps/templates/user_table.html:123 +msgid "Enter Kindle E-mail Address" +msgstr "Digita l'email di Kindle" + +#: cps/templates/user_table.html:123 +msgid "Kindle E-mail" +msgstr "E-mail di Kindle" + +#: cps/templates/user_table.html:124 +msgid "Locale" +msgstr "Locale" + +#: cps/templates/user_table.html:125 +msgid "Visible Book Languages" +msgstr "Lingue dei libri visualizzabili" + +#: cps/templates/user_table.html:126 +msgid "Edit Denied Tags" +msgstr "Modifica le categorie negate" + +#: cps/templates/user_table.html:126 +msgid "Denied Tags" +msgstr "Categorie negate" + +#: cps/templates/user_table.html:127 +msgid "Edit Allowed Tags" +msgstr "Modifica le categorie permesse" + +#: cps/templates/user_table.html:127 +msgid "Allowed Tags" +msgstr "Categorie permesse" + +#: cps/templates/user_table.html:128 +msgid "Edit Allowed Column Values" +msgstr "Modifica i valori delle colonne permesse" + +#: cps/templates/user_table.html:128 +msgid "Allowed Column Values" +msgstr "Valori delle colonne permesse" + +#: cps/templates/user_table.html:129 +msgid "Edit Denied Column Values" +msgstr "Modifica i valori delle colonne negate" + +#: cps/templates/user_table.html:129 +msgid "Denied Columns Values" +msgstr "Valori delle colonne negate" + +#: cps/templates/user_table.html:131 +msgid "Change Password" +msgstr "Modifica la password" + +#: cps/templates/user_table.html:134 +msgid "View" +msgstr "Visualizza" + +#: cps/templates/user_table.html:137 +msgid "Edit Public Shelfs" +msgstr "Modifica gli scaffali pubblici" + +#: cps/templates/user_table.html:140 +msgid "Show read/unread selection" +msgstr "Mostra l'opzione per la selezione dello stato letto/non letto" + diff --git a/cps/translations/ja/LC_MESSAGES/messages.mo b/cps/translations/ja/LC_MESSAGES/messages.mo index 982116f9..63f394e9 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 bb9be7a5..a5fc9009 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: 2021-03-27 12:16+0100\n" +"POT-Creation-Date: 2021-05-01 16:33+0200\n" "PO-Revision-Date: 2018-02-07 02:20-0500\n" "Last-Translator: white \n" "Language: ja\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" +"Generated-By: Babel 2.8.0\n" #: cps/about.py:43 msgid "installed" @@ -30,310 +30,401 @@ msgstr "インストールされていません" msgid "Statistics" msgstr "統計" -#: cps/admin.py:149 +#: cps/admin.py:151 msgid "Server restarted, please reload page" msgstr "サーバを再起動しました。ページを再読み込みしてください" -#: cps/admin.py:151 +#: cps/admin.py:153 msgid "Performing shutdown of server, please close window" msgstr "サーバをシャットダウンしています。ページを閉じてください" -#: cps/admin.py:159 +#: cps/admin.py:161 msgid "Reconnect successful" msgstr "" -#: cps/admin.py:162 +#: cps/admin.py:164 msgid "Unknown command" msgstr "" -#: cps/admin.py:172 cps/editbooks.py:662 cps/editbooks.py:674 -#: cps/editbooks.py:777 cps/editbooks.py:779 cps/editbooks.py:806 -#: cps/editbooks.py:822 cps/updater.py:521 cps/uploader.py:94 +#: cps/admin.py:174 cps/editbooks.py:668 cps/editbooks.py:682 +#: cps/editbooks.py:821 cps/editbooks.py:823 cps/editbooks.py:850 +#: cps/editbooks.py:866 cps/updater.py:555 cps/uploader.py:94 #: cps/uploader.py:104 msgid "Unknown" msgstr "不明" -#: cps/admin.py:193 +#: cps/admin.py:195 msgid "Admin page" msgstr "管理者ページ" -#: cps/admin.py:215 +#: cps/admin.py:217 msgid "UI Configuration" msgstr "UI設定" -#: cps/admin.py:247 cps/admin.py:936 +#: cps/admin.py:249 cps/templates/admin.html:46 +msgid "Edit Users" +msgstr "" + +#: cps/admin.py:290 +msgid "all" +msgstr "" + +#: cps/admin.py:315 cps/admin.py:1486 +msgid "User not found" +msgstr "" + +#: cps/admin.py:329 +msgid "{} users deleted successfully" +msgstr "" + +#: cps/admin.py:351 cps/templates/user_edit.html:44 +#: cps/templates/user_table.html:69 +msgid "Show All" +msgstr "" + +#: cps/admin.py:372 cps/admin.py:378 +msgid "Malformed request" +msgstr "" + +#: cps/admin.py:390 cps/admin.py:1368 +msgid "Guest Name can't be changed" +msgstr "" + +#: cps/admin.py:400 +msgid "Guest can't have this role" +msgstr "" + +#: cps/admin.py:412 cps/admin.py:1333 +msgid "No admin user remaining, can't remove admin role" +msgstr "" + +#: cps/admin.py:416 cps/admin.py:430 +msgid "Value has to be true or false" +msgstr "" + +#: cps/admin.py:418 +msgid "Invalid role" +msgstr "" + +#: cps/admin.py:422 +msgid "Guest can't have this view" +msgstr "" + +#: cps/admin.py:432 +msgid "Invalid view" +msgstr "" + +#: cps/admin.py:435 +msgid "Guest's Locale is determined automatically and can't be set" +msgstr "" + +#: cps/admin.py:439 +msgid "No Valid Locale Given" +msgstr "" + +#: cps/admin.py:450 +msgid "No Valid Book Language Given" +msgstr "" + +#: cps/admin.py:452 +msgid "Parameter not found" +msgstr "" + +#: cps/admin.py:506 cps/admin.py:1219 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web の設定を更新しました" -#: cps/admin.py:258 +#: cps/admin.py:518 msgid "Do you really want to delete the Kobo Token?" msgstr "" -#: cps/admin.py:260 +#: cps/admin.py:520 msgid "Do you really want to delete this domain?" msgstr "" -#: cps/admin.py:262 +#: cps/admin.py:522 msgid "Do you really want to delete this user?" msgstr "" -#: cps/admin.py:264 cps/templates/shelf.html:90 +#: cps/admin.py:524 cps/templates/shelf.html:90 msgid "Are you sure you want to delete this shelf?" msgstr "" -#: cps/admin.py:510 cps/admin.py:516 cps/admin.py:526 cps/admin.py:536 -#: cps/templates/modal_dialogs.html:29 +#: cps/admin.py:526 +msgid "Are you sure you want to change locales of selected user(s)?" +msgstr "" + +#: cps/admin.py:528 +msgid "Are you sure you want to change visible book languages for selected user(s)?" +msgstr "" + +#: cps/admin.py:530 +msgid "Are you sure you want to change the selected role for the selected user(s)?" +msgstr "" + +#: cps/admin.py:532 +msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:534 +msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:683 +msgid "Tag not found" +msgstr "" + +#: cps/admin.py:695 +msgid "Invalid Action" +msgstr "" + +#: cps/admin.py:800 cps/admin.py:806 cps/admin.py:816 cps/admin.py:826 +#: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:43 msgid "Deny" msgstr "" -#: cps/admin.py:512 cps/admin.py:518 cps/admin.py:528 cps/admin.py:538 -#: cps/templates/modal_dialogs.html:28 +#: cps/admin.py:802 cps/admin.py:808 cps/admin.py:818 cps/admin.py:828 +#: cps/templates/modal_dialogs.html:28 cps/templates/user_table.html:48 msgid "Allow" msgstr "" -#: cps/admin.py:681 +#: cps/admin.py:971 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "" -#: cps/admin.py:723 +#: cps/admin.py:1016 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:729 +#: cps/admin.py:1022 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:738 +#: cps/admin.py:1052 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "" -#: cps/admin.py:752 cps/admin.py:760 +#: cps/admin.py:1067 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:755 cps/admin.py:763 +#: cps/admin.py:1070 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:768 +#: cps/admin.py:1075 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:771 +#: cps/admin.py:1078 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:779 +#: cps/admin.py:1086 #, python-format msgid "LDAP Member User Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:782 +#: cps/admin.py:1089 msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:790 +#: cps/admin.py:1097 msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:841 +#: cps/admin.py:1123 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:847 +#: cps/admin.py:1129 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:917 cps/admin.py:1024 cps/admin.py:1047 cps/admin.py:1168 -#: cps/shelf.py:102 cps/shelf.py:159 cps/shelf.py:200 cps/shelf.py:261 -#: cps/shelf.py:314 cps/shelf.py:348 cps/shelf.py:418 +#: cps/admin.py:1200 cps/admin.py:1303 cps/admin.py:1395 cps/admin.py:1461 +#: cps/shelf.py:103 cps/shelf.py:163 cps/shelf.py:206 cps/shelf.py:269 +#: cps/shelf.py:325 cps/shelf.py:360 cps/shelf.py:431 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:929 +#: cps/admin.py:1212 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:933 +#: cps/admin.py:1216 msgid "DB is not Writeable" msgstr "" -#: cps/admin.py:972 +#: cps/admin.py:1256 msgid "Basic Configuration" msgstr "基本設定" -#: cps/admin.py:987 cps/web.py:1358 +#: cps/admin.py:1272 cps/web.py:1417 msgid "Please fill out all fields!" msgstr "全ての項目を入力してください" -#: cps/admin.py:990 cps/admin.py:1002 cps/admin.py:1008 cps/admin.py:1138 -msgid "Add new user" -msgstr "新規ユーザ追加" - -#: cps/admin.py:999 cps/web.py:1496 +#: cps/admin.py:1280 msgid "E-mail is not from valid domain" msgstr "このメールは有効なドメインからのものではありません" -#: cps/admin.py:1006 cps/admin.py:1021 -msgid "Found an existing account for this e-mail address or nickname." -msgstr "このメールアドレスかニックネームで登録されたアカウントが見つかりました" +#: cps/admin.py:1284 cps/admin.py:1414 +msgid "Add new user" +msgstr "新規ユーザ追加" -#: cps/admin.py:1017 +#: cps/admin.py:1293 #, python-format msgid "User '%(user)s' created" msgstr "ユーザ '%(user)s' を作成しました" -#: cps/admin.py:1031 +#: cps/admin.py:1299 +#, fuzzy +msgid "Found an existing account for this e-mail address or name." +msgstr "このメールアドレスかニックネームで登録されたアカウントが見つかりました" + +#: cps/admin.py:1312 #, python-format msgid "User '%(nick)s' deleted" msgstr "ユーザ '%(nick)s' を削除しました" -#: cps/admin.py:1034 +#: cps/admin.py:1314 cps/admin.py:1315 +msgid "Can't delete Guest User" +msgstr "" + +#: cps/admin.py:1318 msgid "No admin user remaining, can't delete user" msgstr "" -#: cps/admin.py:1041 -#, python-format -msgid "User '%(nick)s' updated" -msgstr "ユーザ '%(nick)s' を更新しました" - -#: cps/admin.py:1044 -msgid "An unknown error occured." -msgstr "不明なエラーが発生しました。" - -#: cps/admin.py:1056 -msgid "No admin user remaining, can't remove admin role" -msgstr "" - -#: cps/admin.py:1092 cps/web.py:1554 -msgid "Found an existing account for this e-mail address." -msgstr "このメールアドレスで登録されたアカウントがあります" - -#: cps/admin.py:1101 cps/admin.py:1115 cps/admin.py:1209 cps/web.py:1516 +#: cps/admin.py:1383 cps/admin.py:1504 #, python-format msgid "Edit User %(nick)s" msgstr "%(nick)s を編集" -#: cps/admin.py:1107 cps/web.py:1509 -msgid "This username is already taken" -msgstr "" +#: cps/admin.py:1387 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "ユーザ '%(nick)s' を更新しました" -#: cps/admin.py:1147 cps/templates/admin.html:78 +#: cps/admin.py:1391 +#, fuzzy +msgid "An unknown error occurred." +msgstr "不明なエラーが発生しました。" + +#: cps/admin.py:1423 cps/templates/admin.html:94 msgid "Edit E-mail Server Settings" msgstr "SMTP設定を変更" -#: cps/admin.py:1175 +#: cps/admin.py:1442 +msgid "G-Mail Account Verification Successful" +msgstr "" + +#: cps/admin.py:1468 #, python-format msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" msgstr "" -#: cps/admin.py:1178 +#: cps/admin.py:1471 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "テストメールを %(res)s に送信中にエラーが発生しました" -#: cps/admin.py:1180 +#: cps/admin.py:1473 msgid "Please configure your e-mail address first..." msgstr "" -#: cps/admin.py:1182 +#: cps/admin.py:1475 msgid "E-mail server settings updated" msgstr "メールサーバの設定を更新しました" -#: cps/admin.py:1193 -msgid "User not found" -msgstr "" - -#: cps/admin.py:1220 +#: cps/admin.py:1516 #, python-format msgid "Password for user %(user)s reset" msgstr "%(user)s 用のパスワードをリセット" -#: cps/admin.py:1223 cps/web.py:1388 cps/web.py:1452 +#: cps/admin.py:1519 cps/web.py:1442 cps/web.py:1503 msgid "An unknown error occurred. Please try again later." msgstr "不明なエラーが発生しました。あとで再試行してください。" -#: cps/admin.py:1226 cps/web.py:1320 +#: cps/admin.py:1522 cps/web.py:1382 msgid "Please configure the SMTP mail settings first..." msgstr "初めにSMTPメールの設定をしてください" -#: cps/admin.py:1237 +#: cps/admin.py:1533 msgid "Logfile viewer" msgstr "" -#: cps/admin.py:1303 +#: cps/admin.py:1599 msgid "Requesting update package" msgstr "更新データを要求中" -#: cps/admin.py:1304 +#: cps/admin.py:1600 msgid "Downloading update package" msgstr "更新データをダウンロード中" -#: cps/admin.py:1305 +#: cps/admin.py:1601 msgid "Unzipping update package" msgstr "更新データを展開中" -#: cps/admin.py:1306 +#: cps/admin.py:1602 msgid "Replacing files" msgstr "ファイルを置換中" -#: cps/admin.py:1307 +#: cps/admin.py:1603 msgid "Database connections are closed" msgstr "データベースの接続を切断完了" -#: cps/admin.py:1308 +#: cps/admin.py:1604 msgid "Stopping server" msgstr "サーバ停止中" -#: cps/admin.py:1309 +#: cps/admin.py:1605 msgid "Update finished, please press okay and reload page" msgstr "アップデート完了、OKを押してページをリロードしてください" -#: cps/admin.py:1310 cps/admin.py:1311 cps/admin.py:1312 cps/admin.py:1313 -#: cps/admin.py:1314 +#: cps/admin.py:1606 cps/admin.py:1607 cps/admin.py:1608 cps/admin.py:1609 +#: cps/admin.py:1610 msgid "Update failed:" msgstr "アップデート失敗:" -#: cps/admin.py:1310 cps/updater.py:337 cps/updater.py:532 cps/updater.py:534 +#: cps/admin.py:1606 cps/updater.py:356 cps/updater.py:566 cps/updater.py:568 msgid "HTTP Error" msgstr "HTTPエラー" -#: cps/admin.py:1311 cps/updater.py:339 cps/updater.py:536 +#: cps/admin.py:1607 cps/updater.py:358 cps/updater.py:570 msgid "Connection error" msgstr "接続エラー" -#: cps/admin.py:1312 cps/updater.py:341 cps/updater.py:538 +#: cps/admin.py:1608 cps/updater.py:360 cps/updater.py:572 msgid "Timeout while establishing connection" msgstr "接続を確立中にタイムアウトしました" -#: cps/admin.py:1313 cps/updater.py:343 cps/updater.py:540 +#: cps/admin.py:1609 cps/updater.py:362 cps/updater.py:574 msgid "General error" msgstr "エラー発生" -#: cps/admin.py:1314 +#: cps/admin.py:1610 msgid "Update File Could Not be Saved in Temp Dir" msgstr "" -#: cps/admin.py:1376 +#: cps/admin.py:1671 msgid "Failed to Create at Least One LDAP User" msgstr "" -#: cps/admin.py:1389 +#: cps/admin.py:1684 #, python-format msgid "Error: %(ldaperror)s" msgstr "" -#: cps/admin.py:1393 +#: cps/admin.py:1688 msgid "Error: No user returned in response of LDAP server" msgstr "" -#: cps/admin.py:1426 +#: cps/admin.py:1721 msgid "At Least One LDAP User Not Found in Database" msgstr "" -#: cps/admin.py:1428 +#: cps/admin.py:1723 msgid "{} User Successfully Imported" msgstr "" @@ -345,98 +436,98 @@ msgstr "" msgid "Execution permissions missing" msgstr "" -#: cps/editbooks.py:267 cps/editbooks.py:269 +#: cps/editbooks.py:294 cps/editbooks.py:296 msgid "Book Format Successfully Deleted" msgstr "" -#: cps/editbooks.py:276 cps/editbooks.py:278 +#: cps/editbooks.py:303 cps/editbooks.py:305 msgid "Book Successfully Deleted" msgstr "" -#: cps/editbooks.py:325 cps/editbooks.py:646 cps/web.py:1598 cps/web.py:1634 -#: cps/web.py:1705 +#: cps/editbooks.py:361 cps/editbooks.py:724 cps/web.py:1627 cps/web.py:1663 +#: cps/web.py:1734 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "電子書籍を開けません。ファイルが存在しないかアクセスできません" -#: cps/editbooks.py:359 +#: cps/editbooks.py:395 msgid "edit metadata" msgstr "メタデータを編集" -#: cps/editbooks.py:434 +#: cps/editbooks.py:473 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s は有効な言語ではありません" -#: cps/editbooks.py:556 cps/editbooks.py:905 +#: cps/editbooks.py:595 cps/editbooks.py:936 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "ファイル拡張子 '%(ext)s' をこのサーバにアップロードすることは許可されていません" -#: cps/editbooks.py:560 cps/editbooks.py:909 +#: cps/editbooks.py:599 cps/editbooks.py:940 msgid "File to be uploaded must have an extension" msgstr "アップロードするファイルには拡張子が必要です" -#: cps/editbooks.py:572 +#: cps/editbooks.py:611 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "%(path)s の作成に失敗しました (Permission denied)。" -#: cps/editbooks.py:577 +#: cps/editbooks.py:616 #, python-format msgid "Failed to store file %(file)s." msgstr "%(file)s を保存できません。" -#: cps/editbooks.py:595 cps/editbooks.py:972 cps/web.py:1559 +#: cps/editbooks.py:634 cps/editbooks.py:1027 cps/web.py:1588 #, python-format msgid "Database error: %(error)s." msgstr "" -#: cps/editbooks.py:599 +#: cps/editbooks.py:638 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "ファイル形式 %(ext)s が %(book)s に追加されました" -#: cps/editbooks.py:726 +#: cps/editbooks.py:775 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:763 +#: cps/editbooks.py:807 msgid "Metadata successfully updated" msgstr "メタデータを更新しました" -#: cps/editbooks.py:772 +#: cps/editbooks.py:816 msgid "Error editing book, please check logfile for details" msgstr "本の編集でエラーが発生しました。詳細はログファイルを確認してください" -#: cps/editbooks.py:810 +#: cps/editbooks.py:854 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "" -#: cps/editbooks.py:917 +#: cps/editbooks.py:948 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "" -#: cps/editbooks.py:947 +#: cps/editbooks.py:967 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "" -#: cps/editbooks.py:958 +#: cps/editbooks.py:1013 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:984 +#: cps/editbooks.py:1039 msgid "Source or destination format for conversion missing" msgstr "変換元の形式または変換後の形式が指定されていません" -#: cps/editbooks.py:992 +#: cps/editbooks.py:1047 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "本の %(book_format)s への変換がキューに追加されました" -#: cps/editbooks.py:996 +#: cps/editbooks.py:1051 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "この本の変換中にエラーが発生しました: %(res)s" @@ -544,55 +635,68 @@ msgstr "ファイル %(file)s はGoogleドライブ上にありません" msgid "Book path %(path)s not found on Google Drive" msgstr "本のパス %(path)s はGoogleドライブ上にありません" -#: cps/helper.py:576 +#: cps/helper.py:511 +#, fuzzy +msgid "Found an existing account for this e-mail address" +msgstr "このメールアドレスで登録されたアカウントがあります" + +#: cps/helper.py:519 +msgid "This username is already taken" +msgstr "" + +#: cps/helper.py:529 +msgid "Invalid e-mail address format" +msgstr "" + +#: cps/helper.py:602 msgid "Error Downloading Cover" msgstr "" -#: cps/helper.py:579 +#: cps/helper.py:605 msgid "Cover Format Error" msgstr "" -#: cps/helper.py:589 +#: cps/helper.py:615 msgid "Failed to create path for cover" msgstr "" -#: cps/helper.py:605 +#: cps/helper.py:631 msgid "Cover-file is not a valid image file, or could not be stored" msgstr "" -#: cps/helper.py:616 +#: cps/helper.py:642 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" msgstr "" -#: cps/helper.py:629 +#: cps/helper.py:655 msgid "Only jpg/jpeg files are supported as coverfile" msgstr "" -#: cps/helper.py:680 +#: cps/helper.py:707 msgid "Unrar binary file not found" msgstr "" -#: cps/helper.py:694 +#: cps/helper.py:721 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:743 +#: cps/helper.py:769 msgid "Waiting" msgstr "待機中" -#: cps/helper.py:745 +#: cps/helper.py:771 msgid "Failed" msgstr "失敗" -#: cps/helper.py:747 +#: cps/helper.py:773 msgid "Started" msgstr "開始" -#: cps/helper.py:749 +#: cps/helper.py:775 msgid "Finished" msgstr "終了" -#: cps/helper.py:751 +#: cps/helper.py:777 msgid "Unknown Status" msgstr "不明" @@ -604,65 +708,82 @@ msgstr "" msgid "Kobo Setup" msgstr "" -#: cps/oauth_bb.py:76 +#: cps/oauth_bb.py:78 #, python-format msgid "Register with %(provider)s" msgstr "" -#: cps/oauth_bb.py:137 cps/remotelogin.py:133 cps/web.py:1424 +#: cps/oauth_bb.py:139 cps/remotelogin.py:133 cps/web.py:1475 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "%(nickname)s としてログイン中" -#: cps/oauth_bb.py:147 +#: cps/oauth_bb.py:149 #, python-format msgid "Link to %(oauth)s Succeeded" msgstr "" -#: cps/oauth_bb.py:153 +#: cps/oauth_bb.py:156 msgid "Login failed, No User Linked With OAuth Account" msgstr "" -#: cps/oauth_bb.py:195 +#: cps/oauth_bb.py:198 #, python-format msgid "Unlink to %(oauth)s Succeeded" msgstr "" -#: cps/oauth_bb.py:199 +#: cps/oauth_bb.py:203 #, python-format msgid "Unlink to %(oauth)s Failed" msgstr "" -#: cps/oauth_bb.py:202 +#: cps/oauth_bb.py:206 #, python-format msgid "Not Linked to %(oauth)s" msgstr "" -#: cps/oauth_bb.py:259 +#: cps/oauth_bb.py:262 msgid "Failed to log in with GitHub." msgstr "" -#: cps/oauth_bb.py:264 +#: cps/oauth_bb.py:268 msgid "Failed to fetch user info from GitHub." msgstr "" -#: cps/oauth_bb.py:275 +#: cps/oauth_bb.py:280 msgid "Failed to log in with Google." msgstr "" -#: cps/oauth_bb.py:280 +#: cps/oauth_bb.py:286 msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:312 +#: cps/oauth_bb.py:333 msgid "GitHub Oauth error, please retry later." msgstr "" -#: cps/oauth_bb.py:331 +#: cps/oauth_bb.py:336 +msgid "GitHub Oauth error: {}" +msgstr "" + +#: cps/oauth_bb.py:357 msgid "Google Oauth error, please retry later." msgstr "" -#: cps/remotelogin.py:65 cps/web.py:1471 +#: cps/oauth_bb.py:360 +msgid "Google Oauth error: {}" +msgstr "" + +#: cps/opds.py:110 cps/opds.py:199 cps/opds.py:276 cps/opds.py:328 +#: cps/templates/grid.html:14 cps/templates/list.html:14 +msgid "All" +msgstr "" + +#: cps/opds.py:385 +msgid "{} Stars" +msgstr "" + +#: cps/remotelogin.py:65 cps/web.py:1522 msgid "login" msgstr "ログイン" @@ -678,7 +799,7 @@ msgstr "トークンが無効です" msgid "Success! Please return to your device" msgstr "成功です!端末に戻ってください" -#: cps/render_template.py:39 cps/web.py:415 +#: cps/render_template.py:39 cps/web.py:414 msgid "Books" msgstr "" @@ -686,7 +807,7 @@ msgstr "" msgid "Show recent books" msgstr "最近追加された本を表示" -#: cps/render_template.py:42 cps/templates/index.xml:18 +#: cps/render_template.py:42 cps/templates/index.xml:25 msgid "Hot Books" msgstr "人気の本" @@ -694,127 +815,130 @@ msgstr "人気の本" msgid "Show Hot Books" msgstr "" -#: cps/render_template.py:45 +#: cps/render_template.py:46 cps/render_template.py:51 msgid "Downloaded Books" msgstr "" -#: cps/render_template.py:47 +#: cps/render_template.py:48 cps/render_template.py:53 +#: cps/templates/user_table.html:151 msgid "Show Downloaded Books" msgstr "" -#: cps/render_template.py:50 cps/templates/index.xml:25 cps/web.py:425 +#: cps/render_template.py:56 cps/templates/index.xml:32 cps/web.py:424 msgid "Top Rated Books" msgstr "" -#: cps/render_template.py:52 +#: cps/render_template.py:58 cps/templates/user_table.html:145 msgid "Show Top Rated Books" msgstr "" -#: cps/render_template.py:53 cps/templates/index.xml:47 -#: cps/templates/index.xml:51 cps/web.py:642 +#: cps/render_template.py:59 cps/templates/index.xml:54 +#: cps/templates/index.xml:58 cps/web.py:650 msgid "Read Books" msgstr "読んだ本" -#: cps/render_template.py:55 +#: cps/render_template.py:61 msgid "Show read and unread" msgstr "既読の本と未読の本を表示" -#: cps/render_template.py:57 cps/templates/index.xml:54 -#: cps/templates/index.xml:58 cps/web.py:645 +#: cps/render_template.py:63 cps/templates/index.xml:61 +#: cps/templates/index.xml:65 cps/web.py:653 msgid "Unread Books" msgstr "未読の本" -#: cps/render_template.py:59 +#: cps/render_template.py:65 msgid "Show unread" msgstr "" -#: cps/render_template.py:60 +#: cps/render_template.py:66 msgid "Discover" msgstr "見つける" -#: cps/render_template.py:62 +#: cps/render_template.py:68 cps/templates/user_table.html:143 +#: cps/templates/user_table.html:146 msgid "Show random books" msgstr "ランダムで本を表示" -#: cps/render_template.py:63 cps/templates/book_table.html:50 -#: cps/templates/index.xml:76 cps/web.py:950 +#: cps/render_template.py:69 cps/templates/book_table.html:51 +#: cps/templates/index.xml:83 cps/web.py:1024 msgid "Categories" msgstr "カテゴリ" -#: cps/render_template.py:65 +#: cps/render_template.py:71 cps/templates/user_table.html:142 msgid "Show category selection" msgstr "カテゴリ選択を表示" -#: cps/render_template.py:66 cps/templates/book_edit.html:84 -#: cps/templates/book_table.html:51 cps/templates/index.xml:83 -#: cps/templates/search_form.html:62 cps/web.py:854 cps/web.py:864 +#: cps/render_template.py:72 cps/templates/book_edit.html:84 +#: cps/templates/book_table.html:52 cps/templates/index.xml:90 +#: cps/templates/search_form.html:62 cps/web.py:921 cps/web.py:931 msgid "Series" msgstr "シリーズ" -#: cps/render_template.py:68 +#: cps/render_template.py:74 cps/templates/user_table.html:141 msgid "Show series selection" msgstr "シリーズ選択を表示" -#: cps/render_template.py:69 cps/templates/book_table.html:49 -#: cps/templates/index.xml:62 +#: cps/render_template.py:75 cps/templates/book_table.html:50 +#: cps/templates/index.xml:69 msgid "Authors" msgstr "著者" -#: cps/render_template.py:71 +#: cps/render_template.py:77 cps/templates/user_table.html:144 msgid "Show author selection" msgstr "著者選択を表示" -#: cps/render_template.py:73 cps/templates/book_table.html:55 -#: cps/templates/index.xml:69 cps/web.py:833 +#: cps/render_template.py:79 cps/templates/book_table.html:56 +#: cps/templates/index.xml:76 cps/web.py:898 msgid "Publishers" msgstr "出版社" -#: cps/render_template.py:75 +#: cps/render_template.py:81 cps/templates/user_table.html:147 msgid "Show publisher selection" msgstr "出版社選択を表示" -#: cps/render_template.py:76 cps/templates/book_table.html:53 -#: cps/templates/index.xml:90 cps/templates/search_form.html:100 cps/web.py:929 +#: cps/render_template.py:82 cps/templates/book_table.html:54 +#: cps/templates/index.xml:97 cps/templates/search_form.html:100 +#: cps/web.py:1001 msgid "Languages" msgstr "言語" -#: cps/render_template.py:79 +#: cps/render_template.py:85 cps/templates/user_table.html:139 msgid "Show language selection" msgstr "言語選択を表示" -#: cps/render_template.py:80 cps/templates/index.xml:97 +#: cps/render_template.py:86 cps/templates/index.xml:104 msgid "Ratings" msgstr "" -#: cps/render_template.py:82 +#: cps/render_template.py:88 cps/templates/user_table.html:148 msgid "Show ratings selection" msgstr "" -#: cps/render_template.py:83 cps/templates/index.xml:105 +#: cps/render_template.py:89 cps/templates/index.xml:112 msgid "File formats" msgstr "" -#: cps/render_template.py:85 +#: cps/render_template.py:91 cps/templates/user_table.html:149 msgid "Show file formats selection" msgstr "" -#: cps/render_template.py:87 cps/web.py:669 +#: cps/render_template.py:93 cps/web.py:677 msgid "Archived Books" msgstr "" -#: cps/render_template.py:89 +#: cps/render_template.py:95 cps/templates/user_table.html:150 msgid "Show archived books" msgstr "" -#: cps/render_template.py:91 cps/web.py:743 +#: cps/render_template.py:97 cps/web.py:751 msgid "Books List" msgstr "" -#: cps/render_template.py:93 +#: cps/render_template.py:99 cps/templates/user_table.html:152 msgid "Show Books List" msgstr "" -#: cps/shelf.py:69 cps/shelf.py:122 +#: cps/shelf.py:69 cps/shelf.py:124 msgid "Invalid shelf specified" msgstr "指定された本棚は無効です" @@ -828,303 +952,307 @@ msgstr "申し訳ありませんが、あなたは %(shelfname)s に本を追加 msgid "Book is already part of the shelf: %(shelfname)s" msgstr "この本は %(shelfname)s にすでに追加されています" -#: cps/shelf.py:108 +#: cps/shelf.py:110 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "本を %(sname)s に追加しました" -#: cps/shelf.py:126 +#: cps/shelf.py:129 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "%(name)s に本を追加することが許可されていません" -#: cps/shelf.py:144 +#: cps/shelf.py:147 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "これらの本は %(name)s にすでに追加されています" -#: cps/shelf.py:156 +#: cps/shelf.py:159 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "本が %(sname)s に追加されました" -#: cps/shelf.py:161 +#: cps/shelf.py:166 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "%(sname)s に本を追加できません" -#: cps/shelf.py:206 +#: cps/shelf.py:212 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "本が %(sname)s から削除されました" -#: cps/shelf.py:214 +#: cps/shelf.py:221 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "申し訳ありませんが、%(sname)s から本を削除することが許可されていません" -#: cps/shelf.py:224 cps/templates/layout.html:140 +#: cps/shelf.py:231 cps/templates/layout.html:140 msgid "Create a Shelf" msgstr "本棚を作成する" -#: cps/shelf.py:231 +#: cps/shelf.py:238 msgid "Edit a shelf" msgstr "本棚を編集する" -#: cps/shelf.py:249 +#: cps/shelf.py:256 #, python-format msgid "Shelf %(title)s created" msgstr "%(title)s を作成しました" -#: cps/shelf.py:252 +#: cps/shelf.py:259 #, python-format msgid "Shelf %(title)s changed" msgstr "%(title)s を変更しました" -#: cps/shelf.py:265 +#: cps/shelf.py:273 msgid "There was an error" msgstr "エラーが発生しました" -#: cps/shelf.py:281 +#: cps/shelf.py:290 #, python-format msgid "A public shelf with the name '%(title)s' already exists." msgstr "" -#: cps/shelf.py:291 +#: cps/shelf.py:301 #, python-format msgid "A private shelf with the name '%(title)s' already exists." msgstr "" -#: cps/shelf.py:358 +#: cps/shelf.py:370 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "'%(name)s' 内の本の順番を変更する" -#: cps/shelf.py:423 +#: cps/shelf.py:436 #, python-format msgid "Shelf: '%(name)s'" msgstr "本棚: '%(name)s'" -#: cps/shelf.py:427 +#: cps/shelf.py:440 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "本棚を開けません。この本棚は存在しないかアクセスできません" -#: cps/updater.py:355 cps/updater.py:366 cps/updater.py:418 cps/updater.py:432 +#: cps/updater.py:374 cps/updater.py:385 cps/updater.py:485 cps/updater.py:500 msgid "Unexpected data while reading update information" msgstr "アップデート情報を読み込み中に予期しないデータが見つかりました" -#: cps/updater.py:362 cps/updater.py:424 +#: cps/updater.py:381 cps/updater.py:492 msgid "No update available. You already have the latest version installed" msgstr "アップデートはありません。すでに最新バージョンがインストールされています" -#: cps/updater.py:379 +#: cps/updater.py:399 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "アップデートが利用可能です。下のボタンをクリックして最新バージョンにアップデートしてください。" -#: cps/updater.py:397 +#: cps/updater.py:417 msgid "Could not fetch update information" msgstr "アップデート情報を取得できません" -#: cps/updater.py:411 -msgid "No release information available" -msgstr "リリース情報がありません" +#: cps/updater.py:427 +msgid "Click on the button below to update to the latest stable version." +msgstr "" -#: cps/updater.py:468 cps/updater.py:479 cps/updater.py:498 +#: cps/updater.py:436 cps/updater.py:450 cps/updater.py:461 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "アップデートが利用可能です。下のボタンをクリックしてバージョン: %(version)s にアップデートしてください。" -#: cps/updater.py:489 -msgid "Click on the button below to update to the latest stable version." -msgstr "" +#: cps/updater.py:478 +msgid "No release information available" +msgstr "リリース情報がありません" -#: cps/templates/index.html:5 cps/web.py:435 +#: cps/templates/index.html:5 cps/web.py:434 msgid "Discover (Random Books)" msgstr "本を見つける (ランダムで表示)" -#: cps/web.py:461 +#: cps/web.py:460 msgid "Hot Books (Most Downloaded)" msgstr "" -#: cps/web.py:489 +#: cps/web.py:493 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:503 +#: cps/web.py:508 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "" -#: cps/web.py:517 +#: cps/web.py:522 #, python-format msgid "Author: %(name)s" msgstr "" -#: cps/web.py:531 +#: cps/web.py:537 #, python-format msgid "Publisher: %(name)s" msgstr "出版社: %(name)s" -#: cps/web.py:544 +#: cps/web.py:550 #, python-format msgid "Series: %(serie)s" msgstr "シリーズ: %(serie)s" -#: cps/web.py:557 +#: cps/web.py:563 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:570 +#: cps/web.py:576 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:584 +#: cps/web.py:592 #, python-format msgid "Category: %(name)s" msgstr "カテゴリ: %(name)s" -#: cps/web.py:603 +#: cps/web.py:611 #, python-format msgid "Language: %(name)s" msgstr "言語: %(name)s" -#: cps/web.py:633 +#: cps/web.py:641 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:703 cps/web.py:1248 +#: cps/templates/layout.html:56 cps/web.py:711 cps/web.py:1314 msgid "Advanced Search" msgstr "詳細検索" #: cps/templates/book_edit.html:214 cps/templates/feed.xml:33 #: cps/templates/index.xml:11 cps/templates/layout.html:45 #: cps/templates/layout.html:48 cps/templates/search_form.html:194 -#: cps/web.py:715 cps/web.py:987 +#: cps/web.py:723 cps/web.py:1061 msgid "Search" msgstr "検索" -#: cps/web.py:882 +#: cps/templates/admin.html:16 cps/web.py:876 +msgid "Downloads" +msgstr "" + +#: cps/web.py:952 msgid "Ratings list" msgstr "" -#: cps/web.py:901 +#: cps/web.py:973 msgid "File formats list" msgstr "" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:964 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1038 msgid "Tasks" msgstr "タスク" -#: cps/web.py:1108 +#: cps/web.py:1182 msgid "Published after " msgstr "これ以降に出版 " -#: cps/web.py:1115 +#: cps/web.py:1189 msgid "Published before " msgstr "これ以前に出版 " -#: cps/web.py:1145 +#: cps/web.py:1211 #, python-format msgid "Rating <= %(rating)s" msgstr "評価 <= %(rating)s" -#: cps/web.py:1147 +#: cps/web.py:1213 #, python-format msgid "Rating >= %(rating)s" msgstr "評価 >= %(rating)s" -#: cps/web.py:1149 +#: cps/web.py:1215 #, python-format msgid "Read Status = %(status)s" msgstr "" -#: cps/web.py:1325 +#: cps/web.py:1387 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "本の %(kindlemail)s への送信がキューに追加されました" -#: cps/web.py:1329 +#: cps/web.py:1391 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "%(res)s を送信中にエラーが発生しました" -#: cps/web.py:1331 +#: cps/web.py:1393 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "初めにKindleのメールアドレスを設定してください" -#: cps/web.py:1348 +#: cps/web.py:1410 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "" -#: cps/web.py:1349 cps/web.py:1359 cps/web.py:1366 cps/web.py:1389 -#: cps/web.py:1393 cps/web.py:1398 cps/web.py:1402 +#: cps/web.py:1411 cps/web.py:1418 cps/web.py:1424 cps/web.py:1443 +#: cps/web.py:1447 cps/web.py:1453 msgid "register" msgstr "登録" -#: cps/web.py:1364 -msgid "Invalid e-mail address format" -msgstr "" - -#: cps/web.py:1391 +#: cps/web.py:1445 msgid "Your e-mail is not allowed to register" msgstr "このメールアドレスは登録が許可されていません" -#: cps/web.py:1394 +#: cps/web.py:1448 msgid "Confirmation e-mail was send to your e-mail account." msgstr "確認メールがこのメールアドレスに送信されました。" -#: cps/web.py:1397 -msgid "This username or e-mail address is already in use." -msgstr "このユーザ名またはメールアドレスはすでに使われています。" - -#: cps/web.py:1414 +#: cps/web.py:1465 msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1431 +#: cps/web.py:1482 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "" -#: cps/web.py:1437 +#: cps/web.py:1488 #, python-format msgid "Could not login: %(message)s" msgstr "" -#: cps/web.py:1441 cps/web.py:1465 +#: cps/web.py:1492 cps/web.py:1516 msgid "Wrong Username or Password" msgstr "ユーザ名またはパスワードが違います" -#: cps/web.py:1448 +#: cps/web.py:1499 msgid "New Password was send to your email address" msgstr "" -#: cps/web.py:1454 +#: cps/web.py:1505 msgid "Please enter valid username to reset password" msgstr "" -#: cps/web.py:1460 +#: cps/web.py:1511 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "" -#: cps/web.py:1498 cps/web.py:1583 +#: cps/web.py:1565 cps/web.py:1612 #, python-format msgid "%(name)s's profile" msgstr "%(name)s のプロフィール" -#: cps/web.py:1550 +#: cps/web.py:1579 msgid "Profile updated" msgstr "プロフィールを更新しました" -#: cps/web.py:1610 cps/web.py:1613 cps/web.py:1616 cps/web.py:1619 -#: cps/web.py:1626 cps/web.py:1631 +#: cps/web.py:1583 +msgid "Found an existing account for this e-mail address." +msgstr "このメールアドレスで登録されたアカウントがあります" + +#: cps/web.py:1639 cps/web.py:1642 cps/web.py:1645 cps/web.py:1648 +#: cps/web.py:1655 cps/web.py:1660 msgid "Read a Book" msgstr "本を読む" +#: cps/services/gmail.py:41 +msgid "Found no valid gmail.json file with OAuth information" +msgstr "" + #: cps/tasks/convert.py:114 #, python-format msgid "Calibre ebook-convert %(tool)s not found" @@ -1163,221 +1291,231 @@ msgstr "" msgid "Users" msgstr "" -#: cps/templates/admin.html:12 cps/templates/login.html:8 +#: cps/templates/admin.html:13 cps/templates/login.html:8 #: cps/templates/login.html:9 cps/templates/register.html:8 -#: cps/templates/user_edit.html:9 +#: cps/templates/user_edit.html:9 cps/templates/user_table.html:121 msgid "Username" msgstr "ユーザ名" -#: cps/templates/admin.html:13 cps/templates/register.html:13 -#: cps/templates/user_edit.html:14 +#: cps/templates/admin.html:14 cps/templates/register.html:13 +#: cps/templates/user_edit.html:14 cps/templates/user_table.html:122 msgid "E-mail Address" msgstr "" -#: cps/templates/admin.html:14 cps/templates/user_edit.html:27 +#: cps/templates/admin.html:15 cps/templates/user_edit.html:27 msgid "Send to Kindle E-mail Address" msgstr "" -#: cps/templates/admin.html:15 -msgid "Downloads" -msgstr "" - -#: cps/templates/admin.html:16 cps/templates/layout.html:77 +#: cps/templates/admin.html:17 cps/templates/layout.html:77 +#: cps/templates/user_table.html:130 msgid "Admin" msgstr "管理者" -#: cps/templates/admin.html:17 cps/templates/login.html:12 +#: cps/templates/admin.html:18 cps/templates/login.html:12 #: cps/templates/login.html:13 cps/templates/user_edit.html:22 msgid "Password" msgstr "パスワード" -#: cps/templates/admin.html:18 cps/templates/layout.html:66 +#: cps/templates/admin.html:19 cps/templates/layout.html:66 +#: cps/templates/user_table.html:132 msgid "Upload" msgstr "アップロード" -#: cps/templates/admin.html:19 cps/templates/detail.html:18 +#: cps/templates/admin.html:20 cps/templates/detail.html:18 #: cps/templates/detail.html:27 cps/templates/shelf.html:6 +#: cps/templates/user_table.html:133 msgid "Download" msgstr "ダウンロード" -#: cps/templates/admin.html:20 +#: cps/templates/admin.html:21 msgid "View Books" msgstr "" -#: cps/templates/admin.html:21 +#: cps/templates/admin.html:22 cps/templates/user_table.html:118 +#: cps/templates/user_table.html:135 msgid "Edit" msgstr "編集" -#: cps/templates/admin.html:22 cps/templates/book_edit.html:16 -#: cps/templates/book_table.html:57 cps/templates/modal_dialogs.html:63 +#: cps/templates/admin.html:23 cps/templates/book_edit.html:16 +#: cps/templates/book_table.html:58 cps/templates/modal_dialogs.html:63 #: cps/templates/modal_dialogs.html:116 cps/templates/user_edit.html:66 +#: cps/templates/user_table.html:136 msgid "Delete" msgstr "削除" -#: cps/templates/admin.html:23 +#: cps/templates/admin.html:24 msgid "Public Shelf" msgstr "" -#: cps/templates/admin.html:44 +#: cps/templates/admin.html:47 msgid "Add New User" msgstr "" -#: cps/templates/admin.html:46 +#: cps/templates/admin.html:49 msgid "Import LDAP Users" msgstr "" -#: cps/templates/admin.html:53 +#: cps/templates/admin.html:56 msgid "E-mail Server Settings" msgstr "" -#: cps/templates/admin.html:57 cps/templates/email_edit.html:11 +#: cps/templates/admin.html:61 cps/templates/email_edit.html:30 msgid "SMTP Hostname" msgstr "" -#: cps/templates/admin.html:61 cps/templates/email_edit.html:15 +#: cps/templates/admin.html:65 cps/templates/email_edit.html:34 msgid "SMTP Port" msgstr "" -#: cps/templates/admin.html:65 cps/templates/email_edit.html:19 +#: cps/templates/admin.html:69 cps/templates/email_edit.html:38 msgid "Encryption" msgstr "暗号化" -#: cps/templates/admin.html:69 cps/templates/email_edit.html:27 +#: cps/templates/admin.html:73 cps/templates/email_edit.html:46 msgid "SMTP Login" msgstr "" -#: cps/templates/admin.html:73 cps/templates/email_edit.html:35 +#: cps/templates/admin.html:77 cps/templates/admin.html:88 +#: cps/templates/email_edit.html:54 msgid "From E-mail" msgstr "" #: cps/templates/admin.html:84 +msgid "E-Mail Service" +msgstr "" + +#: cps/templates/admin.html:85 +msgid "Gmail via Oauth2" +msgstr "" + +#: cps/templates/admin.html:100 msgid "Configuration" msgstr "設定" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:103 msgid "Calibre Database Directory" msgstr "" -#: cps/templates/admin.html:91 cps/templates/config_edit.html:136 +#: cps/templates/admin.html:107 cps/templates/config_edit.html:136 msgid "Log Level" msgstr "ログレベル" -#: cps/templates/admin.html:95 +#: cps/templates/admin.html:111 msgid "Port" msgstr "ポート番号" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:116 msgid "External Port" msgstr "" -#: cps/templates/admin.html:107 cps/templates/config_view_edit.html:27 +#: cps/templates/admin.html:123 cps/templates/config_view_edit.html:27 msgid "Books per Page" msgstr "" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:127 msgid "Uploads" msgstr "" -#: cps/templates/admin.html:115 +#: cps/templates/admin.html:131 msgid "Anonymous Browsing" msgstr "" -#: cps/templates/admin.html:119 +#: cps/templates/admin.html:135 msgid "Public Registration" msgstr "" -#: cps/templates/admin.html:123 +#: cps/templates/admin.html:139 msgid "Magic Link Remote Login" msgstr "" -#: cps/templates/admin.html:127 +#: cps/templates/admin.html:143 msgid "Reverse Proxy Login" msgstr "" -#: cps/templates/admin.html:132 +#: cps/templates/admin.html:148 msgid "Reverse proxy header name" msgstr "" -#: cps/templates/admin.html:137 +#: cps/templates/admin.html:153 msgid "Edit Basic Configuration" msgstr "" -#: cps/templates/admin.html:138 +#: cps/templates/admin.html:154 msgid "Edit UI Configuration" msgstr "" -#: cps/templates/admin.html:143 +#: cps/templates/admin.html:159 msgid "Administration" msgstr "管理" -#: cps/templates/admin.html:144 +#: cps/templates/admin.html:160 msgid "Download Debug Package" msgstr "" -#: cps/templates/admin.html:145 +#: cps/templates/admin.html:161 msgid "View Logs" msgstr "" -#: cps/templates/admin.html:148 +#: cps/templates/admin.html:164 msgid "Reconnect Calibre Database" msgstr "" -#: cps/templates/admin.html:149 +#: cps/templates/admin.html:165 msgid "Restart" msgstr "" -#: cps/templates/admin.html:150 +#: cps/templates/admin.html:166 msgid "Shutdown" msgstr "" -#: cps/templates/admin.html:155 +#: cps/templates/admin.html:171 msgid "Update" msgstr "アップデート" -#: cps/templates/admin.html:159 +#: cps/templates/admin.html:175 msgid "Version" msgstr "バージョン" -#: cps/templates/admin.html:160 +#: cps/templates/admin.html:176 msgid "Details" msgstr "詳細" -#: cps/templates/admin.html:166 +#: cps/templates/admin.html:182 msgid "Current version" msgstr "現在のバージョン" -#: cps/templates/admin.html:173 +#: cps/templates/admin.html:189 msgid "Check for Update" msgstr "" -#: cps/templates/admin.html:174 +#: cps/templates/admin.html:190 msgid "Perform Update" msgstr "更新を実行" -#: cps/templates/admin.html:187 +#: cps/templates/admin.html:203 msgid "Are you sure you want to restart?" msgstr "" -#: cps/templates/admin.html:192 cps/templates/admin.html:206 -#: cps/templates/admin.html:226 cps/templates/shelf.html:95 +#: cps/templates/admin.html:208 cps/templates/admin.html:222 +#: cps/templates/admin.html:242 cps/templates/shelf.html:95 msgid "OK" msgstr "" -#: cps/templates/admin.html:193 cps/templates/admin.html:207 -#: cps/templates/book_edit.html:192 cps/templates/book_table.html:84 +#: cps/templates/admin.html:209 cps/templates/admin.html:223 +#: cps/templates/book_edit.html:192 cps/templates/book_table.html:85 #: cps/templates/config_edit.html:427 cps/templates/config_view_edit.html:151 -#: cps/templates/email_edit.html:47 cps/templates/modal_dialogs.html:64 -#: cps/templates/modal_dialogs.html:99 cps/templates/modal_dialogs.html:117 +#: cps/templates/modal_dialogs.html:64 cps/templates/modal_dialogs.html:99 +#: cps/templates/modal_dialogs.html:117 cps/templates/modal_dialogs.html:135 #: cps/templates/shelf.html:96 cps/templates/shelf_edit.html:19 #: cps/templates/user_edit.html:132 msgid "Cancel" msgstr "" -#: cps/templates/admin.html:205 +#: cps/templates/admin.html:221 msgid "Are you sure you want to shutdown?" msgstr "" -#: cps/templates/admin.html:217 +#: cps/templates/admin.html:233 msgid "Updating, please do not reload this page" msgstr "" @@ -1485,6 +1623,7 @@ msgid "Identifier Value" msgstr "" #: cps/templates/book_edit.html:72 cps/templates/book_edit.html:289 +#: cps/templates/user_table.html:23 msgid "Remove" msgstr "" @@ -1550,7 +1689,7 @@ msgid "Fetch Metadata" msgstr "" #: cps/templates/book_edit.html:191 cps/templates/config_edit.html:424 -#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45 +#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:64 #: cps/templates/shelf_edit.html:17 cps/templates/shelf_order.html:40 #: cps/templates/user_edit.html:130 msgid "Save" @@ -1590,96 +1729,98 @@ msgstr "検索エラー" msgid "No Result(s) found! Please try another keyword." msgstr "検索結果が見つかりません。別のキーワードで検索してみてください。" -#: cps/templates/book_table.html:10 cps/templates/book_table.html:52 +#: cps/templates/book_table.html:11 cps/templates/book_table.html:53 +#: cps/templates/user_table.html:13 cps/templates/user_table.html:65 +#: cps/templates/user_table.html:88 msgid "This Field is Required" msgstr "" -#: cps/templates/book_table.html:23 +#: cps/templates/book_table.html:24 msgid "Merge selected books" msgstr "" -#: cps/templates/book_table.html:24 +#: cps/templates/book_table.html:25 cps/templates/user_table.html:111 msgid "Remove Selections" msgstr "" -#: cps/templates/book_table.html:30 +#: cps/templates/book_table.html:31 msgid "Update Title Sort automatically" msgstr "" -#: cps/templates/book_table.html:34 +#: cps/templates/book_table.html:35 msgid "Update Author Sort automatically" msgstr "" -#: cps/templates/book_table.html:46 +#: cps/templates/book_table.html:47 msgid "Enter Title" msgstr "" -#: cps/templates/book_table.html:46 cps/templates/config_view_edit.html:23 +#: cps/templates/book_table.html:47 cps/templates/config_view_edit.html:23 #: cps/templates/shelf_edit.html:7 msgid "Title" msgstr "タイトル" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Enter Title Sort" msgstr "" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Title Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Enter Author Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Author Sort" msgstr "" -#: cps/templates/book_table.html:49 +#: cps/templates/book_table.html:50 msgid "Enter Authors" msgstr "" -#: cps/templates/book_table.html:50 +#: cps/templates/book_table.html:51 msgid "Enter Categories" msgstr "" -#: cps/templates/book_table.html:51 +#: cps/templates/book_table.html:52 msgid "Enter Series" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Enter title" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Series Index" msgstr "" -#: cps/templates/book_table.html:53 +#: cps/templates/book_table.html:54 msgid "Enter Languages" msgstr "" -#: cps/templates/book_table.html:54 +#: cps/templates/book_table.html:55 msgid "Publishing Date" msgstr "" -#: cps/templates/book_table.html:55 +#: cps/templates/book_table.html:56 msgid "Enter Publishers" msgstr "" -#: cps/templates/book_table.html:70 cps/templates/modal_dialogs.html:46 +#: cps/templates/book_table.html:71 cps/templates/modal_dialogs.html:46 msgid "Are you really sure?" msgstr "よろしいですか?" -#: cps/templates/book_table.html:74 +#: cps/templates/book_table.html:75 msgid "Books with Title will be merged from:" msgstr "" -#: cps/templates/book_table.html:78 +#: cps/templates/book_table.html:79 msgid "Into Book with Title:" msgstr "" -#: cps/templates/book_table.html:83 +#: cps/templates/book_table.html:84 msgid "Merge" msgstr "" @@ -1864,7 +2005,7 @@ msgid "LDAP Encryption" msgstr "" #: cps/templates/config_edit.html:268 cps/templates/config_view_edit.html:61 -#: cps/templates/email_edit.html:21 +#: cps/templates/email_edit.html:40 msgid "None" msgstr "なし" @@ -2077,6 +2218,7 @@ msgid "Default Visibilities for New Users" msgstr "" #: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82 +#: cps/templates/user_table.html:138 msgid "Show Random Books in Detail View" msgstr "" @@ -2150,43 +2292,69 @@ msgstr "" msgid "Edit Metadata" msgstr "" -#: cps/templates/email_edit.html:22 +#: cps/templates/email_edit.html:12 +msgid "Choose Server Type" +msgstr "" + +#: cps/templates/email_edit.html:14 +msgid "Use Standard E-Mail Account" +msgstr "" + +#: cps/templates/email_edit.html:15 +msgid "Gmail Account with OAuth2 Verfification" +msgstr "" + +#: cps/templates/email_edit.html:21 +msgid "Setup Gmail Account as E-Mail Server" +msgstr "" + +#: cps/templates/email_edit.html:23 +msgid "Revoke Gmail Access" +msgstr "" + +#: cps/templates/email_edit.html:41 msgid "STARTTLS" msgstr "STARTTLS" -#: cps/templates/email_edit.html:23 +#: cps/templates/email_edit.html:42 msgid "SSL/TLS" msgstr "SSL/TLS" -#: cps/templates/email_edit.html:31 +#: cps/templates/email_edit.html:50 msgid "SMTP Password" msgstr "" -#: cps/templates/email_edit.html:38 +#: cps/templates/email_edit.html:57 msgid "Attachment Size Limit" msgstr "" -#: cps/templates/email_edit.html:46 +#: cps/templates/email_edit.html:65 msgid "Save and Send Test E-mail" msgstr "" -#: cps/templates/email_edit.html:51 +#: cps/templates/email_edit.html:69 cps/templates/layout.html:29 +#: cps/templates/shelf_order.html:41 cps/templates/user_table.html:158 +msgid "Back" +msgstr "戻る" + +#: cps/templates/email_edit.html:73 msgid "Allowed Domains (Whitelist)" msgstr "" -#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80 +#: cps/templates/email_edit.html:76 cps/templates/email_edit.html:102 msgid "Add Domain" msgstr "ドメインを追加" -#: cps/templates/email_edit.html:57 cps/templates/email_edit.html:83 +#: cps/templates/email_edit.html:79 cps/templates/email_edit.html:105 +#: cps/templates/user_table.html:26 msgid "Add" msgstr "追加" -#: cps/templates/email_edit.html:62 cps/templates/email_edit.html:72 +#: cps/templates/email_edit.html:84 cps/templates/email_edit.html:94 msgid "Enter domainname" msgstr "ドメイン名を入力" -#: cps/templates/email_edit.html:68 +#: cps/templates/email_edit.html:90 msgid "Denied Domains (Blacklist)" msgstr "" @@ -2198,10 +2366,6 @@ msgstr "次" msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):" msgstr "" -#: cps/templates/grid.html:14 cps/templates/list.html:14 -msgid "All" -msgstr "" - #: cps/templates/http_error.html:38 msgid "Create Issue" msgstr "" @@ -2232,64 +2396,72 @@ msgstr "" msgid "Start" msgstr "開始" +#: cps/templates/index.xml:18 +msgid "Alphabetical Books" +msgstr "" + #: cps/templates/index.xml:22 +msgid "Books sorted alphabetically" +msgstr "" + +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Downloads." msgstr "ダウンロード数に基づいた、この出版社が出している有名な本" -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:36 msgid "Popular publications from this catalog based on Rating." msgstr "評価に基づいた、この出版社が出している有名な本" -#: cps/templates/index.xml:32 +#: cps/templates/index.xml:39 msgid "Recently added Books" msgstr "" -#: cps/templates/index.xml:36 +#: cps/templates/index.xml:43 msgid "The latest Books" msgstr "最新の本" -#: cps/templates/index.xml:39 +#: cps/templates/index.xml:46 msgid "Random Books" msgstr "ランダム" -#: cps/templates/index.xml:43 +#: cps/templates/index.xml:50 msgid "Show Random Books" msgstr "ランダムで本を表示" -#: cps/templates/index.xml:66 +#: cps/templates/index.xml:73 msgid "Books ordered by Author" msgstr "著者名順" -#: cps/templates/index.xml:73 +#: cps/templates/index.xml:80 msgid "Books ordered by publisher" msgstr "出版社順" -#: cps/templates/index.xml:80 +#: cps/templates/index.xml:87 msgid "Books ordered by category" msgstr "カテゴリ順" -#: cps/templates/index.xml:87 +#: cps/templates/index.xml:94 msgid "Books ordered by series" msgstr "シリーズ順" -#: cps/templates/index.xml:94 +#: cps/templates/index.xml:101 msgid "Books ordered by Languages" msgstr "" -#: cps/templates/index.xml:101 +#: cps/templates/index.xml:108 msgid "Books ordered by Rating" msgstr "" -#: cps/templates/index.xml:109 +#: cps/templates/index.xml:116 msgid "Books ordered by file formats" msgstr "" -#: cps/templates/index.xml:112 cps/templates/layout.html:135 +#: cps/templates/index.xml:119 cps/templates/layout.html:135 #: cps/templates/search_form.html:80 msgid "Shelves" msgstr "" -#: cps/templates/index.xml:116 +#: cps/templates/index.xml:123 msgid "Books organized in shelves" msgstr "" @@ -2297,10 +2469,6 @@ msgstr "" msgid "Home" msgstr "ホーム" -#: cps/templates/layout.html:29 cps/templates/shelf_order.html:41 -msgid "Back" -msgstr "戻る" - #: cps/templates/layout.html:35 msgid "Toggle Navigation" msgstr "" @@ -2462,6 +2630,11 @@ msgstr "" msgid "Select" msgstr "" +#: cps/templates/modal_dialogs.html:134 +#, fuzzy +msgid "Ok" +msgstr "本" + #: cps/templates/osd.xml:5 msgid "Calibre-Web eBook Catalog" msgstr "" @@ -2767,10 +2940,6 @@ msgstr "ユーザパスワードをリセット" msgid "Language of Books" msgstr "" -#: cps/templates/user_edit.html:44 -msgid "Show All" -msgstr "" - #: cps/templates/user_edit.html:53 msgid "OAuth Settings" msgstr "" @@ -2795,7 +2964,7 @@ msgstr "" msgid "Add allowed/Denied Custom Column Values" msgstr "" -#: cps/templates/user_edit.html:135 +#: cps/templates/user_edit.html:135 cps/templates/user_table.html:153 msgid "Delete User" msgstr "" @@ -2803,3 +2972,91 @@ msgstr "" msgid "Generate Kobo Auth URL" msgstr "" +#: cps/templates/user_table.html:68 cps/templates/user_table.html:91 +msgid "Select..." +msgstr "" + +#: cps/templates/user_table.html:118 +msgid "Edit User" +msgstr "" + +#: cps/templates/user_table.html:121 +#, fuzzy +msgid "Enter Username" +msgstr "ユーザ名を入力してください" + +#: cps/templates/user_table.html:122 +#, fuzzy +msgid "Enter E-mail Address" +msgstr "あなたのメールアドレス" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Enter Kindle E-mail Address" +msgstr "あなたのメールアドレス" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Kindle E-mail" +msgstr "テストメール" + +#: cps/templates/user_table.html:124 +#, fuzzy +msgid "Locale" +msgstr "サイズ" + +#: cps/templates/user_table.html:125 +msgid "Visible Book Languages" +msgstr "" + +#: cps/templates/user_table.html:126 +msgid "Edit Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:126 +msgid "Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +msgid "Edit Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +msgid "Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:128 +msgid "Edit Allowed Column Values" +msgstr "" + +#: cps/templates/user_table.html:128 +msgid "Allowed Column Values" +msgstr "" + +#: cps/templates/user_table.html:129 +msgid "Edit Denied Column Values" +msgstr "" + +#: cps/templates/user_table.html:129 +msgid "Denied Columns Values" +msgstr "" + +#: cps/templates/user_table.html:131 +#, fuzzy +msgid "Change Password" +msgstr "パスワード変更を許可" + +#: cps/templates/user_table.html:134 +msgid "View" +msgstr "" + +#: cps/templates/user_table.html:137 +#, fuzzy +msgid "Edit Public Shelfs" +msgstr "本棚を編集する" + +#: cps/templates/user_table.html:140 +#, fuzzy +msgid "Show read/unread selection" +msgstr "シリーズ選択を表示" + diff --git a/cps/translations/km/LC_MESSAGES/messages.mo b/cps/translations/km/LC_MESSAGES/messages.mo index 4724c2bb..66baa640 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 1820460e..f41271e2 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: 2021-03-27 12:16+0100\n" +"POT-Creation-Date: 2021-05-01 16:33+0200\n" "PO-Revision-Date: 2018-08-27 17:06+0700\n" "Last-Translator: \n" "Language: km_KH\n" @@ -17,7 +17,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" +"Generated-By: Babel 2.8.0\n" #: cps/about.py:43 msgid "installed" @@ -31,310 +31,403 @@ msgstr "មិនបានតម្លើង" msgid "Statistics" msgstr "ស្ថិតិ" -#: cps/admin.py:149 +#: cps/admin.py:151 msgid "Server restarted, please reload page" msgstr "ម៉ាស៊ីន server បានដំណើរការម្តងទៀត សូមបើកទំព័រជាថ្មី" -#: cps/admin.py:151 +#: cps/admin.py:153 msgid "Performing shutdown of server, please close window" msgstr "កំពុងបិទម៉ាស៊ីន server សូមបិទផ្ទាំងនេះ" -#: cps/admin.py:159 +#: cps/admin.py:161 msgid "Reconnect successful" msgstr "" -#: cps/admin.py:162 +#: cps/admin.py:164 msgid "Unknown command" msgstr "" -#: cps/admin.py:172 cps/editbooks.py:662 cps/editbooks.py:674 -#: cps/editbooks.py:777 cps/editbooks.py:779 cps/editbooks.py:806 -#: cps/editbooks.py:822 cps/updater.py:521 cps/uploader.py:94 +#: cps/admin.py:174 cps/editbooks.py:668 cps/editbooks.py:682 +#: cps/editbooks.py:821 cps/editbooks.py:823 cps/editbooks.py:850 +#: cps/editbooks.py:866 cps/updater.py:555 cps/uploader.py:94 #: cps/uploader.py:104 msgid "Unknown" msgstr "មិនដឹង" -#: cps/admin.py:193 +#: cps/admin.py:195 msgid "Admin page" msgstr "ទំព័ររដ្ឋបាល" -#: cps/admin.py:215 +#: cps/admin.py:217 msgid "UI Configuration" msgstr "ការកំណត់ផ្ទាំងប្រើប្រាស់" -#: cps/admin.py:247 cps/admin.py:936 +#: cps/admin.py:249 cps/templates/admin.html:46 +#, fuzzy +msgid "Edit Users" +msgstr "អ្នកប្រើប្រាស់រដ្ឋបាល" + +#: cps/admin.py:290 +msgid "all" +msgstr "" + +#: cps/admin.py:315 cps/admin.py:1486 +msgid "User not found" +msgstr "" + +#: cps/admin.py:329 +msgid "{} users deleted successfully" +msgstr "" + +#: cps/admin.py:351 cps/templates/user_edit.html:44 +#: cps/templates/user_table.html:69 +msgid "Show All" +msgstr "បង្ហាញទាំងអស់" + +#: cps/admin.py:372 cps/admin.py:378 +msgid "Malformed request" +msgstr "" + +#: cps/admin.py:390 cps/admin.py:1368 +msgid "Guest Name can't be changed" +msgstr "" + +#: cps/admin.py:400 +msgid "Guest can't have this role" +msgstr "" + +#: cps/admin.py:412 cps/admin.py:1333 +msgid "No admin user remaining, can't remove admin role" +msgstr "" + +#: cps/admin.py:416 cps/admin.py:430 +msgid "Value has to be true or false" +msgstr "" + +#: cps/admin.py:418 +msgid "Invalid role" +msgstr "" + +#: cps/admin.py:422 +msgid "Guest can't have this view" +msgstr "" + +#: cps/admin.py:432 +msgid "Invalid view" +msgstr "" + +#: cps/admin.py:435 +msgid "Guest's Locale is determined automatically and can't be set" +msgstr "" + +#: cps/admin.py:439 +msgid "No Valid Locale Given" +msgstr "" + +#: cps/admin.py:450 +msgid "No Valid Book Language Given" +msgstr "" + +#: cps/admin.py:452 +msgid "Parameter not found" +msgstr "" + +#: cps/admin.py:506 cps/admin.py:1219 msgid "Calibre-Web configuration updated" msgstr "" -#: cps/admin.py:258 +#: cps/admin.py:518 msgid "Do you really want to delete the Kobo Token?" msgstr "" -#: cps/admin.py:260 +#: cps/admin.py:520 msgid "Do you really want to delete this domain?" msgstr "" -#: cps/admin.py:262 +#: cps/admin.py:522 msgid "Do you really want to delete this user?" msgstr "" -#: cps/admin.py:264 cps/templates/shelf.html:90 +#: cps/admin.py:524 cps/templates/shelf.html:90 msgid "Are you sure you want to delete this shelf?" msgstr "តើអ្នកពិតជាចង់លុបធ្នើនេះមែនទេ?" -#: cps/admin.py:510 cps/admin.py:516 cps/admin.py:526 cps/admin.py:536 -#: cps/templates/modal_dialogs.html:29 +#: cps/admin.py:526 +#, fuzzy +msgid "Are you sure you want to change locales of selected user(s)?" +msgstr "តើអ្នកពិតជាចង់លុបធ្នើនេះមែនទេ?" + +#: cps/admin.py:528 +msgid "Are you sure you want to change visible book languages for selected user(s)?" +msgstr "" + +#: cps/admin.py:530 +msgid "Are you sure you want to change the selected role for the selected user(s)?" +msgstr "" + +#: cps/admin.py:532 +#, fuzzy +msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" +msgstr "តើអ្នកពិតជាចង់លុបធ្នើនេះមែនទេ?" + +#: cps/admin.py:534 +msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:683 +msgid "Tag not found" +msgstr "" + +#: cps/admin.py:695 +msgid "Invalid Action" +msgstr "" + +#: cps/admin.py:800 cps/admin.py:806 cps/admin.py:816 cps/admin.py:826 +#: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:43 msgid "Deny" msgstr "" -#: cps/admin.py:512 cps/admin.py:518 cps/admin.py:528 cps/admin.py:538 -#: cps/templates/modal_dialogs.html:28 +#: cps/admin.py:802 cps/admin.py:808 cps/admin.py:818 cps/admin.py:828 +#: cps/templates/modal_dialogs.html:28 cps/templates/user_table.html:48 msgid "Allow" msgstr "" -#: cps/admin.py:681 +#: cps/admin.py:971 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "" -#: cps/admin.py:723 +#: cps/admin.py:1016 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:729 +#: cps/admin.py:1022 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:738 +#: cps/admin.py:1052 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "" -#: cps/admin.py:752 cps/admin.py:760 +#: cps/admin.py:1067 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:755 cps/admin.py:763 +#: cps/admin.py:1070 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:768 +#: cps/admin.py:1075 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:771 +#: cps/admin.py:1078 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:779 +#: cps/admin.py:1086 #, python-format msgid "LDAP Member User Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:782 +#: cps/admin.py:1089 msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:790 +#: cps/admin.py:1097 msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:841 +#: cps/admin.py:1123 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:847 +#: cps/admin.py:1129 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:917 cps/admin.py:1024 cps/admin.py:1047 cps/admin.py:1168 -#: cps/shelf.py:102 cps/shelf.py:159 cps/shelf.py:200 cps/shelf.py:261 -#: cps/shelf.py:314 cps/shelf.py:348 cps/shelf.py:418 +#: cps/admin.py:1200 cps/admin.py:1303 cps/admin.py:1395 cps/admin.py:1461 +#: cps/shelf.py:103 cps/shelf.py:163 cps/shelf.py:206 cps/shelf.py:269 +#: cps/shelf.py:325 cps/shelf.py:360 cps/shelf.py:431 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:929 +#: cps/admin.py:1212 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:933 +#: cps/admin.py:1216 msgid "DB is not Writeable" msgstr "" -#: cps/admin.py:972 +#: cps/admin.py:1256 msgid "Basic Configuration" msgstr "ការកំណត់សាមញ្ញ" -#: cps/admin.py:987 cps/web.py:1358 +#: cps/admin.py:1272 cps/web.py:1417 msgid "Please fill out all fields!" msgstr "សូមបំពេញចន្លោះទាំងអស់!" -#: cps/admin.py:990 cps/admin.py:1002 cps/admin.py:1008 cps/admin.py:1138 -msgid "Add new user" -msgstr "បន្ថែមអ្នកប្រើប្រាស់ថ្មី" - -#: cps/admin.py:999 cps/web.py:1496 +#: cps/admin.py:1280 msgid "E-mail is not from valid domain" msgstr "" -#: cps/admin.py:1006 cps/admin.py:1021 -msgid "Found an existing account for this e-mail address or nickname." -msgstr "" +#: cps/admin.py:1284 cps/admin.py:1414 +msgid "Add new user" +msgstr "បន្ថែមអ្នកប្រើប្រាស់ថ្មី" -#: cps/admin.py:1017 +#: cps/admin.py:1293 #, python-format msgid "User '%(user)s' created" msgstr "បានបង្កើតអ្នកប្រើប្រាស់ ‘%(user)s’" -#: cps/admin.py:1031 +#: cps/admin.py:1299 +msgid "Found an existing account for this e-mail address or name." +msgstr "" + +#: cps/admin.py:1312 #, python-format msgid "User '%(nick)s' deleted" msgstr "អ្នកប្រើប្រាស់ ‘%(nick)s’ ត្រូវបានលុប" -#: cps/admin.py:1034 +#: cps/admin.py:1314 cps/admin.py:1315 +msgid "Can't delete Guest User" +msgstr "" + +#: cps/admin.py:1318 msgid "No admin user remaining, can't delete user" msgstr "" -#: cps/admin.py:1041 -#, python-format -msgid "User '%(nick)s' updated" -msgstr "អ្នកប្រើប្រាស់ ‘%(nick)s’ ត្រូវបានកែប្រែ" - -#: cps/admin.py:1044 -msgid "An unknown error occured." -msgstr "បញ្ហាដែលមិនដឹងបានកើតឡើង។" - -#: cps/admin.py:1056 -msgid "No admin user remaining, can't remove admin role" -msgstr "" - -#: cps/admin.py:1092 cps/web.py:1554 -msgid "Found an existing account for this e-mail address." -msgstr "" - -#: cps/admin.py:1101 cps/admin.py:1115 cps/admin.py:1209 cps/web.py:1516 +#: cps/admin.py:1383 cps/admin.py:1504 #, python-format msgid "Edit User %(nick)s" msgstr "កែប្រែអ្នកប្រើប្រាស់ %(nick)s" -#: cps/admin.py:1107 cps/web.py:1509 -msgid "This username is already taken" -msgstr "" +#: cps/admin.py:1387 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "អ្នកប្រើប្រាស់ ‘%(nick)s’ ត្រូវបានកែប្រែ" -#: cps/admin.py:1147 cps/templates/admin.html:78 +#: cps/admin.py:1391 +#, fuzzy +msgid "An unknown error occurred." +msgstr "បញ្ហាដែលមិនដឹងបានកើតឡើង។" + +#: cps/admin.py:1423 cps/templates/admin.html:94 msgid "Edit E-mail Server Settings" msgstr "ប្តូរការកំណត់ SMTP" -#: cps/admin.py:1175 +#: cps/admin.py:1442 +msgid "G-Mail Account Verification Successful" +msgstr "" + +#: cps/admin.py:1468 #, python-format msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" msgstr "" -#: cps/admin.py:1178 +#: cps/admin.py:1471 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "" -#: cps/admin.py:1180 +#: cps/admin.py:1473 msgid "Please configure your e-mail address first..." msgstr "" -#: cps/admin.py:1182 +#: cps/admin.py:1475 msgid "E-mail server settings updated" msgstr "" -#: cps/admin.py:1193 -msgid "User not found" -msgstr "" - -#: cps/admin.py:1220 +#: cps/admin.py:1516 #, python-format msgid "Password for user %(user)s reset" msgstr "" -#: cps/admin.py:1223 cps/web.py:1388 cps/web.py:1452 +#: cps/admin.py:1519 cps/web.py:1442 cps/web.py:1503 msgid "An unknown error occurred. Please try again later." msgstr "" -#: cps/admin.py:1226 cps/web.py:1320 +#: cps/admin.py:1522 cps/web.py:1382 msgid "Please configure the SMTP mail settings first..." msgstr "សូមកំណត់អ៊ីមែល SMTP ជាមុនសិន" -#: cps/admin.py:1237 +#: cps/admin.py:1533 msgid "Logfile viewer" msgstr "" -#: cps/admin.py:1303 +#: cps/admin.py:1599 msgid "Requesting update package" msgstr "កំពុងស្នើសុំឯកសារបច្ចុប្បន្នភាព" -#: cps/admin.py:1304 +#: cps/admin.py:1600 msgid "Downloading update package" msgstr "កំពុងទាញយកឯកសារបច្ចុប្បន្នភាព" -#: cps/admin.py:1305 +#: cps/admin.py:1601 msgid "Unzipping update package" msgstr "កំពុងពន្លាឯកសារបច្ចុប្បន្នភាព" -#: cps/admin.py:1306 +#: cps/admin.py:1602 msgid "Replacing files" msgstr "" -#: cps/admin.py:1307 +#: cps/admin.py:1603 msgid "Database connections are closed" msgstr "ទំនាក់ទំនងទៅមូលដ្ឋានទិន្នន័យត្រូវបានផ្តាច់" -#: cps/admin.py:1308 +#: cps/admin.py:1604 msgid "Stopping server" msgstr "" -#: cps/admin.py:1309 +#: cps/admin.py:1605 msgid "Update finished, please press okay and reload page" msgstr "ការធ្វើបច្ចុប្បន្នភាពបានបញ្ចប់ សូមចុច okay រួចបើកទំព័រជាថ្មី" -#: cps/admin.py:1310 cps/admin.py:1311 cps/admin.py:1312 cps/admin.py:1313 -#: cps/admin.py:1314 +#: cps/admin.py:1606 cps/admin.py:1607 cps/admin.py:1608 cps/admin.py:1609 +#: cps/admin.py:1610 msgid "Update failed:" msgstr "" -#: cps/admin.py:1310 cps/updater.py:337 cps/updater.py:532 cps/updater.py:534 +#: cps/admin.py:1606 cps/updater.py:356 cps/updater.py:566 cps/updater.py:568 msgid "HTTP Error" msgstr "" -#: cps/admin.py:1311 cps/updater.py:339 cps/updater.py:536 +#: cps/admin.py:1607 cps/updater.py:358 cps/updater.py:570 msgid "Connection error" msgstr "" -#: cps/admin.py:1312 cps/updater.py:341 cps/updater.py:538 +#: cps/admin.py:1608 cps/updater.py:360 cps/updater.py:572 msgid "Timeout while establishing connection" msgstr "" -#: cps/admin.py:1313 cps/updater.py:343 cps/updater.py:540 +#: cps/admin.py:1609 cps/updater.py:362 cps/updater.py:574 msgid "General error" msgstr "" -#: cps/admin.py:1314 +#: cps/admin.py:1610 msgid "Update File Could Not be Saved in Temp Dir" msgstr "" -#: cps/admin.py:1376 +#: cps/admin.py:1671 msgid "Failed to Create at Least One LDAP User" msgstr "" -#: cps/admin.py:1389 +#: cps/admin.py:1684 #, python-format msgid "Error: %(ldaperror)s" msgstr "" -#: cps/admin.py:1393 +#: cps/admin.py:1688 msgid "Error: No user returned in response of LDAP server" msgstr "" -#: cps/admin.py:1426 +#: cps/admin.py:1721 msgid "At Least One LDAP User Not Found in Database" msgstr "" -#: cps/admin.py:1428 +#: cps/admin.py:1723 msgid "{} User Successfully Imported" msgstr "" @@ -346,98 +439,98 @@ msgstr "" msgid "Execution permissions missing" msgstr "" -#: cps/editbooks.py:267 cps/editbooks.py:269 +#: cps/editbooks.py:294 cps/editbooks.py:296 msgid "Book Format Successfully Deleted" msgstr "" -#: cps/editbooks.py:276 cps/editbooks.py:278 +#: cps/editbooks.py:303 cps/editbooks.py:305 msgid "Book Successfully Deleted" msgstr "" -#: cps/editbooks.py:325 cps/editbooks.py:646 cps/web.py:1598 cps/web.py:1634 -#: cps/web.py:1705 +#: cps/editbooks.py:361 cps/editbooks.py:724 cps/web.py:1627 cps/web.py:1663 +#: cps/web.py:1734 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "មានបញ្ហាពេលបើកឯកសារ eBook ។ ពុំមានឯកសារ ឬឯកសារនេះមិនអាចបើកបាន" -#: cps/editbooks.py:359 +#: cps/editbooks.py:395 msgid "edit metadata" msgstr "កែប្រែទិន្នន័យមេតា" -#: cps/editbooks.py:434 +#: cps/editbooks.py:473 #, python-format msgid "%(langname)s is not a valid language" msgstr "" -#: cps/editbooks.py:556 cps/editbooks.py:905 +#: cps/editbooks.py:595 cps/editbooks.py:936 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "ឯកសារប្រភេទ '%(ext)s' មិនត្រូវបានអនុញ្ញាតឲអាប់ឡូដទៅម៉ាស៊ីន server នេះទេ" -#: cps/editbooks.py:560 cps/editbooks.py:909 +#: cps/editbooks.py:599 cps/editbooks.py:940 msgid "File to be uploaded must have an extension" msgstr "ឯកសារដែលត្រូវអាប់ឡូដត្រូវមានកន្ទុយឯកសារ" -#: cps/editbooks.py:572 +#: cps/editbooks.py:611 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "មិនអាចបង្កើតទីតាំង %(path)s (ពុំមានសិទ្ធិ)។" -#: cps/editbooks.py:577 +#: cps/editbooks.py:616 #, python-format msgid "Failed to store file %(file)s." msgstr "មិនអាចរក្សាទុកឯកសារ %(file)s ។" -#: cps/editbooks.py:595 cps/editbooks.py:972 cps/web.py:1559 +#: cps/editbooks.py:634 cps/editbooks.py:1027 cps/web.py:1588 #, python-format msgid "Database error: %(error)s." msgstr "" -#: cps/editbooks.py:599 +#: cps/editbooks.py:638 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "ឯកសារទម្រង់ %(ext)s ត្រូវបានបន្ថែមទៅ %(book)s" -#: cps/editbooks.py:726 +#: cps/editbooks.py:775 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:763 +#: cps/editbooks.py:807 msgid "Metadata successfully updated" msgstr "" -#: cps/editbooks.py:772 +#: cps/editbooks.py:816 msgid "Error editing book, please check logfile for details" msgstr "មានបញ្ហាពេលកែប្រែសៀវភៅ សូមពិនិត្យមើល logfile សម្រាប់ព័ត៌មានបន្ថែម" -#: cps/editbooks.py:810 +#: cps/editbooks.py:854 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "" -#: cps/editbooks.py:917 +#: cps/editbooks.py:948 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "" -#: cps/editbooks.py:947 +#: cps/editbooks.py:967 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "" -#: cps/editbooks.py:958 +#: cps/editbooks.py:1013 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:984 +#: cps/editbooks.py:1039 msgid "Source or destination format for conversion missing" msgstr "" -#: cps/editbooks.py:992 +#: cps/editbooks.py:1047 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "" -#: cps/editbooks.py:996 +#: cps/editbooks.py:1051 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "" @@ -545,55 +638,67 @@ msgstr "ឯកសារ %(file)s រកមិនឃើញក្នុង Google msgid "Book path %(path)s not found on Google Drive" msgstr "ទីតាំងសៀវភៅ %(path)s រកមិនឃើញក្នុង Google Drive" -#: cps/helper.py:576 +#: cps/helper.py:511 +msgid "Found an existing account for this e-mail address" +msgstr "" + +#: cps/helper.py:519 +msgid "This username is already taken" +msgstr "" + +#: cps/helper.py:529 +msgid "Invalid e-mail address format" +msgstr "" + +#: cps/helper.py:602 msgid "Error Downloading Cover" msgstr "" -#: cps/helper.py:579 +#: cps/helper.py:605 msgid "Cover Format Error" msgstr "" -#: cps/helper.py:589 +#: cps/helper.py:615 msgid "Failed to create path for cover" msgstr "" -#: cps/helper.py:605 +#: cps/helper.py:631 msgid "Cover-file is not a valid image file, or could not be stored" msgstr "" -#: cps/helper.py:616 +#: cps/helper.py:642 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" msgstr "" -#: cps/helper.py:629 +#: cps/helper.py:655 msgid "Only jpg/jpeg files are supported as coverfile" msgstr "" -#: cps/helper.py:680 +#: cps/helper.py:707 msgid "Unrar binary file not found" msgstr "" -#: cps/helper.py:694 +#: cps/helper.py:721 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:743 +#: cps/helper.py:769 msgid "Waiting" msgstr "កំពុងរង់ចាំ" -#: cps/helper.py:745 +#: cps/helper.py:771 msgid "Failed" msgstr "បានបរាជ័យ" -#: cps/helper.py:747 +#: cps/helper.py:773 msgid "Started" msgstr "បានចាប់ផ្តើម" -#: cps/helper.py:749 +#: cps/helper.py:775 msgid "Finished" msgstr "បានបញ្ចប់" -#: cps/helper.py:751 +#: cps/helper.py:777 msgid "Unknown Status" msgstr "" @@ -605,65 +710,82 @@ msgstr "" msgid "Kobo Setup" msgstr "" -#: cps/oauth_bb.py:76 +#: cps/oauth_bb.py:78 #, python-format msgid "Register with %(provider)s" msgstr "" -#: cps/oauth_bb.py:137 cps/remotelogin.py:133 cps/web.py:1424 +#: cps/oauth_bb.py:139 cps/remotelogin.py:133 cps/web.py:1475 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "ឥឡូវអ្នកបានចូលដោយមានឈ្មោះថា៖ ‘%(nickname)s’" -#: cps/oauth_bb.py:147 +#: cps/oauth_bb.py:149 #, python-format msgid "Link to %(oauth)s Succeeded" msgstr "" -#: cps/oauth_bb.py:153 +#: cps/oauth_bb.py:156 msgid "Login failed, No User Linked With OAuth Account" msgstr "" -#: cps/oauth_bb.py:195 +#: cps/oauth_bb.py:198 #, python-format msgid "Unlink to %(oauth)s Succeeded" msgstr "" -#: cps/oauth_bb.py:199 +#: cps/oauth_bb.py:203 #, python-format msgid "Unlink to %(oauth)s Failed" msgstr "" -#: cps/oauth_bb.py:202 +#: cps/oauth_bb.py:206 #, python-format msgid "Not Linked to %(oauth)s" msgstr "" -#: cps/oauth_bb.py:259 +#: cps/oauth_bb.py:262 msgid "Failed to log in with GitHub." msgstr "" -#: cps/oauth_bb.py:264 +#: cps/oauth_bb.py:268 msgid "Failed to fetch user info from GitHub." msgstr "" -#: cps/oauth_bb.py:275 +#: cps/oauth_bb.py:280 msgid "Failed to log in with Google." msgstr "" -#: cps/oauth_bb.py:280 +#: cps/oauth_bb.py:286 msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:312 +#: cps/oauth_bb.py:333 msgid "GitHub Oauth error, please retry later." msgstr "" -#: cps/oauth_bb.py:331 +#: cps/oauth_bb.py:336 +msgid "GitHub Oauth error: {}" +msgstr "" + +#: cps/oauth_bb.py:357 msgid "Google Oauth error, please retry later." msgstr "" -#: cps/remotelogin.py:65 cps/web.py:1471 +#: cps/oauth_bb.py:360 +msgid "Google Oauth error: {}" +msgstr "" + +#: cps/opds.py:110 cps/opds.py:199 cps/opds.py:276 cps/opds.py:328 +#: cps/templates/grid.html:14 cps/templates/list.html:14 +msgid "All" +msgstr "" + +#: cps/opds.py:385 +msgid "{} Stars" +msgstr "" + +#: cps/remotelogin.py:65 cps/web.py:1522 msgid "login" msgstr "ចូលប្រើ" @@ -679,7 +801,7 @@ msgstr "វត្ថុតាងហួសពេលកំណត់" msgid "Success! Please return to your device" msgstr "ជោគជ័យ! សូមវិលមកឧបករណ៍អ្នកវិញ" -#: cps/render_template.py:39 cps/web.py:415 +#: cps/render_template.py:39 cps/web.py:414 msgid "Books" msgstr "" @@ -687,7 +809,7 @@ msgstr "" msgid "Show recent books" msgstr "បង្ហាញសៀវភៅមកថ្មី" -#: cps/render_template.py:42 cps/templates/index.xml:18 +#: cps/render_template.py:42 cps/templates/index.xml:25 msgid "Hot Books" msgstr "សៀវភៅដែលមានប្រជាប្រិយភាព" @@ -695,127 +817,130 @@ msgstr "សៀវភៅដែលមានប្រជាប្រិយភាព msgid "Show Hot Books" msgstr "បង្ហាញសៀវភៅដែលមានប្រជាប្រិយភាព" -#: cps/render_template.py:45 +#: cps/render_template.py:46 cps/render_template.py:51 msgid "Downloaded Books" msgstr "" -#: cps/render_template.py:47 +#: cps/render_template.py:48 cps/render_template.py:53 +#: cps/templates/user_table.html:151 msgid "Show Downloaded Books" msgstr "" -#: cps/render_template.py:50 cps/templates/index.xml:25 cps/web.py:425 +#: cps/render_template.py:56 cps/templates/index.xml:32 cps/web.py:424 msgid "Top Rated Books" msgstr "សៀវភៅដែលមានការវាយតម្លៃល្អជាងគេ" -#: cps/render_template.py:52 +#: cps/render_template.py:58 cps/templates/user_table.html:145 msgid "Show Top Rated Books" msgstr "បង្ហាញសៀវភៅដែលមានការវាយតម្លៃល្អជាងគេ" -#: cps/render_template.py:53 cps/templates/index.xml:47 -#: cps/templates/index.xml:51 cps/web.py:642 +#: cps/render_template.py:59 cps/templates/index.xml:54 +#: cps/templates/index.xml:58 cps/web.py:650 msgid "Read Books" msgstr "សៀវភៅដែលបានអានរួច" -#: cps/render_template.py:55 +#: cps/render_template.py:61 msgid "Show read and unread" msgstr "បង្ហាញអានរួច និងមិនទាន់អាន" -#: cps/render_template.py:57 cps/templates/index.xml:54 -#: cps/templates/index.xml:58 cps/web.py:645 +#: cps/render_template.py:63 cps/templates/index.xml:61 +#: cps/templates/index.xml:65 cps/web.py:653 msgid "Unread Books" msgstr "សៀវភៅដែលមិនទាន់បានអាន" -#: cps/render_template.py:59 +#: cps/render_template.py:65 msgid "Show unread" msgstr "" -#: cps/render_template.py:60 +#: cps/render_template.py:66 msgid "Discover" msgstr "ស្រាវជ្រាវ" -#: cps/render_template.py:62 +#: cps/render_template.py:68 cps/templates/user_table.html:143 +#: cps/templates/user_table.html:146 msgid "Show random books" msgstr "បង្ហាញសៀវភៅចៃដន្យ" -#: cps/render_template.py:63 cps/templates/book_table.html:50 -#: cps/templates/index.xml:76 cps/web.py:950 +#: cps/render_template.py:69 cps/templates/book_table.html:51 +#: cps/templates/index.xml:83 cps/web.py:1024 msgid "Categories" msgstr "ប្រភេទនានា" -#: cps/render_template.py:65 +#: cps/render_template.py:71 cps/templates/user_table.html:142 msgid "Show category selection" msgstr "បង្ហាញជម្រើសប្រភេទ" -#: cps/render_template.py:66 cps/templates/book_edit.html:84 -#: cps/templates/book_table.html:51 cps/templates/index.xml:83 -#: cps/templates/search_form.html:62 cps/web.py:854 cps/web.py:864 +#: cps/render_template.py:72 cps/templates/book_edit.html:84 +#: cps/templates/book_table.html:52 cps/templates/index.xml:90 +#: cps/templates/search_form.html:62 cps/web.py:921 cps/web.py:931 msgid "Series" msgstr "ស៊េរី" -#: cps/render_template.py:68 +#: cps/render_template.py:74 cps/templates/user_table.html:141 msgid "Show series selection" msgstr "បង្ហាញជម្រើសស៊េរី" -#: cps/render_template.py:69 cps/templates/book_table.html:49 -#: cps/templates/index.xml:62 +#: cps/render_template.py:75 cps/templates/book_table.html:50 +#: cps/templates/index.xml:69 msgid "Authors" msgstr "អ្នកនិពន្ធ" -#: cps/render_template.py:71 +#: cps/render_template.py:77 cps/templates/user_table.html:144 msgid "Show author selection" msgstr "បង្ហាញជម្រើសអ្នកនិពន្ធ" -#: cps/render_template.py:73 cps/templates/book_table.html:55 -#: cps/templates/index.xml:69 cps/web.py:833 +#: cps/render_template.py:79 cps/templates/book_table.html:56 +#: cps/templates/index.xml:76 cps/web.py:898 msgid "Publishers" msgstr "" -#: cps/render_template.py:75 +#: cps/render_template.py:81 cps/templates/user_table.html:147 msgid "Show publisher selection" msgstr "" -#: cps/render_template.py:76 cps/templates/book_table.html:53 -#: cps/templates/index.xml:90 cps/templates/search_form.html:100 cps/web.py:929 +#: cps/render_template.py:82 cps/templates/book_table.html:54 +#: cps/templates/index.xml:97 cps/templates/search_form.html:100 +#: cps/web.py:1001 msgid "Languages" msgstr "ភាសានានា" -#: cps/render_template.py:79 +#: cps/render_template.py:85 cps/templates/user_table.html:139 msgid "Show language selection" msgstr "បង្ហាញផ្នែកភាសា" -#: cps/render_template.py:80 cps/templates/index.xml:97 +#: cps/render_template.py:86 cps/templates/index.xml:104 msgid "Ratings" msgstr "" -#: cps/render_template.py:82 +#: cps/render_template.py:88 cps/templates/user_table.html:148 msgid "Show ratings selection" msgstr "" -#: cps/render_template.py:83 cps/templates/index.xml:105 +#: cps/render_template.py:89 cps/templates/index.xml:112 msgid "File formats" msgstr "" -#: cps/render_template.py:85 +#: cps/render_template.py:91 cps/templates/user_table.html:149 msgid "Show file formats selection" msgstr "" -#: cps/render_template.py:87 cps/web.py:669 +#: cps/render_template.py:93 cps/web.py:677 msgid "Archived Books" msgstr "" -#: cps/render_template.py:89 +#: cps/render_template.py:95 cps/templates/user_table.html:150 msgid "Show archived books" msgstr "" -#: cps/render_template.py:91 cps/web.py:743 +#: cps/render_template.py:97 cps/web.py:751 msgid "Books List" msgstr "" -#: cps/render_template.py:93 +#: cps/render_template.py:99 cps/templates/user_table.html:152 msgid "Show Books List" msgstr "" -#: cps/shelf.py:69 cps/shelf.py:122 +#: cps/shelf.py:69 cps/shelf.py:124 msgid "Invalid shelf specified" msgstr "" @@ -829,303 +954,307 @@ msgstr "" msgid "Book is already part of the shelf: %(shelfname)s" msgstr "" -#: cps/shelf.py:108 +#: cps/shelf.py:110 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "សៀវភៅត្រូវបានបន្ថែមទៅធ្នើ៖ %(sname)s" -#: cps/shelf.py:126 +#: cps/shelf.py:129 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "" -#: cps/shelf.py:144 +#: cps/shelf.py:147 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "" -#: cps/shelf.py:156 +#: cps/shelf.py:159 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "" -#: cps/shelf.py:161 +#: cps/shelf.py:166 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "" -#: cps/shelf.py:206 +#: cps/shelf.py:212 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "សៀវភៅត្រូវបានដកចេញពីធ្នើ៖ %(sname)s" -#: cps/shelf.py:214 +#: cps/shelf.py:221 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "សូមអភ័យទោស អ្នកមិនមានសិទ្ធិដកសៀវភៅចេញពីធ្នើនេះទេ៖ %(sname)s" -#: cps/shelf.py:224 cps/templates/layout.html:140 +#: cps/shelf.py:231 cps/templates/layout.html:140 msgid "Create a Shelf" msgstr "បង្កើតធ្នើ" -#: cps/shelf.py:231 +#: cps/shelf.py:238 msgid "Edit a shelf" msgstr "កែប្រែធ្នើ" -#: cps/shelf.py:249 +#: cps/shelf.py:256 #, python-format msgid "Shelf %(title)s created" msgstr "ធ្នើឈ្មោះ %(title)s ត្រូវបានបង្កើត" -#: cps/shelf.py:252 +#: cps/shelf.py:259 #, python-format msgid "Shelf %(title)s changed" msgstr "ធ្នើឈ្មោះ %(title)s ត្រូវបានប្តូរ" -#: cps/shelf.py:265 +#: cps/shelf.py:273 msgid "There was an error" msgstr "មានបញ្ហា" -#: cps/shelf.py:281 +#: cps/shelf.py:290 #, python-format msgid "A public shelf with the name '%(title)s' already exists." msgstr "" -#: cps/shelf.py:291 +#: cps/shelf.py:301 #, python-format msgid "A private shelf with the name '%(title)s' already exists." msgstr "" -#: cps/shelf.py:358 +#: cps/shelf.py:370 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "ប្តូរលំដាប់ធ្នើ៖ ‘%(name)s’" -#: cps/shelf.py:423 +#: cps/shelf.py:436 #, python-format msgid "Shelf: '%(name)s'" msgstr "ធ្នើ៖ ‘%(name)s’" -#: cps/shelf.py:427 +#: cps/shelf.py:440 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "មានបញ្ហាពេលបើកធ្នើ។ ពុំមានធ្នើ ឬមិនអាចបើកបាន" -#: cps/updater.py:355 cps/updater.py:366 cps/updater.py:418 cps/updater.py:432 +#: cps/updater.py:374 cps/updater.py:385 cps/updater.py:485 cps/updater.py:500 msgid "Unexpected data while reading update information" msgstr "" -#: cps/updater.py:362 cps/updater.py:424 +#: cps/updater.py:381 cps/updater.py:492 msgid "No update available. You already have the latest version installed" msgstr "" -#: cps/updater.py:379 +#: cps/updater.py:399 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "" -#: cps/updater.py:397 +#: cps/updater.py:417 msgid "Could not fetch update information" msgstr "" -#: cps/updater.py:411 -msgid "No release information available" +#: cps/updater.py:427 +msgid "Click on the button below to update to the latest stable version." msgstr "" -#: cps/updater.py:468 cps/updater.py:479 cps/updater.py:498 +#: cps/updater.py:436 cps/updater.py:450 cps/updater.py:461 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "" -#: cps/updater.py:489 -msgid "Click on the button below to update to the latest stable version." +#: cps/updater.py:478 +msgid "No release information available" msgstr "" -#: cps/templates/index.html:5 cps/web.py:435 +#: cps/templates/index.html:5 cps/web.py:434 msgid "Discover (Random Books)" msgstr "ស្រាវជ្រាវ (សៀវភៅចៃដន្យ)" -#: cps/web.py:461 +#: cps/web.py:460 msgid "Hot Books (Most Downloaded)" msgstr "សៀវភៅដែលត្រូវបានទាញយកច្រើនជាងគេ" -#: cps/web.py:489 +#: cps/web.py:493 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:503 +#: cps/web.py:508 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "" -#: cps/web.py:517 +#: cps/web.py:522 #, python-format msgid "Author: %(name)s" msgstr "" -#: cps/web.py:531 +#: cps/web.py:537 #, python-format msgid "Publisher: %(name)s" msgstr "" -#: cps/web.py:544 +#: cps/web.py:550 #, python-format msgid "Series: %(serie)s" msgstr "ស៊េរី៖ %(serie)s" -#: cps/web.py:557 +#: cps/web.py:563 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:570 +#: cps/web.py:576 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:584 +#: cps/web.py:592 #, python-format msgid "Category: %(name)s" msgstr "ប្រភេទ៖ %(name)s" -#: cps/web.py:603 +#: cps/web.py:611 #, python-format msgid "Language: %(name)s" msgstr "ភាសា៖ %(name)s" -#: cps/web.py:633 +#: cps/web.py:641 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:703 cps/web.py:1248 +#: cps/templates/layout.html:56 cps/web.py:711 cps/web.py:1314 msgid "Advanced Search" msgstr "ស្វែងរកកម្រិតខ្ពស់" #: cps/templates/book_edit.html:214 cps/templates/feed.xml:33 #: cps/templates/index.xml:11 cps/templates/layout.html:45 #: cps/templates/layout.html:48 cps/templates/search_form.html:194 -#: cps/web.py:715 cps/web.py:987 +#: cps/web.py:723 cps/web.py:1061 msgid "Search" msgstr "ស្វែងរក" -#: cps/web.py:882 +#: cps/templates/admin.html:16 cps/web.py:876 +msgid "Downloads" +msgstr "ឯកសារ DLS" + +#: cps/web.py:952 msgid "Ratings list" msgstr "" -#: cps/web.py:901 +#: cps/web.py:973 msgid "File formats list" msgstr "" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:964 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1038 msgid "Tasks" msgstr "កិច្ចការនានា" -#: cps/web.py:1108 +#: cps/web.py:1182 msgid "Published after " msgstr "បានបោះពុម្ភក្រោយ " -#: cps/web.py:1115 +#: cps/web.py:1189 msgid "Published before " msgstr "បានបោះពុម្ភមុន " -#: cps/web.py:1145 +#: cps/web.py:1211 #, python-format msgid "Rating <= %(rating)s" msgstr "ការវាយតម្លៃ <= %(rating)s" -#: cps/web.py:1147 +#: cps/web.py:1213 #, python-format msgid "Rating >= %(rating)s" msgstr "ការវាយតម្លៃ >= %(rating)s" -#: cps/web.py:1149 +#: cps/web.py:1215 #, python-format msgid "Read Status = %(status)s" msgstr "" -#: cps/web.py:1325 +#: cps/web.py:1387 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "សៀវភៅបានចូលជួរសម្រាប់ផ្ញើទៅ %(kindlemail)s ដោយជោគជ័យ" -#: cps/web.py:1329 +#: cps/web.py:1391 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "មានបញ្ហានៅពេលផ្ញើសៀវភៅនេះ៖ %(res)s" -#: cps/web.py:1331 +#: cps/web.py:1393 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "" -#: cps/web.py:1348 +#: cps/web.py:1410 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "" -#: cps/web.py:1349 cps/web.py:1359 cps/web.py:1366 cps/web.py:1389 -#: cps/web.py:1393 cps/web.py:1398 cps/web.py:1402 +#: cps/web.py:1411 cps/web.py:1418 cps/web.py:1424 cps/web.py:1443 +#: cps/web.py:1447 cps/web.py:1453 msgid "register" msgstr "ចុះឈ្មោះ" -#: cps/web.py:1364 -msgid "Invalid e-mail address format" -msgstr "" - -#: cps/web.py:1391 +#: cps/web.py:1445 msgid "Your e-mail is not allowed to register" msgstr "" -#: cps/web.py:1394 +#: cps/web.py:1448 msgid "Confirmation e-mail was send to your e-mail account." msgstr "" -#: cps/web.py:1397 -msgid "This username or e-mail address is already in use." -msgstr "" - -#: cps/web.py:1414 +#: cps/web.py:1465 msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1431 +#: cps/web.py:1482 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "" -#: cps/web.py:1437 +#: cps/web.py:1488 #, python-format msgid "Could not login: %(message)s" msgstr "" -#: cps/web.py:1441 cps/web.py:1465 +#: cps/web.py:1492 cps/web.py:1516 msgid "Wrong Username or Password" msgstr "ខុសឈ្មោះអ្នកប្រើប្រាស់ ឬលេខសម្ងាត់" -#: cps/web.py:1448 +#: cps/web.py:1499 msgid "New Password was send to your email address" msgstr "" -#: cps/web.py:1454 +#: cps/web.py:1505 msgid "Please enter valid username to reset password" msgstr "" -#: cps/web.py:1460 +#: cps/web.py:1511 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "" -#: cps/web.py:1498 cps/web.py:1583 +#: cps/web.py:1565 cps/web.py:1612 #, python-format msgid "%(name)s's profile" msgstr "ព័ត៌មានសង្ខេបរបស់ %(name)s" -#: cps/web.py:1550 +#: cps/web.py:1579 msgid "Profile updated" msgstr "ព័ត៌មានសង្ខេបបានកែប្រែ" -#: cps/web.py:1610 cps/web.py:1613 cps/web.py:1616 cps/web.py:1619 -#: cps/web.py:1626 cps/web.py:1631 +#: cps/web.py:1583 +msgid "Found an existing account for this e-mail address." +msgstr "" + +#: cps/web.py:1639 cps/web.py:1642 cps/web.py:1645 cps/web.py:1648 +#: cps/web.py:1655 cps/web.py:1660 msgid "Read a Book" msgstr "អានសៀវភៅ" +#: cps/services/gmail.py:41 +msgid "Found no valid gmail.json file with OAuth information" +msgstr "" + #: cps/tasks/convert.py:114 #, python-format msgid "Calibre ebook-convert %(tool)s not found" @@ -1164,221 +1293,231 @@ msgstr "" msgid "Users" msgstr "បញ្ជីអ្នកប្រើប្រាស់" -#: cps/templates/admin.html:12 cps/templates/login.html:8 +#: cps/templates/admin.html:13 cps/templates/login.html:8 #: cps/templates/login.html:9 cps/templates/register.html:8 -#: cps/templates/user_edit.html:9 +#: cps/templates/user_edit.html:9 cps/templates/user_table.html:121 msgid "Username" msgstr "ឈ្មោះហៅក្រៅ" -#: cps/templates/admin.html:13 cps/templates/register.html:13 -#: cps/templates/user_edit.html:14 +#: cps/templates/admin.html:14 cps/templates/register.html:13 +#: cps/templates/user_edit.html:14 cps/templates/user_table.html:122 msgid "E-mail Address" msgstr "" -#: cps/templates/admin.html:14 cps/templates/user_edit.html:27 +#: cps/templates/admin.html:15 cps/templates/user_edit.html:27 msgid "Send to Kindle E-mail Address" msgstr "ឧបករណ៍ Kindle" -#: cps/templates/admin.html:15 -msgid "Downloads" -msgstr "ឯកសារ DLS" - -#: cps/templates/admin.html:16 cps/templates/layout.html:77 +#: cps/templates/admin.html:17 cps/templates/layout.html:77 +#: cps/templates/user_table.html:130 msgid "Admin" msgstr "រដ្ឋបាល" -#: cps/templates/admin.html:17 cps/templates/login.html:12 +#: cps/templates/admin.html:18 cps/templates/login.html:12 #: cps/templates/login.html:13 cps/templates/user_edit.html:22 msgid "Password" msgstr "លេខសម្ងាត់" -#: cps/templates/admin.html:18 cps/templates/layout.html:66 +#: cps/templates/admin.html:19 cps/templates/layout.html:66 +#: cps/templates/user_table.html:132 msgid "Upload" msgstr "អាប់ឡូដ" -#: cps/templates/admin.html:19 cps/templates/detail.html:18 +#: cps/templates/admin.html:20 cps/templates/detail.html:18 #: cps/templates/detail.html:27 cps/templates/shelf.html:6 +#: cps/templates/user_table.html:133 msgid "Download" msgstr "ទាញយក" -#: cps/templates/admin.html:20 +#: cps/templates/admin.html:21 msgid "View Books" msgstr "" -#: cps/templates/admin.html:21 +#: cps/templates/admin.html:22 cps/templates/user_table.html:118 +#: cps/templates/user_table.html:135 msgid "Edit" msgstr "កែប្រែ" -#: cps/templates/admin.html:22 cps/templates/book_edit.html:16 -#: cps/templates/book_table.html:57 cps/templates/modal_dialogs.html:63 +#: cps/templates/admin.html:23 cps/templates/book_edit.html:16 +#: cps/templates/book_table.html:58 cps/templates/modal_dialogs.html:63 #: cps/templates/modal_dialogs.html:116 cps/templates/user_edit.html:66 +#: cps/templates/user_table.html:136 msgid "Delete" msgstr "លុប" -#: cps/templates/admin.html:23 +#: cps/templates/admin.html:24 msgid "Public Shelf" msgstr "" -#: cps/templates/admin.html:44 +#: cps/templates/admin.html:47 msgid "Add New User" msgstr "" -#: cps/templates/admin.html:46 +#: cps/templates/admin.html:49 msgid "Import LDAP Users" msgstr "" -#: cps/templates/admin.html:53 +#: cps/templates/admin.html:56 msgid "E-mail Server Settings" msgstr "" -#: cps/templates/admin.html:57 cps/templates/email_edit.html:11 +#: cps/templates/admin.html:61 cps/templates/email_edit.html:30 msgid "SMTP Hostname" msgstr "ឈ្មោះម៉ាស៊ីន SMTP" -#: cps/templates/admin.html:61 cps/templates/email_edit.html:15 +#: cps/templates/admin.html:65 cps/templates/email_edit.html:34 msgid "SMTP Port" msgstr "លេខ port SMTP" -#: cps/templates/admin.html:65 cps/templates/email_edit.html:19 +#: cps/templates/admin.html:69 cps/templates/email_edit.html:38 msgid "Encryption" msgstr "SSL" -#: cps/templates/admin.html:69 cps/templates/email_edit.html:27 +#: cps/templates/admin.html:73 cps/templates/email_edit.html:46 msgid "SMTP Login" msgstr "អ្នកចូលប្រើ SMTP" -#: cps/templates/admin.html:73 cps/templates/email_edit.html:35 +#: cps/templates/admin.html:77 cps/templates/admin.html:88 +#: cps/templates/email_edit.html:54 msgid "From E-mail" msgstr "ពីអ៊ីមែល" #: cps/templates/admin.html:84 +msgid "E-Mail Service" +msgstr "" + +#: cps/templates/admin.html:85 +msgid "Gmail via Oauth2" +msgstr "" + +#: cps/templates/admin.html:100 msgid "Configuration" msgstr "ការកំណត់" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:103 msgid "Calibre Database Directory" msgstr "ទីតាំង database Calibre" -#: cps/templates/admin.html:91 cps/templates/config_edit.html:136 +#: cps/templates/admin.html:107 cps/templates/config_edit.html:136 msgid "Log Level" msgstr "" -#: cps/templates/admin.html:95 +#: cps/templates/admin.html:111 msgid "Port" msgstr "លេខ port" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:116 msgid "External Port" msgstr "" -#: cps/templates/admin.html:107 cps/templates/config_view_edit.html:27 +#: cps/templates/admin.html:123 cps/templates/config_view_edit.html:27 msgid "Books per Page" msgstr "ចំនួនសៀវភៅក្នុងមួយទំព័រ" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:127 msgid "Uploads" msgstr "កំពុងអាប់ឡូដ" -#: cps/templates/admin.html:115 +#: cps/templates/admin.html:131 msgid "Anonymous Browsing" msgstr "" -#: cps/templates/admin.html:119 +#: cps/templates/admin.html:135 msgid "Public Registration" msgstr "ការចុះឈ្មាះសាធារណៈ" -#: cps/templates/admin.html:123 +#: cps/templates/admin.html:139 msgid "Magic Link Remote Login" msgstr "ការចូលប្រើប្រាស់ពីចម្ងាយ" -#: cps/templates/admin.html:127 +#: cps/templates/admin.html:143 msgid "Reverse Proxy Login" msgstr "" -#: cps/templates/admin.html:132 +#: cps/templates/admin.html:148 msgid "Reverse proxy header name" msgstr "" -#: cps/templates/admin.html:137 +#: cps/templates/admin.html:153 msgid "Edit Basic Configuration" msgstr "" -#: cps/templates/admin.html:138 +#: cps/templates/admin.html:154 msgid "Edit UI Configuration" msgstr "" -#: cps/templates/admin.html:143 +#: cps/templates/admin.html:159 msgid "Administration" msgstr "កិច្ចការរដ្ឋបាល" -#: cps/templates/admin.html:144 +#: cps/templates/admin.html:160 msgid "Download Debug Package" msgstr "" -#: cps/templates/admin.html:145 +#: cps/templates/admin.html:161 msgid "View Logs" msgstr "" -#: cps/templates/admin.html:148 +#: cps/templates/admin.html:164 msgid "Reconnect Calibre Database" msgstr "ភ្ជាប់ទៅ database Calibre ម្តងទៀត" -#: cps/templates/admin.html:149 +#: cps/templates/admin.html:165 msgid "Restart" msgstr "" -#: cps/templates/admin.html:150 +#: cps/templates/admin.html:166 msgid "Shutdown" msgstr "" -#: cps/templates/admin.html:155 +#: cps/templates/admin.html:171 msgid "Update" msgstr "" -#: cps/templates/admin.html:159 +#: cps/templates/admin.html:175 msgid "Version" msgstr "" -#: cps/templates/admin.html:160 +#: cps/templates/admin.html:176 msgid "Details" msgstr "" -#: cps/templates/admin.html:166 +#: cps/templates/admin.html:182 msgid "Current version" msgstr "" -#: cps/templates/admin.html:173 +#: cps/templates/admin.html:189 msgid "Check for Update" msgstr "រកមើលបច្ចុប្បន្នភាព" -#: cps/templates/admin.html:174 +#: cps/templates/admin.html:190 msgid "Perform Update" msgstr "ធ្វើបច្ចុប្បន្នភាព" -#: cps/templates/admin.html:187 +#: cps/templates/admin.html:203 msgid "Are you sure you want to restart?" msgstr "" -#: cps/templates/admin.html:192 cps/templates/admin.html:206 -#: cps/templates/admin.html:226 cps/templates/shelf.html:95 +#: cps/templates/admin.html:208 cps/templates/admin.html:222 +#: cps/templates/admin.html:242 cps/templates/shelf.html:95 msgid "OK" msgstr "បាទ/ចាស" -#: cps/templates/admin.html:193 cps/templates/admin.html:207 -#: cps/templates/book_edit.html:192 cps/templates/book_table.html:84 +#: cps/templates/admin.html:209 cps/templates/admin.html:223 +#: cps/templates/book_edit.html:192 cps/templates/book_table.html:85 #: cps/templates/config_edit.html:427 cps/templates/config_view_edit.html:151 -#: cps/templates/email_edit.html:47 cps/templates/modal_dialogs.html:64 -#: cps/templates/modal_dialogs.html:99 cps/templates/modal_dialogs.html:117 +#: cps/templates/modal_dialogs.html:64 cps/templates/modal_dialogs.html:99 +#: cps/templates/modal_dialogs.html:117 cps/templates/modal_dialogs.html:135 #: cps/templates/shelf.html:96 cps/templates/shelf_edit.html:19 #: cps/templates/user_edit.html:132 msgid "Cancel" msgstr "" -#: cps/templates/admin.html:205 +#: cps/templates/admin.html:221 msgid "Are you sure you want to shutdown?" msgstr "" -#: cps/templates/admin.html:217 +#: cps/templates/admin.html:233 msgid "Updating, please do not reload this page" msgstr "កំពុងធ្វើបច្ចុប្បន្នភាព សូមកុំបើកទំព័រជាថ្មី" @@ -1486,6 +1625,7 @@ msgid "Identifier Value" msgstr "" #: cps/templates/book_edit.html:72 cps/templates/book_edit.html:289 +#: cps/templates/user_table.html:23 msgid "Remove" msgstr "" @@ -1551,7 +1691,7 @@ msgid "Fetch Metadata" msgstr "មើលទិន្នន័យមេតា" #: cps/templates/book_edit.html:191 cps/templates/config_edit.html:424 -#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45 +#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:64 #: cps/templates/shelf_edit.html:17 cps/templates/shelf_order.html:40 #: cps/templates/user_edit.html:130 msgid "Save" @@ -1591,96 +1731,98 @@ msgstr "ការស្វែងរកមានកំហុស!" msgid "No Result(s) found! Please try another keyword." msgstr "" -#: cps/templates/book_table.html:10 cps/templates/book_table.html:52 +#: cps/templates/book_table.html:11 cps/templates/book_table.html:53 +#: cps/templates/user_table.html:13 cps/templates/user_table.html:65 +#: cps/templates/user_table.html:88 msgid "This Field is Required" msgstr "" -#: cps/templates/book_table.html:23 +#: cps/templates/book_table.html:24 msgid "Merge selected books" msgstr "" -#: cps/templates/book_table.html:24 +#: cps/templates/book_table.html:25 cps/templates/user_table.html:111 msgid "Remove Selections" msgstr "" -#: cps/templates/book_table.html:30 +#: cps/templates/book_table.html:31 msgid "Update Title Sort automatically" msgstr "" -#: cps/templates/book_table.html:34 +#: cps/templates/book_table.html:35 msgid "Update Author Sort automatically" msgstr "" -#: cps/templates/book_table.html:46 +#: cps/templates/book_table.html:47 msgid "Enter Title" msgstr "" -#: cps/templates/book_table.html:46 cps/templates/config_view_edit.html:23 +#: cps/templates/book_table.html:47 cps/templates/config_view_edit.html:23 #: cps/templates/shelf_edit.html:7 msgid "Title" msgstr "ចំណងជើង" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Enter Title Sort" msgstr "" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Title Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Enter Author Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Author Sort" msgstr "" -#: cps/templates/book_table.html:49 +#: cps/templates/book_table.html:50 msgid "Enter Authors" msgstr "" -#: cps/templates/book_table.html:50 +#: cps/templates/book_table.html:51 msgid "Enter Categories" msgstr "" -#: cps/templates/book_table.html:51 +#: cps/templates/book_table.html:52 msgid "Enter Series" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Enter title" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Series Index" msgstr "" -#: cps/templates/book_table.html:53 +#: cps/templates/book_table.html:54 msgid "Enter Languages" msgstr "" -#: cps/templates/book_table.html:54 +#: cps/templates/book_table.html:55 msgid "Publishing Date" msgstr "" -#: cps/templates/book_table.html:55 +#: cps/templates/book_table.html:56 msgid "Enter Publishers" msgstr "" -#: cps/templates/book_table.html:70 cps/templates/modal_dialogs.html:46 +#: cps/templates/book_table.html:71 cps/templates/modal_dialogs.html:46 msgid "Are you really sure?" msgstr "" -#: cps/templates/book_table.html:74 +#: cps/templates/book_table.html:75 msgid "Books with Title will be merged from:" msgstr "" -#: cps/templates/book_table.html:78 +#: cps/templates/book_table.html:79 msgid "Into Book with Title:" msgstr "" -#: cps/templates/book_table.html:83 +#: cps/templates/book_table.html:84 msgid "Merge" msgstr "" @@ -1865,7 +2007,7 @@ msgid "LDAP Encryption" msgstr "" #: cps/templates/config_edit.html:268 cps/templates/config_view_edit.html:61 -#: cps/templates/email_edit.html:21 +#: cps/templates/email_edit.html:40 msgid "None" msgstr "គ្មាន" @@ -2078,6 +2220,7 @@ msgid "Default Visibilities for New Users" msgstr "ភាពមើលឃើញដែលមកស្រាប់សម្រាប់អ្នកប្រើប្រាស់ថ្មី" #: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82 +#: cps/templates/user_table.html:138 msgid "Show Random Books in Detail View" msgstr "បង្ហាញសៀវភៅចៃដន្យក្នុងការបង្ហាញជាពិស្តារ" @@ -2151,43 +2294,69 @@ msgstr "" msgid "Edit Metadata" msgstr "កែប្រែទិន្នន័យមេតា" -#: cps/templates/email_edit.html:22 +#: cps/templates/email_edit.html:12 +msgid "Choose Server Type" +msgstr "" + +#: cps/templates/email_edit.html:14 +msgid "Use Standard E-Mail Account" +msgstr "" + +#: cps/templates/email_edit.html:15 +msgid "Gmail Account with OAuth2 Verfification" +msgstr "" + +#: cps/templates/email_edit.html:21 +msgid "Setup Gmail Account as E-Mail Server" +msgstr "" + +#: cps/templates/email_edit.html:23 +msgid "Revoke Gmail Access" +msgstr "" + +#: cps/templates/email_edit.html:41 msgid "STARTTLS" msgstr "STARTTLS" -#: cps/templates/email_edit.html:23 +#: cps/templates/email_edit.html:42 msgid "SSL/TLS" msgstr "SSL/TLS" -#: cps/templates/email_edit.html:31 +#: cps/templates/email_edit.html:50 msgid "SMTP Password" msgstr "លេខសម្ងាត់ SMTP" -#: cps/templates/email_edit.html:38 +#: cps/templates/email_edit.html:57 msgid "Attachment Size Limit" msgstr "" -#: cps/templates/email_edit.html:46 +#: cps/templates/email_edit.html:65 msgid "Save and Send Test E-mail" msgstr "រក្សាទុកការកំណត់រួចផ្ញើអ៊ីមែលសាកល្បង" -#: cps/templates/email_edit.html:51 +#: cps/templates/email_edit.html:69 cps/templates/layout.html:29 +#: cps/templates/shelf_order.html:41 cps/templates/user_table.html:158 +msgid "Back" +msgstr "មកក្រោយ" + +#: cps/templates/email_edit.html:73 msgid "Allowed Domains (Whitelist)" msgstr "" -#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80 +#: cps/templates/email_edit.html:76 cps/templates/email_edit.html:102 msgid "Add Domain" msgstr "" -#: cps/templates/email_edit.html:57 cps/templates/email_edit.html:83 +#: cps/templates/email_edit.html:79 cps/templates/email_edit.html:105 +#: cps/templates/user_table.html:26 msgid "Add" msgstr "" -#: cps/templates/email_edit.html:62 cps/templates/email_edit.html:72 +#: cps/templates/email_edit.html:84 cps/templates/email_edit.html:94 msgid "Enter domainname" msgstr "" -#: cps/templates/email_edit.html:68 +#: cps/templates/email_edit.html:90 msgid "Denied Domains (Blacklist)" msgstr "" @@ -2199,10 +2368,6 @@ msgstr "បន្ទាប់" msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):" msgstr "" -#: cps/templates/grid.html:14 cps/templates/list.html:14 -msgid "All" -msgstr "" - #: cps/templates/http_error.html:38 msgid "Create Issue" msgstr "" @@ -2233,64 +2398,72 @@ msgstr "" msgid "Start" msgstr "ចាប់ផ្តើម" +#: cps/templates/index.xml:18 +msgid "Alphabetical Books" +msgstr "" + #: cps/templates/index.xml:22 +msgid "Books sorted alphabetically" +msgstr "" + +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Downloads." msgstr "ការបោះពុម្ភផ្សាយដែលមានប្រជាប្រិយភាពពីកាតាឡុកនេះផ្អែកលើការទាញយក" -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:36 msgid "Popular publications from this catalog based on Rating." msgstr "ការបោះពុម្ភផ្សាយដែលមានប្រជាប្រិយភាពពីកាតាឡុកនេះផ្អែកលើការវាយតម្លៃ" -#: cps/templates/index.xml:32 +#: cps/templates/index.xml:39 msgid "Recently added Books" msgstr "" -#: cps/templates/index.xml:36 +#: cps/templates/index.xml:43 msgid "The latest Books" msgstr "សៀវភៅចុងក្រោយគេ" -#: cps/templates/index.xml:39 +#: cps/templates/index.xml:46 msgid "Random Books" msgstr "សៀវភៅចៃដន្យ" -#: cps/templates/index.xml:43 +#: cps/templates/index.xml:50 msgid "Show Random Books" msgstr "បង្ហាញសៀវភៅចៃដន្យ" -#: cps/templates/index.xml:66 +#: cps/templates/index.xml:73 msgid "Books ordered by Author" msgstr "សៀវភៅរៀបតាមលំដាប់អ្នកនិពន្ធ" -#: cps/templates/index.xml:73 +#: cps/templates/index.xml:80 msgid "Books ordered by publisher" msgstr "" -#: cps/templates/index.xml:80 +#: cps/templates/index.xml:87 msgid "Books ordered by category" msgstr "សៀវភៅរៀបតាមលំដាប់ប្រភេទ" -#: cps/templates/index.xml:87 +#: cps/templates/index.xml:94 msgid "Books ordered by series" msgstr "សៀវភៅរៀបតាមលំដាប់ស៊េរី" -#: cps/templates/index.xml:94 +#: cps/templates/index.xml:101 msgid "Books ordered by Languages" msgstr "" -#: cps/templates/index.xml:101 +#: cps/templates/index.xml:108 msgid "Books ordered by Rating" msgstr "" -#: cps/templates/index.xml:109 +#: cps/templates/index.xml:116 msgid "Books ordered by file formats" msgstr "" -#: cps/templates/index.xml:112 cps/templates/layout.html:135 +#: cps/templates/index.xml:119 cps/templates/layout.html:135 #: cps/templates/search_form.html:80 msgid "Shelves" msgstr "" -#: cps/templates/index.xml:116 +#: cps/templates/index.xml:123 msgid "Books organized in shelves" msgstr "" @@ -2298,10 +2471,6 @@ msgstr "" msgid "Home" msgstr "" -#: cps/templates/layout.html:29 cps/templates/shelf_order.html:41 -msgid "Back" -msgstr "មកក្រោយ" - #: cps/templates/layout.html:35 msgid "Toggle Navigation" msgstr "បិទ/បើកការរុករក" @@ -2463,6 +2632,11 @@ msgstr "" msgid "Select" msgstr "" +#: cps/templates/modal_dialogs.html:134 +#, fuzzy +msgid "Ok" +msgstr "សៀវភៅ" + #: cps/templates/osd.xml:5 msgid "Calibre-Web eBook Catalog" msgstr "" @@ -2768,10 +2942,6 @@ msgstr "" msgid "Language of Books" msgstr "បង្ហាញសៀវភៅដែលមានភាសា" -#: cps/templates/user_edit.html:44 -msgid "Show All" -msgstr "បង្ហាញទាំងអស់" - #: cps/templates/user_edit.html:53 msgid "OAuth Settings" msgstr "" @@ -2796,7 +2966,7 @@ msgstr "" msgid "Add allowed/Denied Custom Column Values" msgstr "" -#: cps/templates/user_edit.html:135 +#: cps/templates/user_edit.html:135 cps/templates/user_table.html:153 msgid "Delete User" msgstr "លុបអ្នកប្រើប្រាស់នេះ" @@ -2804,3 +2974,90 @@ msgstr "លុបអ្នកប្រើប្រាស់នេះ" msgid "Generate Kobo Auth URL" msgstr "" +#: cps/templates/user_table.html:68 cps/templates/user_table.html:91 +msgid "Select..." +msgstr "" + +#: cps/templates/user_table.html:118 +#, fuzzy +msgid "Edit User" +msgstr "អ្នកប្រើប្រាស់រដ្ឋបាល" + +#: cps/templates/user_table.html:121 +#, fuzzy +msgid "Enter Username" +msgstr "ជ្រើសរើសឈ្មោះអ្នកប្រើប្រាស់" + +#: cps/templates/user_table.html:122 +#, fuzzy +msgid "Enter E-mail Address" +msgstr "អាសយដ្ឋានអ៊ីមែលរបស់អ្នក" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Enter Kindle E-mail Address" +msgstr "ឧបករណ៍ Kindle" + +#: cps/templates/user_table.html:123 +msgid "Kindle E-mail" +msgstr "" + +#: cps/templates/user_table.html:124 +msgid "Locale" +msgstr "" + +#: cps/templates/user_table.html:125 +msgid "Visible Book Languages" +msgstr "" + +#: cps/templates/user_table.html:126 +msgid "Edit Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:126 +msgid "Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +msgid "Edit Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +msgid "Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:128 +msgid "Edit Allowed Column Values" +msgstr "" + +#: cps/templates/user_table.html:128 +msgid "Allowed Column Values" +msgstr "" + +#: cps/templates/user_table.html:129 +msgid "Edit Denied Column Values" +msgstr "" + +#: cps/templates/user_table.html:129 +msgid "Denied Columns Values" +msgstr "" + +#: cps/templates/user_table.html:131 +#, fuzzy +msgid "Change Password" +msgstr "អនុញ្ញាតឲប្តូរលេខសម្ងាត់" + +#: cps/templates/user_table.html:134 +msgid "View" +msgstr "" + +#: cps/templates/user_table.html:137 +#, fuzzy +msgid "Edit Public Shelfs" +msgstr "កែប្រែធ្នើ" + +#: cps/templates/user_table.html:140 +#, fuzzy +msgid "Show read/unread selection" +msgstr "បង្ហាញជម្រើសស៊េរី" + diff --git a/cps/translations/nl/LC_MESSAGES/messages.mo b/cps/translations/nl/LC_MESSAGES/messages.mo index 9cf56f14..d97055f5 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 116b533f..86f5faa0 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: 2021-03-27 12:16+0100\n" +"POT-Creation-Date: 2021-05-01 16:33+0200\n" "PO-Revision-Date: 2020-12-12 08:20+0100\n" "Last-Translator: Marcel Maas \n" "Language: nl\n" @@ -17,7 +17,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" +"Generated-By: Babel 2.8.0\n" #: cps/about.py:43 msgid "installed" @@ -31,310 +31,405 @@ msgstr "niet geïnstalleerd" msgid "Statistics" msgstr "Statistieken" -#: cps/admin.py:149 +#: cps/admin.py:151 msgid "Server restarted, please reload page" msgstr "De server is herstart, vernieuw de pagina" -#: cps/admin.py:151 +#: cps/admin.py:153 msgid "Performing shutdown of server, please close window" msgstr "Bezig met afsluiten van de server, sluit het venster" -#: cps/admin.py:159 +#: cps/admin.py:161 msgid "Reconnect successful" msgstr "Opnieuw verbinden gelukt" -#: cps/admin.py:162 +#: cps/admin.py:164 msgid "Unknown command" msgstr "Onbekende opdracht" -#: cps/admin.py:172 cps/editbooks.py:662 cps/editbooks.py:674 -#: cps/editbooks.py:777 cps/editbooks.py:779 cps/editbooks.py:806 -#: cps/editbooks.py:822 cps/updater.py:521 cps/uploader.py:94 +#: cps/admin.py:174 cps/editbooks.py:668 cps/editbooks.py:682 +#: cps/editbooks.py:821 cps/editbooks.py:823 cps/editbooks.py:850 +#: cps/editbooks.py:866 cps/updater.py:555 cps/uploader.py:94 #: cps/uploader.py:104 msgid "Unknown" msgstr "Onbekend" -#: cps/admin.py:193 +#: cps/admin.py:195 msgid "Admin page" msgstr "Systeembeheer" -#: cps/admin.py:215 +#: cps/admin.py:217 msgid "UI Configuration" msgstr "Uiterlijk aanpassen" -#: cps/admin.py:247 cps/admin.py:936 +#: cps/admin.py:249 cps/templates/admin.html:46 +#, fuzzy +msgid "Edit Users" +msgstr "Systeembeheerder" + +#: cps/admin.py:290 +#, fuzzy +msgid "all" +msgstr "Alles" + +#: cps/admin.py:315 cps/admin.py:1486 +msgid "User not found" +msgstr "Gebruiker niet gevonden" + +#: cps/admin.py:329 +msgid "{} users deleted successfully" +msgstr "" + +#: cps/admin.py:351 cps/templates/user_edit.html:44 +#: cps/templates/user_table.html:69 +msgid "Show All" +msgstr "Alle talen" + +#: cps/admin.py:372 cps/admin.py:378 +msgid "Malformed request" +msgstr "" + +#: cps/admin.py:390 cps/admin.py:1368 +msgid "Guest Name can't be changed" +msgstr "" + +#: cps/admin.py:400 +msgid "Guest can't have this role" +msgstr "" + +#: cps/admin.py:412 cps/admin.py:1333 +msgid "No admin user remaining, can't remove admin role" +msgstr "Kan systeembeheerder rol niet verwijderen van de laatste systeembeheerder" + +#: cps/admin.py:416 cps/admin.py:430 +msgid "Value has to be true or false" +msgstr "" + +#: cps/admin.py:418 +msgid "Invalid role" +msgstr "" + +#: cps/admin.py:422 +msgid "Guest can't have this view" +msgstr "" + +#: cps/admin.py:432 +msgid "Invalid view" +msgstr "" + +#: cps/admin.py:435 +msgid "Guest's Locale is determined automatically and can't be set" +msgstr "" + +#: cps/admin.py:439 +msgid "No Valid Locale Given" +msgstr "" + +#: cps/admin.py:450 +msgid "No Valid Book Language Given" +msgstr "" + +#: cps/admin.py:452 +msgid "Parameter not found" +msgstr "" + +#: cps/admin.py:506 cps/admin.py:1219 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web-configuratie bijgewerkt" -#: cps/admin.py:258 +#: cps/admin.py:518 msgid "Do you really want to delete the Kobo Token?" msgstr "Wil je werkelijk je Kobo Token verwijderen?" -#: cps/admin.py:260 +#: cps/admin.py:520 msgid "Do you really want to delete this domain?" msgstr "" -#: cps/admin.py:262 +#: cps/admin.py:522 msgid "Do you really want to delete this user?" msgstr "" -#: cps/admin.py:264 cps/templates/shelf.html:90 +#: cps/admin.py:524 cps/templates/shelf.html:90 msgid "Are you sure you want to delete this shelf?" msgstr "Weet je zeker dat je deze boekenplank wilt verwijderen?" -#: cps/admin.py:510 cps/admin.py:516 cps/admin.py:526 cps/admin.py:536 -#: cps/templates/modal_dialogs.html:29 +#: cps/admin.py:526 +#, fuzzy +msgid "Are you sure you want to change locales of selected user(s)?" +msgstr "Weet je zeker dat je deze boekenplank wilt verwijderen?" + +#: cps/admin.py:528 +msgid "Are you sure you want to change visible book languages for selected user(s)?" +msgstr "" + +#: cps/admin.py:530 +msgid "Are you sure you want to change the selected role for the selected user(s)?" +msgstr "" + +#: cps/admin.py:532 +#, fuzzy +msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" +msgstr "Weet je zeker dat je deze boekenplank wilt verwijderen?" + +#: cps/admin.py:534 +msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:683 +msgid "Tag not found" +msgstr "" + +#: cps/admin.py:695 +msgid "Invalid Action" +msgstr "" + +#: cps/admin.py:800 cps/admin.py:806 cps/admin.py:816 cps/admin.py:826 +#: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:43 msgid "Deny" msgstr "Weigeren" -#: cps/admin.py:512 cps/admin.py:518 cps/admin.py:528 cps/admin.py:538 -#: cps/templates/modal_dialogs.html:28 +#: cps/admin.py:802 cps/admin.py:808 cps/admin.py:818 cps/admin.py:828 +#: cps/templates/modal_dialogs.html:28 cps/templates/user_table.html:48 msgid "Allow" msgstr "Toestaan" -#: cps/admin.py:681 +#: cps/admin.py:971 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json is niet geconfigureerd voor webapplicatie" -#: cps/admin.py:723 +#: cps/admin.py:1016 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "De locatie van het logbestand is onjuist, voer een geldige locatie in" -#: cps/admin.py:729 +#: cps/admin.py:1022 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "De locatie vam het toegangslog is onjuist, voer een geldige locatie in" -#: cps/admin.py:738 +#: cps/admin.py:1052 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "" -#: cps/admin.py:752 cps/admin.py:760 +#: cps/admin.py:1067 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:755 cps/admin.py:763 +#: cps/admin.py:1070 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:768 +#: cps/admin.py:1075 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:771 +#: cps/admin.py:1078 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:779 +#: cps/admin.py:1086 #, python-format msgid "LDAP Member User Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:782 +#: cps/admin.py:1089 msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:790 +#: cps/admin.py:1097 msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:841 +#: cps/admin.py:1123 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "SSL-sleutellocatie is niet geldig, voer een geldige locatie in" -#: cps/admin.py:847 +#: cps/admin.py:1129 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "SSL-certificaatlocatie is niet geldig, voer een geldige locatie in" -#: cps/admin.py:917 cps/admin.py:1024 cps/admin.py:1047 cps/admin.py:1168 -#: cps/shelf.py:102 cps/shelf.py:159 cps/shelf.py:200 cps/shelf.py:261 -#: cps/shelf.py:314 cps/shelf.py:348 cps/shelf.py:418 +#: cps/admin.py:1200 cps/admin.py:1303 cps/admin.py:1395 cps/admin.py:1461 +#: cps/shelf.py:103 cps/shelf.py:163 cps/shelf.py:206 cps/shelf.py:269 +#: cps/shelf.py:325 cps/shelf.py:360 cps/shelf.py:431 msgid "Settings DB is not Writeable" msgstr "Instellingen niet opgeslagen" -#: cps/admin.py:929 +#: cps/admin.py:1212 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "Database niet gevonden, voer de juiste locatie in" -#: cps/admin.py:933 +#: cps/admin.py:1216 msgid "DB is not Writeable" msgstr "Kan niet schrijven naar database" -#: cps/admin.py:972 +#: cps/admin.py:1256 msgid "Basic Configuration" msgstr "Basis configuratie" -#: cps/admin.py:987 cps/web.py:1358 +#: cps/admin.py:1272 cps/web.py:1417 msgid "Please fill out all fields!" msgstr "Vul alle velden in!" -#: cps/admin.py:990 cps/admin.py:1002 cps/admin.py:1008 cps/admin.py:1138 -msgid "Add new user" -msgstr "Gebruiker toevoegen" - -#: cps/admin.py:999 cps/web.py:1496 +#: cps/admin.py:1280 msgid "E-mail is not from valid domain" msgstr "Het e-mailadres bevat geen geldige domeinnaam" -#: cps/admin.py:1006 cps/admin.py:1021 -msgid "Found an existing account for this e-mail address or nickname." -msgstr "Bestaand account met dit e-mailadres of deze gebruikersnaam aangetroffen." +#: cps/admin.py:1284 cps/admin.py:1414 +msgid "Add new user" +msgstr "Gebruiker toevoegen" -#: cps/admin.py:1017 +#: cps/admin.py:1293 #, python-format msgid "User '%(user)s' created" msgstr "Gebruiker '%(user)s' aangemaakt" -#: cps/admin.py:1031 +#: cps/admin.py:1299 +#, fuzzy +msgid "Found an existing account for this e-mail address or name." +msgstr "Bestaand account met dit e-mailadres of deze gebruikersnaam aangetroffen." + +#: cps/admin.py:1312 #, python-format msgid "User '%(nick)s' deleted" msgstr "Gebruiker '%(nick)s' verwijderd" -#: cps/admin.py:1034 +#: cps/admin.py:1314 cps/admin.py:1315 +msgid "Can't delete Guest User" +msgstr "" + +#: cps/admin.py:1318 msgid "No admin user remaining, can't delete user" msgstr "Kan laatste systeembeheerder niet verwijderen" -#: cps/admin.py:1041 -#, python-format -msgid "User '%(nick)s' updated" -msgstr "Gebruiker '%(nick)s' bijgewerkt" - -#: cps/admin.py:1044 -msgid "An unknown error occured." -msgstr "Er is een onbekende fout opgetreden." - -#: cps/admin.py:1056 -msgid "No admin user remaining, can't remove admin role" -msgstr "Kan systeembeheerder rol niet verwijderen van de laatste systeembeheerder" - -#: cps/admin.py:1092 cps/web.py:1554 -msgid "Found an existing account for this e-mail address." -msgstr "Bestaand account met dit e-mailadres aangetroffen." - -#: cps/admin.py:1101 cps/admin.py:1115 cps/admin.py:1209 cps/web.py:1516 +#: cps/admin.py:1383 cps/admin.py:1504 #, python-format msgid "Edit User %(nick)s" msgstr "Gebruiker '%(nick)s' bewerken" -#: cps/admin.py:1107 cps/web.py:1509 -msgid "This username is already taken" -msgstr "Deze gebruikersnaam is al in gebruik" +#: cps/admin.py:1387 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "Gebruiker '%(nick)s' bijgewerkt" -#: cps/admin.py:1147 cps/templates/admin.html:78 +#: cps/admin.py:1391 +#, fuzzy +msgid "An unknown error occurred." +msgstr "Er is een onbekende fout opgetreden." + +#: cps/admin.py:1423 cps/templates/admin.html:94 msgid "Edit E-mail Server Settings" msgstr "SMTP-instellingen bewerken" -#: cps/admin.py:1175 +#: cps/admin.py:1442 +msgid "G-Mail Account Verification Successful" +msgstr "" + +#: cps/admin.py:1468 #, python-format msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" msgstr "" -#: cps/admin.py:1178 +#: cps/admin.py:1471 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Fout opgetreden bij het versturen van de test-e-mail: %(res)s" -#: cps/admin.py:1180 +#: cps/admin.py:1473 msgid "Please configure your e-mail address first..." msgstr "Gelieve eerst je e-mail adres configureren..." -#: cps/admin.py:1182 +#: cps/admin.py:1475 msgid "E-mail server settings updated" msgstr "E-mailserver-instellingen bijgewerkt" -#: cps/admin.py:1193 -msgid "User not found" -msgstr "Gebruiker niet gevonden" - -#: cps/admin.py:1220 +#: cps/admin.py:1516 #, python-format msgid "Password for user %(user)s reset" msgstr "Wachtwoord voor gebruiker %(user)s is hersteld" -#: cps/admin.py:1223 cps/web.py:1388 cps/web.py:1452 +#: cps/admin.py:1519 cps/web.py:1442 cps/web.py:1503 msgid "An unknown error occurred. Please try again later." msgstr "Onbekende fout opgetreden. Probeer het later nog eens." -#: cps/admin.py:1226 cps/web.py:1320 +#: cps/admin.py:1522 cps/web.py:1382 msgid "Please configure the SMTP mail settings first..." msgstr "Stel eerst SMTP-mail in..." -#: cps/admin.py:1237 +#: cps/admin.py:1533 msgid "Logfile viewer" msgstr "Logbestand lezer" -#: cps/admin.py:1303 +#: cps/admin.py:1599 msgid "Requesting update package" msgstr "Update opvragen" -#: cps/admin.py:1304 +#: cps/admin.py:1600 msgid "Downloading update package" msgstr "Update downloaden" -#: cps/admin.py:1305 +#: cps/admin.py:1601 msgid "Unzipping update package" msgstr "Update uitpakken" -#: cps/admin.py:1306 +#: cps/admin.py:1602 msgid "Replacing files" msgstr "Update toepassen" -#: cps/admin.py:1307 +#: cps/admin.py:1603 msgid "Database connections are closed" msgstr "Databaseverbindingen zijn gesloten" -#: cps/admin.py:1308 +#: cps/admin.py:1604 msgid "Stopping server" msgstr "Bezig met stoppen van Calibre-Web" -#: cps/admin.py:1309 +#: cps/admin.py:1605 msgid "Update finished, please press okay and reload page" msgstr "Update voltooid, klik op 'Oké' en vernieuw de pagina" -#: cps/admin.py:1310 cps/admin.py:1311 cps/admin.py:1312 cps/admin.py:1313 -#: cps/admin.py:1314 +#: cps/admin.py:1606 cps/admin.py:1607 cps/admin.py:1608 cps/admin.py:1609 +#: cps/admin.py:1610 msgid "Update failed:" msgstr "Update mislukt:" -#: cps/admin.py:1310 cps/updater.py:337 cps/updater.py:532 cps/updater.py:534 +#: cps/admin.py:1606 cps/updater.py:356 cps/updater.py:566 cps/updater.py:568 msgid "HTTP Error" msgstr "HTTP-fout" -#: cps/admin.py:1311 cps/updater.py:339 cps/updater.py:536 +#: cps/admin.py:1607 cps/updater.py:358 cps/updater.py:570 msgid "Connection error" msgstr "Verbindingsfout" -#: cps/admin.py:1312 cps/updater.py:341 cps/updater.py:538 +#: cps/admin.py:1608 cps/updater.py:360 cps/updater.py:572 msgid "Timeout while establishing connection" msgstr "Time-out tijdens maken van verbinding" -#: cps/admin.py:1313 cps/updater.py:343 cps/updater.py:540 +#: cps/admin.py:1609 cps/updater.py:362 cps/updater.py:574 msgid "General error" msgstr "Algemene fout" -#: cps/admin.py:1314 +#: cps/admin.py:1610 msgid "Update File Could Not be Saved in Temp Dir" msgstr "Geüpload bestand kon niet opgeslagen worden in de tijdelijke map" -#: cps/admin.py:1376 +#: cps/admin.py:1671 msgid "Failed to Create at Least One LDAP User" msgstr "" -#: cps/admin.py:1389 +#: cps/admin.py:1684 #, python-format msgid "Error: %(ldaperror)s" msgstr "Fout: %(ldaperror)s" -#: cps/admin.py:1393 +#: cps/admin.py:1688 msgid "Error: No user returned in response of LDAP server" msgstr "Fout: No user returned in response of LDAP server" -#: cps/admin.py:1426 +#: cps/admin.py:1721 msgid "At Least One LDAP User Not Found in Database" msgstr "" -#: cps/admin.py:1428 +#: cps/admin.py:1723 msgid "{} User Successfully Imported" msgstr "" @@ -346,98 +441,98 @@ msgstr "niet geconfigureerd" msgid "Execution permissions missing" msgstr "Kan programma niet uitvoeren" -#: cps/editbooks.py:267 cps/editbooks.py:269 +#: cps/editbooks.py:294 cps/editbooks.py:296 msgid "Book Format Successfully Deleted" msgstr "Het boekformaat is verwijderd" -#: cps/editbooks.py:276 cps/editbooks.py:278 +#: cps/editbooks.py:303 cps/editbooks.py:305 msgid "Book Successfully Deleted" msgstr "Het boek is verwijderd" -#: cps/editbooks.py:325 cps/editbooks.py:646 cps/web.py:1598 cps/web.py:1634 -#: cps/web.py:1705 +#: cps/editbooks.py:361 cps/editbooks.py:724 cps/web.py:1627 cps/web.py:1663 +#: cps/web.py:1734 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Kan e-boek niet openen: het bestand bestaat niet of is ontoegankelijk" -#: cps/editbooks.py:359 +#: cps/editbooks.py:395 msgid "edit metadata" msgstr "metagegevens bewerken" -#: cps/editbooks.py:434 +#: cps/editbooks.py:473 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s is geen geldige taal" -#: cps/editbooks.py:556 cps/editbooks.py:905 +#: cps/editbooks.py:595 cps/editbooks.py:936 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "De bestandsextensie '%(ext)s' is niet toegestaan op deze server" -#: cps/editbooks.py:560 cps/editbooks.py:909 +#: cps/editbooks.py:599 cps/editbooks.py:940 msgid "File to be uploaded must have an extension" msgstr "Het te uploaden bestand moet voorzien zijn van een extensie" -#: cps/editbooks.py:572 +#: cps/editbooks.py:611 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Kan de locatie '%(path)s' niet aanmaken (niet gemachtigd)." -#: cps/editbooks.py:577 +#: cps/editbooks.py:616 #, python-format msgid "Failed to store file %(file)s." msgstr "Kan %(file)s niet opslaan." -#: cps/editbooks.py:595 cps/editbooks.py:972 cps/web.py:1559 +#: cps/editbooks.py:634 cps/editbooks.py:1027 cps/web.py:1588 #, python-format msgid "Database error: %(error)s." msgstr "Database fout: %(error)s." -#: cps/editbooks.py:599 +#: cps/editbooks.py:638 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Bestandsformaat %(ext)s toegevoegd aan %(book)s" -#: cps/editbooks.py:726 +#: cps/editbooks.py:775 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "Identificatoren zijn niet hoofdlettergevoelig, overschrijf huidige identificatoren" -#: cps/editbooks.py:763 +#: cps/editbooks.py:807 msgid "Metadata successfully updated" msgstr "De metagegevens zijn bijgewerkt" -#: cps/editbooks.py:772 +#: cps/editbooks.py:816 msgid "Error editing book, please check logfile for details" msgstr "Kan het boek niet bewerken, controleer het logbestand" -#: cps/editbooks.py:810 +#: cps/editbooks.py:854 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Geüpload boek staat mogelijk al in de bibliotheek, controleer alvorens door te gaan: " -#: cps/editbooks.py:917 +#: cps/editbooks.py:948 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "Bestand %(filename)s kon niet opgeslagen worden in de tijdelijke map" -#: cps/editbooks.py:947 +#: cps/editbooks.py:967 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "Omslag %(file)s niet verplaatst: %(error)s" -#: cps/editbooks.py:958 +#: cps/editbooks.py:1013 #, python-format msgid "File %(file)s uploaded" msgstr "Bestand %(file)s geüpload" -#: cps/editbooks.py:984 +#: cps/editbooks.py:1039 msgid "Source or destination format for conversion missing" msgstr "Bron- of doelformaat ontbreekt voor conversie" -#: cps/editbooks.py:992 +#: cps/editbooks.py:1047 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Het boek is in de wachtrij geplaatst voor conversie naar %(book_format)s" -#: cps/editbooks.py:996 +#: cps/editbooks.py:1051 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Er is een fout opgetreden bij het converteren van dit boek: %(res)s" @@ -545,55 +640,68 @@ msgstr "Bestand '%(file)s' niet aangetroffen op Google Drive" msgid "Book path %(path)s not found on Google Drive" msgstr "Boeken locatie '%(path)s' niet aangetroffen op Google Drive" -#: cps/helper.py:576 +#: cps/helper.py:511 +#, fuzzy +msgid "Found an existing account for this e-mail address" +msgstr "Bestaand account met dit e-mailadres aangetroffen." + +#: cps/helper.py:519 +msgid "This username is already taken" +msgstr "Deze gebruikersnaam is al in gebruik" + +#: cps/helper.py:529 +msgid "Invalid e-mail address format" +msgstr "" + +#: cps/helper.py:602 msgid "Error Downloading Cover" msgstr "Fout bij downloaden omslag" -#: cps/helper.py:579 +#: cps/helper.py:605 msgid "Cover Format Error" msgstr "Onjuist omslag formaat" -#: cps/helper.py:589 +#: cps/helper.py:615 msgid "Failed to create path for cover" msgstr "Locatie aanmaken voor omslag mislukt" -#: cps/helper.py:605 +#: cps/helper.py:631 msgid "Cover-file is not a valid image file, or could not be stored" msgstr "Omslag-bestand is geen afbeelding of kon niet opgeslagen worden" -#: cps/helper.py:616 +#: cps/helper.py:642 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" msgstr "" -#: cps/helper.py:629 +#: cps/helper.py:655 msgid "Only jpg/jpeg files are supported as coverfile" msgstr "Alleen jpg/jpeg bestanden zijn toegestaan als omslag" -#: cps/helper.py:680 +#: cps/helper.py:707 msgid "Unrar binary file not found" msgstr "Unrar executable niet gevonden" -#: cps/helper.py:694 +#: cps/helper.py:721 msgid "Error excecuting UnRar" msgstr "Fout bij het uitvoeren van Unrar" -#: cps/helper.py:743 +#: cps/helper.py:769 msgid "Waiting" msgstr "Wachten" -#: cps/helper.py:745 +#: cps/helper.py:771 msgid "Failed" msgstr "Mislukt" -#: cps/helper.py:747 +#: cps/helper.py:773 msgid "Started" msgstr "Gestart" -#: cps/helper.py:749 +#: cps/helper.py:775 msgid "Finished" msgstr "Voltooid" -#: cps/helper.py:751 +#: cps/helper.py:777 msgid "Unknown Status" msgstr "Onbekende status" @@ -605,65 +713,82 @@ msgstr "Je kunt Calibre-Web niet vanaf de lokale computer openen om een geldige msgid "Kobo Setup" msgstr "Kobo Instellen" -#: cps/oauth_bb.py:76 +#: cps/oauth_bb.py:78 #, python-format msgid "Register with %(provider)s" msgstr "Aanmelden bij %(provider)s" -#: cps/oauth_bb.py:137 cps/remotelogin.py:133 cps/web.py:1424 +#: cps/oauth_bb.py:139 cps/remotelogin.py:133 cps/web.py:1475 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "je bent ingelogd als: '%(nickname)s'" -#: cps/oauth_bb.py:147 +#: cps/oauth_bb.py:149 #, python-format msgid "Link to %(oauth)s Succeeded" msgstr "Koppeling gemaakt met %(oauth)s" -#: cps/oauth_bb.py:153 +#: cps/oauth_bb.py:156 msgid "Login failed, No User Linked With OAuth Account" msgstr "Inloggen mislukt, geen gebruiker gekoppeld aan OAuth account" -#: cps/oauth_bb.py:195 +#: cps/oauth_bb.py:198 #, python-format msgid "Unlink to %(oauth)s Succeeded" msgstr "Koppeling met %(oauth)s verbroken" -#: cps/oauth_bb.py:199 +#: cps/oauth_bb.py:203 #, python-format msgid "Unlink to %(oauth)s Failed" msgstr "Ontkoppelen van %(oauth)s mislukt" -#: cps/oauth_bb.py:202 +#: cps/oauth_bb.py:206 #, python-format msgid "Not Linked to %(oauth)s" msgstr "" -#: cps/oauth_bb.py:259 +#: cps/oauth_bb.py:262 msgid "Failed to log in with GitHub." msgstr "Inloggen bij GitHub mislukt." -#: cps/oauth_bb.py:264 +#: cps/oauth_bb.py:268 msgid "Failed to fetch user info from GitHub." msgstr "Opvragen gebruikersinfo bij GitHub mislukt." -#: cps/oauth_bb.py:275 +#: cps/oauth_bb.py:280 msgid "Failed to log in with Google." msgstr "Inloggen bij Google mislukt." -#: cps/oauth_bb.py:280 +#: cps/oauth_bb.py:286 msgid "Failed to fetch user info from Google." msgstr "Opvragen gebruikersinfo bij Google mislukt." -#: cps/oauth_bb.py:312 +#: cps/oauth_bb.py:333 msgid "GitHub Oauth error, please retry later." msgstr "GitHub OAuth fout, probeer het later nog eens." -#: cps/oauth_bb.py:331 +#: cps/oauth_bb.py:336 +msgid "GitHub Oauth error: {}" +msgstr "" + +#: cps/oauth_bb.py:357 msgid "Google Oauth error, please retry later." msgstr "Google OAuth fout, probeer het later nog eens." -#: cps/remotelogin.py:65 cps/web.py:1471 +#: cps/oauth_bb.py:360 +msgid "Google Oauth error: {}" +msgstr "" + +#: cps/opds.py:110 cps/opds.py:199 cps/opds.py:276 cps/opds.py:328 +#: cps/templates/grid.html:14 cps/templates/list.html:14 +msgid "All" +msgstr "Alles" + +#: cps/opds.py:385 +msgid "{} Stars" +msgstr "" + +#: cps/remotelogin.py:65 cps/web.py:1522 msgid "login" msgstr "inloggen" @@ -679,7 +804,7 @@ msgstr "Toegangssleutel is verlopen" msgid "Success! Please return to your device" msgstr "Gelukt! Ga terug naar je apparaat" -#: cps/render_template.py:39 cps/web.py:415 +#: cps/render_template.py:39 cps/web.py:414 msgid "Books" msgstr "Boeken" @@ -687,7 +812,7 @@ msgstr "Boeken" msgid "Show recent books" msgstr "Recent toegevoegde boeken tonen" -#: cps/render_template.py:42 cps/templates/index.xml:18 +#: cps/render_template.py:42 cps/templates/index.xml:25 msgid "Hot Books" msgstr "Populaire boeken" @@ -695,127 +820,130 @@ msgstr "Populaire boeken" msgid "Show Hot Books" msgstr "Populaire boeken tonen" -#: cps/render_template.py:45 +#: cps/render_template.py:46 cps/render_template.py:51 msgid "Downloaded Books" msgstr "Gedownloade boeken" -#: cps/render_template.py:47 +#: cps/render_template.py:48 cps/render_template.py:53 +#: cps/templates/user_table.html:151 msgid "Show Downloaded Books" msgstr "Gedownloade boeken tonen" -#: cps/render_template.py:50 cps/templates/index.xml:25 cps/web.py:425 +#: cps/render_template.py:56 cps/templates/index.xml:32 cps/web.py:424 msgid "Top Rated Books" msgstr "Best beoordeelde boeken" -#: cps/render_template.py:52 +#: cps/render_template.py:58 cps/templates/user_table.html:145 msgid "Show Top Rated Books" msgstr "Best beoordeelde boeken tonen" -#: cps/render_template.py:53 cps/templates/index.xml:47 -#: cps/templates/index.xml:51 cps/web.py:642 +#: cps/render_template.py:59 cps/templates/index.xml:54 +#: cps/templates/index.xml:58 cps/web.py:650 msgid "Read Books" msgstr "Gelezen boeken" -#: cps/render_template.py:55 +#: cps/render_template.py:61 msgid "Show read and unread" msgstr "Gelezen/Ongelezen boeken tonen" -#: cps/render_template.py:57 cps/templates/index.xml:54 -#: cps/templates/index.xml:58 cps/web.py:645 +#: cps/render_template.py:63 cps/templates/index.xml:61 +#: cps/templates/index.xml:65 cps/web.py:653 msgid "Unread Books" msgstr "Ongelezen boeken" -#: cps/render_template.py:59 +#: cps/render_template.py:65 msgid "Show unread" msgstr "Ongelezen boeken tonen" -#: cps/render_template.py:60 +#: cps/render_template.py:66 msgid "Discover" msgstr "Willekeurige boeken" -#: cps/render_template.py:62 +#: cps/render_template.py:68 cps/templates/user_table.html:143 +#: cps/templates/user_table.html:146 msgid "Show random books" msgstr "Willekeurige boeken tonen" -#: cps/render_template.py:63 cps/templates/book_table.html:50 -#: cps/templates/index.xml:76 cps/web.py:950 +#: cps/render_template.py:69 cps/templates/book_table.html:51 +#: cps/templates/index.xml:83 cps/web.py:1024 msgid "Categories" msgstr "Categorieën" -#: cps/render_template.py:65 +#: cps/render_template.py:71 cps/templates/user_table.html:142 msgid "Show category selection" msgstr "Categoriekeuze tonen" -#: cps/render_template.py:66 cps/templates/book_edit.html:84 -#: cps/templates/book_table.html:51 cps/templates/index.xml:83 -#: cps/templates/search_form.html:62 cps/web.py:854 cps/web.py:864 +#: cps/render_template.py:72 cps/templates/book_edit.html:84 +#: cps/templates/book_table.html:52 cps/templates/index.xml:90 +#: cps/templates/search_form.html:62 cps/web.py:921 cps/web.py:931 msgid "Series" msgstr "Boekenreeksen" -#: cps/render_template.py:68 +#: cps/render_template.py:74 cps/templates/user_table.html:141 msgid "Show series selection" msgstr "Boekenreeksenkeuze tonen" -#: cps/render_template.py:69 cps/templates/book_table.html:49 -#: cps/templates/index.xml:62 +#: cps/render_template.py:75 cps/templates/book_table.html:50 +#: cps/templates/index.xml:69 msgid "Authors" msgstr "Auteurs" -#: cps/render_template.py:71 +#: cps/render_template.py:77 cps/templates/user_table.html:144 msgid "Show author selection" msgstr "Auteurkeuze tonen" -#: cps/render_template.py:73 cps/templates/book_table.html:55 -#: cps/templates/index.xml:69 cps/web.py:833 +#: cps/render_template.py:79 cps/templates/book_table.html:56 +#: cps/templates/index.xml:76 cps/web.py:898 msgid "Publishers" msgstr "Uitgevers" -#: cps/render_template.py:75 +#: cps/render_template.py:81 cps/templates/user_table.html:147 msgid "Show publisher selection" msgstr "Uitgeverskeuze tonen" -#: cps/render_template.py:76 cps/templates/book_table.html:53 -#: cps/templates/index.xml:90 cps/templates/search_form.html:100 cps/web.py:929 +#: cps/render_template.py:82 cps/templates/book_table.html:54 +#: cps/templates/index.xml:97 cps/templates/search_form.html:100 +#: cps/web.py:1001 msgid "Languages" msgstr "Talen" -#: cps/render_template.py:79 +#: cps/render_template.py:85 cps/templates/user_table.html:139 msgid "Show language selection" msgstr "Taalkeuze tonen" -#: cps/render_template.py:80 cps/templates/index.xml:97 +#: cps/render_template.py:86 cps/templates/index.xml:104 msgid "Ratings" msgstr "Beoordelingen" -#: cps/render_template.py:82 +#: cps/render_template.py:88 cps/templates/user_table.html:148 msgid "Show ratings selection" msgstr "Beoordelingen tonen" -#: cps/render_template.py:83 cps/templates/index.xml:105 +#: cps/render_template.py:89 cps/templates/index.xml:112 msgid "File formats" msgstr "Bestandsformaten" -#: cps/render_template.py:85 +#: cps/render_template.py:91 cps/templates/user_table.html:149 msgid "Show file formats selection" msgstr "Bestandsformaten tonen" -#: cps/render_template.py:87 cps/web.py:669 +#: cps/render_template.py:93 cps/web.py:677 msgid "Archived Books" msgstr "Gearchiveerde boeken" -#: cps/render_template.py:89 +#: cps/render_template.py:95 cps/templates/user_table.html:150 msgid "Show archived books" msgstr "Gearchiveerde boeken tonen" -#: cps/render_template.py:91 cps/web.py:743 +#: cps/render_template.py:97 cps/web.py:751 msgid "Books List" msgstr "Boekenlijst" -#: cps/render_template.py:93 +#: cps/render_template.py:99 cps/templates/user_table.html:152 msgid "Show Books List" msgstr "Boekenlijst tonen" -#: cps/shelf.py:69 cps/shelf.py:122 +#: cps/shelf.py:69 cps/shelf.py:124 msgid "Invalid shelf specified" msgstr "Ongeldige boekenplank opgegeven" @@ -829,303 +957,307 @@ msgstr "Sorry, je mag geen boeken toevoegen aan boekenplank: %(shelfname)s" msgid "Book is already part of the shelf: %(shelfname)s" msgstr "Dit boek maakt al deel uit van boekenplank: %(shelfname)s" -#: cps/shelf.py:108 +#: cps/shelf.py:110 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Het boek is toegevoegd aan boekenplank: %(sname)s" -#: cps/shelf.py:126 +#: cps/shelf.py:129 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Je bent niet gemachtigd om boeken toe te voegen aan boekenplank: %(name)s" -#: cps/shelf.py:144 +#: cps/shelf.py:147 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "Deze boeken maken al deel uit van boekenplank: %(name)s" -#: cps/shelf.py:156 +#: cps/shelf.py:159 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "De boeken zijn toegevoegd aan boekenplank: %(sname)s" -#: cps/shelf.py:161 +#: cps/shelf.py:166 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "Kan boeken niet toevoegen aan boekenplank: %(sname)s" -#: cps/shelf.py:206 +#: cps/shelf.py:212 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Het boek is verwijderd van boekenplank: %(sname)s" -#: cps/shelf.py:214 +#: cps/shelf.py:221 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Je bent niet gemachtigd om boeken te verwijderen van boekenplank: %(sname)s" -#: cps/shelf.py:224 cps/templates/layout.html:140 +#: cps/shelf.py:231 cps/templates/layout.html:140 msgid "Create a Shelf" msgstr "Boekenplank maken" -#: cps/shelf.py:231 +#: cps/shelf.py:238 msgid "Edit a shelf" msgstr "Pas een boekenplank aan" -#: cps/shelf.py:249 +#: cps/shelf.py:256 #, python-format msgid "Shelf %(title)s created" msgstr "Boekenplank '%(title)s' aangemaakt" -#: cps/shelf.py:252 +#: cps/shelf.py:259 #, python-format msgid "Shelf %(title)s changed" msgstr "Boekenplank '%(title)s' is aangepast" -#: cps/shelf.py:265 +#: cps/shelf.py:273 msgid "There was an error" msgstr "Er is een fout opgetreden" -#: cps/shelf.py:281 +#: cps/shelf.py:290 #, python-format msgid "A public shelf with the name '%(title)s' already exists." msgstr "Een openbare boekenplank met de naam '%(title)s' bestaat al." -#: cps/shelf.py:291 +#: cps/shelf.py:301 #, python-format msgid "A private shelf with the name '%(title)s' already exists." msgstr "Een persoonlijke boekenplank met de naam '%(title)s' bestaat al." -#: cps/shelf.py:358 +#: cps/shelf.py:370 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Volgorde bewerken van boekenplank: '%(name)s'" -#: cps/shelf.py:423 +#: cps/shelf.py:436 #, python-format msgid "Shelf: '%(name)s'" msgstr "Boekenplank: '%(name)s'" -#: cps/shelf.py:427 +#: cps/shelf.py:440 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Kan boekenplank niet openen: de boekenplank bestaat niet of is ontoegankelijk" -#: cps/updater.py:355 cps/updater.py:366 cps/updater.py:418 cps/updater.py:432 +#: cps/updater.py:374 cps/updater.py:385 cps/updater.py:485 cps/updater.py:500 msgid "Unexpected data while reading update information" msgstr "Onverwachte gegevens tijdens het uitlezen van de update-informatie" -#: cps/updater.py:362 cps/updater.py:424 +#: cps/updater.py:381 cps/updater.py:492 msgid "No update available. You already have the latest version installed" msgstr "Er is geen update beschikbaar." -#: cps/updater.py:379 +#: cps/updater.py:399 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "Er is een update beschikbaar. Klik op de knop hieronder om te updaten naar de nieuwste versie." -#: cps/updater.py:397 +#: cps/updater.py:417 msgid "Could not fetch update information" msgstr "De update-informatie kan niet worden opgehaald" -#: cps/updater.py:411 -msgid "No release information available" -msgstr "Geen update-informatie beschikbaar" +#: cps/updater.py:427 +msgid "Click on the button below to update to the latest stable version." +msgstr "Klik op onderstaande knop om de laatste stabiele versie te installeren." -#: cps/updater.py:468 cps/updater.py:479 cps/updater.py:498 +#: cps/updater.py:436 cps/updater.py:450 cps/updater.py:461 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "Er is een update beschikbaar. Klik op de knop hieronder om te updaten naar versie: %(version)s" -#: cps/updater.py:489 -msgid "Click on the button below to update to the latest stable version." -msgstr "Klik op onderstaande knop om de laatste stabiele versie te installeren." +#: cps/updater.py:478 +msgid "No release information available" +msgstr "Geen update-informatie beschikbaar" -#: cps/templates/index.html:5 cps/web.py:435 +#: cps/templates/index.html:5 cps/web.py:434 msgid "Discover (Random Books)" msgstr "Verkennen (willekeurige boeken)" -#: cps/web.py:461 +#: cps/web.py:460 msgid "Hot Books (Most Downloaded)" msgstr "Populaire boeken (meest gedownload)" -#: cps/web.py:489 +#: cps/web.py:493 #, python-format msgid "Downloaded books by %(user)s" msgstr "Gedownloade boeken door %(user)s" -#: cps/web.py:503 +#: cps/web.py:508 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Oeps! Geselecteerd boek is niet beschikbaar. Bestand bestaat niet of is niet toegankelijk" -#: cps/web.py:517 +#: cps/web.py:522 #, python-format msgid "Author: %(name)s" msgstr "Auteur: %(name)s" -#: cps/web.py:531 +#: cps/web.py:537 #, python-format msgid "Publisher: %(name)s" msgstr "Uitgever: %(name)s" -#: cps/web.py:544 +#: cps/web.py:550 #, python-format msgid "Series: %(serie)s" msgstr "Reeks: %(serie)s" -#: cps/web.py:557 +#: cps/web.py:563 #, python-format msgid "Rating: %(rating)s stars" msgstr "Beoordeling: %(rating)s sterren" -#: cps/web.py:570 +#: cps/web.py:576 #, python-format msgid "File format: %(format)s" msgstr "Bestandsformaat: %(format)s" -#: cps/web.py:584 +#: cps/web.py:592 #, python-format msgid "Category: %(name)s" msgstr "Categorie: %(name)s" -#: cps/web.py:603 +#: cps/web.py:611 #, python-format msgid "Language: %(name)s" msgstr "Taal: %(name)s" -#: cps/web.py:633 +#: cps/web.py:641 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:703 cps/web.py:1248 +#: cps/templates/layout.html:56 cps/web.py:711 cps/web.py:1314 msgid "Advanced Search" msgstr "Geavanceerd zoeken" #: cps/templates/book_edit.html:214 cps/templates/feed.xml:33 #: cps/templates/index.xml:11 cps/templates/layout.html:45 #: cps/templates/layout.html:48 cps/templates/search_form.html:194 -#: cps/web.py:715 cps/web.py:987 +#: cps/web.py:723 cps/web.py:1061 msgid "Search" msgstr "Zoeken" -#: cps/web.py:882 +#: cps/templates/admin.html:16 cps/web.py:876 +msgid "Downloads" +msgstr "Downloads" + +#: cps/web.py:952 msgid "Ratings list" msgstr "Beoordelingen" -#: cps/web.py:901 +#: cps/web.py:973 msgid "File formats list" msgstr "Alle bestandsformaten" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:964 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1038 msgid "Tasks" msgstr "Taken" -#: cps/web.py:1108 +#: cps/web.py:1182 msgid "Published after " msgstr "Gepubliceerd na " -#: cps/web.py:1115 +#: cps/web.py:1189 msgid "Published before " msgstr "Gepubliceerd vóór " -#: cps/web.py:1145 +#: cps/web.py:1211 #, python-format msgid "Rating <= %(rating)s" msgstr "Beoordeling <= %(rating)s" -#: cps/web.py:1147 +#: cps/web.py:1213 #, python-format msgid "Rating >= %(rating)s" msgstr "Beoordeling >= %(rating)s" -#: cps/web.py:1149 +#: cps/web.py:1215 #, python-format msgid "Read Status = %(status)s" msgstr "" -#: cps/web.py:1325 +#: cps/web.py:1387 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Het boek is in de wachtrij geplaatst om te worden verstuurd aan %(kindlemail)s" -#: cps/web.py:1329 +#: cps/web.py:1391 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Fout opgetreden bij het versturen van dit boek: %(res)s" -#: cps/web.py:1331 +#: cps/web.py:1393 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Stel je kindle-e-mailadres in..." -#: cps/web.py:1348 +#: cps/web.py:1410 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "E-mailserver is niet geconfigureerd, neem contact op met de beheerder!" -#: cps/web.py:1349 cps/web.py:1359 cps/web.py:1366 cps/web.py:1389 -#: cps/web.py:1393 cps/web.py:1398 cps/web.py:1402 +#: cps/web.py:1411 cps/web.py:1418 cps/web.py:1424 cps/web.py:1443 +#: cps/web.py:1447 cps/web.py:1453 msgid "register" msgstr "registreren" -#: cps/web.py:1364 -msgid "Invalid e-mail address format" -msgstr "" - -#: cps/web.py:1391 +#: cps/web.py:1445 msgid "Your e-mail is not allowed to register" msgstr "Dit e-mailadres mag niet worden gebruikt voor registratie" -#: cps/web.py:1394 +#: cps/web.py:1448 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Er is een bevestigings-e-mail verstuurd naar je e-mailadres." -#: cps/web.py:1397 -msgid "This username or e-mail address is already in use." -msgstr "Gebruikersnaam of e-mailadres is al in gebruik." - -#: cps/web.py:1414 +#: cps/web.py:1465 msgid "Cannot activate LDAP authentication" msgstr "Kan de LDAP authenticatie niet activeren" -#: cps/web.py:1431 +#: cps/web.py:1482 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "" -#: cps/web.py:1437 +#: cps/web.py:1488 #, python-format msgid "Could not login: %(message)s" msgstr "Inloggen mislukt: %(message)s" -#: cps/web.py:1441 cps/web.py:1465 +#: cps/web.py:1492 cps/web.py:1516 msgid "Wrong Username or Password" msgstr "Verkeerde gebruikersnaam of wachtwoord" -#: cps/web.py:1448 +#: cps/web.py:1499 msgid "New Password was send to your email address" msgstr "Een nieuw wachtwoord is verzonden naar je e-mailadres" -#: cps/web.py:1454 +#: cps/web.py:1505 msgid "Please enter valid username to reset password" msgstr "Geef een geldige gebruikersnaam op om je wachtwoord te herstellen" -#: cps/web.py:1460 +#: cps/web.py:1511 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Je bent ingelogd als: '%(nickname)s'" -#: cps/web.py:1498 cps/web.py:1583 +#: cps/web.py:1565 cps/web.py:1612 #, python-format msgid "%(name)s's profile" msgstr "%(name)s's profiel" -#: cps/web.py:1550 +#: cps/web.py:1579 msgid "Profile updated" msgstr "Profiel bijgewerkt" -#: cps/web.py:1610 cps/web.py:1613 cps/web.py:1616 cps/web.py:1619 -#: cps/web.py:1626 cps/web.py:1631 +#: cps/web.py:1583 +msgid "Found an existing account for this e-mail address." +msgstr "Bestaand account met dit e-mailadres aangetroffen." + +#: cps/web.py:1639 cps/web.py:1642 cps/web.py:1645 cps/web.py:1648 +#: cps/web.py:1655 cps/web.py:1660 msgid "Read a Book" msgstr "Lees een boek" +#: cps/services/gmail.py:41 +msgid "Found no valid gmail.json file with OAuth information" +msgstr "" + #: cps/tasks/convert.py:114 #, python-format msgid "Calibre ebook-convert %(tool)s not found" @@ -1164,221 +1296,231 @@ msgstr "" msgid "Users" msgstr "Gebruikerslijst" -#: cps/templates/admin.html:12 cps/templates/login.html:8 +#: cps/templates/admin.html:13 cps/templates/login.html:8 #: cps/templates/login.html:9 cps/templates/register.html:8 -#: cps/templates/user_edit.html:9 +#: cps/templates/user_edit.html:9 cps/templates/user_table.html:121 msgid "Username" msgstr "Gebruikersnaam" -#: cps/templates/admin.html:13 cps/templates/register.html:13 -#: cps/templates/user_edit.html:14 +#: cps/templates/admin.html:14 cps/templates/register.html:13 +#: cps/templates/user_edit.html:14 cps/templates/user_table.html:122 msgid "E-mail Address" msgstr "E-mailadres" -#: cps/templates/admin.html:14 cps/templates/user_edit.html:27 +#: cps/templates/admin.html:15 cps/templates/user_edit.html:27 msgid "Send to Kindle E-mail Address" msgstr "Kindle-e-mailadres" -#: cps/templates/admin.html:15 -msgid "Downloads" -msgstr "Downloads" - -#: cps/templates/admin.html:16 cps/templates/layout.html:77 +#: cps/templates/admin.html:17 cps/templates/layout.html:77 +#: cps/templates/user_table.html:130 msgid "Admin" msgstr "Beheer" -#: cps/templates/admin.html:17 cps/templates/login.html:12 +#: cps/templates/admin.html:18 cps/templates/login.html:12 #: cps/templates/login.html:13 cps/templates/user_edit.html:22 msgid "Password" msgstr "Wachtwoord" -#: cps/templates/admin.html:18 cps/templates/layout.html:66 +#: cps/templates/admin.html:19 cps/templates/layout.html:66 +#: cps/templates/user_table.html:132 msgid "Upload" msgstr "Uploaden" -#: cps/templates/admin.html:19 cps/templates/detail.html:18 +#: cps/templates/admin.html:20 cps/templates/detail.html:18 #: cps/templates/detail.html:27 cps/templates/shelf.html:6 +#: cps/templates/user_table.html:133 msgid "Download" msgstr "Downloaden" -#: cps/templates/admin.html:20 +#: cps/templates/admin.html:21 msgid "View Books" msgstr "Boeken lezen" -#: cps/templates/admin.html:21 +#: cps/templates/admin.html:22 cps/templates/user_table.html:118 +#: cps/templates/user_table.html:135 msgid "Edit" msgstr "Bewerken" -#: cps/templates/admin.html:22 cps/templates/book_edit.html:16 -#: cps/templates/book_table.html:57 cps/templates/modal_dialogs.html:63 +#: cps/templates/admin.html:23 cps/templates/book_edit.html:16 +#: cps/templates/book_table.html:58 cps/templates/modal_dialogs.html:63 #: cps/templates/modal_dialogs.html:116 cps/templates/user_edit.html:66 +#: cps/templates/user_table.html:136 msgid "Delete" msgstr "Verwijderen" -#: cps/templates/admin.html:23 +#: cps/templates/admin.html:24 msgid "Public Shelf" msgstr "Openbare boekenplank" -#: cps/templates/admin.html:44 +#: cps/templates/admin.html:47 msgid "Add New User" msgstr "Gebruiker toevoegen" -#: cps/templates/admin.html:46 +#: cps/templates/admin.html:49 msgid "Import LDAP Users" msgstr "LDAP gebruikers importeren" -#: cps/templates/admin.html:53 +#: cps/templates/admin.html:56 msgid "E-mail Server Settings" msgstr "SMTP-serverinstellingen" -#: cps/templates/admin.html:57 cps/templates/email_edit.html:11 +#: cps/templates/admin.html:61 cps/templates/email_edit.html:30 msgid "SMTP Hostname" msgstr "SMTP-hostnaam (gebruik mail.example.org om wachtwoordherstel uit te schakelen)" -#: cps/templates/admin.html:61 cps/templates/email_edit.html:15 +#: cps/templates/admin.html:65 cps/templates/email_edit.html:34 msgid "SMTP Port" msgstr "SMTP-poort" -#: cps/templates/admin.html:65 cps/templates/email_edit.html:19 +#: cps/templates/admin.html:69 cps/templates/email_edit.html:38 msgid "Encryption" msgstr "Encryptie" -#: cps/templates/admin.html:69 cps/templates/email_edit.html:27 +#: cps/templates/admin.html:73 cps/templates/email_edit.html:46 msgid "SMTP Login" msgstr "SMTP-gebruikersnaam" -#: cps/templates/admin.html:73 cps/templates/email_edit.html:35 +#: cps/templates/admin.html:77 cps/templates/admin.html:88 +#: cps/templates/email_edit.html:54 msgid "From E-mail" msgstr "Van e-mail" #: cps/templates/admin.html:84 +msgid "E-Mail Service" +msgstr "" + +#: cps/templates/admin.html:85 +msgid "Gmail via Oauth2" +msgstr "" + +#: cps/templates/admin.html:100 msgid "Configuration" msgstr "Instellingen" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:103 msgid "Calibre Database Directory" msgstr "Calibre-database locatie" -#: cps/templates/admin.html:91 cps/templates/config_edit.html:136 +#: cps/templates/admin.html:107 cps/templates/config_edit.html:136 msgid "Log Level" msgstr "Logniveau" -#: cps/templates/admin.html:95 +#: cps/templates/admin.html:111 msgid "Port" msgstr "Poort" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:116 msgid "External Port" msgstr "Externe poort" -#: cps/templates/admin.html:107 cps/templates/config_view_edit.html:27 +#: cps/templates/admin.html:123 cps/templates/config_view_edit.html:27 msgid "Books per Page" msgstr "Aantal boeken per pagina" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:127 msgid "Uploads" msgstr "Uploaden toestaan" -#: cps/templates/admin.html:115 +#: cps/templates/admin.html:131 msgid "Anonymous Browsing" msgstr "Anoniem verkennen" -#: cps/templates/admin.html:119 +#: cps/templates/admin.html:135 msgid "Public Registration" msgstr "Openbare registratie" -#: cps/templates/admin.html:123 +#: cps/templates/admin.html:139 msgid "Magic Link Remote Login" msgstr "Inloggen op afstand" -#: cps/templates/admin.html:127 +#: cps/templates/admin.html:143 msgid "Reverse Proxy Login" msgstr "Reverse Proxy Login" -#: cps/templates/admin.html:132 +#: cps/templates/admin.html:148 msgid "Reverse proxy header name" msgstr "Reverse proxy header naam" -#: cps/templates/admin.html:137 +#: cps/templates/admin.html:153 msgid "Edit Basic Configuration" msgstr "Bewerk basis configuratie" -#: cps/templates/admin.html:138 +#: cps/templates/admin.html:154 msgid "Edit UI Configuration" msgstr "Bewerk gebruikersinterface configuratie" -#: cps/templates/admin.html:143 +#: cps/templates/admin.html:159 msgid "Administration" msgstr "Systeembeheer" -#: cps/templates/admin.html:144 +#: cps/templates/admin.html:160 msgid "Download Debug Package" msgstr "Download foutopsporingspakket" -#: cps/templates/admin.html:145 +#: cps/templates/admin.html:161 msgid "View Logs" msgstr "Logboeken bekijken" -#: cps/templates/admin.html:148 +#: cps/templates/admin.html:164 msgid "Reconnect Calibre Database" msgstr "Opnieuw verbinden met Calibre database" -#: cps/templates/admin.html:149 +#: cps/templates/admin.html:165 msgid "Restart" msgstr "Calibre-Web herstarten" -#: cps/templates/admin.html:150 +#: cps/templates/admin.html:166 msgid "Shutdown" msgstr "Calibre-Web stoppen" -#: cps/templates/admin.html:155 +#: cps/templates/admin.html:171 msgid "Update" msgstr "Bijwerken" -#: cps/templates/admin.html:159 +#: cps/templates/admin.html:175 msgid "Version" msgstr "Versie" -#: cps/templates/admin.html:160 +#: cps/templates/admin.html:176 msgid "Details" msgstr "Details" -#: cps/templates/admin.html:166 +#: cps/templates/admin.html:182 msgid "Current version" msgstr "Huidige versie" -#: cps/templates/admin.html:173 +#: cps/templates/admin.html:189 msgid "Check for Update" msgstr "Controleren op updates" -#: cps/templates/admin.html:174 +#: cps/templates/admin.html:190 msgid "Perform Update" msgstr "Update uitvoeren" -#: cps/templates/admin.html:187 +#: cps/templates/admin.html:203 msgid "Are you sure you want to restart?" msgstr "Weet je zeker dat je Calibre-Web wilt herstarten?" -#: cps/templates/admin.html:192 cps/templates/admin.html:206 -#: cps/templates/admin.html:226 cps/templates/shelf.html:95 +#: cps/templates/admin.html:208 cps/templates/admin.html:222 +#: cps/templates/admin.html:242 cps/templates/shelf.html:95 msgid "OK" msgstr "Oké" -#: cps/templates/admin.html:193 cps/templates/admin.html:207 -#: cps/templates/book_edit.html:192 cps/templates/book_table.html:84 +#: cps/templates/admin.html:209 cps/templates/admin.html:223 +#: cps/templates/book_edit.html:192 cps/templates/book_table.html:85 #: cps/templates/config_edit.html:427 cps/templates/config_view_edit.html:151 -#: cps/templates/email_edit.html:47 cps/templates/modal_dialogs.html:64 -#: cps/templates/modal_dialogs.html:99 cps/templates/modal_dialogs.html:117 +#: cps/templates/modal_dialogs.html:64 cps/templates/modal_dialogs.html:99 +#: cps/templates/modal_dialogs.html:117 cps/templates/modal_dialogs.html:135 #: cps/templates/shelf.html:96 cps/templates/shelf_edit.html:19 #: cps/templates/user_edit.html:132 msgid "Cancel" msgstr "Annuleren" -#: cps/templates/admin.html:205 +#: cps/templates/admin.html:221 msgid "Are you sure you want to shutdown?" msgstr "Weet je zeker dat je Calibre-Web wilt stoppen?" -#: cps/templates/admin.html:217 +#: cps/templates/admin.html:233 msgid "Updating, please do not reload this page" msgstr "Bezig met bijwerken, vernieuw de pagina niet" @@ -1486,6 +1628,7 @@ msgid "Identifier Value" msgstr "Identificatie waarde" #: cps/templates/book_edit.html:72 cps/templates/book_edit.html:289 +#: cps/templates/user_table.html:23 msgid "Remove" msgstr "Verwijderen" @@ -1551,7 +1694,7 @@ msgid "Fetch Metadata" msgstr "Metagegevens ophalen" #: cps/templates/book_edit.html:191 cps/templates/config_edit.html:424 -#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45 +#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:64 #: cps/templates/shelf_edit.html:17 cps/templates/shelf_order.html:40 #: cps/templates/user_edit.html:130 msgid "Save" @@ -1591,96 +1734,98 @@ msgstr "Zoekfout!" msgid "No Result(s) found! Please try another keyword." msgstr "Geen resultaten gevonden! Gebruik een ander trefwoord." -#: cps/templates/book_table.html:10 cps/templates/book_table.html:52 +#: cps/templates/book_table.html:11 cps/templates/book_table.html:53 +#: cps/templates/user_table.html:13 cps/templates/user_table.html:65 +#: cps/templates/user_table.html:88 msgid "This Field is Required" msgstr "Dit veld is verplicht" -#: cps/templates/book_table.html:23 +#: cps/templates/book_table.html:24 msgid "Merge selected books" msgstr "Geselecteerde boeken samenvoegen" -#: cps/templates/book_table.html:24 +#: cps/templates/book_table.html:25 cps/templates/user_table.html:111 msgid "Remove Selections" msgstr "Geselecteerde boeken verwijderen" -#: cps/templates/book_table.html:30 +#: cps/templates/book_table.html:31 msgid "Update Title Sort automatically" msgstr "Automatisch sorteren op titel" -#: cps/templates/book_table.html:34 +#: cps/templates/book_table.html:35 msgid "Update Author Sort automatically" msgstr "Automatisch sorteren op auteur" -#: cps/templates/book_table.html:46 +#: cps/templates/book_table.html:47 msgid "Enter Title" msgstr "Geef titel" -#: cps/templates/book_table.html:46 cps/templates/config_view_edit.html:23 +#: cps/templates/book_table.html:47 cps/templates/config_view_edit.html:23 #: cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Titel" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Enter Title Sort" msgstr "" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Title Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Enter Author Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Author Sort" msgstr "" -#: cps/templates/book_table.html:49 +#: cps/templates/book_table.html:50 msgid "Enter Authors" msgstr "" -#: cps/templates/book_table.html:50 +#: cps/templates/book_table.html:51 msgid "Enter Categories" msgstr "" -#: cps/templates/book_table.html:51 +#: cps/templates/book_table.html:52 msgid "Enter Series" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Enter title" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Series Index" msgstr "" -#: cps/templates/book_table.html:53 +#: cps/templates/book_table.html:54 msgid "Enter Languages" msgstr "" -#: cps/templates/book_table.html:54 +#: cps/templates/book_table.html:55 msgid "Publishing Date" msgstr "" -#: cps/templates/book_table.html:55 +#: cps/templates/book_table.html:56 msgid "Enter Publishers" msgstr "" -#: cps/templates/book_table.html:70 cps/templates/modal_dialogs.html:46 +#: cps/templates/book_table.html:71 cps/templates/modal_dialogs.html:46 msgid "Are you really sure?" msgstr "Weet je het zeker?" -#: cps/templates/book_table.html:74 +#: cps/templates/book_table.html:75 msgid "Books with Title will be merged from:" msgstr "" -#: cps/templates/book_table.html:78 +#: cps/templates/book_table.html:79 msgid "Into Book with Title:" msgstr "" -#: cps/templates/book_table.html:83 +#: cps/templates/book_table.html:84 msgid "Merge" msgstr "Samenvoegen" @@ -1865,7 +2010,7 @@ msgid "LDAP Encryption" msgstr "LDAP encryptie" #: cps/templates/config_edit.html:268 cps/templates/config_view_edit.html:61 -#: cps/templates/email_edit.html:21 +#: cps/templates/email_edit.html:40 msgid "None" msgstr "Geen" @@ -2078,6 +2223,7 @@ msgid "Default Visibilities for New Users" msgstr "Standaard zichtbaar voor nieuwe gebruikers" #: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82 +#: cps/templates/user_table.html:138 msgid "Show Random Books in Detail View" msgstr "Willekeurige boeken tonen in gedetailleerde weergave" @@ -2151,43 +2297,69 @@ msgstr "(Openbaar)" msgid "Edit Metadata" msgstr "Metagegevens bewerken" -#: cps/templates/email_edit.html:22 +#: cps/templates/email_edit.html:12 +msgid "Choose Server Type" +msgstr "" + +#: cps/templates/email_edit.html:14 +msgid "Use Standard E-Mail Account" +msgstr "" + +#: cps/templates/email_edit.html:15 +msgid "Gmail Account with OAuth2 Verfification" +msgstr "" + +#: cps/templates/email_edit.html:21 +msgid "Setup Gmail Account as E-Mail Server" +msgstr "" + +#: cps/templates/email_edit.html:23 +msgid "Revoke Gmail Access" +msgstr "" + +#: cps/templates/email_edit.html:41 msgid "STARTTLS" msgstr "STARTTLS" -#: cps/templates/email_edit.html:23 +#: cps/templates/email_edit.html:42 msgid "SSL/TLS" msgstr "SSL/TLS" -#: cps/templates/email_edit.html:31 +#: cps/templates/email_edit.html:50 msgid "SMTP Password" msgstr "SMTP-wachtwoord" -#: cps/templates/email_edit.html:38 +#: cps/templates/email_edit.html:57 msgid "Attachment Size Limit" msgstr "" -#: cps/templates/email_edit.html:46 +#: cps/templates/email_edit.html:65 msgid "Save and Send Test E-mail" msgstr "Opslaan en test-e-mail versturen" -#: cps/templates/email_edit.html:51 +#: cps/templates/email_edit.html:69 cps/templates/layout.html:29 +#: cps/templates/shelf_order.html:41 cps/templates/user_table.html:158 +msgid "Back" +msgstr "Annuleren" + +#: cps/templates/email_edit.html:73 msgid "Allowed Domains (Whitelist)" msgstr "Toegelaten domeinen voor registratie" -#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80 +#: cps/templates/email_edit.html:76 cps/templates/email_edit.html:102 msgid "Add Domain" msgstr "Domein toevoegen" -#: cps/templates/email_edit.html:57 cps/templates/email_edit.html:83 +#: cps/templates/email_edit.html:79 cps/templates/email_edit.html:105 +#: cps/templates/user_table.html:26 msgid "Add" msgstr "Toevoegen" -#: cps/templates/email_edit.html:62 cps/templates/email_edit.html:72 +#: cps/templates/email_edit.html:84 cps/templates/email_edit.html:94 msgid "Enter domainname" msgstr "Voer domeinnaam in" -#: cps/templates/email_edit.html:68 +#: cps/templates/email_edit.html:90 msgid "Denied Domains (Blacklist)" msgstr "Geweigerde domeinen voor registratie" @@ -2199,10 +2371,6 @@ msgstr "Volgende" msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):" msgstr "Open het .kobo/Kobo eReader.conf bestand in een teksteditor en voeg toe (of bewerk):" -#: cps/templates/grid.html:14 cps/templates/list.html:14 -msgid "All" -msgstr "Alles" - #: cps/templates/http_error.html:38 msgid "Create Issue" msgstr "Probleem melden" @@ -2233,64 +2401,72 @@ msgstr "" msgid "Start" msgstr "Starten" +#: cps/templates/index.xml:18 +msgid "Alphabetical Books" +msgstr "" + #: cps/templates/index.xml:22 +msgid "Books sorted alphabetically" +msgstr "" + +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Downloads." msgstr "Populaire publicaties uit deze catalogus, gebaseerd op Downloads." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:36 msgid "Popular publications from this catalog based on Rating." msgstr "Populaire publicaties uit deze catalogus, gebaseerd op Beoordeling." -#: cps/templates/index.xml:32 +#: cps/templates/index.xml:39 msgid "Recently added Books" msgstr "Recent toegevoegde boeken" -#: cps/templates/index.xml:36 +#: cps/templates/index.xml:43 msgid "The latest Books" msgstr "Nieuwe boeken" -#: cps/templates/index.xml:39 +#: cps/templates/index.xml:46 msgid "Random Books" msgstr "Willekeurige boeken" -#: cps/templates/index.xml:43 +#: cps/templates/index.xml:50 msgid "Show Random Books" msgstr "Willekeurige boeken tonen" -#: cps/templates/index.xml:66 +#: cps/templates/index.xml:73 msgid "Books ordered by Author" msgstr "Boeken gesorteerd op auteur" -#: cps/templates/index.xml:73 +#: cps/templates/index.xml:80 msgid "Books ordered by publisher" msgstr "Boeken gesorteerd op uitgever" -#: cps/templates/index.xml:80 +#: cps/templates/index.xml:87 msgid "Books ordered by category" msgstr "Boeken gesorteerd op categorie" -#: cps/templates/index.xml:87 +#: cps/templates/index.xml:94 msgid "Books ordered by series" msgstr "Boeken gesorteerd op reeks" -#: cps/templates/index.xml:94 +#: cps/templates/index.xml:101 msgid "Books ordered by Languages" msgstr "Boeken gesorteerd op taal" -#: cps/templates/index.xml:101 +#: cps/templates/index.xml:108 msgid "Books ordered by Rating" msgstr "Boeken gesorteerd op beoordeling" -#: cps/templates/index.xml:109 +#: cps/templates/index.xml:116 msgid "Books ordered by file formats" msgstr "Boeken gesorteerd op bestandsformaat" -#: cps/templates/index.xml:112 cps/templates/layout.html:135 +#: cps/templates/index.xml:119 cps/templates/layout.html:135 #: cps/templates/search_form.html:80 msgid "Shelves" msgstr "Boekenplanken" -#: cps/templates/index.xml:116 +#: cps/templates/index.xml:123 msgid "Books organized in shelves" msgstr "Boeken onderdeel van boekenplanken" @@ -2298,10 +2474,6 @@ msgstr "Boeken onderdeel van boekenplanken" msgid "Home" msgstr "Startpagina" -#: cps/templates/layout.html:29 cps/templates/shelf_order.html:41 -msgid "Back" -msgstr "Annuleren" - #: cps/templates/layout.html:35 msgid "Toggle Navigation" msgstr "Navigatie aanpassen" @@ -2463,6 +2635,11 @@ msgstr "" msgid "Select" msgstr "" +#: cps/templates/modal_dialogs.html:134 +#, fuzzy +msgid "Ok" +msgstr "Boek" + #: cps/templates/osd.xml:5 msgid "Calibre-Web eBook Catalog" msgstr "Calibre-Web - e-boekcatalogus" @@ -2768,10 +2945,6 @@ msgstr "Gebruikerswachtwoord herstellen" msgid "Language of Books" msgstr "Taal van boeken" -#: cps/templates/user_edit.html:44 -msgid "Show All" -msgstr "Alle talen" - #: cps/templates/user_edit.html:53 msgid "OAuth Settings" msgstr "OAuth Instellingen" @@ -2796,7 +2969,7 @@ msgstr "Aanmaken/Bekijk" msgid "Add allowed/Denied Custom Column Values" msgstr "Voeg toegestane/geweigerde aangepaste kolom waarden toe" -#: cps/templates/user_edit.html:135 +#: cps/templates/user_edit.html:135 cps/templates/user_table.html:153 msgid "Delete User" msgstr "Deze gebruiker verwijderen" @@ -2804,3 +2977,98 @@ msgstr "Deze gebruiker verwijderen" msgid "Generate Kobo Auth URL" msgstr "Genereer Kobo Auth URL" +#: cps/templates/user_table.html:68 cps/templates/user_table.html:91 +msgid "Select..." +msgstr "" + +#: cps/templates/user_table.html:118 +#, fuzzy +msgid "Edit User" +msgstr "Systeembeheerder" + +#: cps/templates/user_table.html:121 +#, fuzzy +msgid "Enter Username" +msgstr "Kies een gebruikersnaam" + +#: cps/templates/user_table.html:122 +#, fuzzy +msgid "Enter E-mail Address" +msgstr "Je e-mailadres" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Enter Kindle E-mail Address" +msgstr "Kindle-e-mailadres" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Kindle E-mail" +msgstr "Test-e-mail" + +#: cps/templates/user_table.html:124 +#, fuzzy +msgid "Locale" +msgstr "Schaal" + +#: cps/templates/user_table.html:125 +msgid "Visible Book Languages" +msgstr "" + +#: cps/templates/user_table.html:126 +#, fuzzy +msgid "Edit Denied Tags" +msgstr "Selecteer toegestane/geweigerde tags" + +#: cps/templates/user_table.html:126 +msgid "Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +#, fuzzy +msgid "Edit Allowed Tags" +msgstr "Selecteer toegestane/geweigerde tags" + +#: cps/templates/user_table.html:127 +msgid "Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Edit Allowed Column Values" +msgstr "Voeg toegestane/geweigerde aangepaste kolom waarden toe" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Allowed Column Values" +msgstr "Voeg toegestane/geweigerde aangepaste kolom waarden toe" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Edit Denied Column Values" +msgstr "Voeg toegestane/geweigerde aangepaste kolom waarden toe" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Denied Columns Values" +msgstr "Voeg toegestane/geweigerde aangepaste kolom waarden toe" + +#: cps/templates/user_table.html:131 +#, fuzzy +msgid "Change Password" +msgstr "Wachtwoord wijzigen toestaan" + +#: cps/templates/user_table.html:134 +msgid "View" +msgstr "" + +#: cps/templates/user_table.html:137 +#, fuzzy +msgid "Edit Public Shelfs" +msgstr "Openbare boekenplank" + +#: cps/templates/user_table.html:140 +#, fuzzy +msgid "Show read/unread selection" +msgstr "Boekenreeksenkeuze tonen" + diff --git a/cps/translations/pl/LC_MESSAGES/messages.mo b/cps/translations/pl/LC_MESSAGES/messages.mo index ae9711dc..2d16b7b7 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 07331af6..f0ea50b5 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: 2019-08-06 18:35)\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2021-03-27 12:16+0100\n" +"POT-Creation-Date: 2021-05-01 16:33+0200\n" "PO-Revision-Date: 2020-08-30 21:05+0200\n" "Last-Translator: Jerzy Piątek \n" "Language: pl\n" @@ -17,7 +17,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" +"Generated-By: Babel 2.8.0\n" #: cps/about.py:43 msgid "installed" @@ -31,313 +31,409 @@ msgstr "nie zainstalowane" msgid "Statistics" msgstr "Statystyki" -#: cps/admin.py:149 +#: cps/admin.py:151 msgid "Server restarted, please reload page" msgstr "Serwer uruchomiony ponownie, proszę odświeżyć stronę" -#: cps/admin.py:151 +#: cps/admin.py:153 msgid "Performing shutdown of server, please close window" msgstr "Wykonano wyłączenie serwera, proszę zamknąć okno" -#: cps/admin.py:159 +#: cps/admin.py:161 msgid "Reconnect successful" msgstr "Ponowne połączenie zakończono sukcesem" -#: cps/admin.py:162 +#: cps/admin.py:164 msgid "Unknown command" msgstr "Nieznane polecenie" # ??? -#: cps/admin.py:172 cps/editbooks.py:662 cps/editbooks.py:674 -#: cps/editbooks.py:777 cps/editbooks.py:779 cps/editbooks.py:806 -#: cps/editbooks.py:822 cps/updater.py:521 cps/uploader.py:94 +#: cps/admin.py:174 cps/editbooks.py:668 cps/editbooks.py:682 +#: cps/editbooks.py:821 cps/editbooks.py:823 cps/editbooks.py:850 +#: cps/editbooks.py:866 cps/updater.py:555 cps/uploader.py:94 #: cps/uploader.py:104 msgid "Unknown" msgstr "Nieznany" -#: cps/admin.py:193 +#: cps/admin.py:195 msgid "Admin page" msgstr "Panel administratora" -#: cps/admin.py:215 +#: cps/admin.py:217 msgid "UI Configuration" msgstr "Konfiguracja Interfejsu" -#: cps/admin.py:247 cps/admin.py:936 +#: cps/admin.py:249 cps/templates/admin.html:46 +#, fuzzy +msgid "Edit Users" +msgstr "Użytkownik z uprawnieniami administratora" + +# ??? +#: cps/admin.py:290 +#, fuzzy +msgid "all" +msgstr "Wszystko" + +#: cps/admin.py:315 cps/admin.py:1486 +msgid "User not found" +msgstr "Nie znaleziono użytkownika" + +#: cps/admin.py:329 +msgid "{} users deleted successfully" +msgstr "" + +#: cps/admin.py:351 cps/templates/user_edit.html:44 +#: cps/templates/user_table.html:69 +msgid "Show All" +msgstr "Pokaż wszystkie" + +#: cps/admin.py:372 cps/admin.py:378 +msgid "Malformed request" +msgstr "" + +#: cps/admin.py:390 cps/admin.py:1368 +msgid "Guest Name can't be changed" +msgstr "" + +#: cps/admin.py:400 +msgid "Guest can't have this role" +msgstr "" + +#: cps/admin.py:412 cps/admin.py:1333 +msgid "No admin user remaining, can't remove admin role" +msgstr "Nie można odebrać praw administratora. Brak na serwerze innego konta z prawami administratora" + +#: cps/admin.py:416 cps/admin.py:430 +msgid "Value has to be true or false" +msgstr "" + +#: cps/admin.py:418 +msgid "Invalid role" +msgstr "" + +#: cps/admin.py:422 +msgid "Guest can't have this view" +msgstr "" + +#: cps/admin.py:432 +msgid "Invalid view" +msgstr "" + +#: cps/admin.py:435 +msgid "Guest's Locale is determined automatically and can't be set" +msgstr "" + +#: cps/admin.py:439 +msgid "No Valid Locale Given" +msgstr "" + +#: cps/admin.py:450 +msgid "No Valid Book Language Given" +msgstr "" + +#: cps/admin.py:452 +msgid "Parameter not found" +msgstr "" + +#: cps/admin.py:506 cps/admin.py:1219 msgid "Calibre-Web configuration updated" msgstr "Konfiguracja Calibre-Web została zaktualizowana" -#: cps/admin.py:258 +#: cps/admin.py:518 msgid "Do you really want to delete the Kobo Token?" msgstr "Czy na pewno chcesz usunąć Token Kobo?" -#: cps/admin.py:260 +#: cps/admin.py:520 msgid "Do you really want to delete this domain?" msgstr "" -#: cps/admin.py:262 +#: cps/admin.py:522 msgid "Do you really want to delete this user?" msgstr "" -#: cps/admin.py:264 cps/templates/shelf.html:90 +#: cps/admin.py:524 cps/templates/shelf.html:90 msgid "Are you sure you want to delete this shelf?" msgstr "Czy na pewno chcesz usunąć półkę?" -#: cps/admin.py:510 cps/admin.py:516 cps/admin.py:526 cps/admin.py:536 -#: cps/templates/modal_dialogs.html:29 +#: cps/admin.py:526 +#, fuzzy +msgid "Are you sure you want to change locales of selected user(s)?" +msgstr "Czy na pewno chcesz usunąć półkę?" + +#: cps/admin.py:528 +msgid "Are you sure you want to change visible book languages for selected user(s)?" +msgstr "" + +#: cps/admin.py:530 +msgid "Are you sure you want to change the selected role for the selected user(s)?" +msgstr "" + +#: cps/admin.py:532 +#, fuzzy +msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" +msgstr "Czy na pewno chcesz usunąć półkę?" + +#: cps/admin.py:534 +msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:683 +msgid "Tag not found" +msgstr "" + +#: cps/admin.py:695 +msgid "Invalid Action" +msgstr "" + +#: cps/admin.py:800 cps/admin.py:806 cps/admin.py:816 cps/admin.py:826 +#: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:43 msgid "Deny" msgstr "Zabroń" -#: cps/admin.py:512 cps/admin.py:518 cps/admin.py:528 cps/admin.py:538 -#: cps/templates/modal_dialogs.html:28 +#: cps/admin.py:802 cps/admin.py:808 cps/admin.py:818 cps/admin.py:828 +#: cps/templates/modal_dialogs.html:28 cps/templates/user_table.html:48 msgid "Allow" msgstr "Zezwalaj" -#: cps/admin.py:681 +#: cps/admin.py:971 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json nie został skonfigurowany dla aplikacji webowej" -#: cps/admin.py:723 +#: cps/admin.py:1016 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "Lokalizacja pliku dziennika jest nieprawidłowa, wprowadź poprawną ścieżkę" -#: cps/admin.py:729 +#: cps/admin.py:1022 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "Lokalizacja pliku dziennika dostępu jest nieprawidłowa, wprowadź poprawną ścieżkę" -#: cps/admin.py:738 +#: cps/admin.py:1052 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "Wprowadź dostawcę LDAP, port, nazwę wyróżniającą i identyfikator obiektu użytkownika" -#: cps/admin.py:752 cps/admin.py:760 +#: cps/admin.py:1067 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "Filtr obiektów grupy LDAP musi mieć jeden identyfikator formatu \"% s\"" -#: cps/admin.py:755 cps/admin.py:763 +#: cps/admin.py:1070 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "Filtr obiektów grupy LDAP ma niedopasowany nawias" -#: cps/admin.py:768 +#: cps/admin.py:1075 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "Filtr obiektów użytkownika LDAP musi mieć jeden identyfikator formatu \"% s\"" -#: cps/admin.py:771 +#: cps/admin.py:1078 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "Filtr obiektów użytkownika LDAP ma niedopasowany nawias" -#: cps/admin.py:779 +#: cps/admin.py:1086 #, python-format msgid "LDAP Member User Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:782 +#: cps/admin.py:1089 msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:790 +#: cps/admin.py:1097 msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:841 +#: cps/admin.py:1123 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "Lokalizacja pliku klucza jest nieprawidłowa, wprowadź poprawną ścieżkę" -#: cps/admin.py:847 +#: cps/admin.py:1129 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "Lokalizacja pliku certyfikatu jest nieprawidłowa, wprowadź poprawną ścieżkę" -#: cps/admin.py:917 cps/admin.py:1024 cps/admin.py:1047 cps/admin.py:1168 -#: cps/shelf.py:102 cps/shelf.py:159 cps/shelf.py:200 cps/shelf.py:261 -#: cps/shelf.py:314 cps/shelf.py:348 cps/shelf.py:418 +#: cps/admin.py:1200 cps/admin.py:1303 cps/admin.py:1395 cps/admin.py:1461 +#: cps/shelf.py:103 cps/shelf.py:163 cps/shelf.py:206 cps/shelf.py:269 +#: cps/shelf.py:325 cps/shelf.py:360 cps/shelf.py:431 msgid "Settings DB is not Writeable" msgstr "Baza danych ustawień nie jest zapisywalna" -#: cps/admin.py:929 +#: cps/admin.py:1212 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "Lokalizacja bazy danych jest nieprawidłowa, wprowadź poprawną ścieżkę" -#: cps/admin.py:933 +#: cps/admin.py:1216 msgid "DB is not Writeable" msgstr "Baza danych nie jest zapisywalna" -#: cps/admin.py:972 +#: cps/admin.py:1256 msgid "Basic Configuration" msgstr "Konfiguracja podstawowa" -#: cps/admin.py:987 cps/web.py:1358 +#: cps/admin.py:1272 cps/web.py:1417 msgid "Please fill out all fields!" msgstr "Proszę wypełnić wszystkie pola!" -#: cps/admin.py:990 cps/admin.py:1002 cps/admin.py:1008 cps/admin.py:1138 -msgid "Add new user" -msgstr "Dodaj nowego użytkownika" - -#: cps/admin.py:999 cps/web.py:1496 +#: cps/admin.py:1280 msgid "E-mail is not from valid domain" msgstr "E-mail nie pochodzi z prawidłowej domeny" -#: cps/admin.py:1006 cps/admin.py:1021 -msgid "Found an existing account for this e-mail address or nickname." -msgstr "Znaleziono istniejące konto dla tego adresu e-mail lub pseudonimu." +#: cps/admin.py:1284 cps/admin.py:1414 +msgid "Add new user" +msgstr "Dodaj nowego użytkownika" -#: cps/admin.py:1017 +#: cps/admin.py:1293 #, python-format msgid "User '%(user)s' created" msgstr "Użytkownik '%(user)s' został utworzony" -#: cps/admin.py:1031 +#: cps/admin.py:1299 +#, fuzzy +msgid "Found an existing account for this e-mail address or name." +msgstr "Znaleziono istniejące konto dla tego adresu e-mail lub pseudonimu." + +#: cps/admin.py:1312 #, python-format msgid "User '%(nick)s' deleted" msgstr "Użytkownik '%(nick)s' został usunięty" -#: cps/admin.py:1034 +#: cps/admin.py:1314 cps/admin.py:1315 +msgid "Can't delete Guest User" +msgstr "" + +#: cps/admin.py:1318 msgid "No admin user remaining, can't delete user" msgstr "Nie można usunąć użytkownika. Brak na serwerze innego konta z prawami administratora" -#: cps/admin.py:1041 -#, python-format -msgid "User '%(nick)s' updated" -msgstr "Użytkownik '%(nick)s' został zaktualizowany" - -#: cps/admin.py:1044 -msgid "An unknown error occured." -msgstr "Wystąpił nieznany błąd." - -#: cps/admin.py:1056 -msgid "No admin user remaining, can't remove admin role" -msgstr "Nie można odebrać praw administratora. Brak na serwerze innego konta z prawami administratora" - -#: cps/admin.py:1092 cps/web.py:1554 -msgid "Found an existing account for this e-mail address." -msgstr "Znaleziono istniejące konto dla tego adresu e-mail." - -#: cps/admin.py:1101 cps/admin.py:1115 cps/admin.py:1209 cps/web.py:1516 +#: cps/admin.py:1383 cps/admin.py:1504 #, python-format msgid "Edit User %(nick)s" msgstr "Edytuj użytkownika %(nick)s" -#: cps/admin.py:1107 cps/web.py:1509 -msgid "This username is already taken" -msgstr "Nazwa użytkownika jest już zajęta" +#: cps/admin.py:1387 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "Użytkownik '%(nick)s' został zaktualizowany" -#: cps/admin.py:1147 cps/templates/admin.html:78 +#: cps/admin.py:1391 +#, fuzzy +msgid "An unknown error occurred." +msgstr "Wystąpił nieznany błąd." + +#: cps/admin.py:1423 cps/templates/admin.html:94 msgid "Edit E-mail Server Settings" msgstr "Zmień ustawienia SMTP" -#: cps/admin.py:1175 +#: cps/admin.py:1442 +msgid "G-Mail Account Verification Successful" +msgstr "" + +#: cps/admin.py:1468 #, python-format msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" msgstr "" -#: cps/admin.py:1178 +#: cps/admin.py:1471 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Wystąpił błąd podczas wysyłania e-maila testowego: %(res)s" -#: cps/admin.py:1180 +#: cps/admin.py:1473 msgid "Please configure your e-mail address first..." msgstr "Najpierw skonfiguruj swój adres e-mail..." -#: cps/admin.py:1182 +#: cps/admin.py:1475 msgid "E-mail server settings updated" msgstr "Zaktualizowano ustawienia serwera poczty e-mail" -#: cps/admin.py:1193 -msgid "User not found" -msgstr "Nie znaleziono użytkownika" - # ??? -#: cps/admin.py:1220 +#: cps/admin.py:1516 #, python-format msgid "Password for user %(user)s reset" msgstr "Zrestartowano hasło użytkownika %(user)s" -#: cps/admin.py:1223 cps/web.py:1388 cps/web.py:1452 +#: cps/admin.py:1519 cps/web.py:1442 cps/web.py:1503 msgid "An unknown error occurred. Please try again later." msgstr "Wystąpił nieznany błąd. Spróbuj ponownie później." -#: cps/admin.py:1226 cps/web.py:1320 +#: cps/admin.py:1522 cps/web.py:1382 msgid "Please configure the SMTP mail settings first..." msgstr "Proszę najpierw skonfigurować ustawienia SMTP poczty e-mail..." -#: cps/admin.py:1237 +#: cps/admin.py:1533 msgid "Logfile viewer" msgstr "Przeglądanie dziennika" -#: cps/admin.py:1303 +#: cps/admin.py:1599 msgid "Requesting update package" msgstr "Żądanie o pakiet aktualizacji" -#: cps/admin.py:1304 +#: cps/admin.py:1600 msgid "Downloading update package" msgstr "Pobieranie pakietu aktualizacji" -#: cps/admin.py:1305 +#: cps/admin.py:1601 msgid "Unzipping update package" msgstr "Rozpakowywanie pakietu aktualizacji" # ??? -#: cps/admin.py:1306 +#: cps/admin.py:1602 msgid "Replacing files" msgstr "Zastępowanie plików" -#: cps/admin.py:1307 +#: cps/admin.py:1603 msgid "Database connections are closed" msgstr "Połączenia z bazą danych zostały zakończone" -#: cps/admin.py:1308 +#: cps/admin.py:1604 msgid "Stopping server" msgstr "Zatrzymywanie serwera" -#: cps/admin.py:1309 +#: cps/admin.py:1605 msgid "Update finished, please press okay and reload page" msgstr "Aktualizacja zakończona, proszę nacisnąć OK i odświeżyć stronę" -#: cps/admin.py:1310 cps/admin.py:1311 cps/admin.py:1312 cps/admin.py:1313 -#: cps/admin.py:1314 +#: cps/admin.py:1606 cps/admin.py:1607 cps/admin.py:1608 cps/admin.py:1609 +#: cps/admin.py:1610 msgid "Update failed:" msgstr "Aktualizacja nieudana:" -#: cps/admin.py:1310 cps/updater.py:337 cps/updater.py:532 cps/updater.py:534 +#: cps/admin.py:1606 cps/updater.py:356 cps/updater.py:566 cps/updater.py:568 msgid "HTTP Error" msgstr "Błąd HTTP" -#: cps/admin.py:1311 cps/updater.py:339 cps/updater.py:536 +#: cps/admin.py:1607 cps/updater.py:358 cps/updater.py:570 msgid "Connection error" msgstr "Błąd połączenia" -#: cps/admin.py:1312 cps/updater.py:341 cps/updater.py:538 +#: cps/admin.py:1608 cps/updater.py:360 cps/updater.py:572 msgid "Timeout while establishing connection" msgstr "Przekroczono limit czasu podczas nawiązywania połączenia" -#: cps/admin.py:1313 cps/updater.py:343 cps/updater.py:540 +#: cps/admin.py:1609 cps/updater.py:362 cps/updater.py:574 msgid "General error" msgstr "Błąd ogólny" -#: cps/admin.py:1314 +#: cps/admin.py:1610 msgid "Update File Could Not be Saved in Temp Dir" msgstr "Plik aktualizacji nie mógł zostać zapisany w katalogu tymczasowym" -#: cps/admin.py:1376 +#: cps/admin.py:1671 msgid "Failed to Create at Least One LDAP User" msgstr "Błąd przy tworzeniu przynajmniej jednego użytkownika LDAP" -#: cps/admin.py:1389 +#: cps/admin.py:1684 #, python-format msgid "Error: %(ldaperror)s" msgstr "Błąd: %(ldaperror)s" -#: cps/admin.py:1393 +#: cps/admin.py:1688 msgid "Error: No user returned in response of LDAP server" msgstr "Błąd. LDAP nie zwrócił żadnego użytkownika" -#: cps/admin.py:1426 +#: cps/admin.py:1721 msgid "At Least One LDAP User Not Found in Database" msgstr "Przynajmniej jeden użytkownik LDAP nie został znaleziony w bazie danych" -#: cps/admin.py:1428 +#: cps/admin.py:1723 msgid "{} User Successfully Imported" msgstr "" @@ -349,98 +445,98 @@ msgstr "nie skonfigurowane" msgid "Execution permissions missing" msgstr "Brak uprawnienia do wykonywania pliku" -#: cps/editbooks.py:267 cps/editbooks.py:269 +#: cps/editbooks.py:294 cps/editbooks.py:296 msgid "Book Format Successfully Deleted" msgstr "Plik książki w wybranym formacie został usunięty" -#: cps/editbooks.py:276 cps/editbooks.py:278 +#: cps/editbooks.py:303 cps/editbooks.py:305 msgid "Book Successfully Deleted" msgstr "Książka została usunięta" -#: cps/editbooks.py:325 cps/editbooks.py:646 cps/web.py:1598 cps/web.py:1634 -#: cps/web.py:1705 +#: cps/editbooks.py:361 cps/editbooks.py:724 cps/web.py:1627 cps/web.py:1663 +#: cps/web.py:1734 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Błąd podczas otwierania e-booka. Plik nie istnieje lub jest niedostępny" -#: cps/editbooks.py:359 +#: cps/editbooks.py:395 msgid "edit metadata" msgstr "edytuj metadane" -#: cps/editbooks.py:434 +#: cps/editbooks.py:473 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s nie jest prawidłowym językiem" -#: cps/editbooks.py:556 cps/editbooks.py:905 +#: cps/editbooks.py:595 cps/editbooks.py:936 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Rozszerzenie pliku '%(ext)s' nie jest dozwolone do wysłania na ten serwer" -#: cps/editbooks.py:560 cps/editbooks.py:909 +#: cps/editbooks.py:599 cps/editbooks.py:940 msgid "File to be uploaded must have an extension" msgstr "Plik do wysłania musi mieć rozszerzenie" -#: cps/editbooks.py:572 +#: cps/editbooks.py:611 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Nie udało się utworzyć łącza %(path)s (Odmowa dostępu)." -#: cps/editbooks.py:577 +#: cps/editbooks.py:616 #, python-format msgid "Failed to store file %(file)s." msgstr "Nie można zapisać pliku %(file)s." -#: cps/editbooks.py:595 cps/editbooks.py:972 cps/web.py:1559 +#: cps/editbooks.py:634 cps/editbooks.py:1027 cps/web.py:1588 #, python-format msgid "Database error: %(error)s." msgstr "Błąd bazy danych: %(error)s." -#: cps/editbooks.py:599 +#: cps/editbooks.py:638 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Format pliku %(ext)s dodany do %(book)s" -#: cps/editbooks.py:726 +#: cps/editbooks.py:775 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:763 +#: cps/editbooks.py:807 msgid "Metadata successfully updated" msgstr "Metadane zostały pomyślnie zaktualizowane" -#: cps/editbooks.py:772 +#: cps/editbooks.py:816 msgid "Error editing book, please check logfile for details" msgstr "Błąd podczas edycji książki, sprawdź plik dziennika, aby uzyskać szczegółowe informacje" -#: cps/editbooks.py:810 +#: cps/editbooks.py:854 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Wysłana książka prawdopodobnie istnieje w bibliotece, rozważ zmianę przed przesłaniem nowej: " -#: cps/editbooks.py:917 +#: cps/editbooks.py:948 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "Nie można zapisać pliku %(filename)s w katalogu tymczasowym" -#: cps/editbooks.py:947 +#: cps/editbooks.py:967 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "Nie udało się przenieść pliku okładki %(file)s:%(error)s" -#: cps/editbooks.py:958 +#: cps/editbooks.py:1013 #, python-format msgid "File %(file)s uploaded" msgstr "Wysłano plik %(file)s" -#: cps/editbooks.py:984 +#: cps/editbooks.py:1039 msgid "Source or destination format for conversion missing" msgstr "Brak formatu źródłowego lub docelowego do konwersji" -#: cps/editbooks.py:992 +#: cps/editbooks.py:1047 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Książka została pomyślnie umieszczona w zadaniach do konwersji %(book_format)s" -#: cps/editbooks.py:996 +#: cps/editbooks.py:1051 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Podczas konwersji książki wystąpił błąd: %(res)s" @@ -550,55 +646,68 @@ msgstr "Nie znaleziono pliku %(file)s na Google Drive" msgid "Book path %(path)s not found on Google Drive" msgstr "Nie znaleziono ścieżki do książki %(path)s na Google Drive" -#: cps/helper.py:576 +#: cps/helper.py:511 +#, fuzzy +msgid "Found an existing account for this e-mail address" +msgstr "Znaleziono istniejące konto dla tego adresu e-mail." + +#: cps/helper.py:519 +msgid "This username is already taken" +msgstr "Nazwa użytkownika jest już zajęta" + +#: cps/helper.py:529 +msgid "Invalid e-mail address format" +msgstr "" + +#: cps/helper.py:602 msgid "Error Downloading Cover" msgstr "Błąd przy pobieraniu okładki" -#: cps/helper.py:579 +#: cps/helper.py:605 msgid "Cover Format Error" msgstr "Błędny format okładki" -#: cps/helper.py:589 +#: cps/helper.py:615 msgid "Failed to create path for cover" msgstr "Nie udało się utworzyć ścieżki dla okładki" -#: cps/helper.py:605 +#: cps/helper.py:631 msgid "Cover-file is not a valid image file, or could not be stored" msgstr "Plik okładki nie jest poprawnym plikiem obrazu lub nie mógł zostać zapisany" -#: cps/helper.py:616 +#: cps/helper.py:642 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" msgstr "" -#: cps/helper.py:629 +#: cps/helper.py:655 msgid "Only jpg/jpeg files are supported as coverfile" msgstr "Jako plik okładki dopuszczalne są jedynie pliki jpg/jpeg" -#: cps/helper.py:680 +#: cps/helper.py:707 msgid "Unrar binary file not found" msgstr "Plik wykonywalny programu unrar nie znaleziony" -#: cps/helper.py:694 +#: cps/helper.py:721 msgid "Error excecuting UnRar" msgstr "Błąd przy wykonywaniu unrar" -#: cps/helper.py:743 +#: cps/helper.py:769 msgid "Waiting" msgstr "Oczekiwanie" -#: cps/helper.py:745 +#: cps/helper.py:771 msgid "Failed" msgstr "Nieudane" -#: cps/helper.py:747 +#: cps/helper.py:773 msgid "Started" msgstr "Rozpoczynanie" -#: cps/helper.py:749 +#: cps/helper.py:775 msgid "Finished" msgstr "Zakończone" -#: cps/helper.py:751 +#: cps/helper.py:777 msgid "Unknown Status" msgstr "Ststus nieznany" @@ -611,65 +720,83 @@ msgid "Kobo Setup" msgstr "Konfiguracja Kobo" # ??? -#: cps/oauth_bb.py:76 +#: cps/oauth_bb.py:78 #, python-format msgid "Register with %(provider)s" msgstr "Zarejestruj się %(provider)s" -#: cps/oauth_bb.py:137 cps/remotelogin.py:133 cps/web.py:1424 +#: cps/oauth_bb.py:139 cps/remotelogin.py:133 cps/web.py:1475 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "zalogowałeś się jako: '%(nickname)s'" -#: cps/oauth_bb.py:147 +#: cps/oauth_bb.py:149 #, python-format msgid "Link to %(oauth)s Succeeded" msgstr "Łączenie z %(oauth)s zakończono sukcesem" -#: cps/oauth_bb.py:153 +#: cps/oauth_bb.py:156 msgid "Login failed, No User Linked With OAuth Account" msgstr "Błąd logowania, użytkownik niepołączony z kontem OAuth" -#: cps/oauth_bb.py:195 +#: cps/oauth_bb.py:198 #, python-format msgid "Unlink to %(oauth)s Succeeded" msgstr "Rozłączanie z %(oauth)s zakończono sukcesem" -#: cps/oauth_bb.py:199 +#: cps/oauth_bb.py:203 #, python-format msgid "Unlink to %(oauth)s Failed" msgstr "Rozłączanie z %(oauth)s zakończono porażką" -#: cps/oauth_bb.py:202 +#: cps/oauth_bb.py:206 #, python-format msgid "Not Linked to %(oauth)s" msgstr "" -#: cps/oauth_bb.py:259 +#: cps/oauth_bb.py:262 msgid "Failed to log in with GitHub." msgstr "Nie udało się zalogować za pomocą GitHub." -#: cps/oauth_bb.py:264 +#: cps/oauth_bb.py:268 msgid "Failed to fetch user info from GitHub." msgstr "Nie udało się pobrać informacji o użytkowniku z GitHub." -#: cps/oauth_bb.py:275 +#: cps/oauth_bb.py:280 msgid "Failed to log in with Google." msgstr "Nie udało się zalogować do Google." -#: cps/oauth_bb.py:280 +#: cps/oauth_bb.py:286 msgid "Failed to fetch user info from Google." msgstr "Nie udało się pobrać informacji o użytkowniku z Google." -#: cps/oauth_bb.py:312 +#: cps/oauth_bb.py:333 msgid "GitHub Oauth error, please retry later." msgstr "Błąd GitHub Oauth, proszę spróbować później." -#: cps/oauth_bb.py:331 +#: cps/oauth_bb.py:336 +msgid "GitHub Oauth error: {}" +msgstr "" + +#: cps/oauth_bb.py:357 msgid "Google Oauth error, please retry later." msgstr "Błąd Google Oauth, proszę spróbować później." -#: cps/remotelogin.py:65 cps/web.py:1471 +#: cps/oauth_bb.py:360 +msgid "Google Oauth error: {}" +msgstr "" + +# ??? +#: cps/opds.py:110 cps/opds.py:199 cps/opds.py:276 cps/opds.py:328 +#: cps/templates/grid.html:14 cps/templates/list.html:14 +msgid "All" +msgstr "Wszystko" + +#: cps/opds.py:385 +msgid "{} Stars" +msgstr "" + +#: cps/remotelogin.py:65 cps/web.py:1522 msgid "login" msgstr "logowanie" @@ -685,7 +812,7 @@ msgstr "Token wygasł" msgid "Success! Please return to your device" msgstr "Powodzenie! Wróć do swojego urządzenia" -#: cps/render_template.py:39 cps/web.py:415 +#: cps/render_template.py:39 cps/web.py:414 msgid "Books" msgstr "Książki" @@ -693,7 +820,7 @@ msgstr "Książki" msgid "Show recent books" msgstr "Pokaż menu ostatnio dodanych książek" -#: cps/render_template.py:42 cps/templates/index.xml:18 +#: cps/render_template.py:42 cps/templates/index.xml:25 msgid "Hot Books" msgstr "Najpopularniejsze" @@ -701,127 +828,130 @@ msgstr "Najpopularniejsze" msgid "Show Hot Books" msgstr "Pokaż menu najpopularniejszych książek" -#: cps/render_template.py:45 +#: cps/render_template.py:46 cps/render_template.py:51 msgid "Downloaded Books" msgstr "" -#: cps/render_template.py:47 +#: cps/render_template.py:48 cps/render_template.py:53 +#: cps/templates/user_table.html:151 msgid "Show Downloaded Books" msgstr "" -#: cps/render_template.py:50 cps/templates/index.xml:25 cps/web.py:425 +#: cps/render_template.py:56 cps/templates/index.xml:32 cps/web.py:424 msgid "Top Rated Books" msgstr "Najwyżej ocenione" -#: cps/render_template.py:52 +#: cps/render_template.py:58 cps/templates/user_table.html:145 msgid "Show Top Rated Books" msgstr "Pokaż menu najwyżej ocenionych książek" -#: cps/render_template.py:53 cps/templates/index.xml:47 -#: cps/templates/index.xml:51 cps/web.py:642 +#: cps/render_template.py:59 cps/templates/index.xml:54 +#: cps/templates/index.xml:58 cps/web.py:650 msgid "Read Books" msgstr "Przeczytane" -#: cps/render_template.py:55 +#: cps/render_template.py:61 msgid "Show read and unread" msgstr "Pokaż menu przeczytane i nieprzeczytane" -#: cps/render_template.py:57 cps/templates/index.xml:54 -#: cps/templates/index.xml:58 cps/web.py:645 +#: cps/render_template.py:63 cps/templates/index.xml:61 +#: cps/templates/index.xml:65 cps/web.py:653 msgid "Unread Books" msgstr "Nieprzeczytane" -#: cps/render_template.py:59 +#: cps/render_template.py:65 msgid "Show unread" msgstr "Pokaż nieprzeczytane" -#: cps/render_template.py:60 +#: cps/render_template.py:66 msgid "Discover" msgstr "Odkrywaj" -#: cps/render_template.py:62 +#: cps/render_template.py:68 cps/templates/user_table.html:143 +#: cps/templates/user_table.html:146 msgid "Show random books" msgstr "Pokaż menu losowych książek" -#: cps/render_template.py:63 cps/templates/book_table.html:50 -#: cps/templates/index.xml:76 cps/web.py:950 +#: cps/render_template.py:69 cps/templates/book_table.html:51 +#: cps/templates/index.xml:83 cps/web.py:1024 msgid "Categories" msgstr "Kategorie" -#: cps/render_template.py:65 +#: cps/render_template.py:71 cps/templates/user_table.html:142 msgid "Show category selection" msgstr "Pokaż menu wyboru kategorii" -#: cps/render_template.py:66 cps/templates/book_edit.html:84 -#: cps/templates/book_table.html:51 cps/templates/index.xml:83 -#: cps/templates/search_form.html:62 cps/web.py:854 cps/web.py:864 +#: cps/render_template.py:72 cps/templates/book_edit.html:84 +#: cps/templates/book_table.html:52 cps/templates/index.xml:90 +#: cps/templates/search_form.html:62 cps/web.py:921 cps/web.py:931 msgid "Series" msgstr "Cykle" -#: cps/render_template.py:68 +#: cps/render_template.py:74 cps/templates/user_table.html:141 msgid "Show series selection" msgstr "Pokaż menu wyboru cyklu" -#: cps/render_template.py:69 cps/templates/book_table.html:49 -#: cps/templates/index.xml:62 +#: cps/render_template.py:75 cps/templates/book_table.html:50 +#: cps/templates/index.xml:69 msgid "Authors" msgstr "Autorzy" -#: cps/render_template.py:71 +#: cps/render_template.py:77 cps/templates/user_table.html:144 msgid "Show author selection" msgstr "Pokaż menu wyboru autora" -#: cps/render_template.py:73 cps/templates/book_table.html:55 -#: cps/templates/index.xml:69 cps/web.py:833 +#: cps/render_template.py:79 cps/templates/book_table.html:56 +#: cps/templates/index.xml:76 cps/web.py:898 msgid "Publishers" msgstr "Wydawcy" -#: cps/render_template.py:75 +#: cps/render_template.py:81 cps/templates/user_table.html:147 msgid "Show publisher selection" msgstr "Pokaż menu wyboru wydawcy" -#: cps/render_template.py:76 cps/templates/book_table.html:53 -#: cps/templates/index.xml:90 cps/templates/search_form.html:100 cps/web.py:929 +#: cps/render_template.py:82 cps/templates/book_table.html:54 +#: cps/templates/index.xml:97 cps/templates/search_form.html:100 +#: cps/web.py:1001 msgid "Languages" msgstr "Języki" -#: cps/render_template.py:79 +#: cps/render_template.py:85 cps/templates/user_table.html:139 msgid "Show language selection" msgstr "Pokaż menu wyboru języka" -#: cps/render_template.py:80 cps/templates/index.xml:97 +#: cps/render_template.py:86 cps/templates/index.xml:104 msgid "Ratings" msgstr "Oceny" -#: cps/render_template.py:82 +#: cps/render_template.py:88 cps/templates/user_table.html:148 msgid "Show ratings selection" msgstr "Pokaż menu listy ocen" -#: cps/render_template.py:83 cps/templates/index.xml:105 +#: cps/render_template.py:89 cps/templates/index.xml:112 msgid "File formats" msgstr "Formaty plików" -#: cps/render_template.py:85 +#: cps/render_template.py:91 cps/templates/user_table.html:149 msgid "Show file formats selection" msgstr "Pokaż menu formatu plików" -#: cps/render_template.py:87 cps/web.py:669 +#: cps/render_template.py:93 cps/web.py:677 msgid "Archived Books" msgstr "Zarchiwizowane książki" -#: cps/render_template.py:89 +#: cps/render_template.py:95 cps/templates/user_table.html:150 msgid "Show archived books" msgstr "Pokaż zarchiwizowane książki" -#: cps/render_template.py:91 cps/web.py:743 +#: cps/render_template.py:97 cps/web.py:751 msgid "Books List" msgstr "" -#: cps/render_template.py:93 +#: cps/render_template.py:99 cps/templates/user_table.html:152 msgid "Show Books List" msgstr "" -#: cps/shelf.py:69 cps/shelf.py:122 +#: cps/shelf.py:69 cps/shelf.py:124 msgid "Invalid shelf specified" msgstr "Podano niewłaściwą półkę" @@ -835,303 +965,307 @@ msgstr "Niestety, nie posiadasz uprawnień do dodania książki do półki: %(sh msgid "Book is already part of the shelf: %(shelfname)s" msgstr "Książka jest już dodana do półki: %(shelfname)s" -#: cps/shelf.py:108 +#: cps/shelf.py:110 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Książka została dodana do półki: %(sname)s" -#: cps/shelf.py:126 +#: cps/shelf.py:129 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Nie masz uprawnień do dodania ksiażki do półki: %(name)s" -#: cps/shelf.py:144 +#: cps/shelf.py:147 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "Książki są już dodane do półki: %(name)s" -#: cps/shelf.py:156 +#: cps/shelf.py:159 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "Książki zostały dodane do półki %(sname)s" -#: cps/shelf.py:161 +#: cps/shelf.py:166 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "Nie można dodać książek do półki: %(sname)s" -#: cps/shelf.py:206 +#: cps/shelf.py:212 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Książka została usunięta z półki: %(sname)s" -#: cps/shelf.py:214 +#: cps/shelf.py:221 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Niestety nie możesz usunąć książki z tej półki %(sname)s" -#: cps/shelf.py:224 cps/templates/layout.html:140 +#: cps/shelf.py:231 cps/templates/layout.html:140 msgid "Create a Shelf" msgstr "Utwórz półkę" -#: cps/shelf.py:231 +#: cps/shelf.py:238 msgid "Edit a shelf" msgstr "Edytuj półkę" -#: cps/shelf.py:249 +#: cps/shelf.py:256 #, python-format msgid "Shelf %(title)s created" msgstr "Półka %(title)s została utworzona" -#: cps/shelf.py:252 +#: cps/shelf.py:259 #, python-format msgid "Shelf %(title)s changed" msgstr "Półka %(title)s została zmieniona" -#: cps/shelf.py:265 +#: cps/shelf.py:273 msgid "There was an error" msgstr "Wystąpił błąd" -#: cps/shelf.py:281 +#: cps/shelf.py:290 #, python-format msgid "A public shelf with the name '%(title)s' already exists." msgstr "Publiczna półka o nazwie '%(title)s' już istnieje." -#: cps/shelf.py:291 +#: cps/shelf.py:301 #, python-format msgid "A private shelf with the name '%(title)s' already exists." msgstr "Prywatna półka o nazwie '%(title)s' już istnieje." -#: cps/shelf.py:358 +#: cps/shelf.py:370 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Zmieniono kolejność półki: '%(name)s'" -#: cps/shelf.py:423 +#: cps/shelf.py:436 #, python-format msgid "Shelf: '%(name)s'" msgstr "Półka: „%(name)s”" -#: cps/shelf.py:427 +#: cps/shelf.py:440 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Błąd otwierania półki. Półka nie istnieje lub jest niedostępna" -#: cps/updater.py:355 cps/updater.py:366 cps/updater.py:418 cps/updater.py:432 +#: cps/updater.py:374 cps/updater.py:385 cps/updater.py:485 cps/updater.py:500 msgid "Unexpected data while reading update information" msgstr "Nieoczekiwane dane podczas odczytywania informacji o aktualizacji" -#: cps/updater.py:362 cps/updater.py:424 +#: cps/updater.py:381 cps/updater.py:492 msgid "No update available. You already have the latest version installed" msgstr "Brak dostępnej aktualizacji. Masz już zainstalowaną najnowszą wersję" -#: cps/updater.py:379 +#: cps/updater.py:399 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "Dostępna jest nowa aktualizacja. Kliknij przycisk poniżej, aby zaktualizować do najnowszej wersji." -#: cps/updater.py:397 +#: cps/updater.py:417 msgid "Could not fetch update information" msgstr "Nie można pobrać informacji o aktualizacji" -#: cps/updater.py:411 -msgid "No release information available" -msgstr "Brak dostępnych informacji o wersji" +#: cps/updater.py:427 +msgid "Click on the button below to update to the latest stable version." +msgstr "Kliknij przycisk poniżej, aby zaktualizować do najnowszej stabilnej wersji." -#: cps/updater.py:468 cps/updater.py:479 cps/updater.py:498 +#: cps/updater.py:436 cps/updater.py:450 cps/updater.py:461 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "Dostępna jest nowa aktualizacja. Kliknij przycisk poniżej, aby zaktualizować do wersji: %(version)s" -#: cps/updater.py:489 -msgid "Click on the button below to update to the latest stable version." -msgstr "Kliknij przycisk poniżej, aby zaktualizować do najnowszej stabilnej wersji." +#: cps/updater.py:478 +msgid "No release information available" +msgstr "Brak dostępnych informacji o wersji" -#: cps/templates/index.html:5 cps/web.py:435 +#: cps/templates/index.html:5 cps/web.py:434 msgid "Discover (Random Books)" msgstr "Odkrywaj (losowe książki)" -#: cps/web.py:461 +#: cps/web.py:460 msgid "Hot Books (Most Downloaded)" msgstr "Najpopularniejsze książki (najczęściej pobierane)" -#: cps/web.py:489 +#: cps/web.py:493 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:503 +#: cps/web.py:508 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Błąd otwierania e-booka. Plik nie istnieje lub jest niedostępny" -#: cps/web.py:517 +#: cps/web.py:522 #, python-format msgid "Author: %(name)s" msgstr "Autor: %(name)s" -#: cps/web.py:531 +#: cps/web.py:537 #, python-format msgid "Publisher: %(name)s" msgstr "Wydawca: %(name)s" -#: cps/web.py:544 +#: cps/web.py:550 #, python-format msgid "Series: %(serie)s" msgstr "Cykl: %(serie)s" -#: cps/web.py:557 +#: cps/web.py:563 #, python-format msgid "Rating: %(rating)s stars" msgstr "Ocena: %(rating)s gwiazdek" -#: cps/web.py:570 +#: cps/web.py:576 #, python-format msgid "File format: %(format)s" msgstr "Format pliku: %(format)s" -#: cps/web.py:584 +#: cps/web.py:592 #, python-format msgid "Category: %(name)s" msgstr "Kategoria: %(name)s" -#: cps/web.py:603 +#: cps/web.py:611 #, python-format msgid "Language: %(name)s" msgstr "Język: %(name)s" -#: cps/web.py:633 +#: cps/web.py:641 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "Niestandardowa kolumna No.%(column)d nie istnieje w bazie calibre" -#: cps/templates/layout.html:56 cps/web.py:703 cps/web.py:1248 +#: cps/templates/layout.html:56 cps/web.py:711 cps/web.py:1314 msgid "Advanced Search" msgstr "Wyszukiwanie" #: cps/templates/book_edit.html:214 cps/templates/feed.xml:33 #: cps/templates/index.xml:11 cps/templates/layout.html:45 #: cps/templates/layout.html:48 cps/templates/search_form.html:194 -#: cps/web.py:715 cps/web.py:987 +#: cps/web.py:723 cps/web.py:1061 msgid "Search" msgstr "Szukaj" -#: cps/web.py:882 +#: cps/templates/admin.html:16 cps/web.py:876 +msgid "Downloads" +msgstr "DLS" + +#: cps/web.py:952 msgid "Ratings list" msgstr "Lista z ocenami" -#: cps/web.py:901 +#: cps/web.py:973 msgid "File formats list" msgstr "Lista formatów" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:964 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1038 msgid "Tasks" msgstr "Zadania" -#: cps/web.py:1108 +#: cps/web.py:1182 msgid "Published after " msgstr "Opublikowane po " -#: cps/web.py:1115 +#: cps/web.py:1189 msgid "Published before " msgstr "Opublikowane przed " -#: cps/web.py:1145 +#: cps/web.py:1211 #, python-format msgid "Rating <= %(rating)s" msgstr "Ocena <= %(rating)s" -#: cps/web.py:1147 +#: cps/web.py:1213 #, python-format msgid "Rating >= %(rating)s" msgstr "Ocena >= %(rating)s" -#: cps/web.py:1149 +#: cps/web.py:1215 #, python-format msgid "Read Status = %(status)s" msgstr "" -#: cps/web.py:1325 +#: cps/web.py:1387 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Książka została umieszczona w kolejce do wysłania do %(kindlemail)s" -#: cps/web.py:1329 +#: cps/web.py:1391 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Wystąpił błąd podczas wysyłania tej książki: %(res)s" -#: cps/web.py:1331 +#: cps/web.py:1393 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Najpierw skonfiguruj adres e-mail Kindle..." -#: cps/web.py:1348 +#: cps/web.py:1410 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "Serwer e-mail nie jest skonfigurowany, skontaktuj się z administratorem!" -#: cps/web.py:1349 cps/web.py:1359 cps/web.py:1366 cps/web.py:1389 -#: cps/web.py:1393 cps/web.py:1398 cps/web.py:1402 +#: cps/web.py:1411 cps/web.py:1418 cps/web.py:1424 cps/web.py:1443 +#: cps/web.py:1447 cps/web.py:1453 msgid "register" msgstr "rejestracja" -#: cps/web.py:1364 -msgid "Invalid e-mail address format" -msgstr "" - -#: cps/web.py:1391 +#: cps/web.py:1445 msgid "Your e-mail is not allowed to register" msgstr "Twój e-mail nie może się zarejestrować" -#: cps/web.py:1394 +#: cps/web.py:1448 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Wiadomość e-mail z potwierdzeniem została wysłana na Twoje konto e-mail." -#: cps/web.py:1397 -msgid "This username or e-mail address is already in use." -msgstr "Ta nazwa użytkownika lub adres e-mail jest już używany." - -#: cps/web.py:1414 +#: cps/web.py:1465 msgid "Cannot activate LDAP authentication" msgstr "Nie można aktywować uwierzytelniania LDAP" -#: cps/web.py:1431 +#: cps/web.py:1482 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" -#: cps/web.py:1437 +#: cps/web.py:1488 #, python-format msgid "Could not login: %(message)s" msgstr "Nie można zalogować: %(message)s" -#: cps/web.py:1441 cps/web.py:1465 +#: cps/web.py:1492 cps/web.py:1516 msgid "Wrong Username or Password" msgstr "Błędna nazwa użytkownika lub hasło" -#: cps/web.py:1448 +#: cps/web.py:1499 msgid "New Password was send to your email address" msgstr "Nowe hasło zostało wysłane na Twój adres e-mail" -#: cps/web.py:1454 +#: cps/web.py:1505 msgid "Please enter valid username to reset password" msgstr "Wprowadź prawidłową nazwę użytkownika, aby zresetować hasło" -#: cps/web.py:1460 +#: cps/web.py:1511 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Jesteś teraz zalogowany jako: '%(nickname)s'" -#: cps/web.py:1498 cps/web.py:1583 +#: cps/web.py:1565 cps/web.py:1612 #, python-format msgid "%(name)s's profile" msgstr "Profil użytkownika %(name)s" -#: cps/web.py:1550 +#: cps/web.py:1579 msgid "Profile updated" msgstr "Zaktualizowano profil" -#: cps/web.py:1610 cps/web.py:1613 cps/web.py:1616 cps/web.py:1619 -#: cps/web.py:1626 cps/web.py:1631 +#: cps/web.py:1583 +msgid "Found an existing account for this e-mail address." +msgstr "Znaleziono istniejące konto dla tego adresu e-mail." + +#: cps/web.py:1639 cps/web.py:1642 cps/web.py:1645 cps/web.py:1648 +#: cps/web.py:1655 cps/web.py:1660 msgid "Read a Book" msgstr "Czytaj książkę" +#: cps/services/gmail.py:41 +msgid "Found no valid gmail.json file with OAuth information" +msgstr "" + #: cps/tasks/convert.py:114 #, python-format msgid "Calibre ebook-convert %(tool)s not found" @@ -1170,224 +1304,234 @@ msgstr "" msgid "Users" msgstr "Lista użytkowników" -#: cps/templates/admin.html:12 cps/templates/login.html:8 +#: cps/templates/admin.html:13 cps/templates/login.html:8 #: cps/templates/login.html:9 cps/templates/register.html:8 -#: cps/templates/user_edit.html:9 +#: cps/templates/user_edit.html:9 cps/templates/user_table.html:121 msgid "Username" msgstr "Nazwa użytkownika" -#: cps/templates/admin.html:13 cps/templates/register.html:13 -#: cps/templates/user_edit.html:14 +#: cps/templates/admin.html:14 cps/templates/register.html:13 +#: cps/templates/user_edit.html:14 cps/templates/user_table.html:122 msgid "E-mail Address" msgstr "E-mail" -#: cps/templates/admin.html:14 cps/templates/user_edit.html:27 +#: cps/templates/admin.html:15 cps/templates/user_edit.html:27 msgid "Send to Kindle E-mail Address" msgstr "Adres e-mail dla wysyłania do Kindle" -#: cps/templates/admin.html:15 -msgid "Downloads" -msgstr "DLS" - # ??? -#: cps/templates/admin.html:16 cps/templates/layout.html:77 +#: cps/templates/admin.html:17 cps/templates/layout.html:77 +#: cps/templates/user_table.html:130 msgid "Admin" msgstr "Panel administratora" -#: cps/templates/admin.html:17 cps/templates/login.html:12 +#: cps/templates/admin.html:18 cps/templates/login.html:12 #: cps/templates/login.html:13 cps/templates/user_edit.html:22 msgid "Password" msgstr "Hasło" -#: cps/templates/admin.html:18 cps/templates/layout.html:66 +#: cps/templates/admin.html:19 cps/templates/layout.html:66 +#: cps/templates/user_table.html:132 msgid "Upload" msgstr "Wysyłanie" # ??? -#: cps/templates/admin.html:19 cps/templates/detail.html:18 +#: cps/templates/admin.html:20 cps/templates/detail.html:18 #: cps/templates/detail.html:27 cps/templates/shelf.html:6 +#: cps/templates/user_table.html:133 msgid "Download" msgstr "Pobieranie" -#: cps/templates/admin.html:20 +#: cps/templates/admin.html:21 msgid "View Books" msgstr "Przeglądanie" -#: cps/templates/admin.html:21 +#: cps/templates/admin.html:22 cps/templates/user_table.html:118 +#: cps/templates/user_table.html:135 msgid "Edit" msgstr "Edycja" # ??? -#: cps/templates/admin.html:22 cps/templates/book_edit.html:16 -#: cps/templates/book_table.html:57 cps/templates/modal_dialogs.html:63 +#: cps/templates/admin.html:23 cps/templates/book_edit.html:16 +#: cps/templates/book_table.html:58 cps/templates/modal_dialogs.html:63 #: cps/templates/modal_dialogs.html:116 cps/templates/user_edit.html:66 +#: cps/templates/user_table.html:136 msgid "Delete" msgstr "Usuń" -#: cps/templates/admin.html:23 +#: cps/templates/admin.html:24 msgid "Public Shelf" msgstr "Półka publiczna" -#: cps/templates/admin.html:44 +#: cps/templates/admin.html:47 msgid "Add New User" msgstr "Dodaj nowego użytkownika" -#: cps/templates/admin.html:46 +#: cps/templates/admin.html:49 msgid "Import LDAP Users" msgstr "Importuj użytkowników LDAP" -#: cps/templates/admin.html:53 +#: cps/templates/admin.html:56 msgid "E-mail Server Settings" msgstr "Ustawienia serwera e-mail SMTP" -#: cps/templates/admin.html:57 cps/templates/email_edit.html:11 +#: cps/templates/admin.html:61 cps/templates/email_edit.html:30 msgid "SMTP Hostname" msgstr "Adres serwera SMTP" -#: cps/templates/admin.html:61 cps/templates/email_edit.html:15 +#: cps/templates/admin.html:65 cps/templates/email_edit.html:34 msgid "SMTP Port" msgstr "Port serwera SMTP" -#: cps/templates/admin.html:65 cps/templates/email_edit.html:19 +#: cps/templates/admin.html:69 cps/templates/email_edit.html:38 msgid "Encryption" msgstr "SSL" -#: cps/templates/admin.html:69 cps/templates/email_edit.html:27 +#: cps/templates/admin.html:73 cps/templates/email_edit.html:46 msgid "SMTP Login" msgstr "Nazwa użytkownika SMTP" -#: cps/templates/admin.html:73 cps/templates/email_edit.html:35 +#: cps/templates/admin.html:77 cps/templates/admin.html:88 +#: cps/templates/email_edit.html:54 msgid "From E-mail" msgstr "Wyślij z adresu e-mail" #: cps/templates/admin.html:84 +msgid "E-Mail Service" +msgstr "" + +#: cps/templates/admin.html:85 +msgid "Gmail via Oauth2" +msgstr "" + +#: cps/templates/admin.html:100 msgid "Configuration" msgstr "Konfiguracja" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:103 msgid "Calibre Database Directory" msgstr "Folder bazy danych Calibre" -#: cps/templates/admin.html:91 cps/templates/config_edit.html:136 +#: cps/templates/admin.html:107 cps/templates/config_edit.html:136 msgid "Log Level" msgstr "Poziom dziennika" -#: cps/templates/admin.html:95 +#: cps/templates/admin.html:111 msgid "Port" msgstr "Port" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:116 msgid "External Port" msgstr "" -#: cps/templates/admin.html:107 cps/templates/config_view_edit.html:27 +#: cps/templates/admin.html:123 cps/templates/config_view_edit.html:27 msgid "Books per Page" msgstr "Liczba książek na stronie" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:127 msgid "Uploads" msgstr "Wysyłanie" -#: cps/templates/admin.html:115 +#: cps/templates/admin.html:131 msgid "Anonymous Browsing" msgstr "Anonimowe przeglądanie" -#: cps/templates/admin.html:119 +#: cps/templates/admin.html:135 msgid "Public Registration" msgstr "Publiczna rejestracja" -#: cps/templates/admin.html:123 +#: cps/templates/admin.html:139 msgid "Magic Link Remote Login" msgstr "Zdalne logowanie (Magic Link)" -#: cps/templates/admin.html:127 +#: cps/templates/admin.html:143 msgid "Reverse Proxy Login" msgstr "Logowanie reverse proxy" -#: cps/templates/admin.html:132 +#: cps/templates/admin.html:148 msgid "Reverse proxy header name" msgstr "Nazwa nagłówka reverse proxy" -#: cps/templates/admin.html:137 +#: cps/templates/admin.html:153 msgid "Edit Basic Configuration" msgstr "Edytuj podstawową konfigurację" -#: cps/templates/admin.html:138 +#: cps/templates/admin.html:154 msgid "Edit UI Configuration" msgstr "Edytuj konfigurację interfejsu" -#: cps/templates/admin.html:143 +#: cps/templates/admin.html:159 msgid "Administration" msgstr "Zarządzanie" -#: cps/templates/admin.html:144 +#: cps/templates/admin.html:160 msgid "Download Debug Package" msgstr "" -#: cps/templates/admin.html:145 +#: cps/templates/admin.html:161 msgid "View Logs" msgstr "Podgląd dziennika" -#: cps/templates/admin.html:148 +#: cps/templates/admin.html:164 msgid "Reconnect Calibre Database" msgstr "Połącz ponownie z bazą danych Calibre" -#: cps/templates/admin.html:149 +#: cps/templates/admin.html:165 msgid "Restart" msgstr "Uruchom ponownie Calibre Web" -#: cps/templates/admin.html:150 +#: cps/templates/admin.html:166 msgid "Shutdown" msgstr "Zatrzymaj Calibre Web" -#: cps/templates/admin.html:155 +#: cps/templates/admin.html:171 msgid "Update" msgstr "Update (aktualizacja)" -#: cps/templates/admin.html:159 +#: cps/templates/admin.html:175 msgid "Version" msgstr "Wersja" -#: cps/templates/admin.html:160 +#: cps/templates/admin.html:176 msgid "Details" msgstr "Szczegóły" -#: cps/templates/admin.html:166 +#: cps/templates/admin.html:182 msgid "Current version" msgstr "Bieżąca wersja" -#: cps/templates/admin.html:173 +#: cps/templates/admin.html:189 msgid "Check for Update" msgstr "Sprawdź aktualizacje" -#: cps/templates/admin.html:174 +#: cps/templates/admin.html:190 msgid "Perform Update" msgstr "Wykonaj aktualizację" -#: cps/templates/admin.html:187 +#: cps/templates/admin.html:203 msgid "Are you sure you want to restart?" msgstr "Na pewno chcesz uruchomić ponownie Calibre Web?" -#: cps/templates/admin.html:192 cps/templates/admin.html:206 -#: cps/templates/admin.html:226 cps/templates/shelf.html:95 +#: cps/templates/admin.html:208 cps/templates/admin.html:222 +#: cps/templates/admin.html:242 cps/templates/shelf.html:95 msgid "OK" msgstr "OK" -#: cps/templates/admin.html:193 cps/templates/admin.html:207 -#: cps/templates/book_edit.html:192 cps/templates/book_table.html:84 +#: cps/templates/admin.html:209 cps/templates/admin.html:223 +#: cps/templates/book_edit.html:192 cps/templates/book_table.html:85 #: cps/templates/config_edit.html:427 cps/templates/config_view_edit.html:151 -#: cps/templates/email_edit.html:47 cps/templates/modal_dialogs.html:64 -#: cps/templates/modal_dialogs.html:99 cps/templates/modal_dialogs.html:117 +#: cps/templates/modal_dialogs.html:64 cps/templates/modal_dialogs.html:99 +#: cps/templates/modal_dialogs.html:117 cps/templates/modal_dialogs.html:135 #: cps/templates/shelf.html:96 cps/templates/shelf_edit.html:19 #: cps/templates/user_edit.html:132 msgid "Cancel" msgstr "Anuluj" -#: cps/templates/admin.html:205 +#: cps/templates/admin.html:221 msgid "Are you sure you want to shutdown?" msgstr "Na pewno chcesz zatrzymać Calibre Web?" -#: cps/templates/admin.html:217 +#: cps/templates/admin.html:233 msgid "Updating, please do not reload this page" msgstr "Aktualizowanie, proszę nie odświeżać strony" @@ -1496,6 +1640,7 @@ msgid "Identifier Value" msgstr "Wartość identyfikatora" #: cps/templates/book_edit.html:72 cps/templates/book_edit.html:289 +#: cps/templates/user_table.html:23 msgid "Remove" msgstr "Usuń" @@ -1561,7 +1706,7 @@ msgid "Fetch Metadata" msgstr "Uzyskaj metadane" #: cps/templates/book_edit.html:191 cps/templates/config_edit.html:424 -#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45 +#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:64 #: cps/templates/shelf_edit.html:17 cps/templates/shelf_order.html:40 #: cps/templates/user_edit.html:130 msgid "Save" @@ -1601,96 +1746,98 @@ msgstr "Błąd wyszukiwania!" msgid "No Result(s) found! Please try another keyword." msgstr "Nie znaleziono! Spróbuj użyć innego słowa kluczowego." -#: cps/templates/book_table.html:10 cps/templates/book_table.html:52 +#: cps/templates/book_table.html:11 cps/templates/book_table.html:53 +#: cps/templates/user_table.html:13 cps/templates/user_table.html:65 +#: cps/templates/user_table.html:88 msgid "This Field is Required" msgstr "" -#: cps/templates/book_table.html:23 +#: cps/templates/book_table.html:24 msgid "Merge selected books" msgstr "" -#: cps/templates/book_table.html:24 +#: cps/templates/book_table.html:25 cps/templates/user_table.html:111 msgid "Remove Selections" msgstr "" -#: cps/templates/book_table.html:30 +#: cps/templates/book_table.html:31 msgid "Update Title Sort automatically" msgstr "" -#: cps/templates/book_table.html:34 +#: cps/templates/book_table.html:35 msgid "Update Author Sort automatically" msgstr "" -#: cps/templates/book_table.html:46 +#: cps/templates/book_table.html:47 msgid "Enter Title" msgstr "" -#: cps/templates/book_table.html:46 cps/templates/config_view_edit.html:23 +#: cps/templates/book_table.html:47 cps/templates/config_view_edit.html:23 #: cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Tytuł" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Enter Title Sort" msgstr "" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Title Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Enter Author Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Author Sort" msgstr "" -#: cps/templates/book_table.html:49 +#: cps/templates/book_table.html:50 msgid "Enter Authors" msgstr "" -#: cps/templates/book_table.html:50 +#: cps/templates/book_table.html:51 msgid "Enter Categories" msgstr "" -#: cps/templates/book_table.html:51 +#: cps/templates/book_table.html:52 msgid "Enter Series" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Enter title" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Series Index" msgstr "" -#: cps/templates/book_table.html:53 +#: cps/templates/book_table.html:54 msgid "Enter Languages" msgstr "" -#: cps/templates/book_table.html:54 +#: cps/templates/book_table.html:55 msgid "Publishing Date" msgstr "" -#: cps/templates/book_table.html:55 +#: cps/templates/book_table.html:56 msgid "Enter Publishers" msgstr "" -#: cps/templates/book_table.html:70 cps/templates/modal_dialogs.html:46 +#: cps/templates/book_table.html:71 cps/templates/modal_dialogs.html:46 msgid "Are you really sure?" msgstr "Czy jesteś pewny?" -#: cps/templates/book_table.html:74 +#: cps/templates/book_table.html:75 msgid "Books with Title will be merged from:" msgstr "" -#: cps/templates/book_table.html:78 +#: cps/templates/book_table.html:79 msgid "Into Book with Title:" msgstr "" -#: cps/templates/book_table.html:83 +#: cps/templates/book_table.html:84 msgid "Merge" msgstr "" @@ -1876,7 +2023,7 @@ msgid "LDAP Encryption" msgstr "Szyfrowanie LDAP" #: cps/templates/config_edit.html:268 cps/templates/config_view_edit.html:61 -#: cps/templates/email_edit.html:21 +#: cps/templates/email_edit.html:40 msgid "None" msgstr "Brak" @@ -2089,6 +2236,7 @@ msgid "Default Visibilities for New Users" msgstr "Domyślne ustawienia widoku dla nowych użytkowników" #: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82 +#: cps/templates/user_table.html:138 msgid "Show Random Books in Detail View" msgstr "Pokaz losowe książki w widoku szczegółowym" @@ -2162,43 +2310,69 @@ msgstr "(publiczna)" msgid "Edit Metadata" msgstr "Edytuj metadane" -#: cps/templates/email_edit.html:22 +#: cps/templates/email_edit.html:12 +msgid "Choose Server Type" +msgstr "" + +#: cps/templates/email_edit.html:14 +msgid "Use Standard E-Mail Account" +msgstr "" + +#: cps/templates/email_edit.html:15 +msgid "Gmail Account with OAuth2 Verfification" +msgstr "" + +#: cps/templates/email_edit.html:21 +msgid "Setup Gmail Account as E-Mail Server" +msgstr "" + +#: cps/templates/email_edit.html:23 +msgid "Revoke Gmail Access" +msgstr "" + +#: cps/templates/email_edit.html:41 msgid "STARTTLS" msgstr "STARTTLS" -#: cps/templates/email_edit.html:23 +#: cps/templates/email_edit.html:42 msgid "SSL/TLS" msgstr "SSL/TLS" -#: cps/templates/email_edit.html:31 +#: cps/templates/email_edit.html:50 msgid "SMTP Password" msgstr "Hasło SMTP" -#: cps/templates/email_edit.html:38 +#: cps/templates/email_edit.html:57 msgid "Attachment Size Limit" msgstr "Limit rozmiaru załącznika" -#: cps/templates/email_edit.html:46 +#: cps/templates/email_edit.html:65 msgid "Save and Send Test E-mail" msgstr "Zapisz ustawienia i wyślij testową wiadomość e-mail" -#: cps/templates/email_edit.html:51 +#: cps/templates/email_edit.html:69 cps/templates/layout.html:29 +#: cps/templates/shelf_order.html:41 cps/templates/user_table.html:158 +msgid "Back" +msgstr "Wróć" + +#: cps/templates/email_edit.html:73 msgid "Allowed Domains (Whitelist)" msgstr "Domeny dozwolone do rejestracji (biała lista)" -#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80 +#: cps/templates/email_edit.html:76 cps/templates/email_edit.html:102 msgid "Add Domain" msgstr "Dodaj domenę" -#: cps/templates/email_edit.html:57 cps/templates/email_edit.html:83 +#: cps/templates/email_edit.html:79 cps/templates/email_edit.html:105 +#: cps/templates/user_table.html:26 msgid "Add" msgstr "Dodaj" -#: cps/templates/email_edit.html:62 cps/templates/email_edit.html:72 +#: cps/templates/email_edit.html:84 cps/templates/email_edit.html:94 msgid "Enter domainname" msgstr "Podaj nazwę domeny" -#: cps/templates/email_edit.html:68 +#: cps/templates/email_edit.html:90 msgid "Denied Domains (Blacklist)" msgstr "Domeny zabronione (czarna lista)" @@ -2210,11 +2384,6 @@ msgstr "Następne" msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):" msgstr "Otwórz plik .kobo/Kobo eReader.conf w edytorze tekstu i dodaj (lub edytuj):" -# ??? -#: cps/templates/grid.html:14 cps/templates/list.html:14 -msgid "All" -msgstr "Wszystko" - # | msgid "Create a Shelf" #: cps/templates/http_error.html:38 msgid "Create Issue" @@ -2247,64 +2416,72 @@ msgstr "" msgid "Start" msgstr "Rozpocznij" +#: cps/templates/index.xml:18 +msgid "Alphabetical Books" +msgstr "" + #: cps/templates/index.xml:22 +msgid "Books sorted alphabetically" +msgstr "" + +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Downloads." msgstr "Popularne publikacje z tego katalogu bazujące na pobranych." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:36 msgid "Popular publications from this catalog based on Rating." msgstr "Popularne publikacje z tego katalogu bazujące na ocenach." -#: cps/templates/index.xml:32 +#: cps/templates/index.xml:39 msgid "Recently added Books" msgstr "Ostatnio dodane książki" -#: cps/templates/index.xml:36 +#: cps/templates/index.xml:43 msgid "The latest Books" msgstr "Ostatnie książki" -#: cps/templates/index.xml:39 +#: cps/templates/index.xml:46 msgid "Random Books" msgstr "Losowe książki" -#: cps/templates/index.xml:43 +#: cps/templates/index.xml:50 msgid "Show Random Books" msgstr "Pokazuj losowe książki" -#: cps/templates/index.xml:66 +#: cps/templates/index.xml:73 msgid "Books ordered by Author" msgstr "Książki sortowane według autorów" -#: cps/templates/index.xml:73 +#: cps/templates/index.xml:80 msgid "Books ordered by publisher" msgstr "Książki sortowane według wydawców" -#: cps/templates/index.xml:80 +#: cps/templates/index.xml:87 msgid "Books ordered by category" msgstr "Książki sortowane według kategorii" -#: cps/templates/index.xml:87 +#: cps/templates/index.xml:94 msgid "Books ordered by series" msgstr "Książki sortowane według cyklu" -#: cps/templates/index.xml:94 +#: cps/templates/index.xml:101 msgid "Books ordered by Languages" msgstr "Ksiązki sortowane według języka" -#: cps/templates/index.xml:101 +#: cps/templates/index.xml:108 msgid "Books ordered by Rating" msgstr "Książki sortowane według oceny" -#: cps/templates/index.xml:109 +#: cps/templates/index.xml:116 msgid "Books ordered by file formats" msgstr "Ksiązki sortowane według formatu" -#: cps/templates/index.xml:112 cps/templates/layout.html:135 +#: cps/templates/index.xml:119 cps/templates/layout.html:135 #: cps/templates/search_form.html:80 msgid "Shelves" msgstr "Półki" -#: cps/templates/index.xml:116 +#: cps/templates/index.xml:123 msgid "Books organized in shelves" msgstr "Książki ułożone na półkach" @@ -2312,10 +2489,6 @@ msgstr "Książki ułożone na półkach" msgid "Home" msgstr "Główne menu" -#: cps/templates/layout.html:29 cps/templates/shelf_order.html:41 -msgid "Back" -msgstr "Wróć" - #: cps/templates/layout.html:35 msgid "Toggle Navigation" msgstr "Przełącz nawigację" @@ -2480,6 +2653,11 @@ msgstr "" msgid "Select" msgstr "" +#: cps/templates/modal_dialogs.html:134 +#, fuzzy +msgid "Ok" +msgstr "Książka (tom)" + #: cps/templates/osd.xml:5 msgid "Calibre-Web eBook Catalog" msgstr "Katalog e-booków Calibre-Web" @@ -2787,10 +2965,6 @@ msgstr "Zresetuj hasło użytkownika" msgid "Language of Books" msgstr "Pokaż książki w języku" -#: cps/templates/user_edit.html:44 -msgid "Show All" -msgstr "Pokaż wszystkie" - #: cps/templates/user_edit.html:53 msgid "OAuth Settings" msgstr "Ustawienia OAuth" @@ -2815,7 +2989,7 @@ msgstr "Utwórz/Przeglądaj" msgid "Add allowed/Denied Custom Column Values" msgstr "Dodaj dozwolone/zabronione wartości własnych kolumn" -#: cps/templates/user_edit.html:135 +#: cps/templates/user_edit.html:135 cps/templates/user_table.html:153 msgid "Delete User" msgstr "Usuń tego użytkownika" @@ -2823,3 +2997,98 @@ msgstr "Usuń tego użytkownika" msgid "Generate Kobo Auth URL" msgstr "Generuj Kobo Auth URL" +#: cps/templates/user_table.html:68 cps/templates/user_table.html:91 +msgid "Select..." +msgstr "" + +#: cps/templates/user_table.html:118 +#, fuzzy +msgid "Edit User" +msgstr "Użytkownik z uprawnieniami administratora" + +#: cps/templates/user_table.html:121 +#, fuzzy +msgid "Enter Username" +msgstr "Wybierz nazwę użytkownika" + +#: cps/templates/user_table.html:122 +#, fuzzy +msgid "Enter E-mail Address" +msgstr "Twój adres e-mail" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Enter Kindle E-mail Address" +msgstr "Adres e-mail dla wysyłania do Kindle" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Kindle E-mail" +msgstr "Testowy e-mail" + +#: cps/templates/user_table.html:124 +#, fuzzy +msgid "Locale" +msgstr "Skaluj" + +#: cps/templates/user_table.html:125 +msgid "Visible Book Languages" +msgstr "" + +#: cps/templates/user_table.html:126 +#, fuzzy +msgid "Edit Denied Tags" +msgstr "Wybierz dozwolone/zabronione etykiety" + +#: cps/templates/user_table.html:126 +msgid "Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +#, fuzzy +msgid "Edit Allowed Tags" +msgstr "Wybierz dozwolone/zabronione etykiety" + +#: cps/templates/user_table.html:127 +msgid "Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Edit Allowed Column Values" +msgstr "Dodaj dozwolone/zabronione wartości własnych kolumn" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Allowed Column Values" +msgstr "Dodaj dozwolone/zabronione wartości własnych kolumn" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Edit Denied Column Values" +msgstr "Dodaj dozwolone/zabronione wartości własnych kolumn" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Denied Columns Values" +msgstr "Dodaj dozwolone/zabronione wartości własnych kolumn" + +#: cps/templates/user_table.html:131 +#, fuzzy +msgid "Change Password" +msgstr "Zezwalaj na zmianę hasła" + +#: cps/templates/user_table.html:134 +msgid "View" +msgstr "" + +#: cps/templates/user_table.html:137 +#, fuzzy +msgid "Edit Public Shelfs" +msgstr "Półka publiczna" + +#: cps/templates/user_table.html:140 +#, fuzzy +msgid "Show read/unread selection" +msgstr "Pokaż menu wyboru cyklu" + diff --git a/cps/translations/pt_BR/LC_MESSAGES/messages.mo b/cps/translations/pt_BR/LC_MESSAGES/messages.mo index 075d98c0..519c6e41 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 0c6e6eec..c4ef311b 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: 2021-03-27 12:16+0100\n" +"POT-Creation-Date: 2021-05-01 16:33+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: br\n" @@ -13,7 +13,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" +"Generated-By: Babel 2.8.0\n" #: cps/about.py:43 msgid "installed" @@ -27,310 +27,406 @@ msgstr "não instalado" msgid "Statistics" msgstr "Estatística" -#: cps/admin.py:149 +#: cps/admin.py:151 msgid "Server restarted, please reload page" msgstr "Servidor reiniciado, por favor recarregue a página" -#: cps/admin.py:151 +#: cps/admin.py:153 msgid "Performing shutdown of server, please close window" msgstr "Executando o desligamento do servidor, por favor, feche a janela" -#: cps/admin.py:159 +#: cps/admin.py:161 msgid "Reconnect successful" msgstr "Reconexão bem-sucedida" -#: cps/admin.py:162 +#: cps/admin.py:164 msgid "Unknown command" msgstr "Comando desconhecido" -#: cps/admin.py:172 cps/editbooks.py:662 cps/editbooks.py:674 -#: cps/editbooks.py:777 cps/editbooks.py:779 cps/editbooks.py:806 -#: cps/editbooks.py:822 cps/updater.py:521 cps/uploader.py:94 +#: cps/admin.py:174 cps/editbooks.py:668 cps/editbooks.py:682 +#: cps/editbooks.py:821 cps/editbooks.py:823 cps/editbooks.py:850 +#: cps/editbooks.py:866 cps/updater.py:555 cps/uploader.py:94 #: cps/uploader.py:104 msgid "Unknown" msgstr "Desconhecido" -#: cps/admin.py:193 +#: cps/admin.py:195 msgid "Admin page" msgstr "Página de administração" -#: cps/admin.py:215 +#: cps/admin.py:217 msgid "UI Configuration" msgstr "Configuração de UI" -#: cps/admin.py:247 cps/admin.py:936 +#: cps/admin.py:249 cps/templates/admin.html:46 +#, fuzzy +msgid "Edit Users" +msgstr "Usuário Admin" + +#: cps/admin.py:290 +#, fuzzy +msgid "all" +msgstr "Todos" + +#: cps/admin.py:315 cps/admin.py:1486 +msgid "User not found" +msgstr "Usuário não encontrado" + +#: cps/admin.py:329 +#, fuzzy +msgid "{} users deleted successfully" +msgstr "{} Usuário Importado com Sucesso" + +#: cps/admin.py:351 cps/templates/user_edit.html:44 +#: cps/templates/user_table.html:69 +msgid "Show All" +msgstr "Mostrar tudo" + +#: cps/admin.py:372 cps/admin.py:378 +msgid "Malformed request" +msgstr "" + +#: cps/admin.py:390 cps/admin.py:1368 +msgid "Guest Name can't be changed" +msgstr "" + +#: cps/admin.py:400 +msgid "Guest can't have this role" +msgstr "" + +#: cps/admin.py:412 cps/admin.py:1333 +msgid "No admin user remaining, can't remove admin role" +msgstr "Nenhum usuário administrador restante, não pode remover a função de administrador" + +#: cps/admin.py:416 cps/admin.py:430 +msgid "Value has to be true or false" +msgstr "" + +#: cps/admin.py:418 +msgid "Invalid role" +msgstr "" + +#: cps/admin.py:422 +msgid "Guest can't have this view" +msgstr "" + +#: cps/admin.py:432 +msgid "Invalid view" +msgstr "" + +#: cps/admin.py:435 +msgid "Guest's Locale is determined automatically and can't be set" +msgstr "" + +#: cps/admin.py:439 +msgid "No Valid Locale Given" +msgstr "" + +#: cps/admin.py:450 +msgid "No Valid Book Language Given" +msgstr "" + +#: cps/admin.py:452 +msgid "Parameter not found" +msgstr "" + +#: cps/admin.py:506 cps/admin.py:1219 msgid "Calibre-Web configuration updated" msgstr "Configuração do Calibre-Web atualizada" -#: cps/admin.py:258 +#: cps/admin.py:518 msgid "Do you really want to delete the Kobo Token?" msgstr "Você realmente quer excluir o Kobo Token?" -#: cps/admin.py:260 +#: cps/admin.py:520 msgid "Do you really want to delete this domain?" msgstr "Você realmente quer excluir este domínio?" -#: cps/admin.py:262 +#: cps/admin.py:522 msgid "Do you really want to delete this user?" msgstr "Você realmente quer excluir este usuário?" -#: cps/admin.py:264 cps/templates/shelf.html:90 +#: cps/admin.py:524 cps/templates/shelf.html:90 msgid "Are you sure you want to delete this shelf?" msgstr "Tem certeza que quer apagar essa estante?" -#: cps/admin.py:510 cps/admin.py:516 cps/admin.py:526 cps/admin.py:536 -#: cps/templates/modal_dialogs.html:29 +#: cps/admin.py:526 +#, fuzzy +msgid "Are you sure you want to change locales of selected user(s)?" +msgstr "Tem certeza que quer apagar essa estante?" + +#: cps/admin.py:528 +msgid "Are you sure you want to change visible book languages for selected user(s)?" +msgstr "" + +#: cps/admin.py:530 +msgid "Are you sure you want to change the selected role for the selected user(s)?" +msgstr "" + +#: cps/admin.py:532 +#, fuzzy +msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" +msgstr "Tem certeza que quer apagar essa estante?" + +#: cps/admin.py:534 +msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:683 +msgid "Tag not found" +msgstr "" + +#: cps/admin.py:695 +msgid "Invalid Action" +msgstr "" + +#: cps/admin.py:800 cps/admin.py:806 cps/admin.py:816 cps/admin.py:826 +#: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:43 msgid "Deny" msgstr "Negar" -#: cps/admin.py:512 cps/admin.py:518 cps/admin.py:528 cps/admin.py:538 -#: cps/templates/modal_dialogs.html:28 +#: cps/admin.py:802 cps/admin.py:808 cps/admin.py:818 cps/admin.py:828 +#: cps/templates/modal_dialogs.html:28 cps/templates/user_table.html:48 msgid "Allow" msgstr "Permita" -#: cps/admin.py:681 +#: cps/admin.py:971 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json não está configurado para aplicativo da web" -#: cps/admin.py:723 +#: cps/admin.py:1016 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "A localização do arquivo de log não é válida, digite o caminho correto" -#: cps/admin.py:729 +#: cps/admin.py:1022 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "A localização do arquivo de log de acesso não é válida, digite o caminho correto" -#: cps/admin.py:738 +#: cps/admin.py:1052 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "Digite um provedor LDAP, porta, DN e identificador de objeto do usuário" -#: cps/admin.py:752 cps/admin.py:760 +#: cps/admin.py:1067 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "O filtro de objeto de grupo LDAP precisa ter um identificador de formato \"%s\"" -#: cps/admin.py:755 cps/admin.py:763 +#: cps/admin.py:1070 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "Filtro de objeto de grupo LDAP tem parênteses incomparáveis" -#: cps/admin.py:768 +#: cps/admin.py:1075 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "O filtro de objeto de usuário LDAP precisa ter um identificador de formato \"%s\"" -#: cps/admin.py:771 +#: cps/admin.py:1078 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "Filtro de objeto de usuário LDAP tem parênteses incomparáveis" -#: cps/admin.py:779 +#: cps/admin.py:1086 #, python-format msgid "LDAP Member User Filter needs to Have One \"%s\" Format Identifier" msgstr "O filtro de usuário membro do LDAP precisa ter um identificador de formato \"%s\"" -#: cps/admin.py:782 +#: cps/admin.py:1089 msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "Filtro de usuário de membro LDAP tem parênteses incomparáveis" -#: cps/admin.py:790 +#: cps/admin.py:1097 msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" msgstr "LDAP CACertificate, Certificados ou chave de localização não é válida, Insira o caminho correto" -#: cps/admin.py:841 +#: cps/admin.py:1123 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "A localização do arquivo-chave não é válida, por favor insira o caminho correto" -#: cps/admin.py:847 +#: cps/admin.py:1129 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "A localização do arquivo de certificação não é válida, digite o caminho correto" -#: cps/admin.py:917 cps/admin.py:1024 cps/admin.py:1047 cps/admin.py:1168 -#: cps/shelf.py:102 cps/shelf.py:159 cps/shelf.py:200 cps/shelf.py:261 -#: cps/shelf.py:314 cps/shelf.py:348 cps/shelf.py:418 +#: cps/admin.py:1200 cps/admin.py:1303 cps/admin.py:1395 cps/admin.py:1461 +#: cps/shelf.py:103 cps/shelf.py:163 cps/shelf.py:206 cps/shelf.py:269 +#: cps/shelf.py:325 cps/shelf.py:360 cps/shelf.py:431 msgid "Settings DB is not Writeable" msgstr "O banco de dados de configurações não é gravável" -#: cps/admin.py:929 +#: cps/admin.py:1212 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "A localização do banco de dados não é válida, digite o caminho correto" -#: cps/admin.py:933 +#: cps/admin.py:1216 msgid "DB is not Writeable" msgstr "DB não é gravável" -#: cps/admin.py:972 +#: cps/admin.py:1256 msgid "Basic Configuration" msgstr "Configuração Básica" -#: cps/admin.py:987 cps/web.py:1358 +#: cps/admin.py:1272 cps/web.py:1417 msgid "Please fill out all fields!" msgstr "Por favor, preencha todos os campos!" -#: cps/admin.py:990 cps/admin.py:1002 cps/admin.py:1008 cps/admin.py:1138 -msgid "Add new user" -msgstr "Adicionar novo usuário" - -#: cps/admin.py:999 cps/web.py:1496 +#: cps/admin.py:1280 msgid "E-mail is not from valid domain" msgstr "O e-mail não é de um domínio válido" -#: cps/admin.py:1006 cps/admin.py:1021 -msgid "Found an existing account for this e-mail address or nickname." -msgstr "Encontrei uma conta existente para este endereço de e-mail ou apelido." +#: cps/admin.py:1284 cps/admin.py:1414 +msgid "Add new user" +msgstr "Adicionar novo usuário" -#: cps/admin.py:1017 +#: cps/admin.py:1293 #, python-format msgid "User '%(user)s' created" msgstr "Usuário '%(user)s' criado" -#: cps/admin.py:1031 +#: cps/admin.py:1299 +#, fuzzy +msgid "Found an existing account for this e-mail address or name." +msgstr "Encontrei uma conta existente para este endereço de e-mail ou apelido." + +#: cps/admin.py:1312 #, python-format msgid "User '%(nick)s' deleted" msgstr "Usuário '%(nick)s' excluído" -#: cps/admin.py:1034 +#: cps/admin.py:1314 cps/admin.py:1315 +msgid "Can't delete Guest User" +msgstr "" + +#: cps/admin.py:1318 msgid "No admin user remaining, can't delete user" msgstr "Nenhum usuário administrador restante, não é possível excluir o usuário" -#: cps/admin.py:1041 -#, python-format -msgid "User '%(nick)s' updated" -msgstr "Usuário '%(nick)s' atualizado" - -#: cps/admin.py:1044 -msgid "An unknown error occured." -msgstr "Ocorreu um erro desconhecido." - -#: cps/admin.py:1056 -msgid "No admin user remaining, can't remove admin role" -msgstr "Nenhum usuário administrador restante, não pode remover a função de administrador" - -#: cps/admin.py:1092 cps/web.py:1554 -msgid "Found an existing account for this e-mail address." -msgstr "Encontrado uma conta existente para este endereço de e-mail." - -#: cps/admin.py:1101 cps/admin.py:1115 cps/admin.py:1209 cps/web.py:1516 +#: cps/admin.py:1383 cps/admin.py:1504 #, python-format msgid "Edit User %(nick)s" msgstr "Editar usuário %(nick)s" -#: cps/admin.py:1107 cps/web.py:1509 -msgid "This username is already taken" -msgstr "Este nome de usuário já está registrado" +#: cps/admin.py:1387 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "Usuário '%(nick)s' atualizado" -#: cps/admin.py:1147 cps/templates/admin.html:78 +#: cps/admin.py:1391 +#, fuzzy +msgid "An unknown error occurred." +msgstr "Ocorreu um erro desconhecido." + +#: cps/admin.py:1423 cps/templates/admin.html:94 msgid "Edit E-mail Server Settings" msgstr "Editar configurações do servidor de e-mail" -#: cps/admin.py:1175 +#: cps/admin.py:1442 +msgid "G-Mail Account Verification Successful" +msgstr "" + +#: cps/admin.py:1468 #, python-format msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" msgstr "" -#: cps/admin.py:1178 +#: cps/admin.py:1471 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Ocorreu um erro ao enviar o e-mail de teste: %(res)s" -#: cps/admin.py:1180 +#: cps/admin.py:1473 msgid "Please configure your e-mail address first..." msgstr "Por favor, configure seu endereço de e-mail primeiro..." -#: cps/admin.py:1182 +#: cps/admin.py:1475 msgid "E-mail server settings updated" msgstr "Atualização das configurações do servidor de e-mail" -#: cps/admin.py:1193 -msgid "User not found" -msgstr "Usuário não encontrado" - -#: cps/admin.py:1220 +#: cps/admin.py:1516 #, python-format msgid "Password for user %(user)s reset" msgstr "Senha para redefinição do usuário %(user)s" -#: cps/admin.py:1223 cps/web.py:1388 cps/web.py:1452 +#: cps/admin.py:1519 cps/web.py:1442 cps/web.py:1503 msgid "An unknown error occurred. Please try again later." msgstr "Ocorreu um erro desconhecido. Por favor, tente novamente mais tarde." -#: cps/admin.py:1226 cps/web.py:1320 +#: cps/admin.py:1522 cps/web.py:1382 msgid "Please configure the SMTP mail settings first..." msgstr "Por favor, configure primeiro as configurações de correio SMTP..." -#: cps/admin.py:1237 +#: cps/admin.py:1533 msgid "Logfile viewer" msgstr "visualizador de arquivo de registro" -#: cps/admin.py:1303 +#: cps/admin.py:1599 msgid "Requesting update package" msgstr "Solicitação de pacote de atualização" -#: cps/admin.py:1304 +#: cps/admin.py:1600 msgid "Downloading update package" msgstr "Download do pacote de atualização" -#: cps/admin.py:1305 +#: cps/admin.py:1601 msgid "Unzipping update package" msgstr "Descompactação de pacote de atualização" -#: cps/admin.py:1306 +#: cps/admin.py:1602 msgid "Replacing files" msgstr "Substituição de arquivos" -#: cps/admin.py:1307 +#: cps/admin.py:1603 msgid "Database connections are closed" msgstr "As ligações à base de dados estão fechadas" -#: cps/admin.py:1308 +#: cps/admin.py:1604 msgid "Stopping server" msgstr "Parar servidor" -#: cps/admin.py:1309 +#: cps/admin.py:1605 msgid "Update finished, please press okay and reload page" msgstr "Atualização concluída, pressione okay e recarregue a página" -#: cps/admin.py:1310 cps/admin.py:1311 cps/admin.py:1312 cps/admin.py:1313 -#: cps/admin.py:1314 +#: cps/admin.py:1606 cps/admin.py:1607 cps/admin.py:1608 cps/admin.py:1609 +#: cps/admin.py:1610 msgid "Update failed:" msgstr "Atualização falhou:" -#: cps/admin.py:1310 cps/updater.py:337 cps/updater.py:532 cps/updater.py:534 +#: cps/admin.py:1606 cps/updater.py:356 cps/updater.py:566 cps/updater.py:568 msgid "HTTP Error" msgstr "Erro HTTP" -#: cps/admin.py:1311 cps/updater.py:339 cps/updater.py:536 +#: cps/admin.py:1607 cps/updater.py:358 cps/updater.py:570 msgid "Connection error" msgstr "Erro de conexão" -#: cps/admin.py:1312 cps/updater.py:341 cps/updater.py:538 +#: cps/admin.py:1608 cps/updater.py:360 cps/updater.py:572 msgid "Timeout while establishing connection" msgstr "Tempo limite durante o estabelecimento da conexão" -#: cps/admin.py:1313 cps/updater.py:343 cps/updater.py:540 +#: cps/admin.py:1609 cps/updater.py:362 cps/updater.py:574 msgid "General error" msgstr "Erro geral" -#: cps/admin.py:1314 +#: cps/admin.py:1610 msgid "Update File Could Not be Saved in Temp Dir" msgstr "Arquivo de atualização não pôde ser salvo no diretório temporário" -#: cps/admin.py:1376 +#: cps/admin.py:1671 msgid "Failed to Create at Least One LDAP User" msgstr "Falha na criação no mínimo de um usuário LDAP" -#: cps/admin.py:1389 +#: cps/admin.py:1684 #, python-format msgid "Error: %(ldaperror)s" msgstr "Erro: %(ldaperror)s" -#: cps/admin.py:1393 +#: cps/admin.py:1688 msgid "Error: No user returned in response of LDAP server" msgstr "Erro: Nenhum usuário retornado em resposta do servidor LDAP" -#: cps/admin.py:1426 +#: cps/admin.py:1721 msgid "At Least One LDAP User Not Found in Database" msgstr "No mínimo um usuário LDAP não encontrado no banco de dados" -#: cps/admin.py:1428 +#: cps/admin.py:1723 msgid "{} User Successfully Imported" msgstr "{} Usuário Importado com Sucesso" @@ -342,98 +438,98 @@ msgstr "não configurado" msgid "Execution permissions missing" msgstr "Faltam as permissões de execução" -#: cps/editbooks.py:267 cps/editbooks.py:269 +#: cps/editbooks.py:294 cps/editbooks.py:296 msgid "Book Format Successfully Deleted" msgstr "Formato do Livro Eliminado com Sucesso" -#: cps/editbooks.py:276 cps/editbooks.py:278 +#: cps/editbooks.py:303 cps/editbooks.py:305 msgid "Book Successfully Deleted" msgstr "Livro Eliminado com Sucesso" -#: cps/editbooks.py:325 cps/editbooks.py:646 cps/web.py:1598 cps/web.py:1634 -#: cps/web.py:1705 +#: cps/editbooks.py:361 cps/editbooks.py:724 cps/web.py:1627 cps/web.py:1663 +#: cps/web.py:1734 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Erro ao abrir o eBook. O arquivo não existe ou o arquivo não é acessível" -#: cps/editbooks.py:359 +#: cps/editbooks.py:395 msgid "edit metadata" msgstr "editar metadados" -#: cps/editbooks.py:434 +#: cps/editbooks.py:473 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s não é um idioma válido" -#: cps/editbooks.py:556 cps/editbooks.py:905 +#: cps/editbooks.py:595 cps/editbooks.py:936 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "A extensão de arquivo '%(ext)s' não pode ser enviada para este servidor" -#: cps/editbooks.py:560 cps/editbooks.py:909 +#: cps/editbooks.py:599 cps/editbooks.py:940 msgid "File to be uploaded must have an extension" msgstr "O arquivo a ser carregado deve ter uma extensão" -#: cps/editbooks.py:572 +#: cps/editbooks.py:611 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Falha ao criar o caminho %(path)s (Permission denied)." -#: cps/editbooks.py:577 +#: cps/editbooks.py:616 #, python-format msgid "Failed to store file %(file)s." msgstr "Falha ao armazenar o arquivo %(file)s." -#: cps/editbooks.py:595 cps/editbooks.py:972 cps/web.py:1559 +#: cps/editbooks.py:634 cps/editbooks.py:1027 cps/web.py:1588 #, python-format msgid "Database error: %(error)s." msgstr "Erro de banco de dados: %(error)s." -#: cps/editbooks.py:599 +#: cps/editbooks.py:638 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Formato de arquivo %(ext)s adicionado a %(book)s" -#: cps/editbooks.py:726 +#: cps/editbooks.py:775 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "Os identificadores não são sensíveis a maiúsculas ou minúsculas, mas sim a maiúsculas e minúsculas" -#: cps/editbooks.py:763 +#: cps/editbooks.py:807 msgid "Metadata successfully updated" msgstr "Metadados atualizados com sucesso" -#: cps/editbooks.py:772 +#: cps/editbooks.py:816 msgid "Error editing book, please check logfile for details" msgstr "Livro de edição de erros, por favor verifique o ficheiro de registo para mais detalhes" -#: cps/editbooks.py:810 +#: cps/editbooks.py:854 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "O livro carregado provavelmente existe na biblioteca, considere mudar antes de carregar novo: " -#: cps/editbooks.py:917 +#: cps/editbooks.py:948 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "O arquivo %(filename)s não pôde ser salvo no diretório temporário" -#: cps/editbooks.py:947 +#: cps/editbooks.py:967 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "Falha ao mover arquivo de capa %(file)s: %(error)s" -#: cps/editbooks.py:958 +#: cps/editbooks.py:1013 #, python-format msgid "File %(file)s uploaded" msgstr "Arquivo %(file)s enviado" -#: cps/editbooks.py:984 +#: cps/editbooks.py:1039 msgid "Source or destination format for conversion missing" msgstr "Falta o formato de origem ou destino para a conversão" -#: cps/editbooks.py:992 +#: cps/editbooks.py:1047 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Livro enfileirado com sucesso para conversão em %(book_format)s" -#: cps/editbooks.py:996 +#: cps/editbooks.py:1051 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Ocorreu um erro ao converter este livro: %(res)s" @@ -541,55 +637,68 @@ msgstr "Arquivo %(file)s não encontrado no Google Drive" msgid "Book path %(path)s not found on Google Drive" msgstr "Caminho do livro %(path)s não encontrado no Google Drive" -#: cps/helper.py:576 +#: cps/helper.py:511 +#, fuzzy +msgid "Found an existing account for this e-mail address" +msgstr "Encontrado uma conta existente para este endereço de e-mail." + +#: cps/helper.py:519 +msgid "This username is already taken" +msgstr "Este nome de usuário já está registrado" + +#: cps/helper.py:529 +msgid "Invalid e-mail address format" +msgstr "Formato de endereço de e-mail inválido" + +#: cps/helper.py:602 msgid "Error Downloading Cover" msgstr "Erro ao Baixar a capa" -#: cps/helper.py:579 +#: cps/helper.py:605 msgid "Cover Format Error" msgstr "Erro de Formato da Capa" -#: cps/helper.py:589 +#: cps/helper.py:615 msgid "Failed to create path for cover" msgstr "Falha em criar caminho para a capa" -#: cps/helper.py:605 +#: cps/helper.py:631 msgid "Cover-file is not a valid image file, or could not be stored" msgstr "O arquivo de capa não é um arquivo de imagem válido, ou não pôde ser armazenado" -#: cps/helper.py:616 +#: cps/helper.py:642 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" msgstr "Apenas ficheiros jpg/jpeg/png/webp/bmp são suportados como arquivos de capa" -#: cps/helper.py:629 +#: cps/helper.py:655 msgid "Only jpg/jpeg files are supported as coverfile" msgstr "Apenas arquivos jpg/jpeg são suportados como arquivos de capa" -#: cps/helper.py:680 +#: cps/helper.py:707 msgid "Unrar binary file not found" msgstr "Unrar arquivo binário não encontrado" -#: cps/helper.py:694 +#: cps/helper.py:721 msgid "Error excecuting UnRar" msgstr "Erro excecutando UnRar" -#: cps/helper.py:743 +#: cps/helper.py:769 msgid "Waiting" msgstr "Aguardando" -#: cps/helper.py:745 +#: cps/helper.py:771 msgid "Failed" msgstr "Falha" -#: cps/helper.py:747 +#: cps/helper.py:773 msgid "Started" msgstr "Iniciado em" -#: cps/helper.py:749 +#: cps/helper.py:775 msgid "Finished" msgstr "Concluído" -#: cps/helper.py:751 +#: cps/helper.py:777 msgid "Unknown Status" msgstr "Status Desconhecido" @@ -601,65 +710,82 @@ msgstr "Por favor, acesse o calibre-web de um host não local para obter um api_ msgid "Kobo Setup" msgstr "Configuração Kobo" -#: cps/oauth_bb.py:76 +#: cps/oauth_bb.py:78 #, python-format msgid "Register with %(provider)s" msgstr "Registre-se com %(provider)s" -#: cps/oauth_bb.py:137 cps/remotelogin.py:133 cps/web.py:1424 +#: cps/oauth_bb.py:139 cps/remotelogin.py:133 cps/web.py:1475 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "agora você está logado como: '%(nickname)s'" -#: cps/oauth_bb.py:147 +#: cps/oauth_bb.py:149 #, python-format msgid "Link to %(oauth)s Succeeded" msgstr "Link para %(oauth)s bem-sucedido" -#: cps/oauth_bb.py:153 +#: cps/oauth_bb.py:156 msgid "Login failed, No User Linked With OAuth Account" msgstr "Login falhou, nenhum utilizador ligado a uma conta OAuth" -#: cps/oauth_bb.py:195 +#: cps/oauth_bb.py:198 #, python-format msgid "Unlink to %(oauth)s Succeeded" msgstr "Desvincular para %(oauth)s bem-sucedido" -#: cps/oauth_bb.py:199 +#: cps/oauth_bb.py:203 #, python-format msgid "Unlink to %(oauth)s Failed" msgstr "Falha ao desvincular para %(oauth)s" -#: cps/oauth_bb.py:202 +#: cps/oauth_bb.py:206 #, python-format msgid "Not Linked to %(oauth)s" msgstr "Não vinculado a %(oauth)s" -#: cps/oauth_bb.py:259 +#: cps/oauth_bb.py:262 msgid "Failed to log in with GitHub." msgstr "Falha no login com o GitHub." -#: cps/oauth_bb.py:264 +#: cps/oauth_bb.py:268 msgid "Failed to fetch user info from GitHub." msgstr "Falha na busca de informações do usuário no GitHub." -#: cps/oauth_bb.py:275 +#: cps/oauth_bb.py:280 msgid "Failed to log in with Google." msgstr "Falha no login com o Google." -#: cps/oauth_bb.py:280 +#: cps/oauth_bb.py:286 msgid "Failed to fetch user info from Google." msgstr "Falha em ir buscar informações de usuário ao Google." -#: cps/oauth_bb.py:312 +#: cps/oauth_bb.py:333 msgid "GitHub Oauth error, please retry later." msgstr "Erro de GitHub Oauth, por favor tente novamente mais tarde." -#: cps/oauth_bb.py:331 +#: cps/oauth_bb.py:336 +msgid "GitHub Oauth error: {}" +msgstr "" + +#: cps/oauth_bb.py:357 msgid "Google Oauth error, please retry later." msgstr "Erro no Google Oauth, por favor tente novamente mais tarde." -#: cps/remotelogin.py:65 cps/web.py:1471 +#: cps/oauth_bb.py:360 +msgid "Google Oauth error: {}" +msgstr "" + +#: cps/opds.py:110 cps/opds.py:199 cps/opds.py:276 cps/opds.py:328 +#: cps/templates/grid.html:14 cps/templates/list.html:14 +msgid "All" +msgstr "Todos" + +#: cps/opds.py:385 +msgid "{} Stars" +msgstr "" + +#: cps/remotelogin.py:65 cps/web.py:1522 msgid "login" msgstr "login" @@ -675,7 +801,7 @@ msgstr "O Token expirou" msgid "Success! Please return to your device" msgstr "Sucesso! Por favor, volte ao seu aparelho" -#: cps/render_template.py:39 cps/web.py:415 +#: cps/render_template.py:39 cps/web.py:414 msgid "Books" msgstr "Livros" @@ -683,7 +809,7 @@ msgstr "Livros" msgid "Show recent books" msgstr "Mostrar livros recentes" -#: cps/render_template.py:42 cps/templates/index.xml:18 +#: cps/render_template.py:42 cps/templates/index.xml:25 msgid "Hot Books" msgstr "Livros Quentes" @@ -691,127 +817,130 @@ msgstr "Livros Quentes" msgid "Show Hot Books" msgstr "Mostrar Livros Quentes" -#: cps/render_template.py:45 +#: cps/render_template.py:46 cps/render_template.py:51 msgid "Downloaded Books" msgstr "Livros descarregados" -#: cps/render_template.py:47 +#: cps/render_template.py:48 cps/render_template.py:53 +#: cps/templates/user_table.html:151 msgid "Show Downloaded Books" msgstr "Mostrar Livros Descarregados" -#: cps/render_template.py:50 cps/templates/index.xml:25 cps/web.py:425 +#: cps/render_template.py:56 cps/templates/index.xml:32 cps/web.py:424 msgid "Top Rated Books" msgstr "Livros Mais Bem Avaliados" -#: cps/render_template.py:52 +#: cps/render_template.py:58 cps/templates/user_table.html:145 msgid "Show Top Rated Books" msgstr "Mostrar os melhores livros avaliados" -#: cps/render_template.py:53 cps/templates/index.xml:47 -#: cps/templates/index.xml:51 cps/web.py:642 +#: cps/render_template.py:59 cps/templates/index.xml:54 +#: cps/templates/index.xml:58 cps/web.py:650 msgid "Read Books" msgstr "Ler Livros" -#: cps/render_template.py:55 +#: cps/render_template.py:61 msgid "Show read and unread" msgstr "Mostrar lido e não lido" -#: cps/render_template.py:57 cps/templates/index.xml:54 -#: cps/templates/index.xml:58 cps/web.py:645 +#: cps/render_template.py:63 cps/templates/index.xml:61 +#: cps/templates/index.xml:65 cps/web.py:653 msgid "Unread Books" msgstr "Livros Não Lidos" -#: cps/render_template.py:59 +#: cps/render_template.py:65 msgid "Show unread" msgstr "Mostrar não lido" -#: cps/render_template.py:60 +#: cps/render_template.py:66 msgid "Discover" msgstr "Descubra" -#: cps/render_template.py:62 +#: cps/render_template.py:68 cps/templates/user_table.html:143 +#: cps/templates/user_table.html:146 msgid "Show random books" msgstr "Mostrar livros aleatórios" -#: cps/render_template.py:63 cps/templates/book_table.html:50 -#: cps/templates/index.xml:76 cps/web.py:950 +#: cps/render_template.py:69 cps/templates/book_table.html:51 +#: cps/templates/index.xml:83 cps/web.py:1024 msgid "Categories" msgstr "Categorias" -#: cps/render_template.py:65 +#: cps/render_template.py:71 cps/templates/user_table.html:142 msgid "Show category selection" msgstr "Mostrar seleção de categoria" -#: cps/render_template.py:66 cps/templates/book_edit.html:84 -#: cps/templates/book_table.html:51 cps/templates/index.xml:83 -#: cps/templates/search_form.html:62 cps/web.py:854 cps/web.py:864 +#: cps/render_template.py:72 cps/templates/book_edit.html:84 +#: cps/templates/book_table.html:52 cps/templates/index.xml:90 +#: cps/templates/search_form.html:62 cps/web.py:921 cps/web.py:931 msgid "Series" msgstr "Série" -#: cps/render_template.py:68 +#: cps/render_template.py:74 cps/templates/user_table.html:141 msgid "Show series selection" msgstr "Mostrar selecção de séries" -#: cps/render_template.py:69 cps/templates/book_table.html:49 -#: cps/templates/index.xml:62 +#: cps/render_template.py:75 cps/templates/book_table.html:50 +#: cps/templates/index.xml:69 msgid "Authors" msgstr "Autores" -#: cps/render_template.py:71 +#: cps/render_template.py:77 cps/templates/user_table.html:144 msgid "Show author selection" msgstr "Mostrar selecção de autor" -#: cps/render_template.py:73 cps/templates/book_table.html:55 -#: cps/templates/index.xml:69 cps/web.py:833 +#: cps/render_template.py:79 cps/templates/book_table.html:56 +#: cps/templates/index.xml:76 cps/web.py:898 msgid "Publishers" msgstr "Editores" -#: cps/render_template.py:75 +#: cps/render_template.py:81 cps/templates/user_table.html:147 msgid "Show publisher selection" msgstr "Mostrar selecção de editores" -#: cps/render_template.py:76 cps/templates/book_table.html:53 -#: cps/templates/index.xml:90 cps/templates/search_form.html:100 cps/web.py:929 +#: cps/render_template.py:82 cps/templates/book_table.html:54 +#: cps/templates/index.xml:97 cps/templates/search_form.html:100 +#: cps/web.py:1001 msgid "Languages" msgstr "Idiomas" -#: cps/render_template.py:79 +#: cps/render_template.py:85 cps/templates/user_table.html:139 msgid "Show language selection" msgstr "Mostrar seleção de idioma" -#: cps/render_template.py:80 cps/templates/index.xml:97 +#: cps/render_template.py:86 cps/templates/index.xml:104 msgid "Ratings" msgstr "Classificações" -#: cps/render_template.py:82 +#: cps/render_template.py:88 cps/templates/user_table.html:148 msgid "Show ratings selection" msgstr "Mostrar selecção de classificações" -#: cps/render_template.py:83 cps/templates/index.xml:105 +#: cps/render_template.py:89 cps/templates/index.xml:112 msgid "File formats" msgstr "Formatos de arquivo" -#: cps/render_template.py:85 +#: cps/render_template.py:91 cps/templates/user_table.html:149 msgid "Show file formats selection" msgstr "Mostrar seleção de formatos de arquivo" -#: cps/render_template.py:87 cps/web.py:669 +#: cps/render_template.py:93 cps/web.py:677 msgid "Archived Books" msgstr "Livros Arquivados" -#: cps/render_template.py:89 +#: cps/render_template.py:95 cps/templates/user_table.html:150 msgid "Show archived books" msgstr "Mostrar livros arquivados" -#: cps/render_template.py:91 cps/web.py:743 +#: cps/render_template.py:97 cps/web.py:751 msgid "Books List" msgstr "Lista de Livros" -#: cps/render_template.py:93 +#: cps/render_template.py:99 cps/templates/user_table.html:152 msgid "Show Books List" msgstr "Mostrar Lista de Livros" -#: cps/shelf.py:69 cps/shelf.py:122 +#: cps/shelf.py:69 cps/shelf.py:124 msgid "Invalid shelf specified" msgstr "Estante inválida especificada" @@ -825,303 +954,307 @@ msgstr "Desculpe, você não tem permissão para adicionar um livro à estante: msgid "Book is already part of the shelf: %(shelfname)s" msgstr "O livro já faz parte da estante: %(shelfname)s" -#: cps/shelf.py:108 +#: cps/shelf.py:110 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "O livro foi adicionado à estante: %(sname)s" -#: cps/shelf.py:126 +#: cps/shelf.py:129 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Você não tem permissão para adicionar um livro à estante: %(name)s" -#: cps/shelf.py:144 +#: cps/shelf.py:147 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "Os livros já fazem parte da estante: %(name)s" -#: cps/shelf.py:156 +#: cps/shelf.py:159 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "Livros foram adicionados à estante: %(sname)s" -#: cps/shelf.py:161 +#: cps/shelf.py:166 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "Não foi possível adicionar livros à estante: %(sname)s" -#: cps/shelf.py:206 +#: cps/shelf.py:212 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "O livro foi removido da estante: %(sname)s" -#: cps/shelf.py:214 +#: cps/shelf.py:221 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Desculpe, você não tem permissão para remover um livro desta estante: %(sname)s" -#: cps/shelf.py:224 cps/templates/layout.html:140 +#: cps/shelf.py:231 cps/templates/layout.html:140 msgid "Create a Shelf" msgstr "Crie uma estante" -#: cps/shelf.py:231 +#: cps/shelf.py:238 msgid "Edit a shelf" msgstr "Editar uma estante" -#: cps/shelf.py:249 +#: cps/shelf.py:256 #, python-format msgid "Shelf %(title)s created" msgstr "Estante %(title)s criada" -#: cps/shelf.py:252 +#: cps/shelf.py:259 #, python-format msgid "Shelf %(title)s changed" msgstr "Estante %(title)s alterada" -#: cps/shelf.py:265 +#: cps/shelf.py:273 msgid "There was an error" msgstr "Houve um erro" -#: cps/shelf.py:281 +#: cps/shelf.py:290 #, python-format msgid "A public shelf with the name '%(title)s' already exists." msgstr "Já existe uma estante pública com o nome '%(title)s' ." -#: cps/shelf.py:291 +#: cps/shelf.py:301 #, python-format msgid "A private shelf with the name '%(title)s' already exists." msgstr "Já existe uma estante privada com o nome'%(title)s' ." -#: cps/shelf.py:358 +#: cps/shelf.py:370 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Alterar ordem da Estante: '%(name)s'" -#: cps/shelf.py:423 +#: cps/shelf.py:436 #, python-format msgid "Shelf: '%(name)s'" msgstr "Estante: '%(name)s'" -#: cps/shelf.py:427 +#: cps/shelf.py:440 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Erro ao abrir estante. A estante não existe ou não está acessível" -#: cps/updater.py:355 cps/updater.py:366 cps/updater.py:418 cps/updater.py:432 +#: cps/updater.py:374 cps/updater.py:385 cps/updater.py:485 cps/updater.py:500 msgid "Unexpected data while reading update information" msgstr "Dados inesperados ao ler informações de atualização" -#: cps/updater.py:362 cps/updater.py:424 +#: cps/updater.py:381 cps/updater.py:492 msgid "No update available. You already have the latest version installed" msgstr "Não há atualização disponível. Você já tem a última versão instalada" -#: cps/updater.py:379 +#: cps/updater.py:399 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "Uma nova atualização está disponível. Clique no botão abaixo para atualizar para a versão mais recente." -#: cps/updater.py:397 +#: cps/updater.py:417 msgid "Could not fetch update information" msgstr "Não consegui obter informações actualizadas" -#: cps/updater.py:411 -msgid "No release information available" -msgstr "Não há informações de lançamento disponíveis" +#: cps/updater.py:427 +msgid "Click on the button below to update to the latest stable version." +msgstr "Clique no botão abaixo para atualizar para a última versão estável." -#: cps/updater.py:468 cps/updater.py:479 cps/updater.py:498 +#: cps/updater.py:436 cps/updater.py:450 cps/updater.py:461 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "Uma nova atualização está disponível. Clique no botão abaixo para atualizar para a versão: %(version)s" -#: cps/updater.py:489 -msgid "Click on the button below to update to the latest stable version." -msgstr "Clique no botão abaixo para atualizar para a última versão estável." +#: cps/updater.py:478 +msgid "No release information available" +msgstr "Não há informações de lançamento disponíveis" -#: cps/templates/index.html:5 cps/web.py:435 +#: cps/templates/index.html:5 cps/web.py:434 msgid "Discover (Random Books)" msgstr "Descobrir (Livros Aleatórios)" -#: cps/web.py:461 +#: cps/web.py:460 msgid "Hot Books (Most Downloaded)" msgstr "Hot Books (Os Mais Descarregados)" -#: cps/web.py:489 +#: cps/web.py:493 #, python-format msgid "Downloaded books by %(user)s" msgstr "Livros baixados por %(user)s" -#: cps/web.py:503 +#: cps/web.py:508 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Oops! O título do livro seleccionado não está disponível. O arquivo não existe ou não é acessível" -#: cps/web.py:517 +#: cps/web.py:522 #, python-format msgid "Author: %(name)s" msgstr "Autor: %(name)s" -#: cps/web.py:531 +#: cps/web.py:537 #, python-format msgid "Publisher: %(name)s" msgstr "Editor: %(name)s" -#: cps/web.py:544 +#: cps/web.py:550 #, python-format msgid "Series: %(serie)s" msgstr "Série: %(serie)s" -#: cps/web.py:557 +#: cps/web.py:563 #, python-format msgid "Rating: %(rating)s stars" msgstr "Avaliação: %(rating)s estrelas" -#: cps/web.py:570 +#: cps/web.py:576 #, python-format msgid "File format: %(format)s" msgstr "Formato do arquivo: %(format)s" -#: cps/web.py:584 +#: cps/web.py:592 #, python-format msgid "Category: %(name)s" msgstr "Categoria: %(name)s" -#: cps/web.py:603 +#: cps/web.py:611 #, python-format msgid "Language: %(name)s" msgstr "Idioma: %(name)s" -#: cps/web.py:633 +#: cps/web.py:641 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "A coluna personalizada No.%(column)d não existe no banco de dados do calibre" -#: cps/templates/layout.html:56 cps/web.py:703 cps/web.py:1248 +#: cps/templates/layout.html:56 cps/web.py:711 cps/web.py:1314 msgid "Advanced Search" msgstr "Pesquisa Avançada" #: cps/templates/book_edit.html:214 cps/templates/feed.xml:33 #: cps/templates/index.xml:11 cps/templates/layout.html:45 #: cps/templates/layout.html:48 cps/templates/search_form.html:194 -#: cps/web.py:715 cps/web.py:987 +#: cps/web.py:723 cps/web.py:1061 msgid "Search" msgstr "Pesquisa" -#: cps/web.py:882 +#: cps/templates/admin.html:16 cps/web.py:876 +msgid "Downloads" +msgstr "Downloads" + +#: cps/web.py:952 msgid "Ratings list" msgstr "Lista de classificações" -#: cps/web.py:901 +#: cps/web.py:973 msgid "File formats list" msgstr "Lista de formatos de arquivo" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:964 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1038 msgid "Tasks" msgstr "Tarefas" -#: cps/web.py:1108 +#: cps/web.py:1182 msgid "Published after " msgstr "Publicado depois de " -#: cps/web.py:1115 +#: cps/web.py:1189 msgid "Published before " msgstr "Publicado antes de " -#: cps/web.py:1145 +#: cps/web.py:1211 #, python-format msgid "Rating <= %(rating)s" msgstr "Avaliação <= %(rating)s" -#: cps/web.py:1147 +#: cps/web.py:1213 #, python-format msgid "Rating >= %(rating)s" msgstr "Avaliação >= %(rating)s" -#: cps/web.py:1149 +#: cps/web.py:1215 #, python-format msgid "Read Status = %(status)s" msgstr "Status de leitura = %(status)s" -#: cps/web.py:1325 +#: cps/web.py:1387 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Livro enfileirado com sucesso para envio para %(kindlemail)s" -#: cps/web.py:1329 +#: cps/web.py:1391 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Ups! Ocorreu um erro ao enviar este livro: %(res)s" -#: cps/web.py:1331 +#: cps/web.py:1393 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Por favor, atualize seu perfil com um endereço de e-mail válido para Kindle." -#: cps/web.py:1348 +#: cps/web.py:1410 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "O servidor de E-Mail não está configurado, por favor contacte o seu administrador!" -#: cps/web.py:1349 cps/web.py:1359 cps/web.py:1366 cps/web.py:1389 -#: cps/web.py:1393 cps/web.py:1398 cps/web.py:1402 +#: cps/web.py:1411 cps/web.py:1418 cps/web.py:1424 cps/web.py:1443 +#: cps/web.py:1447 cps/web.py:1453 msgid "register" msgstr "cadastro" -#: cps/web.py:1364 -msgid "Invalid e-mail address format" -msgstr "Formato de endereço de e-mail inválido" - -#: cps/web.py:1391 +#: cps/web.py:1445 msgid "Your e-mail is not allowed to register" msgstr "Seu e-mail não tem permissão para registrar" -#: cps/web.py:1394 +#: cps/web.py:1448 msgid "Confirmation e-mail was send to your e-mail account." msgstr "O e-mail de confirmação foi enviado para a sua conta de e-mail." -#: cps/web.py:1397 -msgid "This username or e-mail address is already in use." -msgstr "Este nome de usuário ou endereço de e-mail já está em uso." - -#: cps/web.py:1414 +#: cps/web.py:1465 msgid "Cannot activate LDAP authentication" msgstr "Não é possível ativar a autenticação LDAP" -#: cps/web.py:1431 +#: cps/web.py:1482 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "Login de reserva como:'%(nickname)s', servidor LDAP não acessível ou usuário desconhecido" -#: cps/web.py:1437 +#: cps/web.py:1488 #, python-format msgid "Could not login: %(message)s" msgstr "Não foi possível fazer o login: %(message)s" -#: cps/web.py:1441 cps/web.py:1465 +#: cps/web.py:1492 cps/web.py:1516 msgid "Wrong Username or Password" msgstr "Nome de usuário ou senha incorretos" -#: cps/web.py:1448 +#: cps/web.py:1499 msgid "New Password was send to your email address" msgstr "Nova senha foi enviada para seu endereço de e-mail" -#: cps/web.py:1454 +#: cps/web.py:1505 msgid "Please enter valid username to reset password" msgstr "Por favor, digite um nome de usuário válido para redefinir a senha" -#: cps/web.py:1460 +#: cps/web.py:1511 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Você agora está logado como: '%(nickname)s'" -#: cps/web.py:1498 cps/web.py:1583 +#: cps/web.py:1565 cps/web.py:1612 #, python-format msgid "%(name)s's profile" msgstr "Perfil de %(name)s's" -#: cps/web.py:1550 +#: cps/web.py:1579 msgid "Profile updated" msgstr "Perfil atualizado" -#: cps/web.py:1610 cps/web.py:1613 cps/web.py:1616 cps/web.py:1619 -#: cps/web.py:1626 cps/web.py:1631 +#: cps/web.py:1583 +msgid "Found an existing account for this e-mail address." +msgstr "Encontrado uma conta existente para este endereço de e-mail." + +#: cps/web.py:1639 cps/web.py:1642 cps/web.py:1645 cps/web.py:1648 +#: cps/web.py:1655 cps/web.py:1660 msgid "Read a Book" msgstr "Ler um livro" +#: cps/services/gmail.py:41 +msgid "Found no valid gmail.json file with OAuth information" +msgstr "" + #: cps/tasks/convert.py:114 #, python-format msgid "Calibre ebook-convert %(tool)s not found" @@ -1160,221 +1293,231 @@ msgstr "Calibre falhou com erro: %(error)s" msgid "Users" msgstr "Usuários" -#: cps/templates/admin.html:12 cps/templates/login.html:8 +#: cps/templates/admin.html:13 cps/templates/login.html:8 #: cps/templates/login.html:9 cps/templates/register.html:8 -#: cps/templates/user_edit.html:9 +#: cps/templates/user_edit.html:9 cps/templates/user_table.html:121 msgid "Username" msgstr "Nome de usuário" -#: cps/templates/admin.html:13 cps/templates/register.html:13 -#: cps/templates/user_edit.html:14 +#: cps/templates/admin.html:14 cps/templates/register.html:13 +#: cps/templates/user_edit.html:14 cps/templates/user_table.html:122 msgid "E-mail Address" msgstr "Endereço de e-mail" -#: cps/templates/admin.html:14 cps/templates/user_edit.html:27 +#: cps/templates/admin.html:15 cps/templates/user_edit.html:27 msgid "Send to Kindle E-mail Address" msgstr "Enviar para o endereço de e-mail do Kindle" -#: cps/templates/admin.html:15 -msgid "Downloads" -msgstr "Downloads" - -#: cps/templates/admin.html:16 cps/templates/layout.html:77 +#: cps/templates/admin.html:17 cps/templates/layout.html:77 +#: cps/templates/user_table.html:130 msgid "Admin" msgstr "Admin" -#: cps/templates/admin.html:17 cps/templates/login.html:12 +#: cps/templates/admin.html:18 cps/templates/login.html:12 #: cps/templates/login.html:13 cps/templates/user_edit.html:22 msgid "Password" msgstr "Senha" -#: cps/templates/admin.html:18 cps/templates/layout.html:66 +#: cps/templates/admin.html:19 cps/templates/layout.html:66 +#: cps/templates/user_table.html:132 msgid "Upload" msgstr "Upload" -#: cps/templates/admin.html:19 cps/templates/detail.html:18 +#: cps/templates/admin.html:20 cps/templates/detail.html:18 #: cps/templates/detail.html:27 cps/templates/shelf.html:6 +#: cps/templates/user_table.html:133 msgid "Download" msgstr "Baixar" -#: cps/templates/admin.html:20 +#: cps/templates/admin.html:21 msgid "View Books" msgstr "Ver Livros" -#: cps/templates/admin.html:21 +#: cps/templates/admin.html:22 cps/templates/user_table.html:118 +#: cps/templates/user_table.html:135 msgid "Edit" msgstr "Editar" -#: cps/templates/admin.html:22 cps/templates/book_edit.html:16 -#: cps/templates/book_table.html:57 cps/templates/modal_dialogs.html:63 +#: cps/templates/admin.html:23 cps/templates/book_edit.html:16 +#: cps/templates/book_table.html:58 cps/templates/modal_dialogs.html:63 #: cps/templates/modal_dialogs.html:116 cps/templates/user_edit.html:66 +#: cps/templates/user_table.html:136 msgid "Delete" msgstr "Eliminar" -#: cps/templates/admin.html:23 +#: cps/templates/admin.html:24 msgid "Public Shelf" msgstr "Estante Pública" -#: cps/templates/admin.html:44 +#: cps/templates/admin.html:47 msgid "Add New User" msgstr "Adicionar Novo Usuário" -#: cps/templates/admin.html:46 +#: cps/templates/admin.html:49 msgid "Import LDAP Users" msgstr "Importar usuários LDAP" -#: cps/templates/admin.html:53 +#: cps/templates/admin.html:56 msgid "E-mail Server Settings" msgstr "Configurações do servidor de e-mail" -#: cps/templates/admin.html:57 cps/templates/email_edit.html:11 +#: cps/templates/admin.html:61 cps/templates/email_edit.html:30 msgid "SMTP Hostname" msgstr "SMTP Nome do anfitrião" -#: cps/templates/admin.html:61 cps/templates/email_edit.html:15 +#: cps/templates/admin.html:65 cps/templates/email_edit.html:34 msgid "SMTP Port" msgstr "Porto SMTP" -#: cps/templates/admin.html:65 cps/templates/email_edit.html:19 +#: cps/templates/admin.html:69 cps/templates/email_edit.html:38 msgid "Encryption" msgstr "Criptografia" -#: cps/templates/admin.html:69 cps/templates/email_edit.html:27 +#: cps/templates/admin.html:73 cps/templates/email_edit.html:46 msgid "SMTP Login" msgstr "Login SMTP" -#: cps/templates/admin.html:73 cps/templates/email_edit.html:35 +#: cps/templates/admin.html:77 cps/templates/admin.html:88 +#: cps/templates/email_edit.html:54 msgid "From E-mail" msgstr "Do E-mail" #: cps/templates/admin.html:84 +msgid "E-Mail Service" +msgstr "" + +#: cps/templates/admin.html:85 +msgid "Gmail via Oauth2" +msgstr "" + +#: cps/templates/admin.html:100 msgid "Configuration" msgstr "Configuração" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:103 msgid "Calibre Database Directory" msgstr "Diretório do Banco de Dados de Calibres" -#: cps/templates/admin.html:91 cps/templates/config_edit.html:136 +#: cps/templates/admin.html:107 cps/templates/config_edit.html:136 msgid "Log Level" msgstr "Nível de registo" -#: cps/templates/admin.html:95 +#: cps/templates/admin.html:111 msgid "Port" msgstr "Porto" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:116 msgid "External Port" msgstr "Porto externo" -#: cps/templates/admin.html:107 cps/templates/config_view_edit.html:27 +#: cps/templates/admin.html:123 cps/templates/config_view_edit.html:27 msgid "Books per Page" msgstr "Livros por página" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:127 msgid "Uploads" msgstr "Uploads" -#: cps/templates/admin.html:115 +#: cps/templates/admin.html:131 msgid "Anonymous Browsing" msgstr "Navegação Anónima" -#: cps/templates/admin.html:119 +#: cps/templates/admin.html:135 msgid "Public Registration" msgstr "Inscrição Pública" -#: cps/templates/admin.html:123 +#: cps/templates/admin.html:139 msgid "Magic Link Remote Login" msgstr "Login remoto Magic Link" -#: cps/templates/admin.html:127 +#: cps/templates/admin.html:143 msgid "Reverse Proxy Login" msgstr "Login de Proxy Reversa" -#: cps/templates/admin.html:132 +#: cps/templates/admin.html:148 msgid "Reverse proxy header name" msgstr "Reverter nome do cabeçalho do proxy" -#: cps/templates/admin.html:137 +#: cps/templates/admin.html:153 msgid "Edit Basic Configuration" msgstr "Editar Configuração Básica" -#: cps/templates/admin.html:138 +#: cps/templates/admin.html:154 msgid "Edit UI Configuration" msgstr "Editar configuração da IU" -#: cps/templates/admin.html:143 +#: cps/templates/admin.html:159 msgid "Administration" msgstr "Administração" -#: cps/templates/admin.html:144 +#: cps/templates/admin.html:160 msgid "Download Debug Package" msgstr "Download do Pacote de Depuração" -#: cps/templates/admin.html:145 +#: cps/templates/admin.html:161 msgid "View Logs" msgstr "Ver Logs" -#: cps/templates/admin.html:148 +#: cps/templates/admin.html:164 msgid "Reconnect Calibre Database" msgstr "Reconectar base de dados de calibração" -#: cps/templates/admin.html:149 +#: cps/templates/admin.html:165 msgid "Restart" msgstr "Reinicie" -#: cps/templates/admin.html:150 +#: cps/templates/admin.html:166 msgid "Shutdown" msgstr "Encerramento" -#: cps/templates/admin.html:155 +#: cps/templates/admin.html:171 msgid "Update" msgstr "Atualização" -#: cps/templates/admin.html:159 +#: cps/templates/admin.html:175 msgid "Version" msgstr "Versão" -#: cps/templates/admin.html:160 +#: cps/templates/admin.html:176 msgid "Details" msgstr "Detalhes" -#: cps/templates/admin.html:166 +#: cps/templates/admin.html:182 msgid "Current version" msgstr "Versão atual" -#: cps/templates/admin.html:173 +#: cps/templates/admin.html:189 msgid "Check for Update" msgstr "Verificar Atualizações" -#: cps/templates/admin.html:174 +#: cps/templates/admin.html:190 msgid "Perform Update" msgstr "Realizar Atualizações" -#: cps/templates/admin.html:187 +#: cps/templates/admin.html:203 msgid "Are you sure you want to restart?" msgstr "Tem a certeza que quer recomeçar?" -#: cps/templates/admin.html:192 cps/templates/admin.html:206 -#: cps/templates/admin.html:226 cps/templates/shelf.html:95 +#: cps/templates/admin.html:208 cps/templates/admin.html:222 +#: cps/templates/admin.html:242 cps/templates/shelf.html:95 msgid "OK" msgstr "Ok" -#: cps/templates/admin.html:193 cps/templates/admin.html:207 -#: cps/templates/book_edit.html:192 cps/templates/book_table.html:84 +#: cps/templates/admin.html:209 cps/templates/admin.html:223 +#: cps/templates/book_edit.html:192 cps/templates/book_table.html:85 #: cps/templates/config_edit.html:427 cps/templates/config_view_edit.html:151 -#: cps/templates/email_edit.html:47 cps/templates/modal_dialogs.html:64 -#: cps/templates/modal_dialogs.html:99 cps/templates/modal_dialogs.html:117 +#: cps/templates/modal_dialogs.html:64 cps/templates/modal_dialogs.html:99 +#: cps/templates/modal_dialogs.html:117 cps/templates/modal_dialogs.html:135 #: cps/templates/shelf.html:96 cps/templates/shelf_edit.html:19 #: cps/templates/user_edit.html:132 msgid "Cancel" msgstr "Cancelar" -#: cps/templates/admin.html:205 +#: cps/templates/admin.html:221 msgid "Are you sure you want to shutdown?" msgstr "Tens a certeza que queres fechar?" -#: cps/templates/admin.html:217 +#: cps/templates/admin.html:233 msgid "Updating, please do not reload this page" msgstr "Atualizando, por favor, não recarregue esta página" @@ -1482,6 +1625,7 @@ msgid "Identifier Value" msgstr "Valor do Identificador" #: cps/templates/book_edit.html:72 cps/templates/book_edit.html:289 +#: cps/templates/user_table.html:23 msgid "Remove" msgstr "Remover" @@ -1547,7 +1691,7 @@ msgid "Fetch Metadata" msgstr "Buscar Metadados" #: cps/templates/book_edit.html:191 cps/templates/config_edit.html:424 -#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45 +#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:64 #: cps/templates/shelf_edit.html:17 cps/templates/shelf_order.html:40 #: cps/templates/user_edit.html:130 msgid "Save" @@ -1587,96 +1731,98 @@ msgstr "Erro de busca!" msgid "No Result(s) found! Please try another keyword." msgstr "Nenhum resultado(s) encontrado(s)! Por favor, tente outra palavra-chave." -#: cps/templates/book_table.html:10 cps/templates/book_table.html:52 +#: cps/templates/book_table.html:11 cps/templates/book_table.html:53 +#: cps/templates/user_table.html:13 cps/templates/user_table.html:65 +#: cps/templates/user_table.html:88 msgid "This Field is Required" msgstr "Este campo é obrigatório" -#: cps/templates/book_table.html:23 +#: cps/templates/book_table.html:24 msgid "Merge selected books" msgstr "Fundir livros selecionados" -#: cps/templates/book_table.html:24 +#: cps/templates/book_table.html:25 cps/templates/user_table.html:111 msgid "Remove Selections" msgstr "Remover Seleções" -#: cps/templates/book_table.html:30 +#: cps/templates/book_table.html:31 msgid "Update Title Sort automatically" msgstr "Atualizar a Classificação de Título automaticamente" -#: cps/templates/book_table.html:34 +#: cps/templates/book_table.html:35 msgid "Update Author Sort automatically" msgstr "Atualizar a Classificação do Autor automaticamente" -#: cps/templates/book_table.html:46 +#: cps/templates/book_table.html:47 msgid "Enter Title" msgstr "Digite o título" -#: cps/templates/book_table.html:46 cps/templates/config_view_edit.html:23 +#: cps/templates/book_table.html:47 cps/templates/config_view_edit.html:23 #: cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Título" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Enter Title Sort" msgstr "Digite o título Sort" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Title Sort" msgstr "Título Ordenar" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Enter Author Sort" msgstr "Digite Author Sort" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Author Sort" msgstr "Ordenar Autor" -#: cps/templates/book_table.html:49 +#: cps/templates/book_table.html:50 msgid "Enter Authors" msgstr "Entrar Autores" -#: cps/templates/book_table.html:50 +#: cps/templates/book_table.html:51 msgid "Enter Categories" msgstr "Entrar nas categorias" -#: cps/templates/book_table.html:51 +#: cps/templates/book_table.html:52 msgid "Enter Series" msgstr "Entrar na série" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Enter title" msgstr "Digite o título" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Series Index" msgstr "Índice da série" -#: cps/templates/book_table.html:53 +#: cps/templates/book_table.html:54 msgid "Enter Languages" msgstr "Entrar idiomas" -#: cps/templates/book_table.html:54 +#: cps/templates/book_table.html:55 msgid "Publishing Date" msgstr "Data de publicação" -#: cps/templates/book_table.html:55 +#: cps/templates/book_table.html:56 msgid "Enter Publishers" msgstr "Entrar Editores" -#: cps/templates/book_table.html:70 cps/templates/modal_dialogs.html:46 +#: cps/templates/book_table.html:71 cps/templates/modal_dialogs.html:46 msgid "Are you really sure?" msgstr "Tens mesmo a certeza?" -#: cps/templates/book_table.html:74 +#: cps/templates/book_table.html:75 msgid "Books with Title will be merged from:" msgstr "Os livros com título serão fundidos a partir de:" -#: cps/templates/book_table.html:78 +#: cps/templates/book_table.html:79 msgid "Into Book with Title:" msgstr "Into Book with Title:" -#: cps/templates/book_table.html:83 +#: cps/templates/book_table.html:84 msgid "Merge" msgstr "Fundir" @@ -1861,7 +2007,7 @@ msgid "LDAP Encryption" msgstr "Criptografia LDAP" #: cps/templates/config_edit.html:268 cps/templates/config_view_edit.html:61 -#: cps/templates/email_edit.html:21 +#: cps/templates/email_edit.html:40 msgid "None" msgstr "Nenhum" @@ -2074,6 +2220,7 @@ msgid "Default Visibilities for New Users" msgstr "Visibilidades por defeito para novos utilizadores" #: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82 +#: cps/templates/user_table.html:138 msgid "Show Random Books in Detail View" msgstr "Mostrar Livros Aleatórios em Vista de Detalhe" @@ -2147,43 +2294,69 @@ msgstr "(Público)" msgid "Edit Metadata" msgstr "Editar Metadados" -#: cps/templates/email_edit.html:22 +#: cps/templates/email_edit.html:12 +msgid "Choose Server Type" +msgstr "" + +#: cps/templates/email_edit.html:14 +msgid "Use Standard E-Mail Account" +msgstr "" + +#: cps/templates/email_edit.html:15 +msgid "Gmail Account with OAuth2 Verfification" +msgstr "" + +#: cps/templates/email_edit.html:21 +msgid "Setup Gmail Account as E-Mail Server" +msgstr "" + +#: cps/templates/email_edit.html:23 +msgid "Revoke Gmail Access" +msgstr "" + +#: cps/templates/email_edit.html:41 msgid "STARTTLS" msgstr "STARTTLS" -#: cps/templates/email_edit.html:23 +#: cps/templates/email_edit.html:42 msgid "SSL/TLS" msgstr "SSL/TLS" -#: cps/templates/email_edit.html:31 +#: cps/templates/email_edit.html:50 msgid "SMTP Password" msgstr "Senha SMTP" -#: cps/templates/email_edit.html:38 +#: cps/templates/email_edit.html:57 msgid "Attachment Size Limit" msgstr "Limite do tamanho do anexo" -#: cps/templates/email_edit.html:46 +#: cps/templates/email_edit.html:65 msgid "Save and Send Test E-mail" msgstr "Salvar e enviar e-mail de teste" -#: cps/templates/email_edit.html:51 +#: cps/templates/email_edit.html:69 cps/templates/layout.html:29 +#: cps/templates/shelf_order.html:41 cps/templates/user_table.html:158 +msgid "Back" +msgstr "Voltar" + +#: cps/templates/email_edit.html:73 msgid "Allowed Domains (Whitelist)" msgstr "Domínios Permitidos (Whitelist)" -#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80 +#: cps/templates/email_edit.html:76 cps/templates/email_edit.html:102 msgid "Add Domain" msgstr "Adicionar Domínio" -#: cps/templates/email_edit.html:57 cps/templates/email_edit.html:83 +#: cps/templates/email_edit.html:79 cps/templates/email_edit.html:105 +#: cps/templates/user_table.html:26 msgid "Add" msgstr "Adicione" -#: cps/templates/email_edit.html:62 cps/templates/email_edit.html:72 +#: cps/templates/email_edit.html:84 cps/templates/email_edit.html:94 msgid "Enter domainname" msgstr "Digite o nome do domínio" -#: cps/templates/email_edit.html:68 +#: cps/templates/email_edit.html:90 msgid "Denied Domains (Blacklist)" msgstr "Domínios negados (Blacklist)" @@ -2195,10 +2368,6 @@ msgstr "Próximo" msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):" msgstr "Abra o arquivo .kobo/Kobo eReader.conf em um editor de texto e adicione (ou edite):" -#: cps/templates/grid.html:14 cps/templates/list.html:14 -msgid "All" -msgstr "Todos" - #: cps/templates/http_error.html:38 msgid "Create Issue" msgstr "Criar Edição" @@ -2229,64 +2398,72 @@ msgstr "Ordenação decrescente de acordo com o índice de série" msgid "Start" msgstr "Início" +#: cps/templates/index.xml:18 +msgid "Alphabetical Books" +msgstr "" + #: cps/templates/index.xml:22 +msgid "Books sorted alphabetically" +msgstr "" + +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Downloads." msgstr "Publicações populares deste catálogo baseadas em Downloads." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:36 msgid "Popular publications from this catalog based on Rating." msgstr "Publicações populares deste catálogo baseadas em Rating." -#: cps/templates/index.xml:32 +#: cps/templates/index.xml:39 msgid "Recently added Books" msgstr "Livros recentemente adicionados" -#: cps/templates/index.xml:36 +#: cps/templates/index.xml:43 msgid "The latest Books" msgstr "Os últimos Livros" -#: cps/templates/index.xml:39 +#: cps/templates/index.xml:46 msgid "Random Books" msgstr "Livros Aleatórios" -#: cps/templates/index.xml:43 +#: cps/templates/index.xml:50 msgid "Show Random Books" msgstr "Mostrar Livros Aleatórios" -#: cps/templates/index.xml:66 +#: cps/templates/index.xml:73 msgid "Books ordered by Author" msgstr "Livros encomendados pelo Autor" -#: cps/templates/index.xml:73 +#: cps/templates/index.xml:80 msgid "Books ordered by publisher" msgstr "Livros encomendados pela editora" -#: cps/templates/index.xml:80 +#: cps/templates/index.xml:87 msgid "Books ordered by category" msgstr "Livros ordenados por categoria" -#: cps/templates/index.xml:87 +#: cps/templates/index.xml:94 msgid "Books ordered by series" msgstr "Livros encomendados por série" -#: cps/templates/index.xml:94 +#: cps/templates/index.xml:101 msgid "Books ordered by Languages" msgstr "Livros encomendados por Idiomas" -#: cps/templates/index.xml:101 +#: cps/templates/index.xml:108 msgid "Books ordered by Rating" msgstr "Livros encomendados por Rating" -#: cps/templates/index.xml:109 +#: cps/templates/index.xml:116 msgid "Books ordered by file formats" msgstr "Livros ordenados por formatos de arquivo" -#: cps/templates/index.xml:112 cps/templates/layout.html:135 +#: cps/templates/index.xml:119 cps/templates/layout.html:135 #: cps/templates/search_form.html:80 msgid "Shelves" msgstr "Prateleiras" -#: cps/templates/index.xml:116 +#: cps/templates/index.xml:123 msgid "Books organized in shelves" msgstr "Livros organizados em prateleiras" @@ -2294,10 +2471,6 @@ msgstr "Livros organizados em prateleiras" msgid "Home" msgstr "Início" -#: cps/templates/layout.html:29 cps/templates/shelf_order.html:41 -msgid "Back" -msgstr "Voltar" - #: cps/templates/layout.html:35 msgid "Toggle Navigation" msgstr "Alternar a navegação" @@ -2459,6 +2632,11 @@ msgstr "Diretório dos Pais" msgid "Select" msgstr "Selecione" +#: cps/templates/modal_dialogs.html:134 +#, fuzzy +msgid "Ok" +msgstr "Livro" + #: cps/templates/osd.xml:5 msgid "Calibre-Web eBook Catalog" msgstr "Catálogo de e-books Calibre-Web" @@ -2764,10 +2942,6 @@ msgstr "Redefinir senha do usuário" msgid "Language of Books" msgstr "Língua dos Livros" -#: cps/templates/user_edit.html:44 -msgid "Show All" -msgstr "Mostrar tudo" - #: cps/templates/user_edit.html:53 msgid "OAuth Settings" msgstr "Configurações do OAuth" @@ -2792,7 +2966,7 @@ msgstr "Criar/Ver" msgid "Add allowed/Denied Custom Column Values" msgstr "Adicionar valores permitidos/definidos da coluna personalizada" -#: cps/templates/user_edit.html:135 +#: cps/templates/user_edit.html:135 cps/templates/user_table.html:153 msgid "Delete User" msgstr "Eliminar Utilizador" @@ -2800,3 +2974,99 @@ msgstr "Eliminar Utilizador" msgid "Generate Kobo Auth URL" msgstr "Gerar o Kobo Auth URL" +#: cps/templates/user_table.html:68 cps/templates/user_table.html:91 +#, fuzzy +msgid "Select..." +msgstr "Selecione" + +#: cps/templates/user_table.html:118 +#, fuzzy +msgid "Edit User" +msgstr "Usuário Admin" + +#: cps/templates/user_table.html:121 +#, fuzzy +msgid "Enter Username" +msgstr "Escolha um nome de usuário" + +#: cps/templates/user_table.html:122 +#, fuzzy +msgid "Enter E-mail Address" +msgstr "Seu endereço de e-mail" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Enter Kindle E-mail Address" +msgstr "Enviar para o endereço de e-mail do Kindle" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Kindle E-mail" +msgstr "E-mail de teste" + +#: cps/templates/user_table.html:124 +#, fuzzy +msgid "Locale" +msgstr "Balança" + +#: cps/templates/user_table.html:125 +msgid "Visible Book Languages" +msgstr "" + +#: cps/templates/user_table.html:126 +#, fuzzy +msgid "Edit Denied Tags" +msgstr "Selecione Etiquetas permitidas/negadas" + +#: cps/templates/user_table.html:126 +msgid "Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +#, fuzzy +msgid "Edit Allowed Tags" +msgstr "Selecione Etiquetas permitidas/negadas" + +#: cps/templates/user_table.html:127 +msgid "Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Edit Allowed Column Values" +msgstr "Adicionar valores permitidos/negados da coluna personalizada" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Allowed Column Values" +msgstr "Adicionar valores permitidos/negados da coluna personalizada" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Edit Denied Column Values" +msgstr "Adicionar valores permitidos/negados da coluna personalizada" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Denied Columns Values" +msgstr "Adicionar valores permitidos/negados da coluna personalizada" + +#: cps/templates/user_table.html:131 +#, fuzzy +msgid "Change Password" +msgstr "Permitir mudança de senha" + +#: cps/templates/user_table.html:134 +msgid "View" +msgstr "" + +#: cps/templates/user_table.html:137 +#, fuzzy +msgid "Edit Public Shelfs" +msgstr "Estante Pública" + +#: cps/templates/user_table.html:140 +#, fuzzy +msgid "Show read/unread selection" +msgstr "Mostrar selecção de séries" + diff --git a/cps/translations/ru/LC_MESSAGES/messages.mo b/cps/translations/ru/LC_MESSAGES/messages.mo index 9f8b499b..8669fd2e 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 506d8f71..0c174707 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: 2021-03-27 12:16+0100\n" +"POT-Creation-Date: 2021-05-01 16:33+0200\n" "PO-Revision-Date: 2020-04-29 01:20+0400\n" "Last-Translator: ZIZA\n" "Language: ru\n" @@ -17,7 +17,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" +"Generated-By: Babel 2.8.0\n" #: cps/about.py:43 msgid "installed" @@ -31,310 +31,405 @@ msgstr "не установлено" msgid "Statistics" msgstr "Статистика" -#: cps/admin.py:149 +#: cps/admin.py:151 msgid "Server restarted, please reload page" msgstr "Сервер перезагружен, пожалуйста, обновите страницу" -#: cps/admin.py:151 +#: cps/admin.py:153 msgid "Performing shutdown of server, please close window" msgstr "Производится остановка сервера, пожалуйста, закройте окно" -#: cps/admin.py:159 +#: cps/admin.py:161 msgid "Reconnect successful" msgstr "Успешно переподключено" -#: cps/admin.py:162 +#: cps/admin.py:164 msgid "Unknown command" msgstr "Неизвестная команда" -#: cps/admin.py:172 cps/editbooks.py:662 cps/editbooks.py:674 -#: cps/editbooks.py:777 cps/editbooks.py:779 cps/editbooks.py:806 -#: cps/editbooks.py:822 cps/updater.py:521 cps/uploader.py:94 +#: cps/admin.py:174 cps/editbooks.py:668 cps/editbooks.py:682 +#: cps/editbooks.py:821 cps/editbooks.py:823 cps/editbooks.py:850 +#: cps/editbooks.py:866 cps/updater.py:555 cps/uploader.py:94 #: cps/uploader.py:104 msgid "Unknown" msgstr "Неизвестно" -#: cps/admin.py:193 +#: cps/admin.py:195 msgid "Admin page" msgstr "Администрирование" -#: cps/admin.py:215 +#: cps/admin.py:217 msgid "UI Configuration" msgstr "Настройка интерфейса" -#: cps/admin.py:247 cps/admin.py:936 +#: cps/admin.py:249 cps/templates/admin.html:46 +#, fuzzy +msgid "Edit Users" +msgstr "Управление сервером" + +#: cps/admin.py:290 +#, fuzzy +msgid "all" +msgstr "Все" + +#: cps/admin.py:315 cps/admin.py:1486 +msgid "User not found" +msgstr "" + +#: cps/admin.py:329 +msgid "{} users deleted successfully" +msgstr "" + +#: cps/admin.py:351 cps/templates/user_edit.html:44 +#: cps/templates/user_table.html:69 +msgid "Show All" +msgstr "Показать все" + +#: cps/admin.py:372 cps/admin.py:378 +msgid "Malformed request" +msgstr "" + +#: cps/admin.py:390 cps/admin.py:1368 +msgid "Guest Name can't be changed" +msgstr "" + +#: cps/admin.py:400 +msgid "Guest can't have this role" +msgstr "" + +#: cps/admin.py:412 cps/admin.py:1333 +msgid "No admin user remaining, can't remove admin role" +msgstr "" + +#: cps/admin.py:416 cps/admin.py:430 +msgid "Value has to be true or false" +msgstr "" + +#: cps/admin.py:418 +msgid "Invalid role" +msgstr "" + +#: cps/admin.py:422 +msgid "Guest can't have this view" +msgstr "" + +#: cps/admin.py:432 +msgid "Invalid view" +msgstr "" + +#: cps/admin.py:435 +msgid "Guest's Locale is determined automatically and can't be set" +msgstr "" + +#: cps/admin.py:439 +msgid "No Valid Locale Given" +msgstr "" + +#: cps/admin.py:450 +msgid "No Valid Book Language Given" +msgstr "" + +#: cps/admin.py:452 +msgid "Parameter not found" +msgstr "" + +#: cps/admin.py:506 cps/admin.py:1219 msgid "Calibre-Web configuration updated" msgstr "Конфигурация Calibre-Web обновлена" -#: cps/admin.py:258 +#: cps/admin.py:518 msgid "Do you really want to delete the Kobo Token?" msgstr "Вы действительно хотите удалить Kobo Token ?" -#: cps/admin.py:260 +#: cps/admin.py:520 msgid "Do you really want to delete this domain?" msgstr "" -#: cps/admin.py:262 +#: cps/admin.py:522 msgid "Do you really want to delete this user?" msgstr "" -#: cps/admin.py:264 cps/templates/shelf.html:90 +#: cps/admin.py:524 cps/templates/shelf.html:90 msgid "Are you sure you want to delete this shelf?" msgstr "Вы действительно хотите удалить эту книжную полку?" -#: cps/admin.py:510 cps/admin.py:516 cps/admin.py:526 cps/admin.py:536 -#: cps/templates/modal_dialogs.html:29 +#: cps/admin.py:526 +#, fuzzy +msgid "Are you sure you want to change locales of selected user(s)?" +msgstr "Вы действительно хотите удалить эту книжную полку?" + +#: cps/admin.py:528 +msgid "Are you sure you want to change visible book languages for selected user(s)?" +msgstr "" + +#: cps/admin.py:530 +msgid "Are you sure you want to change the selected role for the selected user(s)?" +msgstr "" + +#: cps/admin.py:532 +#, fuzzy +msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" +msgstr "Вы действительно хотите удалить эту книжную полку?" + +#: cps/admin.py:534 +msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:683 +msgid "Tag not found" +msgstr "" + +#: cps/admin.py:695 +msgid "Invalid Action" +msgstr "" + +#: cps/admin.py:800 cps/admin.py:806 cps/admin.py:816 cps/admin.py:826 +#: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:43 msgid "Deny" msgstr "Запретить" -#: cps/admin.py:512 cps/admin.py:518 cps/admin.py:528 cps/admin.py:538 -#: cps/templates/modal_dialogs.html:28 +#: cps/admin.py:802 cps/admin.py:808 cps/admin.py:818 cps/admin.py:828 +#: cps/templates/modal_dialogs.html:28 cps/templates/user_table.html:48 msgid "Allow" msgstr "Разрешить" -#: cps/admin.py:681 +#: cps/admin.py:971 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json не настроен для веб-приложения" -#: cps/admin.py:723 +#: cps/admin.py:1016 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "Неправильное расположение файла журнала, пожалуйста, введите правильный путь." -#: cps/admin.py:729 +#: cps/admin.py:1022 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "Недопустимое расположение файла журнала доступа, пожалуйста, введите правильный путь" -#: cps/admin.py:738 +#: cps/admin.py:1052 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "Пожалуйста, введите провайдера LDAP, порт, DN и идентификатор объекта пользователя" -#: cps/admin.py:752 cps/admin.py:760 +#: cps/admin.py:1067 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "Фильтр объектов группы LDAP должен иметь один идентификатор формата \"%s\"" -#: cps/admin.py:755 cps/admin.py:763 +#: cps/admin.py:1070 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "Фильтр объектов группы LDAP имеет незавершённые круглые скобки" -#: cps/admin.py:768 +#: cps/admin.py:1075 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "Фильтр объектов пользователя LDAP должен иметь один идентификатор формата \"%s\"" -#: cps/admin.py:771 +#: cps/admin.py:1078 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "Фильтр объектов пользователя LDAP имеет незавершенную круглую скобку" -#: cps/admin.py:779 +#: cps/admin.py:1086 #, python-format msgid "LDAP Member User Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:782 +#: cps/admin.py:1089 msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:790 +#: cps/admin.py:1097 msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:841 +#: cps/admin.py:1123 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "Расположение ключевого файла неверно, пожалуйста, введите правильный путь" -#: cps/admin.py:847 +#: cps/admin.py:1129 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "Расположение Certfile не является действительным, пожалуйста, введите правильный путь" -#: cps/admin.py:917 cps/admin.py:1024 cps/admin.py:1047 cps/admin.py:1168 -#: cps/shelf.py:102 cps/shelf.py:159 cps/shelf.py:200 cps/shelf.py:261 -#: cps/shelf.py:314 cps/shelf.py:348 cps/shelf.py:418 +#: cps/admin.py:1200 cps/admin.py:1303 cps/admin.py:1395 cps/admin.py:1461 +#: cps/shelf.py:103 cps/shelf.py:163 cps/shelf.py:206 cps/shelf.py:269 +#: cps/shelf.py:325 cps/shelf.py:360 cps/shelf.py:431 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:929 +#: cps/admin.py:1212 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "Расположение Базы Данных неверно, пожалуйста, введите правильный путь." -#: cps/admin.py:933 +#: cps/admin.py:1216 msgid "DB is not Writeable" msgstr "" -#: cps/admin.py:972 +#: cps/admin.py:1256 msgid "Basic Configuration" msgstr "Настройки сервера" -#: cps/admin.py:987 cps/web.py:1358 +#: cps/admin.py:1272 cps/web.py:1417 msgid "Please fill out all fields!" msgstr "Пожалуйста, заполните все поля!" -#: cps/admin.py:990 cps/admin.py:1002 cps/admin.py:1008 cps/admin.py:1138 -msgid "Add new user" -msgstr "Добавить пользователя" - -#: cps/admin.py:999 cps/web.py:1496 +#: cps/admin.py:1280 msgid "E-mail is not from valid domain" msgstr "E-mail не из существующей доменной зоны" -#: cps/admin.py:1006 cps/admin.py:1021 -msgid "Found an existing account for this e-mail address or nickname." -msgstr "Для этого адреса электронной почты или логина уже есть учётная запись." +#: cps/admin.py:1284 cps/admin.py:1414 +msgid "Add new user" +msgstr "Добавить пользователя" -#: cps/admin.py:1017 +#: cps/admin.py:1293 #, python-format msgid "User '%(user)s' created" msgstr "Пользователь '%(user)s' добавлен" -#: cps/admin.py:1031 +#: cps/admin.py:1299 +#, fuzzy +msgid "Found an existing account for this e-mail address or name." +msgstr "Для этого адреса электронной почты или логина уже есть учётная запись." + +#: cps/admin.py:1312 #, python-format msgid "User '%(nick)s' deleted" msgstr "Пользователь '%(nick)s' удалён" -#: cps/admin.py:1034 +#: cps/admin.py:1314 cps/admin.py:1315 +msgid "Can't delete Guest User" +msgstr "" + +#: cps/admin.py:1318 msgid "No admin user remaining, can't delete user" msgstr "Это последний администратор, невозможно удалить пользователя" -#: cps/admin.py:1041 -#, python-format -msgid "User '%(nick)s' updated" -msgstr "Пользователь '%(nick)s' обновлён" - -#: cps/admin.py:1044 -msgid "An unknown error occured." -msgstr "Произошла неизвестная ошибка." - -#: cps/admin.py:1056 -msgid "No admin user remaining, can't remove admin role" -msgstr "" - -#: cps/admin.py:1092 cps/web.py:1554 -msgid "Found an existing account for this e-mail address." -msgstr "Этот адрес электронной почты уже зарегистрирован." - -#: cps/admin.py:1101 cps/admin.py:1115 cps/admin.py:1209 cps/web.py:1516 +#: cps/admin.py:1383 cps/admin.py:1504 #, python-format msgid "Edit User %(nick)s" msgstr "Изменить пользователя %(nick)s" -#: cps/admin.py:1107 cps/web.py:1509 -msgid "This username is already taken" -msgstr "Это имя пользователя уже занято" +#: cps/admin.py:1387 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "Пользователь '%(nick)s' обновлён" -#: cps/admin.py:1147 cps/templates/admin.html:78 +#: cps/admin.py:1391 +#, fuzzy +msgid "An unknown error occurred." +msgstr "Произошла неизвестная ошибка." + +#: cps/admin.py:1423 cps/templates/admin.html:94 msgid "Edit E-mail Server Settings" msgstr "Изменить настройки SMTP" -#: cps/admin.py:1175 +#: cps/admin.py:1442 +msgid "G-Mail Account Verification Successful" +msgstr "" + +#: cps/admin.py:1468 #, python-format msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" msgstr "" -#: cps/admin.py:1178 +#: cps/admin.py:1471 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Произошла ошибка при отправке тестового письма на: %(res)s" -#: cps/admin.py:1180 +#: cps/admin.py:1473 msgid "Please configure your e-mail address first..." msgstr "Пожалуйста, сначала настройте свой адрес электронной почты ..." -#: cps/admin.py:1182 +#: cps/admin.py:1475 msgid "E-mail server settings updated" msgstr "Настройки E-mail сервера обновлены" -#: cps/admin.py:1193 -msgid "User not found" -msgstr "" - -#: cps/admin.py:1220 +#: cps/admin.py:1516 #, python-format msgid "Password for user %(user)s reset" msgstr "Пароль для пользователя %(user)s сброшен" -#: cps/admin.py:1223 cps/web.py:1388 cps/web.py:1452 +#: cps/admin.py:1519 cps/web.py:1442 cps/web.py:1503 msgid "An unknown error occurred. Please try again later." msgstr "Неизвестная ошибка. Попробуйте позже." -#: cps/admin.py:1226 cps/web.py:1320 +#: cps/admin.py:1522 cps/web.py:1382 msgid "Please configure the SMTP mail settings first..." msgstr "Пожалуйста, сперва настройте параметры SMTP....." -#: cps/admin.py:1237 +#: cps/admin.py:1533 msgid "Logfile viewer" msgstr "Просмотр лога" -#: cps/admin.py:1303 +#: cps/admin.py:1599 msgid "Requesting update package" msgstr "Проверка обновлений" -#: cps/admin.py:1304 +#: cps/admin.py:1600 msgid "Downloading update package" msgstr "Загрузка обновлений" -#: cps/admin.py:1305 +#: cps/admin.py:1601 msgid "Unzipping update package" msgstr "Распаковка обновлений" -#: cps/admin.py:1306 +#: cps/admin.py:1602 msgid "Replacing files" msgstr "Замена файлов" -#: cps/admin.py:1307 +#: cps/admin.py:1603 msgid "Database connections are closed" msgstr "Соединения с базой данных закрыты" -#: cps/admin.py:1308 +#: cps/admin.py:1604 msgid "Stopping server" msgstr "Остановка сервера" -#: cps/admin.py:1309 +#: cps/admin.py:1605 msgid "Update finished, please press okay and reload page" msgstr "Обновления установлены, нажмите ок и перезагрузите страницу" -#: cps/admin.py:1310 cps/admin.py:1311 cps/admin.py:1312 cps/admin.py:1313 -#: cps/admin.py:1314 +#: cps/admin.py:1606 cps/admin.py:1607 cps/admin.py:1608 cps/admin.py:1609 +#: cps/admin.py:1610 msgid "Update failed:" msgstr "Ошибка обновления:" -#: cps/admin.py:1310 cps/updater.py:337 cps/updater.py:532 cps/updater.py:534 +#: cps/admin.py:1606 cps/updater.py:356 cps/updater.py:566 cps/updater.py:568 msgid "HTTP Error" msgstr "Ошибка HTTP" -#: cps/admin.py:1311 cps/updater.py:339 cps/updater.py:536 +#: cps/admin.py:1607 cps/updater.py:358 cps/updater.py:570 msgid "Connection error" msgstr "Ошибка соединения" -#: cps/admin.py:1312 cps/updater.py:341 cps/updater.py:538 +#: cps/admin.py:1608 cps/updater.py:360 cps/updater.py:572 msgid "Timeout while establishing connection" msgstr "Тайм-аут при установлении соединения" -#: cps/admin.py:1313 cps/updater.py:343 cps/updater.py:540 +#: cps/admin.py:1609 cps/updater.py:362 cps/updater.py:574 msgid "General error" msgstr "Общая ошибка" -#: cps/admin.py:1314 +#: cps/admin.py:1610 msgid "Update File Could Not be Saved in Temp Dir" msgstr "Не удалось сохранить файл обновления во временной папке." -#: cps/admin.py:1376 +#: cps/admin.py:1671 msgid "Failed to Create at Least One LDAP User" msgstr "Не удалось создать хотя бы одного пользователя LDAP" -#: cps/admin.py:1389 +#: cps/admin.py:1684 #, python-format msgid "Error: %(ldaperror)s" msgstr "Ошибка: %(ldaperror)s" -#: cps/admin.py:1393 +#: cps/admin.py:1688 msgid "Error: No user returned in response of LDAP server" msgstr "Ошибка: ни одного пользователя не найдено в ответ на запрос сервер LDAP" -#: cps/admin.py:1426 +#: cps/admin.py:1721 msgid "At Least One LDAP User Not Found in Database" msgstr "По крайней мере, один пользователь LDAP не найден в базе данных" -#: cps/admin.py:1428 +#: cps/admin.py:1723 msgid "{} User Successfully Imported" msgstr "" @@ -346,98 +441,98 @@ msgstr "не настроено" msgid "Execution permissions missing" msgstr "" -#: cps/editbooks.py:267 cps/editbooks.py:269 +#: cps/editbooks.py:294 cps/editbooks.py:296 msgid "Book Format Successfully Deleted" msgstr "" -#: cps/editbooks.py:276 cps/editbooks.py:278 +#: cps/editbooks.py:303 cps/editbooks.py:305 msgid "Book Successfully Deleted" msgstr "" -#: cps/editbooks.py:325 cps/editbooks.py:646 cps/web.py:1598 cps/web.py:1634 -#: cps/web.py:1705 +#: cps/editbooks.py:361 cps/editbooks.py:724 cps/web.py:1627 cps/web.py:1663 +#: cps/web.py:1734 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Ошибка при открытии eBook. Файл не существует или файл недоступен" -#: cps/editbooks.py:359 +#: cps/editbooks.py:395 msgid "edit metadata" msgstr "изменить метаданные" -#: cps/editbooks.py:434 +#: cps/editbooks.py:473 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s не допустимый язык" -#: cps/editbooks.py:556 cps/editbooks.py:905 +#: cps/editbooks.py:595 cps/editbooks.py:936 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Запрещена загрузка файлов с расширением '%(ext)s'" -#: cps/editbooks.py:560 cps/editbooks.py:909 +#: cps/editbooks.py:599 cps/editbooks.py:940 msgid "File to be uploaded must have an extension" msgstr "Загружаемый файл должен иметь расширение" -#: cps/editbooks.py:572 +#: cps/editbooks.py:611 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Ошибка при создании пути %(path)s (Доступ запрещён)." -#: cps/editbooks.py:577 +#: cps/editbooks.py:616 #, python-format msgid "Failed to store file %(file)s." msgstr "Не удалось сохранить файл %(file)s." -#: cps/editbooks.py:595 cps/editbooks.py:972 cps/web.py:1559 +#: cps/editbooks.py:634 cps/editbooks.py:1027 cps/web.py:1588 #, python-format msgid "Database error: %(error)s." msgstr "" -#: cps/editbooks.py:599 +#: cps/editbooks.py:638 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Формат файла %(ext)s добавлен в %(book)s" -#: cps/editbooks.py:726 +#: cps/editbooks.py:775 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:763 +#: cps/editbooks.py:807 msgid "Metadata successfully updated" msgstr "Метаданные обновлены" -#: cps/editbooks.py:772 +#: cps/editbooks.py:816 msgid "Error editing book, please check logfile for details" msgstr "Ошибка редактирования книги. Пожалуйста, проверьте лог-файл для дополнительной информации" -#: cps/editbooks.py:810 +#: cps/editbooks.py:854 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Загруженная книга, вероятно, существует в библиотеке, перед тем как загрузить новую, рассмотрите возможность изменения: " -#: cps/editbooks.py:917 +#: cps/editbooks.py:948 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "Файл %(filename)s не удалось сохранить во временную папку" -#: cps/editbooks.py:947 +#: cps/editbooks.py:967 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "" -#: cps/editbooks.py:958 +#: cps/editbooks.py:1013 #, python-format msgid "File %(file)s uploaded" msgstr "Файл %(file)s загружен" -#: cps/editbooks.py:984 +#: cps/editbooks.py:1039 msgid "Source or destination format for conversion missing" msgstr "Исходный или целевой формат для конвертирования отсутствует" -#: cps/editbooks.py:992 +#: cps/editbooks.py:1047 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Книга успешно поставлена в очередь для конвертирования в %(book_format)s" -#: cps/editbooks.py:996 +#: cps/editbooks.py:1051 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Произошла ошибка при конвертирования этой книги: %(res)s" @@ -545,55 +640,68 @@ msgstr "Файл %(file)s не найден на Google Drive" msgid "Book path %(path)s not found on Google Drive" msgstr "Путь книги %(path)s не найден на Google Drive" -#: cps/helper.py:576 +#: cps/helper.py:511 +#, fuzzy +msgid "Found an existing account for this e-mail address" +msgstr "Этот адрес электронной почты уже зарегистрирован." + +#: cps/helper.py:519 +msgid "This username is already taken" +msgstr "Это имя пользователя уже занято" + +#: cps/helper.py:529 +msgid "Invalid e-mail address format" +msgstr "" + +#: cps/helper.py:602 msgid "Error Downloading Cover" msgstr "" -#: cps/helper.py:579 +#: cps/helper.py:605 msgid "Cover Format Error" msgstr "" -#: cps/helper.py:589 +#: cps/helper.py:615 msgid "Failed to create path for cover" msgstr "Не удалось создать путь для обложки." -#: cps/helper.py:605 +#: cps/helper.py:631 msgid "Cover-file is not a valid image file, or could not be stored" msgstr "" -#: cps/helper.py:616 +#: cps/helper.py:642 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" msgstr "" -#: cps/helper.py:629 +#: cps/helper.py:655 msgid "Only jpg/jpeg files are supported as coverfile" msgstr "Только файлы в формате jpg / jpeg поддерживаются как файл обложки" -#: cps/helper.py:680 +#: cps/helper.py:707 msgid "Unrar binary file not found" msgstr "" -#: cps/helper.py:694 +#: cps/helper.py:721 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:743 +#: cps/helper.py:769 msgid "Waiting" msgstr "Ожидание" -#: cps/helper.py:745 +#: cps/helper.py:771 msgid "Failed" msgstr "Неудачно" -#: cps/helper.py:747 +#: cps/helper.py:773 msgid "Started" msgstr "Начало" -#: cps/helper.py:749 +#: cps/helper.py:775 msgid "Finished" msgstr "Завершено" -#: cps/helper.py:751 +#: cps/helper.py:777 msgid "Unknown Status" msgstr "Неизвестный статус" @@ -605,65 +713,82 @@ msgstr "Пожалуйста, подключитесь к Calibre-Web не с л msgid "Kobo Setup" msgstr "Настройка Kobo" -#: cps/oauth_bb.py:76 +#: cps/oauth_bb.py:78 #, python-format msgid "Register with %(provider)s" msgstr "Зарегистрируйтесь с %(provider)s" -#: cps/oauth_bb.py:137 cps/remotelogin.py:133 cps/web.py:1424 +#: cps/oauth_bb.py:139 cps/remotelogin.py:133 cps/web.py:1475 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "вы вошли как пользователь '%(nickname)s'" -#: cps/oauth_bb.py:147 +#: cps/oauth_bb.py:149 #, python-format msgid "Link to %(oauth)s Succeeded" msgstr "Связь с %(oauth)s Успешна" -#: cps/oauth_bb.py:153 +#: cps/oauth_bb.py:156 msgid "Login failed, No User Linked With OAuth Account" msgstr "Не удалось войти, ни один пользователь не связан с учетной записью OAuth" -#: cps/oauth_bb.py:195 +#: cps/oauth_bb.py:198 #, python-format msgid "Unlink to %(oauth)s Succeeded" msgstr "Отмена связи с %(oauth)s успешно" -#: cps/oauth_bb.py:199 +#: cps/oauth_bb.py:203 #, python-format msgid "Unlink to %(oauth)s Failed" msgstr "Связь с %(oauth)s не удалось отмененить" -#: cps/oauth_bb.py:202 +#: cps/oauth_bb.py:206 #, python-format msgid "Not Linked to %(oauth)s" msgstr "" -#: cps/oauth_bb.py:259 +#: cps/oauth_bb.py:262 msgid "Failed to log in with GitHub." msgstr "Не удалось войти в систему с помощью GitHub." -#: cps/oauth_bb.py:264 +#: cps/oauth_bb.py:268 msgid "Failed to fetch user info from GitHub." msgstr "Не удалось получить информацию о пользователе из GitHub." -#: cps/oauth_bb.py:275 +#: cps/oauth_bb.py:280 msgid "Failed to log in with Google." msgstr "Не удалось войти в систему с помощью Google." -#: cps/oauth_bb.py:280 +#: cps/oauth_bb.py:286 msgid "Failed to fetch user info from Google." msgstr "Не удалось получить информацию о пользователе из Google." -#: cps/oauth_bb.py:312 +#: cps/oauth_bb.py:333 msgid "GitHub Oauth error, please retry later." msgstr "Ошибка GitHub Oauth, пожалуйста попробуйте позже." -#: cps/oauth_bb.py:331 +#: cps/oauth_bb.py:336 +msgid "GitHub Oauth error: {}" +msgstr "" + +#: cps/oauth_bb.py:357 msgid "Google Oauth error, please retry later." msgstr "Ошибка Google Oauth, пожалуйста попробуйте позже." -#: cps/remotelogin.py:65 cps/web.py:1471 +#: cps/oauth_bb.py:360 +msgid "Google Oauth error: {}" +msgstr "" + +#: cps/opds.py:110 cps/opds.py:199 cps/opds.py:276 cps/opds.py:328 +#: cps/templates/grid.html:14 cps/templates/list.html:14 +msgid "All" +msgstr "Все" + +#: cps/opds.py:385 +msgid "{} Stars" +msgstr "" + +#: cps/remotelogin.py:65 cps/web.py:1522 msgid "login" msgstr "войти" @@ -679,7 +804,7 @@ msgstr "Ключ просрочен" msgid "Success! Please return to your device" msgstr "Успешно! Пожалуйста, проверьте свое устройство" -#: cps/render_template.py:39 cps/web.py:415 +#: cps/render_template.py:39 cps/web.py:414 msgid "Books" msgstr "Книги" @@ -687,7 +812,7 @@ msgstr "Книги" msgid "Show recent books" msgstr "Показывать недавние книги" -#: cps/render_template.py:42 cps/templates/index.xml:18 +#: cps/render_template.py:42 cps/templates/index.xml:25 msgid "Hot Books" msgstr "Популярные Книги" @@ -695,127 +820,130 @@ msgstr "Популярные Книги" msgid "Show Hot Books" msgstr "Показывать популярные книги" -#: cps/render_template.py:45 +#: cps/render_template.py:46 cps/render_template.py:51 msgid "Downloaded Books" msgstr "" -#: cps/render_template.py:47 +#: cps/render_template.py:48 cps/render_template.py:53 +#: cps/templates/user_table.html:151 msgid "Show Downloaded Books" msgstr "" -#: cps/render_template.py:50 cps/templates/index.xml:25 cps/web.py:425 +#: cps/render_template.py:56 cps/templates/index.xml:32 cps/web.py:424 msgid "Top Rated Books" msgstr "Книги с наилучшим рейтингом" -#: cps/render_template.py:52 +#: cps/render_template.py:58 cps/templates/user_table.html:145 msgid "Show Top Rated Books" msgstr "Показывать книги с наивысшим рейтингом" -#: cps/render_template.py:53 cps/templates/index.xml:47 -#: cps/templates/index.xml:51 cps/web.py:642 +#: cps/render_template.py:59 cps/templates/index.xml:54 +#: cps/templates/index.xml:58 cps/web.py:650 msgid "Read Books" msgstr "Прочитанные Книги" -#: cps/render_template.py:55 +#: cps/render_template.py:61 msgid "Show read and unread" msgstr "Показывать прочитанные и непрочитанные" -#: cps/render_template.py:57 cps/templates/index.xml:54 -#: cps/templates/index.xml:58 cps/web.py:645 +#: cps/render_template.py:63 cps/templates/index.xml:61 +#: cps/templates/index.xml:65 cps/web.py:653 msgid "Unread Books" msgstr "Непрочитанные Книги" -#: cps/render_template.py:59 +#: cps/render_template.py:65 msgid "Show unread" msgstr "Показать непрочитанное" -#: cps/render_template.py:60 +#: cps/render_template.py:66 msgid "Discover" msgstr "Обзор" -#: cps/render_template.py:62 +#: cps/render_template.py:68 cps/templates/user_table.html:143 +#: cps/templates/user_table.html:146 msgid "Show random books" msgstr "Показывать случайные книги" -#: cps/render_template.py:63 cps/templates/book_table.html:50 -#: cps/templates/index.xml:76 cps/web.py:950 +#: cps/render_template.py:69 cps/templates/book_table.html:51 +#: cps/templates/index.xml:83 cps/web.py:1024 msgid "Categories" msgstr "Категории" -#: cps/render_template.py:65 +#: cps/render_template.py:71 cps/templates/user_table.html:142 msgid "Show category selection" msgstr "Показывать выбор категории" -#: cps/render_template.py:66 cps/templates/book_edit.html:84 -#: cps/templates/book_table.html:51 cps/templates/index.xml:83 -#: cps/templates/search_form.html:62 cps/web.py:854 cps/web.py:864 +#: cps/render_template.py:72 cps/templates/book_edit.html:84 +#: cps/templates/book_table.html:52 cps/templates/index.xml:90 +#: cps/templates/search_form.html:62 cps/web.py:921 cps/web.py:931 msgid "Series" msgstr "Серии" -#: cps/render_template.py:68 +#: cps/render_template.py:74 cps/templates/user_table.html:141 msgid "Show series selection" msgstr "Показывать выбор серии" -#: cps/render_template.py:69 cps/templates/book_table.html:49 -#: cps/templates/index.xml:62 +#: cps/render_template.py:75 cps/templates/book_table.html:50 +#: cps/templates/index.xml:69 msgid "Authors" msgstr "Авторы" -#: cps/render_template.py:71 +#: cps/render_template.py:77 cps/templates/user_table.html:144 msgid "Show author selection" msgstr "Показывать выбор автора" -#: cps/render_template.py:73 cps/templates/book_table.html:55 -#: cps/templates/index.xml:69 cps/web.py:833 +#: cps/render_template.py:79 cps/templates/book_table.html:56 +#: cps/templates/index.xml:76 cps/web.py:898 msgid "Publishers" msgstr "Издатели" -#: cps/render_template.py:75 +#: cps/render_template.py:81 cps/templates/user_table.html:147 msgid "Show publisher selection" msgstr "Показать выбор издателя" -#: cps/render_template.py:76 cps/templates/book_table.html:53 -#: cps/templates/index.xml:90 cps/templates/search_form.html:100 cps/web.py:929 +#: cps/render_template.py:82 cps/templates/book_table.html:54 +#: cps/templates/index.xml:97 cps/templates/search_form.html:100 +#: cps/web.py:1001 msgid "Languages" msgstr "Языки" -#: cps/render_template.py:79 +#: cps/render_template.py:85 cps/templates/user_table.html:139 msgid "Show language selection" msgstr "Показывать выбор языка" -#: cps/render_template.py:80 cps/templates/index.xml:97 +#: cps/render_template.py:86 cps/templates/index.xml:104 msgid "Ratings" msgstr "Рейтинги" -#: cps/render_template.py:82 +#: cps/render_template.py:88 cps/templates/user_table.html:148 msgid "Show ratings selection" msgstr "Показать выбор рейтинга" -#: cps/render_template.py:83 cps/templates/index.xml:105 +#: cps/render_template.py:89 cps/templates/index.xml:112 msgid "File formats" msgstr "Форматы файлов" -#: cps/render_template.py:85 +#: cps/render_template.py:91 cps/templates/user_table.html:149 msgid "Show file formats selection" msgstr "Показать выбор форматов файлов" -#: cps/render_template.py:87 cps/web.py:669 +#: cps/render_template.py:93 cps/web.py:677 msgid "Archived Books" msgstr "" -#: cps/render_template.py:89 +#: cps/render_template.py:95 cps/templates/user_table.html:150 msgid "Show archived books" msgstr "" -#: cps/render_template.py:91 cps/web.py:743 +#: cps/render_template.py:97 cps/web.py:751 msgid "Books List" msgstr "" -#: cps/render_template.py:93 +#: cps/render_template.py:99 cps/templates/user_table.html:152 msgid "Show Books List" msgstr "" -#: cps/shelf.py:69 cps/shelf.py:122 +#: cps/shelf.py:69 cps/shelf.py:124 msgid "Invalid shelf specified" msgstr "Указана неверная полка" @@ -829,303 +957,307 @@ msgstr "Извините, но вам не разрешено добавлять msgid "Book is already part of the shelf: %(shelfname)s" msgstr "Книги уже размещены на полке: %(shelfname)s" -#: cps/shelf.py:108 +#: cps/shelf.py:110 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Книга добавлена на книжную полку: %(sname)s" -#: cps/shelf.py:126 +#: cps/shelf.py:129 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Вам не разрешено добавлять книгу на полку: %(name)s" -#: cps/shelf.py:144 +#: cps/shelf.py:147 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "Книги уже размещены на полке: %(name)s" -#: cps/shelf.py:156 +#: cps/shelf.py:159 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "Книги добавлены на полку: %(sname)s" -#: cps/shelf.py:161 +#: cps/shelf.py:166 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "Не удалось добавить книги на полку: %(sname)s" -#: cps/shelf.py:206 +#: cps/shelf.py:212 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Книга удалена с полки: %(sname)s" -#: cps/shelf.py:214 +#: cps/shelf.py:221 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Извините, вы не можете удалить книгу с полки: %(sname)s" -#: cps/shelf.py:224 cps/templates/layout.html:140 +#: cps/shelf.py:231 cps/templates/layout.html:140 msgid "Create a Shelf" msgstr "Создать полку" -#: cps/shelf.py:231 +#: cps/shelf.py:238 msgid "Edit a shelf" msgstr "Изменить полку" -#: cps/shelf.py:249 +#: cps/shelf.py:256 #, python-format msgid "Shelf %(title)s created" msgstr "Создана полка %(title)s" -#: cps/shelf.py:252 +#: cps/shelf.py:259 #, python-format msgid "Shelf %(title)s changed" msgstr "Колка %(title)s изменена" -#: cps/shelf.py:265 +#: cps/shelf.py:273 msgid "There was an error" msgstr "Произошла ошибка" -#: cps/shelf.py:281 +#: cps/shelf.py:290 #, python-format msgid "A public shelf with the name '%(title)s' already exists." msgstr "Публичная полка с названием '%(title)s' уже существует." -#: cps/shelf.py:291 +#: cps/shelf.py:301 #, python-format msgid "A private shelf with the name '%(title)s' already exists." msgstr "Приватная полка с названием '%(title)s' уже существует." -#: cps/shelf.py:358 +#: cps/shelf.py:370 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Изменить расположение полки '%(name)s'" -#: cps/shelf.py:423 +#: cps/shelf.py:436 #, python-format msgid "Shelf: '%(name)s'" msgstr "Полка: '%(name)s'" -#: cps/shelf.py:427 +#: cps/shelf.py:440 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Ошибка открытия Полки. Полка не существует или недоступна" -#: cps/updater.py:355 cps/updater.py:366 cps/updater.py:418 cps/updater.py:432 +#: cps/updater.py:374 cps/updater.py:385 cps/updater.py:485 cps/updater.py:500 msgid "Unexpected data while reading update information" msgstr "Некорректные данные при чтении информации об обновлении" -#: cps/updater.py:362 cps/updater.py:424 +#: cps/updater.py:381 cps/updater.py:492 msgid "No update available. You already have the latest version installed" msgstr "Нет доступных обновлений. Вы используете последнюю версию" -#: cps/updater.py:379 +#: cps/updater.py:399 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "Новое обновление доступно. Нажмите на кнопку ниже, чтобы обновить до последней версии." -#: cps/updater.py:397 +#: cps/updater.py:417 msgid "Could not fetch update information" msgstr "Не удалось получить информацию об обновлении" -#: cps/updater.py:411 -msgid "No release information available" -msgstr "Информация о выпуске недоступна" +#: cps/updater.py:427 +msgid "Click on the button below to update to the latest stable version." +msgstr "Нажмите на кнопку ниже для обновления до последней стабильной версии." -#: cps/updater.py:468 cps/updater.py:479 cps/updater.py:498 +#: cps/updater.py:436 cps/updater.py:450 cps/updater.py:461 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "Новое обновление доступно. Нажмите на кнопку ниже, чтобы обновиться до версии: %(version)s" -#: cps/updater.py:489 -msgid "Click on the button below to update to the latest stable version." -msgstr "Нажмите на кнопку ниже для обновления до последней стабильной версии." +#: cps/updater.py:478 +msgid "No release information available" +msgstr "Информация о выпуске недоступна" -#: cps/templates/index.html:5 cps/web.py:435 +#: cps/templates/index.html:5 cps/web.py:434 msgid "Discover (Random Books)" msgstr "Обзор (Случайные Книги)" -#: cps/web.py:461 +#: cps/web.py:460 msgid "Hot Books (Most Downloaded)" msgstr "Популярные книги (часто загружаемые)" -#: cps/web.py:489 +#: cps/web.py:493 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:503 +#: cps/web.py:508 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Невозможно открыть книгу. Файл не существует или недоступен" -#: cps/web.py:517 +#: cps/web.py:522 #, python-format msgid "Author: %(name)s" msgstr "Автор: %(name)s" -#: cps/web.py:531 +#: cps/web.py:537 #, python-format msgid "Publisher: %(name)s" msgstr "Издатель: %(name)s" -#: cps/web.py:544 +#: cps/web.py:550 #, python-format msgid "Series: %(serie)s" msgstr "Серии: %(serie)s" -#: cps/web.py:557 +#: cps/web.py:563 #, python-format msgid "Rating: %(rating)s stars" msgstr "Оценка: %(rating)s звезды(а)" -#: cps/web.py:570 +#: cps/web.py:576 #, python-format msgid "File format: %(format)s" msgstr "Формат файла: %(format)s" -#: cps/web.py:584 +#: cps/web.py:592 #, python-format msgid "Category: %(name)s" msgstr "Категория: %(name)s" -#: cps/web.py:603 +#: cps/web.py:611 #, python-format msgid "Language: %(name)s" msgstr "Язык: %(name)s" -#: cps/web.py:633 +#: cps/web.py:641 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:703 cps/web.py:1248 +#: cps/templates/layout.html:56 cps/web.py:711 cps/web.py:1314 msgid "Advanced Search" msgstr "Расширенный поиск" #: cps/templates/book_edit.html:214 cps/templates/feed.xml:33 #: cps/templates/index.xml:11 cps/templates/layout.html:45 #: cps/templates/layout.html:48 cps/templates/search_form.html:194 -#: cps/web.py:715 cps/web.py:987 +#: cps/web.py:723 cps/web.py:1061 msgid "Search" msgstr "Поиск" -#: cps/web.py:882 +#: cps/templates/admin.html:16 cps/web.py:876 +msgid "Downloads" +msgstr "Скачать" + +#: cps/web.py:952 msgid "Ratings list" msgstr "Список рейтингов" -#: cps/web.py:901 +#: cps/web.py:973 msgid "File formats list" msgstr "Список форматов файлов" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:964 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1038 msgid "Tasks" msgstr "Задания" -#: cps/web.py:1108 +#: cps/web.py:1182 msgid "Published after " msgstr "Опубликовано после " -#: cps/web.py:1115 +#: cps/web.py:1189 msgid "Published before " msgstr "Опубликовано до " -#: cps/web.py:1145 +#: cps/web.py:1211 #, python-format msgid "Rating <= %(rating)s" msgstr "Рейтинг <= %(rating)s" -#: cps/web.py:1147 +#: cps/web.py:1213 #, python-format msgid "Rating >= %(rating)s" msgstr "Рейтинг >= %(rating)s" -#: cps/web.py:1149 +#: cps/web.py:1215 #, python-format msgid "Read Status = %(status)s" msgstr "" -#: cps/web.py:1325 +#: cps/web.py:1387 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Книга успешно поставлена в очередь для отправки на %(kindlemail)s" -#: cps/web.py:1329 +#: cps/web.py:1391 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "При отправке этой книги произошла ошибка: %(res)s" -#: cps/web.py:1331 +#: cps/web.py:1393 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Пожалуйста, сначала настройте e-mail на вашем kindle..." -#: cps/web.py:1348 +#: cps/web.py:1410 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "Сервер электронной почты не настроен, обратитесь к администратору !" -#: cps/web.py:1349 cps/web.py:1359 cps/web.py:1366 cps/web.py:1389 -#: cps/web.py:1393 cps/web.py:1398 cps/web.py:1402 +#: cps/web.py:1411 cps/web.py:1418 cps/web.py:1424 cps/web.py:1443 +#: cps/web.py:1447 cps/web.py:1453 msgid "register" msgstr "регистрация" -#: cps/web.py:1364 -msgid "Invalid e-mail address format" -msgstr "" - -#: cps/web.py:1391 +#: cps/web.py:1445 msgid "Your e-mail is not allowed to register" msgstr "Ваш e-mail не подходит для регистрации" -#: cps/web.py:1394 +#: cps/web.py:1448 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Письмо с подтверждением отправлено вам на e-mail." -#: cps/web.py:1397 -msgid "This username or e-mail address is already in use." -msgstr "Этот никнейм или e-mail уже используются." - -#: cps/web.py:1414 +#: cps/web.py:1465 msgid "Cannot activate LDAP authentication" msgstr "Не удается активировать LDAP аутентификацию" -#: cps/web.py:1431 +#: cps/web.py:1482 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "Резервный вход в систему как: '%(nickname)s', LDAP-сервер недоступен или пользователь не известен" -#: cps/web.py:1437 +#: cps/web.py:1488 #, python-format msgid "Could not login: %(message)s" msgstr "Не удалось войти: %(message)s" -#: cps/web.py:1441 cps/web.py:1465 +#: cps/web.py:1492 cps/web.py:1516 msgid "Wrong Username or Password" msgstr "Ошибка в имени пользователя или пароле" -#: cps/web.py:1448 +#: cps/web.py:1499 msgid "New Password was send to your email address" msgstr "Новый пароль был отправлен на ваш адрес электронной почты" -#: cps/web.py:1454 +#: cps/web.py:1505 msgid "Please enter valid username to reset password" msgstr "Пожалуйста, введите действительное имя пользователя для сброса пароля" -#: cps/web.py:1460 +#: cps/web.py:1511 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Вы вошли как: '%(nickname)s'" -#: cps/web.py:1498 cps/web.py:1583 +#: cps/web.py:1565 cps/web.py:1612 #, python-format msgid "%(name)s's profile" msgstr "Профиль %(name)s's" -#: cps/web.py:1550 +#: cps/web.py:1579 msgid "Profile updated" msgstr "Профиль обновлён" -#: cps/web.py:1610 cps/web.py:1613 cps/web.py:1616 cps/web.py:1619 -#: cps/web.py:1626 cps/web.py:1631 +#: cps/web.py:1583 +msgid "Found an existing account for this e-mail address." +msgstr "Этот адрес электронной почты уже зарегистрирован." + +#: cps/web.py:1639 cps/web.py:1642 cps/web.py:1645 cps/web.py:1648 +#: cps/web.py:1655 cps/web.py:1660 msgid "Read a Book" msgstr "Читать Книгу" +#: cps/services/gmail.py:41 +msgid "Found no valid gmail.json file with OAuth information" +msgstr "" + #: cps/tasks/convert.py:114 #, python-format msgid "Calibre ebook-convert %(tool)s not found" @@ -1164,221 +1296,231 @@ msgstr "" msgid "Users" msgstr "Список пользователей" -#: cps/templates/admin.html:12 cps/templates/login.html:8 +#: cps/templates/admin.html:13 cps/templates/login.html:8 #: cps/templates/login.html:9 cps/templates/register.html:8 -#: cps/templates/user_edit.html:9 +#: cps/templates/user_edit.html:9 cps/templates/user_table.html:121 msgid "Username" msgstr "Имя пользователя" -#: cps/templates/admin.html:13 cps/templates/register.html:13 -#: cps/templates/user_edit.html:14 +#: cps/templates/admin.html:14 cps/templates/register.html:13 +#: cps/templates/user_edit.html:14 cps/templates/user_table.html:122 msgid "E-mail Address" msgstr "Адрес электронной почты" -#: cps/templates/admin.html:14 cps/templates/user_edit.html:27 +#: cps/templates/admin.html:15 cps/templates/user_edit.html:27 msgid "Send to Kindle E-mail Address" msgstr "Отправить на Kindle Адрес электронной почты" -#: cps/templates/admin.html:15 -msgid "Downloads" -msgstr "Скачать" - -#: cps/templates/admin.html:16 cps/templates/layout.html:77 +#: cps/templates/admin.html:17 cps/templates/layout.html:77 +#: cps/templates/user_table.html:130 msgid "Admin" msgstr "Управление" -#: cps/templates/admin.html:17 cps/templates/login.html:12 +#: cps/templates/admin.html:18 cps/templates/login.html:12 #: cps/templates/login.html:13 cps/templates/user_edit.html:22 msgid "Password" msgstr "Пароль" -#: cps/templates/admin.html:18 cps/templates/layout.html:66 +#: cps/templates/admin.html:19 cps/templates/layout.html:66 +#: cps/templates/user_table.html:132 msgid "Upload" msgstr "Загрузить" -#: cps/templates/admin.html:19 cps/templates/detail.html:18 +#: cps/templates/admin.html:20 cps/templates/detail.html:18 #: cps/templates/detail.html:27 cps/templates/shelf.html:6 +#: cps/templates/user_table.html:133 msgid "Download" msgstr "Скачать" -#: cps/templates/admin.html:20 +#: cps/templates/admin.html:21 msgid "View Books" msgstr "Посмотреть электронные книги" -#: cps/templates/admin.html:21 +#: cps/templates/admin.html:22 cps/templates/user_table.html:118 +#: cps/templates/user_table.html:135 msgid "Edit" msgstr "Редактировать" -#: cps/templates/admin.html:22 cps/templates/book_edit.html:16 -#: cps/templates/book_table.html:57 cps/templates/modal_dialogs.html:63 +#: cps/templates/admin.html:23 cps/templates/book_edit.html:16 +#: cps/templates/book_table.html:58 cps/templates/modal_dialogs.html:63 #: cps/templates/modal_dialogs.html:116 cps/templates/user_edit.html:66 +#: cps/templates/user_table.html:136 msgid "Delete" msgstr "Удалить" -#: cps/templates/admin.html:23 +#: cps/templates/admin.html:24 msgid "Public Shelf" msgstr "" -#: cps/templates/admin.html:44 +#: cps/templates/admin.html:47 msgid "Add New User" msgstr "Добавить нового пользователя" -#: cps/templates/admin.html:46 +#: cps/templates/admin.html:49 msgid "Import LDAP Users" msgstr "Импорт пользователей LDAP" -#: cps/templates/admin.html:53 +#: cps/templates/admin.html:56 msgid "E-mail Server Settings" msgstr "Настройки SMTP-сервера" -#: cps/templates/admin.html:57 cps/templates/email_edit.html:11 +#: cps/templates/admin.html:61 cps/templates/email_edit.html:30 msgid "SMTP Hostname" msgstr "SMTP-сервер" -#: cps/templates/admin.html:61 cps/templates/email_edit.html:15 +#: cps/templates/admin.html:65 cps/templates/email_edit.html:34 msgid "SMTP Port" msgstr "SMTP-порт" -#: cps/templates/admin.html:65 cps/templates/email_edit.html:19 +#: cps/templates/admin.html:69 cps/templates/email_edit.html:38 msgid "Encryption" msgstr "SSL" -#: cps/templates/admin.html:69 cps/templates/email_edit.html:27 +#: cps/templates/admin.html:73 cps/templates/email_edit.html:46 msgid "SMTP Login" msgstr "SMTP-логин" -#: cps/templates/admin.html:73 cps/templates/email_edit.html:35 +#: cps/templates/admin.html:77 cps/templates/admin.html:88 +#: cps/templates/email_edit.html:54 msgid "From E-mail" msgstr "Отправитель" #: cps/templates/admin.html:84 +msgid "E-Mail Service" +msgstr "" + +#: cps/templates/admin.html:85 +msgid "Gmail via Oauth2" +msgstr "" + +#: cps/templates/admin.html:100 msgid "Configuration" msgstr "Настройки сервера" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:103 msgid "Calibre Database Directory" msgstr "Расположение базы данных Calibre" -#: cps/templates/admin.html:91 cps/templates/config_edit.html:136 +#: cps/templates/admin.html:107 cps/templates/config_edit.html:136 msgid "Log Level" msgstr "Уровень логирования" -#: cps/templates/admin.html:95 +#: cps/templates/admin.html:111 msgid "Port" msgstr "Порт" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:116 msgid "External Port" msgstr "" -#: cps/templates/admin.html:107 cps/templates/config_view_edit.html:27 +#: cps/templates/admin.html:123 cps/templates/config_view_edit.html:27 msgid "Books per Page" msgstr "Количество книг на странице" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:127 msgid "Uploads" msgstr "Загрузка на сервер" -#: cps/templates/admin.html:115 +#: cps/templates/admin.html:131 msgid "Anonymous Browsing" msgstr "Анонимный просмотр" -#: cps/templates/admin.html:119 +#: cps/templates/admin.html:135 msgid "Public Registration" msgstr "Публичная регистрация" -#: cps/templates/admin.html:123 +#: cps/templates/admin.html:139 msgid "Magic Link Remote Login" msgstr "Удалённый логин" -#: cps/templates/admin.html:127 +#: cps/templates/admin.html:143 msgid "Reverse Proxy Login" msgstr "Логин обратного прокси" -#: cps/templates/admin.html:132 +#: cps/templates/admin.html:148 msgid "Reverse proxy header name" msgstr "Имя заголовка обратного прокси" -#: cps/templates/admin.html:137 +#: cps/templates/admin.html:153 msgid "Edit Basic Configuration" msgstr "Изменить основные настройки" -#: cps/templates/admin.html:138 +#: cps/templates/admin.html:154 msgid "Edit UI Configuration" msgstr "Изменить настройки интерфейса" -#: cps/templates/admin.html:143 +#: cps/templates/admin.html:159 msgid "Administration" msgstr "Управление" -#: cps/templates/admin.html:144 +#: cps/templates/admin.html:160 msgid "Download Debug Package" msgstr "" -#: cps/templates/admin.html:145 +#: cps/templates/admin.html:161 msgid "View Logs" msgstr "Просмотреть лог файл" -#: cps/templates/admin.html:148 +#: cps/templates/admin.html:164 msgid "Reconnect Calibre Database" msgstr "Пере подключиться к базе жанных Calibre" -#: cps/templates/admin.html:149 +#: cps/templates/admin.html:165 msgid "Restart" msgstr "Перезагрузить Calibre-Web" -#: cps/templates/admin.html:150 +#: cps/templates/admin.html:166 msgid "Shutdown" msgstr "Остановить Calibre-Web" -#: cps/templates/admin.html:155 +#: cps/templates/admin.html:171 msgid "Update" msgstr "Обновление" -#: cps/templates/admin.html:159 +#: cps/templates/admin.html:175 msgid "Version" msgstr "Версия" -#: cps/templates/admin.html:160 +#: cps/templates/admin.html:176 msgid "Details" msgstr "Подробности" -#: cps/templates/admin.html:166 +#: cps/templates/admin.html:182 msgid "Current version" msgstr "Текущая версия" -#: cps/templates/admin.html:173 +#: cps/templates/admin.html:189 msgid "Check for Update" msgstr "Проверка обновлений" -#: cps/templates/admin.html:174 +#: cps/templates/admin.html:190 msgid "Perform Update" msgstr "Установить обновления" -#: cps/templates/admin.html:187 +#: cps/templates/admin.html:203 msgid "Are you sure you want to restart?" msgstr "Вы действительно хотите перезагрузить Calibre-Web?" -#: cps/templates/admin.html:192 cps/templates/admin.html:206 -#: cps/templates/admin.html:226 cps/templates/shelf.html:95 +#: cps/templates/admin.html:208 cps/templates/admin.html:222 +#: cps/templates/admin.html:242 cps/templates/shelf.html:95 msgid "OK" msgstr "Ok" -#: cps/templates/admin.html:193 cps/templates/admin.html:207 -#: cps/templates/book_edit.html:192 cps/templates/book_table.html:84 +#: cps/templates/admin.html:209 cps/templates/admin.html:223 +#: cps/templates/book_edit.html:192 cps/templates/book_table.html:85 #: cps/templates/config_edit.html:427 cps/templates/config_view_edit.html:151 -#: cps/templates/email_edit.html:47 cps/templates/modal_dialogs.html:64 -#: cps/templates/modal_dialogs.html:99 cps/templates/modal_dialogs.html:117 +#: cps/templates/modal_dialogs.html:64 cps/templates/modal_dialogs.html:99 +#: cps/templates/modal_dialogs.html:117 cps/templates/modal_dialogs.html:135 #: cps/templates/shelf.html:96 cps/templates/shelf_edit.html:19 #: cps/templates/user_edit.html:132 msgid "Cancel" msgstr "Отмена" -#: cps/templates/admin.html:205 +#: cps/templates/admin.html:221 msgid "Are you sure you want to shutdown?" msgstr "Вы действительно хотите остановить Calibre-Web?" -#: cps/templates/admin.html:217 +#: cps/templates/admin.html:233 msgid "Updating, please do not reload this page" msgstr "Установка обновлений, пожалуйста, не обновляйте страницу" @@ -1486,6 +1628,7 @@ msgid "Identifier Value" msgstr "" #: cps/templates/book_edit.html:72 cps/templates/book_edit.html:289 +#: cps/templates/user_table.html:23 msgid "Remove" msgstr "" @@ -1551,7 +1694,7 @@ msgid "Fetch Metadata" msgstr "Получить метаданные" #: cps/templates/book_edit.html:191 cps/templates/config_edit.html:424 -#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45 +#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:64 #: cps/templates/shelf_edit.html:17 cps/templates/shelf_order.html:40 #: cps/templates/user_edit.html:130 msgid "Save" @@ -1591,96 +1734,98 @@ msgstr "Ошибка поиска!" msgid "No Result(s) found! Please try another keyword." msgstr "Результат(ы) не найдены! Попробуйте другое ключевое слово." -#: cps/templates/book_table.html:10 cps/templates/book_table.html:52 +#: cps/templates/book_table.html:11 cps/templates/book_table.html:53 +#: cps/templates/user_table.html:13 cps/templates/user_table.html:65 +#: cps/templates/user_table.html:88 msgid "This Field is Required" msgstr "" -#: cps/templates/book_table.html:23 +#: cps/templates/book_table.html:24 msgid "Merge selected books" msgstr "" -#: cps/templates/book_table.html:24 +#: cps/templates/book_table.html:25 cps/templates/user_table.html:111 msgid "Remove Selections" msgstr "" -#: cps/templates/book_table.html:30 +#: cps/templates/book_table.html:31 msgid "Update Title Sort automatically" msgstr "" -#: cps/templates/book_table.html:34 +#: cps/templates/book_table.html:35 msgid "Update Author Sort automatically" msgstr "" -#: cps/templates/book_table.html:46 +#: cps/templates/book_table.html:47 msgid "Enter Title" msgstr "" -#: cps/templates/book_table.html:46 cps/templates/config_view_edit.html:23 +#: cps/templates/book_table.html:47 cps/templates/config_view_edit.html:23 #: cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Заголовок" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Enter Title Sort" msgstr "" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Title Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Enter Author Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Author Sort" msgstr "" -#: cps/templates/book_table.html:49 +#: cps/templates/book_table.html:50 msgid "Enter Authors" msgstr "" -#: cps/templates/book_table.html:50 +#: cps/templates/book_table.html:51 msgid "Enter Categories" msgstr "" -#: cps/templates/book_table.html:51 +#: cps/templates/book_table.html:52 msgid "Enter Series" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Enter title" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Series Index" msgstr "" -#: cps/templates/book_table.html:53 +#: cps/templates/book_table.html:54 msgid "Enter Languages" msgstr "" -#: cps/templates/book_table.html:54 +#: cps/templates/book_table.html:55 msgid "Publishing Date" msgstr "" -#: cps/templates/book_table.html:55 +#: cps/templates/book_table.html:56 msgid "Enter Publishers" msgstr "" -#: cps/templates/book_table.html:70 cps/templates/modal_dialogs.html:46 +#: cps/templates/book_table.html:71 cps/templates/modal_dialogs.html:46 msgid "Are you really sure?" msgstr "Вы действительно уверены?" -#: cps/templates/book_table.html:74 +#: cps/templates/book_table.html:75 msgid "Books with Title will be merged from:" msgstr "" -#: cps/templates/book_table.html:78 +#: cps/templates/book_table.html:79 msgid "Into Book with Title:" msgstr "" -#: cps/templates/book_table.html:83 +#: cps/templates/book_table.html:84 msgid "Merge" msgstr "" @@ -1865,7 +2010,7 @@ msgid "LDAP Encryption" msgstr "Шифрование LDAP" #: cps/templates/config_edit.html:268 cps/templates/config_view_edit.html:61 -#: cps/templates/email_edit.html:21 +#: cps/templates/email_edit.html:40 msgid "None" msgstr "Нет" @@ -2078,6 +2223,7 @@ msgid "Default Visibilities for New Users" msgstr "Видимость для новых пользователей(по умолчанию)" #: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82 +#: cps/templates/user_table.html:138 msgid "Show Random Books in Detail View" msgstr "Показывать случайные книги при просмотре деталей" @@ -2151,43 +2297,69 @@ msgstr "(Публичная)" msgid "Edit Metadata" msgstr "Редактировать метаданные" -#: cps/templates/email_edit.html:22 +#: cps/templates/email_edit.html:12 +msgid "Choose Server Type" +msgstr "" + +#: cps/templates/email_edit.html:14 +msgid "Use Standard E-Mail Account" +msgstr "" + +#: cps/templates/email_edit.html:15 +msgid "Gmail Account with OAuth2 Verfification" +msgstr "" + +#: cps/templates/email_edit.html:21 +msgid "Setup Gmail Account as E-Mail Server" +msgstr "" + +#: cps/templates/email_edit.html:23 +msgid "Revoke Gmail Access" +msgstr "" + +#: cps/templates/email_edit.html:41 msgid "STARTTLS" msgstr "STARTTLS" -#: cps/templates/email_edit.html:23 +#: cps/templates/email_edit.html:42 msgid "SSL/TLS" msgstr "SSL/TLS" -#: cps/templates/email_edit.html:31 +#: cps/templates/email_edit.html:50 msgid "SMTP Password" msgstr "Пароль SMTP" -#: cps/templates/email_edit.html:38 +#: cps/templates/email_edit.html:57 msgid "Attachment Size Limit" msgstr "" -#: cps/templates/email_edit.html:46 +#: cps/templates/email_edit.html:65 msgid "Save and Send Test E-mail" msgstr "Сохранить настройки и отправить тестовое письмо" -#: cps/templates/email_edit.html:51 +#: cps/templates/email_edit.html:69 cps/templates/layout.html:29 +#: cps/templates/shelf_order.html:41 cps/templates/user_table.html:158 +msgid "Back" +msgstr "Назад" + +#: cps/templates/email_edit.html:73 msgid "Allowed Domains (Whitelist)" msgstr "Допустимые домены для регистрации" -#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80 +#: cps/templates/email_edit.html:76 cps/templates/email_edit.html:102 msgid "Add Domain" msgstr "Добавить Домен" -#: cps/templates/email_edit.html:57 cps/templates/email_edit.html:83 +#: cps/templates/email_edit.html:79 cps/templates/email_edit.html:105 +#: cps/templates/user_table.html:26 msgid "Add" msgstr "Добавить" -#: cps/templates/email_edit.html:62 cps/templates/email_edit.html:72 +#: cps/templates/email_edit.html:84 cps/templates/email_edit.html:94 msgid "Enter domainname" msgstr "Введите доменное имя" -#: cps/templates/email_edit.html:68 +#: cps/templates/email_edit.html:90 msgid "Denied Domains (Blacklist)" msgstr "Запрещенные домены (черный список)" @@ -2199,10 +2371,6 @@ msgstr "Далее" msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):" msgstr "Откройте файл .kobo / Kobo eReader.conf в текстовом редакторе и добавьте (или отредактируйте):" -#: cps/templates/grid.html:14 cps/templates/list.html:14 -msgid "All" -msgstr "Все" - #: cps/templates/http_error.html:38 msgid "Create Issue" msgstr "Создать запись" @@ -2233,64 +2401,72 @@ msgstr "" msgid "Start" msgstr "Старт" +#: cps/templates/index.xml:18 +msgid "Alphabetical Books" +msgstr "" + #: cps/templates/index.xml:22 +msgid "Books sorted alphabetically" +msgstr "" + +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Downloads." msgstr "Популярные книги в этом каталоге, на основе количества Скачиваний." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:36 msgid "Popular publications from this catalog based on Rating." msgstr "Популярные книги из этого каталога на основании Рейтинга." -#: cps/templates/index.xml:32 +#: cps/templates/index.xml:39 msgid "Recently added Books" msgstr "Недавно добавленные книги" -#: cps/templates/index.xml:36 +#: cps/templates/index.xml:43 msgid "The latest Books" msgstr "Последние Книги" -#: cps/templates/index.xml:39 +#: cps/templates/index.xml:46 msgid "Random Books" msgstr "Случайный выбор" -#: cps/templates/index.xml:43 +#: cps/templates/index.xml:50 msgid "Show Random Books" msgstr "Показывать Случайные Книги" -#: cps/templates/index.xml:66 +#: cps/templates/index.xml:73 msgid "Books ordered by Author" msgstr "Книги, отсортированные по Автору" -#: cps/templates/index.xml:73 +#: cps/templates/index.xml:80 msgid "Books ordered by publisher" msgstr "Книги, отсортированные по издателю" -#: cps/templates/index.xml:80 +#: cps/templates/index.xml:87 msgid "Books ordered by category" msgstr "Книги, отсортированные по категории" -#: cps/templates/index.xml:87 +#: cps/templates/index.xml:94 msgid "Books ordered by series" msgstr "Книги, отсортированные по серии" -#: cps/templates/index.xml:94 +#: cps/templates/index.xml:101 msgid "Books ordered by Languages" msgstr "Книги отсортированы по языкам" -#: cps/templates/index.xml:101 +#: cps/templates/index.xml:108 msgid "Books ordered by Rating" msgstr "Книги, упорядоченные по рейтингу" -#: cps/templates/index.xml:109 +#: cps/templates/index.xml:116 msgid "Books ordered by file formats" msgstr "Книги отсортированы по формату файла" -#: cps/templates/index.xml:112 cps/templates/layout.html:135 +#: cps/templates/index.xml:119 cps/templates/layout.html:135 #: cps/templates/search_form.html:80 msgid "Shelves" msgstr "Полки" -#: cps/templates/index.xml:116 +#: cps/templates/index.xml:123 msgid "Books organized in shelves" msgstr "Книги организованы на полках" @@ -2298,10 +2474,6 @@ msgstr "Книги организованы на полках" msgid "Home" msgstr "Главная" -#: cps/templates/layout.html:29 cps/templates/shelf_order.html:41 -msgid "Back" -msgstr "Назад" - #: cps/templates/layout.html:35 msgid "Toggle Navigation" msgstr "Включить навигацию" @@ -2463,6 +2635,11 @@ msgstr "" msgid "Select" msgstr "" +#: cps/templates/modal_dialogs.html:134 +#, fuzzy +msgid "Ok" +msgstr "Книга" + #: cps/templates/osd.xml:5 msgid "Calibre-Web eBook Catalog" msgstr "Каталог электронных книг Caliber-Web" @@ -2768,10 +2945,6 @@ msgstr "Сбросить пароль пользователя" msgid "Language of Books" msgstr "Показать книги на языках" -#: cps/templates/user_edit.html:44 -msgid "Show All" -msgstr "Показать все" - #: cps/templates/user_edit.html:53 msgid "OAuth Settings" msgstr "Настройки OAuth" @@ -2796,7 +2969,7 @@ msgstr "Создать/Просмотреть" msgid "Add allowed/Denied Custom Column Values" msgstr "Добавить разрешенные / запрещенные значения индивидуальных столбцов" -#: cps/templates/user_edit.html:135 +#: cps/templates/user_edit.html:135 cps/templates/user_table.html:153 msgid "Delete User" msgstr "Удалить этого пользователя" @@ -2804,3 +2977,98 @@ msgstr "Удалить этого пользователя" msgid "Generate Kobo Auth URL" msgstr "Создать Kobo Auth URL" +#: cps/templates/user_table.html:68 cps/templates/user_table.html:91 +msgid "Select..." +msgstr "" + +#: cps/templates/user_table.html:118 +#, fuzzy +msgid "Edit User" +msgstr "Управление сервером" + +#: cps/templates/user_table.html:121 +#, fuzzy +msgid "Enter Username" +msgstr "Выберите имя пользователя" + +#: cps/templates/user_table.html:122 +#, fuzzy +msgid "Enter E-mail Address" +msgstr "Ваш email-адрес" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Enter Kindle E-mail Address" +msgstr "Отправить на Kindle Адрес электронной почты" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Kindle E-mail" +msgstr "Тестовый e-mail" + +#: cps/templates/user_table.html:124 +#, fuzzy +msgid "Locale" +msgstr "Масштаб" + +#: cps/templates/user_table.html:125 +msgid "Visible Book Languages" +msgstr "" + +#: cps/templates/user_table.html:126 +#, fuzzy +msgid "Edit Denied Tags" +msgstr "Выбрать разрешенные / запрещенные теги" + +#: cps/templates/user_table.html:126 +msgid "Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +#, fuzzy +msgid "Edit Allowed Tags" +msgstr "Выбрать разрешенные / запрещенные теги" + +#: cps/templates/user_table.html:127 +msgid "Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Edit Allowed Column Values" +msgstr "Добавить разрешенные / запрещенные значения индивидуальных столбцов" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Allowed Column Values" +msgstr "Добавить разрешенные / запрещенные значения индивидуальных столбцов" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Edit Denied Column Values" +msgstr "Добавить разрешенные / запрещенные значения индивидуальных столбцов" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Denied Columns Values" +msgstr "Добавить разрешенные / запрещенные значения индивидуальных столбцов" + +#: cps/templates/user_table.html:131 +#, fuzzy +msgid "Change Password" +msgstr "Разрешить смену пароля" + +#: cps/templates/user_table.html:134 +msgid "View" +msgstr "" + +#: cps/templates/user_table.html:137 +#, fuzzy +msgid "Edit Public Shelfs" +msgstr "Изменить полку" + +#: cps/templates/user_table.html:140 +#, fuzzy +msgid "Show read/unread selection" +msgstr "Показывать выбор серии" + diff --git a/cps/translations/sv/LC_MESSAGES/messages.mo b/cps/translations/sv/LC_MESSAGES/messages.mo index 19c2e367..b51dcc5f 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 01017442..307c4c09 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: 2021-03-27 12:16+0100\n" +"POT-Creation-Date: 2021-05-01 16:33+0200\n" "PO-Revision-Date: 2020-03-14 09:30+0100\n" "Last-Translator: Jonatan Nyberg \n" "Language: sv\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" +"Generated-By: Babel 2.8.0\n" #: cps/about.py:43 msgid "installed" @@ -30,310 +30,405 @@ msgstr "inte installerad" msgid "Statistics" msgstr "Statistik" -#: cps/admin.py:149 +#: cps/admin.py:151 msgid "Server restarted, please reload page" msgstr "Server startas om, vänligen uppdatera sidan" -#: cps/admin.py:151 +#: cps/admin.py:153 msgid "Performing shutdown of server, please close window" msgstr "Stänger servern, vänligen stäng fönstret" -#: cps/admin.py:159 +#: cps/admin.py:161 msgid "Reconnect successful" msgstr "" -#: cps/admin.py:162 +#: cps/admin.py:164 msgid "Unknown command" msgstr "" -#: cps/admin.py:172 cps/editbooks.py:662 cps/editbooks.py:674 -#: cps/editbooks.py:777 cps/editbooks.py:779 cps/editbooks.py:806 -#: cps/editbooks.py:822 cps/updater.py:521 cps/uploader.py:94 +#: cps/admin.py:174 cps/editbooks.py:668 cps/editbooks.py:682 +#: cps/editbooks.py:821 cps/editbooks.py:823 cps/editbooks.py:850 +#: cps/editbooks.py:866 cps/updater.py:555 cps/uploader.py:94 #: cps/uploader.py:104 msgid "Unknown" msgstr "Okänd" -#: cps/admin.py:193 +#: cps/admin.py:195 msgid "Admin page" msgstr "Administrationssida" -#: cps/admin.py:215 +#: cps/admin.py:217 msgid "UI Configuration" msgstr "Användargränssnitt konfiguration" -#: cps/admin.py:247 cps/admin.py:936 +#: cps/admin.py:249 cps/templates/admin.html:46 +#, fuzzy +msgid "Edit Users" +msgstr "Adminstratör användare" + +#: cps/admin.py:290 +#, fuzzy +msgid "all" +msgstr "Alla" + +#: cps/admin.py:315 cps/admin.py:1486 +msgid "User not found" +msgstr "" + +#: cps/admin.py:329 +msgid "{} users deleted successfully" +msgstr "" + +#: cps/admin.py:351 cps/templates/user_edit.html:44 +#: cps/templates/user_table.html:69 +msgid "Show All" +msgstr "Visa alla" + +#: cps/admin.py:372 cps/admin.py:378 +msgid "Malformed request" +msgstr "" + +#: cps/admin.py:390 cps/admin.py:1368 +msgid "Guest Name can't be changed" +msgstr "" + +#: cps/admin.py:400 +msgid "Guest can't have this role" +msgstr "" + +#: cps/admin.py:412 cps/admin.py:1333 +msgid "No admin user remaining, can't remove admin role" +msgstr "" + +#: cps/admin.py:416 cps/admin.py:430 +msgid "Value has to be true or false" +msgstr "" + +#: cps/admin.py:418 +msgid "Invalid role" +msgstr "" + +#: cps/admin.py:422 +msgid "Guest can't have this view" +msgstr "" + +#: cps/admin.py:432 +msgid "Invalid view" +msgstr "" + +#: cps/admin.py:435 +msgid "Guest's Locale is determined automatically and can't be set" +msgstr "" + +#: cps/admin.py:439 +msgid "No Valid Locale Given" +msgstr "" + +#: cps/admin.py:450 +msgid "No Valid Book Language Given" +msgstr "" + +#: cps/admin.py:452 +msgid "Parameter not found" +msgstr "" + +#: cps/admin.py:506 cps/admin.py:1219 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web konfiguration uppdaterad" -#: cps/admin.py:258 +#: cps/admin.py:518 msgid "Do you really want to delete the Kobo Token?" msgstr "Vill du verkligen ta bort Kobo-token?" -#: cps/admin.py:260 +#: cps/admin.py:520 msgid "Do you really want to delete this domain?" msgstr "" -#: cps/admin.py:262 +#: cps/admin.py:522 msgid "Do you really want to delete this user?" msgstr "" -#: cps/admin.py:264 cps/templates/shelf.html:90 +#: cps/admin.py:524 cps/templates/shelf.html:90 msgid "Are you sure you want to delete this shelf?" msgstr "Är du säker på att du vill ta bort hyllan?" -#: cps/admin.py:510 cps/admin.py:516 cps/admin.py:526 cps/admin.py:536 -#: cps/templates/modal_dialogs.html:29 +#: cps/admin.py:526 +#, fuzzy +msgid "Are you sure you want to change locales of selected user(s)?" +msgstr "Är du säker på att du vill ta bort hyllan?" + +#: cps/admin.py:528 +msgid "Are you sure you want to change visible book languages for selected user(s)?" +msgstr "" + +#: cps/admin.py:530 +msgid "Are you sure you want to change the selected role for the selected user(s)?" +msgstr "" + +#: cps/admin.py:532 +#, fuzzy +msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" +msgstr "Är du säker på att du vill ta bort hyllan?" + +#: cps/admin.py:534 +msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:683 +msgid "Tag not found" +msgstr "" + +#: cps/admin.py:695 +msgid "Invalid Action" +msgstr "" + +#: cps/admin.py:800 cps/admin.py:806 cps/admin.py:816 cps/admin.py:826 +#: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:43 msgid "Deny" msgstr "Förneka" -#: cps/admin.py:512 cps/admin.py:518 cps/admin.py:528 cps/admin.py:538 -#: cps/templates/modal_dialogs.html:28 +#: cps/admin.py:802 cps/admin.py:808 cps/admin.py:818 cps/admin.py:828 +#: cps/templates/modal_dialogs.html:28 cps/templates/user_table.html:48 msgid "Allow" msgstr "Tillåt" -#: cps/admin.py:681 +#: cps/admin.py:971 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "" -#: cps/admin.py:723 +#: cps/admin.py:1016 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:729 +#: cps/admin.py:1022 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:738 +#: cps/admin.py:1052 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "" -#: cps/admin.py:752 cps/admin.py:760 +#: cps/admin.py:1067 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:755 cps/admin.py:763 +#: cps/admin.py:1070 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:768 +#: cps/admin.py:1075 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:771 +#: cps/admin.py:1078 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:779 +#: cps/admin.py:1086 #, python-format msgid "LDAP Member User Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:782 +#: cps/admin.py:1089 msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:790 +#: cps/admin.py:1097 msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:841 +#: cps/admin.py:1123 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:847 +#: cps/admin.py:1129 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:917 cps/admin.py:1024 cps/admin.py:1047 cps/admin.py:1168 -#: cps/shelf.py:102 cps/shelf.py:159 cps/shelf.py:200 cps/shelf.py:261 -#: cps/shelf.py:314 cps/shelf.py:348 cps/shelf.py:418 +#: cps/admin.py:1200 cps/admin.py:1303 cps/admin.py:1395 cps/admin.py:1461 +#: cps/shelf.py:103 cps/shelf.py:163 cps/shelf.py:206 cps/shelf.py:269 +#: cps/shelf.py:325 cps/shelf.py:360 cps/shelf.py:431 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:929 +#: cps/admin.py:1212 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:933 +#: cps/admin.py:1216 msgid "DB is not Writeable" msgstr "" -#: cps/admin.py:972 +#: cps/admin.py:1256 msgid "Basic Configuration" msgstr "Grundläggande konfiguration" -#: cps/admin.py:987 cps/web.py:1358 +#: cps/admin.py:1272 cps/web.py:1417 msgid "Please fill out all fields!" msgstr "Fyll i alla fält!" -#: cps/admin.py:990 cps/admin.py:1002 cps/admin.py:1008 cps/admin.py:1138 -msgid "Add new user" -msgstr "Lägg till ny användare" - -#: cps/admin.py:999 cps/web.py:1496 +#: cps/admin.py:1280 msgid "E-mail is not from valid domain" msgstr "E-posten är inte från giltig domän" -#: cps/admin.py:1006 cps/admin.py:1021 -msgid "Found an existing account for this e-mail address or nickname." -msgstr "Hittade ett befintligt konto för den här e-postadressen eller smeknamnet." +#: cps/admin.py:1284 cps/admin.py:1414 +msgid "Add new user" +msgstr "Lägg till ny användare" -#: cps/admin.py:1017 +#: cps/admin.py:1293 #, python-format msgid "User '%(user)s' created" msgstr "Användaren '%(user)s' skapad" -#: cps/admin.py:1031 +#: cps/admin.py:1299 +#, fuzzy +msgid "Found an existing account for this e-mail address or name." +msgstr "Hittade ett befintligt konto för den här e-postadressen eller smeknamnet." + +#: cps/admin.py:1312 #, python-format msgid "User '%(nick)s' deleted" msgstr "Användaren '%(nick)s' borttagen" -#: cps/admin.py:1034 +#: cps/admin.py:1314 cps/admin.py:1315 +msgid "Can't delete Guest User" +msgstr "" + +#: cps/admin.py:1318 msgid "No admin user remaining, can't delete user" msgstr "Ingen adminstratörsanvändare kvar, kan inte ta bort användaren" -#: cps/admin.py:1041 -#, python-format -msgid "User '%(nick)s' updated" -msgstr "Användaren '%(nick)s' uppdaterad" - -#: cps/admin.py:1044 -msgid "An unknown error occured." -msgstr "Ett okänt fel uppstod." - -#: cps/admin.py:1056 -msgid "No admin user remaining, can't remove admin role" -msgstr "" - -#: cps/admin.py:1092 cps/web.py:1554 -msgid "Found an existing account for this e-mail address." -msgstr "Hittade ett befintligt konto för den här e-postadressen." - -#: cps/admin.py:1101 cps/admin.py:1115 cps/admin.py:1209 cps/web.py:1516 +#: cps/admin.py:1383 cps/admin.py:1504 #, python-format msgid "Edit User %(nick)s" msgstr "Redigera användaren %(nick)s" -#: cps/admin.py:1107 cps/web.py:1509 -msgid "This username is already taken" -msgstr "Detta användarnamn är redan taget" +#: cps/admin.py:1387 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "Användaren '%(nick)s' uppdaterad" -#: cps/admin.py:1147 cps/templates/admin.html:78 +#: cps/admin.py:1391 +#, fuzzy +msgid "An unknown error occurred." +msgstr "Ett okänt fel uppstod." + +#: cps/admin.py:1423 cps/templates/admin.html:94 msgid "Edit E-mail Server Settings" msgstr "Ändra SMTP-inställningar" -#: cps/admin.py:1175 +#: cps/admin.py:1442 +msgid "G-Mail Account Verification Successful" +msgstr "" + +#: cps/admin.py:1468 #, python-format msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" msgstr "" -#: cps/admin.py:1178 +#: cps/admin.py:1471 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Det gick inte att skicka Testmeddelandet: %(res)s" -#: cps/admin.py:1180 +#: cps/admin.py:1473 msgid "Please configure your e-mail address first..." msgstr "Vänligen konfigurera din e-postadress först..." -#: cps/admin.py:1182 +#: cps/admin.py:1475 msgid "E-mail server settings updated" msgstr "E-postserverinställningar uppdaterade" -#: cps/admin.py:1193 -msgid "User not found" -msgstr "" - -#: cps/admin.py:1220 +#: cps/admin.py:1516 #, python-format msgid "Password for user %(user)s reset" msgstr "Lösenord för användaren %(user)s återställd" -#: cps/admin.py:1223 cps/web.py:1388 cps/web.py:1452 +#: cps/admin.py:1519 cps/web.py:1442 cps/web.py:1503 msgid "An unknown error occurred. Please try again later." msgstr "Ett okänt fel uppstod. Försök igen senare." -#: cps/admin.py:1226 cps/web.py:1320 +#: cps/admin.py:1522 cps/web.py:1382 msgid "Please configure the SMTP mail settings first..." msgstr "Konfigurera SMTP-postinställningarna först..." -#: cps/admin.py:1237 +#: cps/admin.py:1533 msgid "Logfile viewer" msgstr "Visaren för loggfil" -#: cps/admin.py:1303 +#: cps/admin.py:1599 msgid "Requesting update package" msgstr "Begär uppdateringspaketet" -#: cps/admin.py:1304 +#: cps/admin.py:1600 msgid "Downloading update package" msgstr "Hämtar uppdateringspaketet" -#: cps/admin.py:1305 +#: cps/admin.py:1601 msgid "Unzipping update package" msgstr "Packar upp uppdateringspaketet" -#: cps/admin.py:1306 +#: cps/admin.py:1602 msgid "Replacing files" msgstr "Ersätta filer" -#: cps/admin.py:1307 +#: cps/admin.py:1603 msgid "Database connections are closed" msgstr "Databasanslutningarna är stängda" -#: cps/admin.py:1308 +#: cps/admin.py:1604 msgid "Stopping server" msgstr "Stoppar server" -#: cps/admin.py:1309 +#: cps/admin.py:1605 msgid "Update finished, please press okay and reload page" msgstr "Uppdatering klar, tryck på okej och uppdatera sidan" -#: cps/admin.py:1310 cps/admin.py:1311 cps/admin.py:1312 cps/admin.py:1313 -#: cps/admin.py:1314 +#: cps/admin.py:1606 cps/admin.py:1607 cps/admin.py:1608 cps/admin.py:1609 +#: cps/admin.py:1610 msgid "Update failed:" msgstr "Uppdateringen misslyckades:" -#: cps/admin.py:1310 cps/updater.py:337 cps/updater.py:532 cps/updater.py:534 +#: cps/admin.py:1606 cps/updater.py:356 cps/updater.py:566 cps/updater.py:568 msgid "HTTP Error" msgstr "HTTP-fel" -#: cps/admin.py:1311 cps/updater.py:339 cps/updater.py:536 +#: cps/admin.py:1607 cps/updater.py:358 cps/updater.py:570 msgid "Connection error" msgstr "Anslutningsfel" -#: cps/admin.py:1312 cps/updater.py:341 cps/updater.py:538 +#: cps/admin.py:1608 cps/updater.py:360 cps/updater.py:572 msgid "Timeout while establishing connection" msgstr "Tiden ute när du etablerade anslutning" -#: cps/admin.py:1313 cps/updater.py:343 cps/updater.py:540 +#: cps/admin.py:1609 cps/updater.py:362 cps/updater.py:574 msgid "General error" msgstr "Allmänt fel" -#: cps/admin.py:1314 +#: cps/admin.py:1610 msgid "Update File Could Not be Saved in Temp Dir" msgstr "" -#: cps/admin.py:1376 +#: cps/admin.py:1671 msgid "Failed to Create at Least One LDAP User" msgstr "" -#: cps/admin.py:1389 +#: cps/admin.py:1684 #, python-format msgid "Error: %(ldaperror)s" msgstr "" -#: cps/admin.py:1393 +#: cps/admin.py:1688 msgid "Error: No user returned in response of LDAP server" msgstr "" -#: cps/admin.py:1426 +#: cps/admin.py:1721 msgid "At Least One LDAP User Not Found in Database" msgstr "" -#: cps/admin.py:1428 +#: cps/admin.py:1723 msgid "{} User Successfully Imported" msgstr "" @@ -345,98 +440,98 @@ msgstr "inte konfigurerad" msgid "Execution permissions missing" msgstr "" -#: cps/editbooks.py:267 cps/editbooks.py:269 +#: cps/editbooks.py:294 cps/editbooks.py:296 msgid "Book Format Successfully Deleted" msgstr "" -#: cps/editbooks.py:276 cps/editbooks.py:278 +#: cps/editbooks.py:303 cps/editbooks.py:305 msgid "Book Successfully Deleted" msgstr "" -#: cps/editbooks.py:325 cps/editbooks.py:646 cps/web.py:1598 cps/web.py:1634 -#: cps/web.py:1705 +#: cps/editbooks.py:361 cps/editbooks.py:724 cps/web.py:1627 cps/web.py:1663 +#: cps/web.py:1734 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Det gick inte att öppna e-boken. Filen finns inte eller filen är inte tillgänglig" -#: cps/editbooks.py:359 +#: cps/editbooks.py:395 msgid "edit metadata" msgstr "redigera metadata" -#: cps/editbooks.py:434 +#: cps/editbooks.py:473 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s är inte ett giltigt språk" -#: cps/editbooks.py:556 cps/editbooks.py:905 +#: cps/editbooks.py:595 cps/editbooks.py:936 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Filändelsen '%(ext)s' får inte laddas upp till den här servern" -#: cps/editbooks.py:560 cps/editbooks.py:909 +#: cps/editbooks.py:599 cps/editbooks.py:940 msgid "File to be uploaded must have an extension" msgstr "Filen som ska laddas upp måste ha en ändelse" -#: cps/editbooks.py:572 +#: cps/editbooks.py:611 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Det gick inte att skapa sökväg %(path)s (behörighet nekad)." -#: cps/editbooks.py:577 +#: cps/editbooks.py:616 #, python-format msgid "Failed to store file %(file)s." msgstr "Det gick inte att lagra filen %(file)s." -#: cps/editbooks.py:595 cps/editbooks.py:972 cps/web.py:1559 +#: cps/editbooks.py:634 cps/editbooks.py:1027 cps/web.py:1588 #, python-format msgid "Database error: %(error)s." msgstr "" -#: cps/editbooks.py:599 +#: cps/editbooks.py:638 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Filformatet %(ext)s lades till %(book)s" -#: cps/editbooks.py:726 +#: cps/editbooks.py:775 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:763 +#: cps/editbooks.py:807 msgid "Metadata successfully updated" msgstr "Metadata uppdaterades" -#: cps/editbooks.py:772 +#: cps/editbooks.py:816 msgid "Error editing book, please check logfile for details" msgstr "Det gick inte att redigera boken, kontrollera loggfilen för mer information" -#: cps/editbooks.py:810 +#: cps/editbooks.py:854 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Uppladdad bok finns förmodligen i biblioteket, överväg att ändra innan du laddar upp nya: " -#: cps/editbooks.py:917 +#: cps/editbooks.py:948 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "Filen %(filename)s kunde inte sparas i temp dir" -#: cps/editbooks.py:947 +#: cps/editbooks.py:967 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "" -#: cps/editbooks.py:958 +#: cps/editbooks.py:1013 #, python-format msgid "File %(file)s uploaded" msgstr "Filen %(file)s uppladdad" -#: cps/editbooks.py:984 +#: cps/editbooks.py:1039 msgid "Source or destination format for conversion missing" msgstr "Källa eller målformat för konvertering saknas" -#: cps/editbooks.py:992 +#: cps/editbooks.py:1047 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Boken är i kö för konvertering till %(book_format)s" -#: cps/editbooks.py:996 +#: cps/editbooks.py:1051 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Det gick inte att konvertera den här boken: %(res)s" @@ -544,55 +639,68 @@ msgstr "Filen %(file)s hittades inte på Google Drive" msgid "Book path %(path)s not found on Google Drive" msgstr "Boksökvägen %(path)s hittades inte på Google Drive" -#: cps/helper.py:576 +#: cps/helper.py:511 +#, fuzzy +msgid "Found an existing account for this e-mail address" +msgstr "Hittade ett befintligt konto för den här e-postadressen." + +#: cps/helper.py:519 +msgid "This username is already taken" +msgstr "Detta användarnamn är redan taget" + +#: cps/helper.py:529 +msgid "Invalid e-mail address format" +msgstr "" + +#: cps/helper.py:602 msgid "Error Downloading Cover" msgstr "" -#: cps/helper.py:579 +#: cps/helper.py:605 msgid "Cover Format Error" msgstr "" -#: cps/helper.py:589 +#: cps/helper.py:615 msgid "Failed to create path for cover" msgstr "Det gick inte att skapa sökväg för omslag" -#: cps/helper.py:605 +#: cps/helper.py:631 msgid "Cover-file is not a valid image file, or could not be stored" msgstr "" -#: cps/helper.py:616 +#: cps/helper.py:642 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" msgstr "" -#: cps/helper.py:629 +#: cps/helper.py:655 msgid "Only jpg/jpeg files are supported as coverfile" msgstr "Endast jpg/jpeg-filer stöds som omslagsfil" -#: cps/helper.py:680 +#: cps/helper.py:707 msgid "Unrar binary file not found" msgstr "" -#: cps/helper.py:694 +#: cps/helper.py:721 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:743 +#: cps/helper.py:769 msgid "Waiting" msgstr "Väntar" -#: cps/helper.py:745 +#: cps/helper.py:771 msgid "Failed" msgstr "Misslyckades" -#: cps/helper.py:747 +#: cps/helper.py:773 msgid "Started" msgstr "Startad" -#: cps/helper.py:749 +#: cps/helper.py:775 msgid "Finished" msgstr "Klar" -#: cps/helper.py:751 +#: cps/helper.py:777 msgid "Unknown Status" msgstr "Okänd status" @@ -604,65 +712,82 @@ msgstr "Vänligen få tillgång till calibre-web från icke localhost för att f msgid "Kobo Setup" msgstr "Kobo-installation" -#: cps/oauth_bb.py:76 +#: cps/oauth_bb.py:78 #, python-format msgid "Register with %(provider)s" msgstr "Registrera dig med %(provider)s" -#: cps/oauth_bb.py:137 cps/remotelogin.py:133 cps/web.py:1424 +#: cps/oauth_bb.py:139 cps/remotelogin.py:133 cps/web.py:1475 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "du är nu inloggad som: \"%(nickname)s\"" -#: cps/oauth_bb.py:147 +#: cps/oauth_bb.py:149 #, python-format msgid "Link to %(oauth)s Succeeded" msgstr "" -#: cps/oauth_bb.py:153 +#: cps/oauth_bb.py:156 msgid "Login failed, No User Linked With OAuth Account" msgstr "" -#: cps/oauth_bb.py:195 +#: cps/oauth_bb.py:198 #, python-format msgid "Unlink to %(oauth)s Succeeded" msgstr "" -#: cps/oauth_bb.py:199 +#: cps/oauth_bb.py:203 #, python-format msgid "Unlink to %(oauth)s Failed" msgstr "" -#: cps/oauth_bb.py:202 +#: cps/oauth_bb.py:206 #, python-format msgid "Not Linked to %(oauth)s" msgstr "" -#: cps/oauth_bb.py:259 +#: cps/oauth_bb.py:262 msgid "Failed to log in with GitHub." msgstr "Det gick inte att logga in med GitHub." -#: cps/oauth_bb.py:264 +#: cps/oauth_bb.py:268 msgid "Failed to fetch user info from GitHub." msgstr "Det gick inte att hämta användarinformation från GitHub." -#: cps/oauth_bb.py:275 +#: cps/oauth_bb.py:280 msgid "Failed to log in with Google." msgstr "Det gick inte att logga in med Google." -#: cps/oauth_bb.py:280 +#: cps/oauth_bb.py:286 msgid "Failed to fetch user info from Google." msgstr "Det gick inte att hämta användarinformation från Google." -#: cps/oauth_bb.py:312 +#: cps/oauth_bb.py:333 msgid "GitHub Oauth error, please retry later." msgstr "GitHub Oauth-fel, försök igen senare." -#: cps/oauth_bb.py:331 +#: cps/oauth_bb.py:336 +msgid "GitHub Oauth error: {}" +msgstr "" + +#: cps/oauth_bb.py:357 msgid "Google Oauth error, please retry later." msgstr "Google Oauth-fel, försök igen senare." -#: cps/remotelogin.py:65 cps/web.py:1471 +#: cps/oauth_bb.py:360 +msgid "Google Oauth error: {}" +msgstr "" + +#: cps/opds.py:110 cps/opds.py:199 cps/opds.py:276 cps/opds.py:328 +#: cps/templates/grid.html:14 cps/templates/list.html:14 +msgid "All" +msgstr "Alla" + +#: cps/opds.py:385 +msgid "{} Stars" +msgstr "" + +#: cps/remotelogin.py:65 cps/web.py:1522 msgid "login" msgstr "logga in" @@ -678,7 +803,7 @@ msgstr "Token har löpt ut" msgid "Success! Please return to your device" msgstr "Lyckades! Vänligen återvänd till din enhet" -#: cps/render_template.py:39 cps/web.py:415 +#: cps/render_template.py:39 cps/web.py:414 msgid "Books" msgstr "Böcker" @@ -686,7 +811,7 @@ msgstr "Böcker" msgid "Show recent books" msgstr "Visa senaste böcker" -#: cps/render_template.py:42 cps/templates/index.xml:18 +#: cps/render_template.py:42 cps/templates/index.xml:25 msgid "Hot Books" msgstr "Heta böcker" @@ -694,127 +819,130 @@ msgstr "Heta böcker" msgid "Show Hot Books" msgstr "Visa heta böcker" -#: cps/render_template.py:45 +#: cps/render_template.py:46 cps/render_template.py:51 msgid "Downloaded Books" msgstr "" -#: cps/render_template.py:47 +#: cps/render_template.py:48 cps/render_template.py:53 +#: cps/templates/user_table.html:151 msgid "Show Downloaded Books" msgstr "" -#: cps/render_template.py:50 cps/templates/index.xml:25 cps/web.py:425 +#: cps/render_template.py:56 cps/templates/index.xml:32 cps/web.py:424 msgid "Top Rated Books" msgstr "Bäst rankade böcker" -#: cps/render_template.py:52 +#: cps/render_template.py:58 cps/templates/user_table.html:145 msgid "Show Top Rated Books" msgstr "Visa böcker med bästa betyg" -#: cps/render_template.py:53 cps/templates/index.xml:47 -#: cps/templates/index.xml:51 cps/web.py:642 +#: cps/render_template.py:59 cps/templates/index.xml:54 +#: cps/templates/index.xml:58 cps/web.py:650 msgid "Read Books" msgstr "Lästa böcker" -#: cps/render_template.py:55 +#: cps/render_template.py:61 msgid "Show read and unread" msgstr "Visa lästa och olästa" -#: cps/render_template.py:57 cps/templates/index.xml:54 -#: cps/templates/index.xml:58 cps/web.py:645 +#: cps/render_template.py:63 cps/templates/index.xml:61 +#: cps/templates/index.xml:65 cps/web.py:653 msgid "Unread Books" msgstr "Olästa böcker" -#: cps/render_template.py:59 +#: cps/render_template.py:65 msgid "Show unread" msgstr "Visa olästa" -#: cps/render_template.py:60 +#: cps/render_template.py:66 msgid "Discover" msgstr "Upptäck" -#: cps/render_template.py:62 +#: cps/render_template.py:68 cps/templates/user_table.html:143 +#: cps/templates/user_table.html:146 msgid "Show random books" msgstr "Visa slumpmässiga böcker" -#: cps/render_template.py:63 cps/templates/book_table.html:50 -#: cps/templates/index.xml:76 cps/web.py:950 +#: cps/render_template.py:69 cps/templates/book_table.html:51 +#: cps/templates/index.xml:83 cps/web.py:1024 msgid "Categories" msgstr "Kategorier" -#: cps/render_template.py:65 +#: cps/render_template.py:71 cps/templates/user_table.html:142 msgid "Show category selection" msgstr "Visa kategorival" -#: cps/render_template.py:66 cps/templates/book_edit.html:84 -#: cps/templates/book_table.html:51 cps/templates/index.xml:83 -#: cps/templates/search_form.html:62 cps/web.py:854 cps/web.py:864 +#: cps/render_template.py:72 cps/templates/book_edit.html:84 +#: cps/templates/book_table.html:52 cps/templates/index.xml:90 +#: cps/templates/search_form.html:62 cps/web.py:921 cps/web.py:931 msgid "Series" msgstr "Serier" -#: cps/render_template.py:68 +#: cps/render_template.py:74 cps/templates/user_table.html:141 msgid "Show series selection" msgstr "Visa serieval" -#: cps/render_template.py:69 cps/templates/book_table.html:49 -#: cps/templates/index.xml:62 +#: cps/render_template.py:75 cps/templates/book_table.html:50 +#: cps/templates/index.xml:69 msgid "Authors" msgstr "Författare" -#: cps/render_template.py:71 +#: cps/render_template.py:77 cps/templates/user_table.html:144 msgid "Show author selection" msgstr "Visa författarval" -#: cps/render_template.py:73 cps/templates/book_table.html:55 -#: cps/templates/index.xml:69 cps/web.py:833 +#: cps/render_template.py:79 cps/templates/book_table.html:56 +#: cps/templates/index.xml:76 cps/web.py:898 msgid "Publishers" msgstr "Förlag" -#: cps/render_template.py:75 +#: cps/render_template.py:81 cps/templates/user_table.html:147 msgid "Show publisher selection" msgstr "Visa urval av förlag" -#: cps/render_template.py:76 cps/templates/book_table.html:53 -#: cps/templates/index.xml:90 cps/templates/search_form.html:100 cps/web.py:929 +#: cps/render_template.py:82 cps/templates/book_table.html:54 +#: cps/templates/index.xml:97 cps/templates/search_form.html:100 +#: cps/web.py:1001 msgid "Languages" msgstr "Språk" -#: cps/render_template.py:79 +#: cps/render_template.py:85 cps/templates/user_table.html:139 msgid "Show language selection" msgstr "Visa språkval" -#: cps/render_template.py:80 cps/templates/index.xml:97 +#: cps/render_template.py:86 cps/templates/index.xml:104 msgid "Ratings" msgstr "Betyg" -#: cps/render_template.py:82 +#: cps/render_template.py:88 cps/templates/user_table.html:148 msgid "Show ratings selection" msgstr "Visa val av betyg" -#: cps/render_template.py:83 cps/templates/index.xml:105 +#: cps/render_template.py:89 cps/templates/index.xml:112 msgid "File formats" msgstr "Filformat" -#: cps/render_template.py:85 +#: cps/render_template.py:91 cps/templates/user_table.html:149 msgid "Show file formats selection" msgstr "Visa val av filformat" -#: cps/render_template.py:87 cps/web.py:669 +#: cps/render_template.py:93 cps/web.py:677 msgid "Archived Books" msgstr "" -#: cps/render_template.py:89 +#: cps/render_template.py:95 cps/templates/user_table.html:150 msgid "Show archived books" msgstr "" -#: cps/render_template.py:91 cps/web.py:743 +#: cps/render_template.py:97 cps/web.py:751 msgid "Books List" msgstr "" -#: cps/render_template.py:93 +#: cps/render_template.py:99 cps/templates/user_table.html:152 msgid "Show Books List" msgstr "" -#: cps/shelf.py:69 cps/shelf.py:122 +#: cps/shelf.py:69 cps/shelf.py:124 msgid "Invalid shelf specified" msgstr "Ogiltig hylla specificerad" @@ -828,303 +956,307 @@ msgstr "Tyvärr får du inte lägga till en bok på hyllan: %(shelfname)s" msgid "Book is already part of the shelf: %(shelfname)s" msgstr "Boken är redan en del av hyllan: %(shelfname)s" -#: cps/shelf.py:108 +#: cps/shelf.py:110 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Boken har lagts till i hyllan: %(sname)s" -#: cps/shelf.py:126 +#: cps/shelf.py:129 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Du får inte lägga till en bok i hyllan: %(name)s" -#: cps/shelf.py:144 +#: cps/shelf.py:147 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "Böcker är redan en del av hyllan: %(name)s" -#: cps/shelf.py:156 +#: cps/shelf.py:159 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "Böcker har lagts till hyllan: %(sname)s" -#: cps/shelf.py:161 +#: cps/shelf.py:166 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "Kunde inte lägga till böcker till hyllan: %(sname)s" -#: cps/shelf.py:206 +#: cps/shelf.py:212 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Boken har tagits bort från hyllan: %(sname)s" -#: cps/shelf.py:214 +#: cps/shelf.py:221 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Tyvärr har du inte rätt att ta bort en bok från den här hyllan: %(sname)s" -#: cps/shelf.py:224 cps/templates/layout.html:140 +#: cps/shelf.py:231 cps/templates/layout.html:140 msgid "Create a Shelf" msgstr "skapa en hylla" -#: cps/shelf.py:231 +#: cps/shelf.py:238 msgid "Edit a shelf" msgstr "Redigera en hylla" -#: cps/shelf.py:249 +#: cps/shelf.py:256 #, python-format msgid "Shelf %(title)s created" msgstr "Hyllan %(title)s skapad" -#: cps/shelf.py:252 +#: cps/shelf.py:259 #, python-format msgid "Shelf %(title)s changed" msgstr "Hyllan %(title)s ändrad" -#: cps/shelf.py:265 +#: cps/shelf.py:273 msgid "There was an error" msgstr "Det fanns ett fel" -#: cps/shelf.py:281 +#: cps/shelf.py:290 #, python-format msgid "A public shelf with the name '%(title)s' already exists." msgstr "" -#: cps/shelf.py:291 +#: cps/shelf.py:301 #, python-format msgid "A private shelf with the name '%(title)s' already exists." msgstr "" -#: cps/shelf.py:358 +#: cps/shelf.py:370 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Ändra ordning på hyllan: '%(name)s'" -#: cps/shelf.py:423 +#: cps/shelf.py:436 #, python-format msgid "Shelf: '%(name)s'" msgstr "Hylla: '%(name)s'" -#: cps/shelf.py:427 +#: cps/shelf.py:440 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Fel vid öppning av hyllan. Hylla finns inte eller är inte tillgänglig" -#: cps/updater.py:355 cps/updater.py:366 cps/updater.py:418 cps/updater.py:432 +#: cps/updater.py:374 cps/updater.py:385 cps/updater.py:485 cps/updater.py:500 msgid "Unexpected data while reading update information" msgstr "Oväntade data vid läsning av uppdateringsinformation" -#: cps/updater.py:362 cps/updater.py:424 +#: cps/updater.py:381 cps/updater.py:492 msgid "No update available. You already have the latest version installed" msgstr "Ingen uppdatering tillgänglig. Du har redan den senaste versionen installerad" -#: cps/updater.py:379 +#: cps/updater.py:399 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "En ny uppdatering är tillgänglig. Klicka på knappen nedan för att uppdatera till den senaste versionen." -#: cps/updater.py:397 +#: cps/updater.py:417 msgid "Could not fetch update information" msgstr "Kunde inte hämta uppdateringsinformation" -#: cps/updater.py:411 -msgid "No release information available" -msgstr "Ingen versionsinformation tillgänglig" +#: cps/updater.py:427 +msgid "Click on the button below to update to the latest stable version." +msgstr "Klicka på knappen nedan för att uppdatera till den senaste stabila versionen." -#: cps/updater.py:468 cps/updater.py:479 cps/updater.py:498 +#: cps/updater.py:436 cps/updater.py:450 cps/updater.py:461 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "En ny uppdatering är tillgänglig. Klicka på knappen nedan för att uppdatera till version: %(version)s" -#: cps/updater.py:489 -msgid "Click on the button below to update to the latest stable version." -msgstr "Klicka på knappen nedan för att uppdatera till den senaste stabila versionen." +#: cps/updater.py:478 +msgid "No release information available" +msgstr "Ingen versionsinformation tillgänglig" -#: cps/templates/index.html:5 cps/web.py:435 +#: cps/templates/index.html:5 cps/web.py:434 msgid "Discover (Random Books)" msgstr "Upptäck (slumpmässiga böcker)" -#: cps/web.py:461 +#: cps/web.py:460 msgid "Hot Books (Most Downloaded)" msgstr "Heta böcker (mest hämtade)" -#: cps/web.py:489 +#: cps/web.py:493 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:503 +#: cps/web.py:508 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Hoppsan! Vald boktitel är inte tillgänglig. Filen finns inte eller är inte tillgänglig" -#: cps/web.py:517 +#: cps/web.py:522 #, python-format msgid "Author: %(name)s" msgstr "Författare: %(name)s" -#: cps/web.py:531 +#: cps/web.py:537 #, python-format msgid "Publisher: %(name)s" msgstr "Förlag: %(name)s" -#: cps/web.py:544 +#: cps/web.py:550 #, python-format msgid "Series: %(serie)s" msgstr "Serier: %(serie)s" -#: cps/web.py:557 +#: cps/web.py:563 #, python-format msgid "Rating: %(rating)s stars" msgstr "Betyg: %(rating)s stars" -#: cps/web.py:570 +#: cps/web.py:576 #, python-format msgid "File format: %(format)s" msgstr "Filformat: %(format)s" -#: cps/web.py:584 +#: cps/web.py:592 #, python-format msgid "Category: %(name)s" msgstr "Kategori: %(name)s" -#: cps/web.py:603 +#: cps/web.py:611 #, python-format msgid "Language: %(name)s" msgstr "Språk: %(name)s" -#: cps/web.py:633 +#: cps/web.py:641 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:703 cps/web.py:1248 +#: cps/templates/layout.html:56 cps/web.py:711 cps/web.py:1314 msgid "Advanced Search" msgstr "Avancerad sökning" #: cps/templates/book_edit.html:214 cps/templates/feed.xml:33 #: cps/templates/index.xml:11 cps/templates/layout.html:45 #: cps/templates/layout.html:48 cps/templates/search_form.html:194 -#: cps/web.py:715 cps/web.py:987 +#: cps/web.py:723 cps/web.py:1061 msgid "Search" msgstr "Sök" -#: cps/web.py:882 +#: cps/templates/admin.html:16 cps/web.py:876 +msgid "Downloads" +msgstr "DLS" + +#: cps/web.py:952 msgid "Ratings list" msgstr "Betygslista" -#: cps/web.py:901 +#: cps/web.py:973 msgid "File formats list" msgstr "Lista över filformat" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:964 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1038 msgid "Tasks" msgstr "Uppgifter" -#: cps/web.py:1108 +#: cps/web.py:1182 msgid "Published after " msgstr "Publicerad efter " -#: cps/web.py:1115 +#: cps/web.py:1189 msgid "Published before " msgstr "Publicerad före " -#: cps/web.py:1145 +#: cps/web.py:1211 #, python-format msgid "Rating <= %(rating)s" msgstr "Betyg <= %(rating)s" -#: cps/web.py:1147 +#: cps/web.py:1213 #, python-format msgid "Rating >= %(rating)s" msgstr "Betyg >= %(rating)s" -#: cps/web.py:1149 +#: cps/web.py:1215 #, python-format msgid "Read Status = %(status)s" msgstr "" -#: cps/web.py:1325 +#: cps/web.py:1387 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Boken är i kö för att skicka till %(kindlemail)s" -#: cps/web.py:1329 +#: cps/web.py:1391 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Det gick inte att skicka den här boken: %(res)s" -#: cps/web.py:1331 +#: cps/web.py:1393 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Konfigurera din kindle-e-postadress först..." -#: cps/web.py:1348 +#: cps/web.py:1410 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "E-postservern är inte konfigurerad, kontakta din administratör!" -#: cps/web.py:1349 cps/web.py:1359 cps/web.py:1366 cps/web.py:1389 -#: cps/web.py:1393 cps/web.py:1398 cps/web.py:1402 +#: cps/web.py:1411 cps/web.py:1418 cps/web.py:1424 cps/web.py:1443 +#: cps/web.py:1447 cps/web.py:1453 msgid "register" msgstr "registrera" -#: cps/web.py:1364 -msgid "Invalid e-mail address format" -msgstr "" - -#: cps/web.py:1391 +#: cps/web.py:1445 msgid "Your e-mail is not allowed to register" msgstr "Din e-post är inte tillåten att registrera" -#: cps/web.py:1394 +#: cps/web.py:1448 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Bekräftelsemail skickades till ditt e-postkonto." -#: cps/web.py:1397 -msgid "This username or e-mail address is already in use." -msgstr "Det här användarnamnet eller e-postadressen är redan i bruk." - -#: cps/web.py:1414 +#: cps/web.py:1465 msgid "Cannot activate LDAP authentication" msgstr "Det går inte att aktivera LDAP-autentisering" -#: cps/web.py:1431 +#: cps/web.py:1482 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "" -#: cps/web.py:1437 +#: cps/web.py:1488 #, python-format msgid "Could not login: %(message)s" msgstr "" -#: cps/web.py:1441 cps/web.py:1465 +#: cps/web.py:1492 cps/web.py:1516 msgid "Wrong Username or Password" msgstr "Fel användarnamn eller lösenord" -#: cps/web.py:1448 +#: cps/web.py:1499 msgid "New Password was send to your email address" msgstr "Nytt lösenord skickades till din e-postadress" -#: cps/web.py:1454 +#: cps/web.py:1505 msgid "Please enter valid username to reset password" msgstr "Ange giltigt användarnamn för att återställa lösenordet" -#: cps/web.py:1460 +#: cps/web.py:1511 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Du är nu inloggad som: \"%(nickname)s\"" -#: cps/web.py:1498 cps/web.py:1583 +#: cps/web.py:1565 cps/web.py:1612 #, python-format msgid "%(name)s's profile" msgstr "%(name)ss profil" -#: cps/web.py:1550 +#: cps/web.py:1579 msgid "Profile updated" msgstr "Profilen uppdaterad" -#: cps/web.py:1610 cps/web.py:1613 cps/web.py:1616 cps/web.py:1619 -#: cps/web.py:1626 cps/web.py:1631 +#: cps/web.py:1583 +msgid "Found an existing account for this e-mail address." +msgstr "Hittade ett befintligt konto för den här e-postadressen." + +#: cps/web.py:1639 cps/web.py:1642 cps/web.py:1645 cps/web.py:1648 +#: cps/web.py:1655 cps/web.py:1660 msgid "Read a Book" msgstr "Läs en bok" +#: cps/services/gmail.py:41 +msgid "Found no valid gmail.json file with OAuth information" +msgstr "" + #: cps/tasks/convert.py:114 #, python-format msgid "Calibre ebook-convert %(tool)s not found" @@ -1163,221 +1295,231 @@ msgstr "" msgid "Users" msgstr "Användarlista" -#: cps/templates/admin.html:12 cps/templates/login.html:8 +#: cps/templates/admin.html:13 cps/templates/login.html:8 #: cps/templates/login.html:9 cps/templates/register.html:8 -#: cps/templates/user_edit.html:9 +#: cps/templates/user_edit.html:9 cps/templates/user_table.html:121 msgid "Username" msgstr "Smeknamn" -#: cps/templates/admin.html:13 cps/templates/register.html:13 -#: cps/templates/user_edit.html:14 +#: cps/templates/admin.html:14 cps/templates/register.html:13 +#: cps/templates/user_edit.html:14 cps/templates/user_table.html:122 msgid "E-mail Address" msgstr "E-post" -#: cps/templates/admin.html:14 cps/templates/user_edit.html:27 +#: cps/templates/admin.html:15 cps/templates/user_edit.html:27 msgid "Send to Kindle E-mail Address" msgstr "Kindle" -#: cps/templates/admin.html:15 -msgid "Downloads" -msgstr "DLS" - -#: cps/templates/admin.html:16 cps/templates/layout.html:77 +#: cps/templates/admin.html:17 cps/templates/layout.html:77 +#: cps/templates/user_table.html:130 msgid "Admin" msgstr "Administratör" -#: cps/templates/admin.html:17 cps/templates/login.html:12 +#: cps/templates/admin.html:18 cps/templates/login.html:12 #: cps/templates/login.html:13 cps/templates/user_edit.html:22 msgid "Password" msgstr "Lösenord" -#: cps/templates/admin.html:18 cps/templates/layout.html:66 +#: cps/templates/admin.html:19 cps/templates/layout.html:66 +#: cps/templates/user_table.html:132 msgid "Upload" msgstr "Ladda upp" -#: cps/templates/admin.html:19 cps/templates/detail.html:18 +#: cps/templates/admin.html:20 cps/templates/detail.html:18 #: cps/templates/detail.html:27 cps/templates/shelf.html:6 +#: cps/templates/user_table.html:133 msgid "Download" msgstr "Hämta" -#: cps/templates/admin.html:20 +#: cps/templates/admin.html:21 msgid "View Books" msgstr "Visa e-böcker" -#: cps/templates/admin.html:21 +#: cps/templates/admin.html:22 cps/templates/user_table.html:118 +#: cps/templates/user_table.html:135 msgid "Edit" msgstr "Redigera" -#: cps/templates/admin.html:22 cps/templates/book_edit.html:16 -#: cps/templates/book_table.html:57 cps/templates/modal_dialogs.html:63 +#: cps/templates/admin.html:23 cps/templates/book_edit.html:16 +#: cps/templates/book_table.html:58 cps/templates/modal_dialogs.html:63 #: cps/templates/modal_dialogs.html:116 cps/templates/user_edit.html:66 +#: cps/templates/user_table.html:136 msgid "Delete" msgstr "Ta bort" -#: cps/templates/admin.html:23 +#: cps/templates/admin.html:24 msgid "Public Shelf" msgstr "" -#: cps/templates/admin.html:44 +#: cps/templates/admin.html:47 msgid "Add New User" msgstr "Lägg till ny användare" -#: cps/templates/admin.html:46 +#: cps/templates/admin.html:49 msgid "Import LDAP Users" msgstr "" -#: cps/templates/admin.html:53 +#: cps/templates/admin.html:56 msgid "E-mail Server Settings" msgstr "Inställningar för SMTP-e-postserver" -#: cps/templates/admin.html:57 cps/templates/email_edit.html:11 +#: cps/templates/admin.html:61 cps/templates/email_edit.html:30 msgid "SMTP Hostname" msgstr "SMTP-värdnamn" -#: cps/templates/admin.html:61 cps/templates/email_edit.html:15 +#: cps/templates/admin.html:65 cps/templates/email_edit.html:34 msgid "SMTP Port" msgstr "SMTP-port" -#: cps/templates/admin.html:65 cps/templates/email_edit.html:19 +#: cps/templates/admin.html:69 cps/templates/email_edit.html:38 msgid "Encryption" msgstr "SSL" -#: cps/templates/admin.html:69 cps/templates/email_edit.html:27 +#: cps/templates/admin.html:73 cps/templates/email_edit.html:46 msgid "SMTP Login" msgstr "SMTP-inloggning" -#: cps/templates/admin.html:73 cps/templates/email_edit.html:35 +#: cps/templates/admin.html:77 cps/templates/admin.html:88 +#: cps/templates/email_edit.html:54 msgid "From E-mail" msgstr "Från meddelande" #: cps/templates/admin.html:84 +msgid "E-Mail Service" +msgstr "" + +#: cps/templates/admin.html:85 +msgid "Gmail via Oauth2" +msgstr "" + +#: cps/templates/admin.html:100 msgid "Configuration" msgstr "Konfiguration" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:103 msgid "Calibre Database Directory" msgstr "Calibre DB dir" -#: cps/templates/admin.html:91 cps/templates/config_edit.html:136 +#: cps/templates/admin.html:107 cps/templates/config_edit.html:136 msgid "Log Level" msgstr "Loggnivå" -#: cps/templates/admin.html:95 +#: cps/templates/admin.html:111 msgid "Port" msgstr "Port" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:116 msgid "External Port" msgstr "" -#: cps/templates/admin.html:107 cps/templates/config_view_edit.html:27 +#: cps/templates/admin.html:123 cps/templates/config_view_edit.html:27 msgid "Books per Page" msgstr "Böcker per sida" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:127 msgid "Uploads" msgstr "Laddar upp" -#: cps/templates/admin.html:115 +#: cps/templates/admin.html:131 msgid "Anonymous Browsing" msgstr "Anonym surfning" -#: cps/templates/admin.html:119 +#: cps/templates/admin.html:135 msgid "Public Registration" msgstr "Publik registrering" -#: cps/templates/admin.html:123 +#: cps/templates/admin.html:139 msgid "Magic Link Remote Login" msgstr "Fjärrinloggning" -#: cps/templates/admin.html:127 +#: cps/templates/admin.html:143 msgid "Reverse Proxy Login" msgstr "Omvänd proxy inloggning" -#: cps/templates/admin.html:132 +#: cps/templates/admin.html:148 msgid "Reverse proxy header name" msgstr "Omvänt proxy rubriknamn" -#: cps/templates/admin.html:137 +#: cps/templates/admin.html:153 msgid "Edit Basic Configuration" msgstr "Redigera grundläggande konfiguration" -#: cps/templates/admin.html:138 +#: cps/templates/admin.html:154 msgid "Edit UI Configuration" msgstr "Redigera UI-konfiguration" -#: cps/templates/admin.html:143 +#: cps/templates/admin.html:159 msgid "Administration" msgstr "Administration" -#: cps/templates/admin.html:144 +#: cps/templates/admin.html:160 msgid "Download Debug Package" msgstr "" -#: cps/templates/admin.html:145 +#: cps/templates/admin.html:161 msgid "View Logs" msgstr "Visa loggfiler" -#: cps/templates/admin.html:148 +#: cps/templates/admin.html:164 msgid "Reconnect Calibre Database" msgstr "Anslut till Calibre DB igen" -#: cps/templates/admin.html:149 +#: cps/templates/admin.html:165 msgid "Restart" msgstr "Starta om Calibre-Web" -#: cps/templates/admin.html:150 +#: cps/templates/admin.html:166 msgid "Shutdown" msgstr "Stoppa Calibre-Web" -#: cps/templates/admin.html:155 +#: cps/templates/admin.html:171 msgid "Update" msgstr "Uppdatera" -#: cps/templates/admin.html:159 +#: cps/templates/admin.html:175 msgid "Version" msgstr "Version" -#: cps/templates/admin.html:160 +#: cps/templates/admin.html:176 msgid "Details" msgstr "Detaljer" -#: cps/templates/admin.html:166 +#: cps/templates/admin.html:182 msgid "Current version" msgstr "Aktuell version" -#: cps/templates/admin.html:173 +#: cps/templates/admin.html:189 msgid "Check for Update" msgstr "Sök efter uppdatering" -#: cps/templates/admin.html:174 +#: cps/templates/admin.html:190 msgid "Perform Update" msgstr "Utför uppdatering" -#: cps/templates/admin.html:187 +#: cps/templates/admin.html:203 msgid "Are you sure you want to restart?" msgstr "Är du säker på att du vill starta om Calibre-Web?" -#: cps/templates/admin.html:192 cps/templates/admin.html:206 -#: cps/templates/admin.html:226 cps/templates/shelf.html:95 +#: cps/templates/admin.html:208 cps/templates/admin.html:222 +#: cps/templates/admin.html:242 cps/templates/shelf.html:95 msgid "OK" msgstr "Ok" -#: cps/templates/admin.html:193 cps/templates/admin.html:207 -#: cps/templates/book_edit.html:192 cps/templates/book_table.html:84 +#: cps/templates/admin.html:209 cps/templates/admin.html:223 +#: cps/templates/book_edit.html:192 cps/templates/book_table.html:85 #: cps/templates/config_edit.html:427 cps/templates/config_view_edit.html:151 -#: cps/templates/email_edit.html:47 cps/templates/modal_dialogs.html:64 -#: cps/templates/modal_dialogs.html:99 cps/templates/modal_dialogs.html:117 +#: cps/templates/modal_dialogs.html:64 cps/templates/modal_dialogs.html:99 +#: cps/templates/modal_dialogs.html:117 cps/templates/modal_dialogs.html:135 #: cps/templates/shelf.html:96 cps/templates/shelf_edit.html:19 #: cps/templates/user_edit.html:132 msgid "Cancel" msgstr "Avbryt" -#: cps/templates/admin.html:205 +#: cps/templates/admin.html:221 msgid "Are you sure you want to shutdown?" msgstr "Är du säker på att du vill stoppa Calibre-Web?" -#: cps/templates/admin.html:217 +#: cps/templates/admin.html:233 msgid "Updating, please do not reload this page" msgstr "Uppdaterar, vänligen uppdatera inte sidan" @@ -1485,6 +1627,7 @@ msgid "Identifier Value" msgstr "" #: cps/templates/book_edit.html:72 cps/templates/book_edit.html:289 +#: cps/templates/user_table.html:23 msgid "Remove" msgstr "" @@ -1550,7 +1693,7 @@ msgid "Fetch Metadata" msgstr "Hämta metadata" #: cps/templates/book_edit.html:191 cps/templates/config_edit.html:424 -#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45 +#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:64 #: cps/templates/shelf_edit.html:17 cps/templates/shelf_order.html:40 #: cps/templates/user_edit.html:130 msgid "Save" @@ -1590,96 +1733,98 @@ msgstr "Sökningsfel!" msgid "No Result(s) found! Please try another keyword." msgstr "Inga resultat hittades! Försök med ett annat sökord." -#: cps/templates/book_table.html:10 cps/templates/book_table.html:52 +#: cps/templates/book_table.html:11 cps/templates/book_table.html:53 +#: cps/templates/user_table.html:13 cps/templates/user_table.html:65 +#: cps/templates/user_table.html:88 msgid "This Field is Required" msgstr "" -#: cps/templates/book_table.html:23 +#: cps/templates/book_table.html:24 msgid "Merge selected books" msgstr "" -#: cps/templates/book_table.html:24 +#: cps/templates/book_table.html:25 cps/templates/user_table.html:111 msgid "Remove Selections" msgstr "" -#: cps/templates/book_table.html:30 +#: cps/templates/book_table.html:31 msgid "Update Title Sort automatically" msgstr "" -#: cps/templates/book_table.html:34 +#: cps/templates/book_table.html:35 msgid "Update Author Sort automatically" msgstr "" -#: cps/templates/book_table.html:46 +#: cps/templates/book_table.html:47 msgid "Enter Title" msgstr "" -#: cps/templates/book_table.html:46 cps/templates/config_view_edit.html:23 +#: cps/templates/book_table.html:47 cps/templates/config_view_edit.html:23 #: cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Titel" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Enter Title Sort" msgstr "" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Title Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Enter Author Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Author Sort" msgstr "" -#: cps/templates/book_table.html:49 +#: cps/templates/book_table.html:50 msgid "Enter Authors" msgstr "" -#: cps/templates/book_table.html:50 +#: cps/templates/book_table.html:51 msgid "Enter Categories" msgstr "" -#: cps/templates/book_table.html:51 +#: cps/templates/book_table.html:52 msgid "Enter Series" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Enter title" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Series Index" msgstr "" -#: cps/templates/book_table.html:53 +#: cps/templates/book_table.html:54 msgid "Enter Languages" msgstr "" -#: cps/templates/book_table.html:54 +#: cps/templates/book_table.html:55 msgid "Publishing Date" msgstr "" -#: cps/templates/book_table.html:55 +#: cps/templates/book_table.html:56 msgid "Enter Publishers" msgstr "" -#: cps/templates/book_table.html:70 cps/templates/modal_dialogs.html:46 +#: cps/templates/book_table.html:71 cps/templates/modal_dialogs.html:46 msgid "Are you really sure?" msgstr "Är du verkligen säker?" -#: cps/templates/book_table.html:74 +#: cps/templates/book_table.html:75 msgid "Books with Title will be merged from:" msgstr "" -#: cps/templates/book_table.html:78 +#: cps/templates/book_table.html:79 msgid "Into Book with Title:" msgstr "" -#: cps/templates/book_table.html:83 +#: cps/templates/book_table.html:84 msgid "Merge" msgstr "" @@ -1864,7 +2009,7 @@ msgid "LDAP Encryption" msgstr "" #: cps/templates/config_edit.html:268 cps/templates/config_view_edit.html:61 -#: cps/templates/email_edit.html:21 +#: cps/templates/email_edit.html:40 msgid "None" msgstr "Ingen" @@ -2077,6 +2222,7 @@ msgid "Default Visibilities for New Users" msgstr "Standardvisibiliteter för nya användare" #: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82 +#: cps/templates/user_table.html:138 msgid "Show Random Books in Detail View" msgstr "Visa slumpmässiga böcker i detaljvyn" @@ -2150,43 +2296,69 @@ msgstr "" msgid "Edit Metadata" msgstr "Redigera metadata" -#: cps/templates/email_edit.html:22 +#: cps/templates/email_edit.html:12 +msgid "Choose Server Type" +msgstr "" + +#: cps/templates/email_edit.html:14 +msgid "Use Standard E-Mail Account" +msgstr "" + +#: cps/templates/email_edit.html:15 +msgid "Gmail Account with OAuth2 Verfification" +msgstr "" + +#: cps/templates/email_edit.html:21 +msgid "Setup Gmail Account as E-Mail Server" +msgstr "" + +#: cps/templates/email_edit.html:23 +msgid "Revoke Gmail Access" +msgstr "" + +#: cps/templates/email_edit.html:41 msgid "STARTTLS" msgstr "STARTTLS" -#: cps/templates/email_edit.html:23 +#: cps/templates/email_edit.html:42 msgid "SSL/TLS" msgstr "SSL/TLS" -#: cps/templates/email_edit.html:31 +#: cps/templates/email_edit.html:50 msgid "SMTP Password" msgstr "SMTP-lösenord" -#: cps/templates/email_edit.html:38 +#: cps/templates/email_edit.html:57 msgid "Attachment Size Limit" msgstr "" -#: cps/templates/email_edit.html:46 +#: cps/templates/email_edit.html:65 msgid "Save and Send Test E-mail" msgstr "Spara inställningarna och skicka test-e-post" -#: cps/templates/email_edit.html:51 +#: cps/templates/email_edit.html:69 cps/templates/layout.html:29 +#: cps/templates/shelf_order.html:41 cps/templates/user_table.html:158 +msgid "Back" +msgstr "Tillbaka" + +#: cps/templates/email_edit.html:73 msgid "Allowed Domains (Whitelist)" msgstr "Tillåtna domäner för registrering" -#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80 +#: cps/templates/email_edit.html:76 cps/templates/email_edit.html:102 msgid "Add Domain" msgstr "Lägg till domän" -#: cps/templates/email_edit.html:57 cps/templates/email_edit.html:83 +#: cps/templates/email_edit.html:79 cps/templates/email_edit.html:105 +#: cps/templates/user_table.html:26 msgid "Add" msgstr "Lägg till" -#: cps/templates/email_edit.html:62 cps/templates/email_edit.html:72 +#: cps/templates/email_edit.html:84 cps/templates/email_edit.html:94 msgid "Enter domainname" msgstr "Ange domännamn" -#: cps/templates/email_edit.html:68 +#: cps/templates/email_edit.html:90 msgid "Denied Domains (Blacklist)" msgstr "Nekade domäner för registrering" @@ -2198,10 +2370,6 @@ msgstr "Nästa" msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):" msgstr "Öppna filen .kobo/Kobo eReader.conf i en textredigerare och lägg till (eller redigera):" -#: cps/templates/grid.html:14 cps/templates/list.html:14 -msgid "All" -msgstr "Alla" - #: cps/templates/http_error.html:38 msgid "Create Issue" msgstr "Skapa ärende" @@ -2232,64 +2400,72 @@ msgstr "" msgid "Start" msgstr "Starta" +#: cps/templates/index.xml:18 +msgid "Alphabetical Books" +msgstr "" + #: cps/templates/index.xml:22 +msgid "Books sorted alphabetically" +msgstr "" + +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Downloads." msgstr "Populära publikationer från den här katalogen baserad på hämtningar." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:36 msgid "Popular publications from this catalog based on Rating." msgstr "Populära publikationer från den här katalogen baserad på betyg." -#: cps/templates/index.xml:32 +#: cps/templates/index.xml:39 msgid "Recently added Books" msgstr "Senaste tillagda böcker" -#: cps/templates/index.xml:36 +#: cps/templates/index.xml:43 msgid "The latest Books" msgstr "De senaste böckerna" -#: cps/templates/index.xml:39 +#: cps/templates/index.xml:46 msgid "Random Books" msgstr "Slumpmässiga böcker" -#: cps/templates/index.xml:43 +#: cps/templates/index.xml:50 msgid "Show Random Books" msgstr "Visa slumpmässiga böcker" -#: cps/templates/index.xml:66 +#: cps/templates/index.xml:73 msgid "Books ordered by Author" msgstr "Böcker ordnade efter författare" -#: cps/templates/index.xml:73 +#: cps/templates/index.xml:80 msgid "Books ordered by publisher" msgstr "Böcker ordnade efter förlag" -#: cps/templates/index.xml:80 +#: cps/templates/index.xml:87 msgid "Books ordered by category" msgstr "Böcker ordnade efter kategori" -#: cps/templates/index.xml:87 +#: cps/templates/index.xml:94 msgid "Books ordered by series" msgstr "Böcker ordnade efter serier" -#: cps/templates/index.xml:94 +#: cps/templates/index.xml:101 msgid "Books ordered by Languages" msgstr "Böcker ordnade efter språk" -#: cps/templates/index.xml:101 +#: cps/templates/index.xml:108 msgid "Books ordered by Rating" msgstr "Böcker sorterade efter Betyg" -#: cps/templates/index.xml:109 +#: cps/templates/index.xml:116 msgid "Books ordered by file formats" msgstr "Böcker ordnade av filformat" -#: cps/templates/index.xml:112 cps/templates/layout.html:135 +#: cps/templates/index.xml:119 cps/templates/layout.html:135 #: cps/templates/search_form.html:80 msgid "Shelves" msgstr "" -#: cps/templates/index.xml:116 +#: cps/templates/index.xml:123 msgid "Books organized in shelves" msgstr "" @@ -2297,10 +2473,6 @@ msgstr "" msgid "Home" msgstr "Hem" -#: cps/templates/layout.html:29 cps/templates/shelf_order.html:41 -msgid "Back" -msgstr "Tillbaka" - #: cps/templates/layout.html:35 msgid "Toggle Navigation" msgstr "Växla navigering" @@ -2462,6 +2634,11 @@ msgstr "" msgid "Select" msgstr "" +#: cps/templates/modal_dialogs.html:134 +#, fuzzy +msgid "Ok" +msgstr "Bok" + #: cps/templates/osd.xml:5 msgid "Calibre-Web eBook Catalog" msgstr "Calibre-Web e-bokkatalog" @@ -2767,10 +2944,6 @@ msgstr "Återställ användarlösenordet" msgid "Language of Books" msgstr "Visa böcker med språk" -#: cps/templates/user_edit.html:44 -msgid "Show All" -msgstr "Visa alla" - #: cps/templates/user_edit.html:53 msgid "OAuth Settings" msgstr "OAuth-inställningar" @@ -2795,7 +2968,7 @@ msgstr "Skapa/Visa" msgid "Add allowed/Denied Custom Column Values" msgstr "Lägg till tillåtna/avvisade anpassade kolumnvärden" -#: cps/templates/user_edit.html:135 +#: cps/templates/user_edit.html:135 cps/templates/user_table.html:153 msgid "Delete User" msgstr "Ta bort den här användaren" @@ -2803,3 +2976,98 @@ msgstr "Ta bort den här användaren" msgid "Generate Kobo Auth URL" msgstr "Skapa Kobo Auth URL" +#: cps/templates/user_table.html:68 cps/templates/user_table.html:91 +msgid "Select..." +msgstr "" + +#: cps/templates/user_table.html:118 +#, fuzzy +msgid "Edit User" +msgstr "Adminstratör användare" + +#: cps/templates/user_table.html:121 +#, fuzzy +msgid "Enter Username" +msgstr "Välj ett användarnamn" + +#: cps/templates/user_table.html:122 +#, fuzzy +msgid "Enter E-mail Address" +msgstr "Din e-postadress" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Enter Kindle E-mail Address" +msgstr "Kindle" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Kindle E-mail" +msgstr "Test e-post" + +#: cps/templates/user_table.html:124 +#, fuzzy +msgid "Locale" +msgstr "Skala" + +#: cps/templates/user_table.html:125 +msgid "Visible Book Languages" +msgstr "" + +#: cps/templates/user_table.html:126 +#, fuzzy +msgid "Edit Denied Tags" +msgstr "Välj tillåtna/avvisade taggar" + +#: cps/templates/user_table.html:126 +msgid "Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +#, fuzzy +msgid "Edit Allowed Tags" +msgstr "Välj tillåtna/avvisade taggar" + +#: cps/templates/user_table.html:127 +msgid "Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Edit Allowed Column Values" +msgstr "Lägg till tillåtna/avvisade anpassade kolumnvärden" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Allowed Column Values" +msgstr "Lägg till tillåtna/avvisade anpassade kolumnvärden" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Edit Denied Column Values" +msgstr "Lägg till tillåtna/avvisade anpassade kolumnvärden" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Denied Columns Values" +msgstr "Lägg till tillåtna/avvisade anpassade kolumnvärden" + +#: cps/templates/user_table.html:131 +#, fuzzy +msgid "Change Password" +msgstr "Tillåt Ändra lösenord" + +#: cps/templates/user_table.html:134 +msgid "View" +msgstr "" + +#: cps/templates/user_table.html:137 +#, fuzzy +msgid "Edit Public Shelfs" +msgstr "Redigera en hylla" + +#: cps/templates/user_table.html:140 +#, fuzzy +msgid "Show read/unread selection" +msgstr "Visa serieval" + diff --git a/cps/translations/tr/LC_MESSAGES/messages.mo b/cps/translations/tr/LC_MESSAGES/messages.mo index 75fcf750..5cb10f11 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 74ee3d4f..1bd45534 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: 2021-03-27 12:16+0100\n" +"POT-Creation-Date: 2021-05-01 16:33+0200\n" "PO-Revision-Date: 2020-04-23 22:47+0300\n" "Last-Translator: iz \n" "Language: tr\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" +"Generated-By: Babel 2.8.0\n" #: cps/about.py:43 msgid "installed" @@ -30,310 +30,402 @@ msgstr "yüklü değil" msgid "Statistics" msgstr "İstatistikler" -#: cps/admin.py:149 +#: cps/admin.py:151 msgid "Server restarted, please reload page" msgstr "Sunucu yeniden başlatıldı, lütfen sayfayı yeniden yükleyin" -#: cps/admin.py:151 +#: cps/admin.py:153 msgid "Performing shutdown of server, please close window" msgstr "Sunucu kapatıyor, lütfen pencereyi kapatın" -#: cps/admin.py:159 +#: cps/admin.py:161 msgid "Reconnect successful" msgstr "" -#: cps/admin.py:162 +#: cps/admin.py:164 msgid "Unknown command" msgstr "" -#: cps/admin.py:172 cps/editbooks.py:662 cps/editbooks.py:674 -#: cps/editbooks.py:777 cps/editbooks.py:779 cps/editbooks.py:806 -#: cps/editbooks.py:822 cps/updater.py:521 cps/uploader.py:94 +#: cps/admin.py:174 cps/editbooks.py:668 cps/editbooks.py:682 +#: cps/editbooks.py:821 cps/editbooks.py:823 cps/editbooks.py:850 +#: cps/editbooks.py:866 cps/updater.py:555 cps/uploader.py:94 #: cps/uploader.py:104 msgid "Unknown" msgstr "Bilinmeyen" -#: cps/admin.py:193 +#: cps/admin.py:195 msgid "Admin page" msgstr "Yönetim sayfası" -#: cps/admin.py:215 +#: cps/admin.py:217 msgid "UI Configuration" msgstr "Arayüz Ayarları" -#: cps/admin.py:247 cps/admin.py:936 +#: cps/admin.py:249 cps/templates/admin.html:46 +msgid "Edit Users" +msgstr "" + +#: cps/admin.py:290 +#, fuzzy +msgid "all" +msgstr "Tümü" + +#: cps/admin.py:315 cps/admin.py:1486 +msgid "User not found" +msgstr "" + +#: cps/admin.py:329 +msgid "{} users deleted successfully" +msgstr "" + +#: cps/admin.py:351 cps/templates/user_edit.html:44 +#: cps/templates/user_table.html:69 +msgid "Show All" +msgstr "" + +#: cps/admin.py:372 cps/admin.py:378 +msgid "Malformed request" +msgstr "" + +#: cps/admin.py:390 cps/admin.py:1368 +msgid "Guest Name can't be changed" +msgstr "" + +#: cps/admin.py:400 +msgid "Guest can't have this role" +msgstr "" + +#: cps/admin.py:412 cps/admin.py:1333 +msgid "No admin user remaining, can't remove admin role" +msgstr "" + +#: cps/admin.py:416 cps/admin.py:430 +msgid "Value has to be true or false" +msgstr "" + +#: cps/admin.py:418 +msgid "Invalid role" +msgstr "" + +#: cps/admin.py:422 +msgid "Guest can't have this view" +msgstr "" + +#: cps/admin.py:432 +msgid "Invalid view" +msgstr "" + +#: cps/admin.py:435 +msgid "Guest's Locale is determined automatically and can't be set" +msgstr "" + +#: cps/admin.py:439 +msgid "No Valid Locale Given" +msgstr "" + +#: cps/admin.py:450 +msgid "No Valid Book Language Given" +msgstr "" + +#: cps/admin.py:452 +msgid "Parameter not found" +msgstr "" + +#: cps/admin.py:506 cps/admin.py:1219 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web yapılandırması güncellendi" -#: cps/admin.py:258 +#: cps/admin.py:518 msgid "Do you really want to delete the Kobo Token?" msgstr "" -#: cps/admin.py:260 +#: cps/admin.py:520 msgid "Do you really want to delete this domain?" msgstr "" -#: cps/admin.py:262 +#: cps/admin.py:522 msgid "Do you really want to delete this user?" msgstr "" -#: cps/admin.py:264 cps/templates/shelf.html:90 +#: cps/admin.py:524 cps/templates/shelf.html:90 msgid "Are you sure you want to delete this shelf?" msgstr "" -#: cps/admin.py:510 cps/admin.py:516 cps/admin.py:526 cps/admin.py:536 -#: cps/templates/modal_dialogs.html:29 +#: cps/admin.py:526 +msgid "Are you sure you want to change locales of selected user(s)?" +msgstr "" + +#: cps/admin.py:528 +msgid "Are you sure you want to change visible book languages for selected user(s)?" +msgstr "" + +#: cps/admin.py:530 +msgid "Are you sure you want to change the selected role for the selected user(s)?" +msgstr "" + +#: cps/admin.py:532 +msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:534 +msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:683 +msgid "Tag not found" +msgstr "" + +#: cps/admin.py:695 +msgid "Invalid Action" +msgstr "" + +#: cps/admin.py:800 cps/admin.py:806 cps/admin.py:816 cps/admin.py:826 +#: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:43 msgid "Deny" msgstr "" -#: cps/admin.py:512 cps/admin.py:518 cps/admin.py:528 cps/admin.py:538 -#: cps/templates/modal_dialogs.html:28 +#: cps/admin.py:802 cps/admin.py:808 cps/admin.py:818 cps/admin.py:828 +#: cps/templates/modal_dialogs.html:28 cps/templates/user_table.html:48 msgid "Allow" msgstr "" -#: cps/admin.py:681 +#: cps/admin.py:971 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "" -#: cps/admin.py:723 +#: cps/admin.py:1016 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:729 +#: cps/admin.py:1022 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:738 +#: cps/admin.py:1052 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "" -#: cps/admin.py:752 cps/admin.py:760 +#: cps/admin.py:1067 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:755 cps/admin.py:763 +#: cps/admin.py:1070 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:768 +#: cps/admin.py:1075 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:771 +#: cps/admin.py:1078 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:779 +#: cps/admin.py:1086 #, python-format msgid "LDAP Member User Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:782 +#: cps/admin.py:1089 msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:790 +#: cps/admin.py:1097 msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:841 +#: cps/admin.py:1123 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:847 +#: cps/admin.py:1129 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:917 cps/admin.py:1024 cps/admin.py:1047 cps/admin.py:1168 -#: cps/shelf.py:102 cps/shelf.py:159 cps/shelf.py:200 cps/shelf.py:261 -#: cps/shelf.py:314 cps/shelf.py:348 cps/shelf.py:418 +#: cps/admin.py:1200 cps/admin.py:1303 cps/admin.py:1395 cps/admin.py:1461 +#: cps/shelf.py:103 cps/shelf.py:163 cps/shelf.py:206 cps/shelf.py:269 +#: cps/shelf.py:325 cps/shelf.py:360 cps/shelf.py:431 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:929 +#: cps/admin.py:1212 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:933 +#: cps/admin.py:1216 msgid "DB is not Writeable" msgstr "" -#: cps/admin.py:972 +#: cps/admin.py:1256 msgid "Basic Configuration" msgstr "Temel Ayarlar" -#: cps/admin.py:987 cps/web.py:1358 +#: cps/admin.py:1272 cps/web.py:1417 msgid "Please fill out all fields!" msgstr "Lütfen tüm alanları doldurun!" -#: cps/admin.py:990 cps/admin.py:1002 cps/admin.py:1008 cps/admin.py:1138 -msgid "Add new user" -msgstr "Yeni kullanıcı ekle" - -#: cps/admin.py:999 cps/web.py:1496 +#: cps/admin.py:1280 msgid "E-mail is not from valid domain" msgstr "E-posta izin verilen bir servisten değil" -#: cps/admin.py:1006 cps/admin.py:1021 -msgid "Found an existing account for this e-mail address or nickname." -msgstr "Bu e-posta adresi veya kullanıcı adı için zaten bir hesap var." +#: cps/admin.py:1284 cps/admin.py:1414 +msgid "Add new user" +msgstr "Yeni kullanıcı ekle" -#: cps/admin.py:1017 +#: cps/admin.py:1293 #, python-format msgid "User '%(user)s' created" msgstr "'%(user)s' kullanıcısı oluşturuldu" -#: cps/admin.py:1031 +#: cps/admin.py:1299 +#, fuzzy +msgid "Found an existing account for this e-mail address or name." +msgstr "Bu e-posta adresi veya kullanıcı adı için zaten bir hesap var." + +#: cps/admin.py:1312 #, python-format msgid "User '%(nick)s' deleted" msgstr "Kullanıcı '%(nick)s' silindi" -#: cps/admin.py:1034 +#: cps/admin.py:1314 cps/admin.py:1315 +msgid "Can't delete Guest User" +msgstr "" + +#: cps/admin.py:1318 msgid "No admin user remaining, can't delete user" msgstr "Başka yönetici kullanıcı olmadığından silinemedi" -#: cps/admin.py:1041 -#, python-format -msgid "User '%(nick)s' updated" -msgstr "'%(nick)s' kullanıcısı güncellendi" - -#: cps/admin.py:1044 -msgid "An unknown error occured." -msgstr "Bilinmeyen bir hata oluştu." - -#: cps/admin.py:1056 -msgid "No admin user remaining, can't remove admin role" -msgstr "" - -#: cps/admin.py:1092 cps/web.py:1554 -msgid "Found an existing account for this e-mail address." -msgstr "Bu e-posta adresi için bir hesap mevcut." - -#: cps/admin.py:1101 cps/admin.py:1115 cps/admin.py:1209 cps/web.py:1516 +#: cps/admin.py:1383 cps/admin.py:1504 #, python-format msgid "Edit User %(nick)s" msgstr "%(nick)s kullanıcısını düzenle" -#: cps/admin.py:1107 cps/web.py:1509 -msgid "This username is already taken" -msgstr "Bu kullanıcı adı zaten alındı" +#: cps/admin.py:1387 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "'%(nick)s' kullanıcısı güncellendi" -#: cps/admin.py:1147 cps/templates/admin.html:78 +#: cps/admin.py:1391 +#, fuzzy +msgid "An unknown error occurred." +msgstr "Bilinmeyen bir hata oluştu." + +#: cps/admin.py:1423 cps/templates/admin.html:94 msgid "Edit E-mail Server Settings" msgstr "" -#: cps/admin.py:1175 +#: cps/admin.py:1442 +msgid "G-Mail Account Verification Successful" +msgstr "" + +#: cps/admin.py:1468 #, python-format msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" msgstr "" -#: cps/admin.py:1178 +#: cps/admin.py:1471 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Deneme e-postası gönderilirken bir hata oluştu: %(res)s" -#: cps/admin.py:1180 +#: cps/admin.py:1473 msgid "Please configure your e-mail address first..." msgstr "Lütfen önce e-posta adresinizi ayarlayın..." -#: cps/admin.py:1182 +#: cps/admin.py:1475 msgid "E-mail server settings updated" msgstr "E-posta sunucusu ayarları güncellendi" -#: cps/admin.py:1193 -msgid "User not found" -msgstr "" - -#: cps/admin.py:1220 +#: cps/admin.py:1516 #, python-format msgid "Password for user %(user)s reset" msgstr "%(user)s kullanıcısının şifresi sıfırlandı" -#: cps/admin.py:1223 cps/web.py:1388 cps/web.py:1452 +#: cps/admin.py:1519 cps/web.py:1442 cps/web.py:1503 msgid "An unknown error occurred. Please try again later." msgstr "Bilinmeyen bir hata oluştu. Lütfen daha sonra tekrar deneyiniz." -#: cps/admin.py:1226 cps/web.py:1320 +#: cps/admin.py:1522 cps/web.py:1382 msgid "Please configure the SMTP mail settings first..." msgstr "Lütfen önce SMTP e-posta ayarlarını ayarlayın..." -#: cps/admin.py:1237 +#: cps/admin.py:1533 msgid "Logfile viewer" msgstr "Log dosyası görüntüleyici" -#: cps/admin.py:1303 +#: cps/admin.py:1599 msgid "Requesting update package" msgstr "Güncelleme paketi isteniyor" -#: cps/admin.py:1304 +#: cps/admin.py:1600 msgid "Downloading update package" msgstr "Güncelleme paketi indiriliyor" -#: cps/admin.py:1305 +#: cps/admin.py:1601 msgid "Unzipping update package" msgstr "Güncelleme paketi ayıklanıyor" -#: cps/admin.py:1306 +#: cps/admin.py:1602 msgid "Replacing files" msgstr "Dosyalar değiştiriliyor" -#: cps/admin.py:1307 +#: cps/admin.py:1603 msgid "Database connections are closed" msgstr "Veritabanı bağlantıları kapalı" -#: cps/admin.py:1308 +#: cps/admin.py:1604 msgid "Stopping server" msgstr "Sunucu durduruyor" -#: cps/admin.py:1309 +#: cps/admin.py:1605 msgid "Update finished, please press okay and reload page" msgstr "Güncelleme tamamlandı, sayfayı yenilemek için lütfen Tamam'a tıklayınız" -#: cps/admin.py:1310 cps/admin.py:1311 cps/admin.py:1312 cps/admin.py:1313 -#: cps/admin.py:1314 +#: cps/admin.py:1606 cps/admin.py:1607 cps/admin.py:1608 cps/admin.py:1609 +#: cps/admin.py:1610 msgid "Update failed:" msgstr "Güncelleme başarısız:" -#: cps/admin.py:1310 cps/updater.py:337 cps/updater.py:532 cps/updater.py:534 +#: cps/admin.py:1606 cps/updater.py:356 cps/updater.py:566 cps/updater.py:568 msgid "HTTP Error" msgstr "HTTP Hatası" -#: cps/admin.py:1311 cps/updater.py:339 cps/updater.py:536 +#: cps/admin.py:1607 cps/updater.py:358 cps/updater.py:570 msgid "Connection error" msgstr "Bağlantı hatası" -#: cps/admin.py:1312 cps/updater.py:341 cps/updater.py:538 +#: cps/admin.py:1608 cps/updater.py:360 cps/updater.py:572 msgid "Timeout while establishing connection" msgstr "Bağlantı kurulmaya çalışırken zaman aşımına uğradı" -#: cps/admin.py:1313 cps/updater.py:343 cps/updater.py:540 +#: cps/admin.py:1609 cps/updater.py:362 cps/updater.py:574 msgid "General error" msgstr "Genel hata" -#: cps/admin.py:1314 +#: cps/admin.py:1610 msgid "Update File Could Not be Saved in Temp Dir" msgstr "" -#: cps/admin.py:1376 +#: cps/admin.py:1671 msgid "Failed to Create at Least One LDAP User" msgstr "" -#: cps/admin.py:1389 +#: cps/admin.py:1684 #, python-format msgid "Error: %(ldaperror)s" msgstr "" -#: cps/admin.py:1393 +#: cps/admin.py:1688 msgid "Error: No user returned in response of LDAP server" msgstr "" -#: cps/admin.py:1426 +#: cps/admin.py:1721 msgid "At Least One LDAP User Not Found in Database" msgstr "" -#: cps/admin.py:1428 +#: cps/admin.py:1723 msgid "{} User Successfully Imported" msgstr "" @@ -345,98 +437,98 @@ msgstr "ayarlanmadı" msgid "Execution permissions missing" msgstr "" -#: cps/editbooks.py:267 cps/editbooks.py:269 +#: cps/editbooks.py:294 cps/editbooks.py:296 msgid "Book Format Successfully Deleted" msgstr "" -#: cps/editbooks.py:276 cps/editbooks.py:278 +#: cps/editbooks.py:303 cps/editbooks.py:305 msgid "Book Successfully Deleted" msgstr "" -#: cps/editbooks.py:325 cps/editbooks.py:646 cps/web.py:1598 cps/web.py:1634 -#: cps/web.py:1705 +#: cps/editbooks.py:361 cps/editbooks.py:724 cps/web.py:1627 cps/web.py:1663 +#: cps/web.py:1734 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "eKitap açılırken hata oluştu. Dosya mevcut değil veya erişilemiyor" -#: cps/editbooks.py:359 +#: cps/editbooks.py:395 msgid "edit metadata" msgstr "metaveri düzenle" -#: cps/editbooks.py:434 +#: cps/editbooks.py:473 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s geçerli bir dil değil" -#: cps/editbooks.py:556 cps/editbooks.py:905 +#: cps/editbooks.py:595 cps/editbooks.py:936 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "'%(ext)s' uzantılı dosyaların bu sunucuya yüklenmesine izin verilmiyor" -#: cps/editbooks.py:560 cps/editbooks.py:909 +#: cps/editbooks.py:599 cps/editbooks.py:940 msgid "File to be uploaded must have an extension" msgstr "Yüklenecek dosyanın mutlaka bir uzantısı olması gerekli" -#: cps/editbooks.py:572 +#: cps/editbooks.py:611 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "%(path)s dizini oluşturulamadı. (İzin reddedildi)" -#: cps/editbooks.py:577 +#: cps/editbooks.py:616 #, python-format msgid "Failed to store file %(file)s." msgstr "%(file)s dosyası kaydedilemedi." -#: cps/editbooks.py:595 cps/editbooks.py:972 cps/web.py:1559 +#: cps/editbooks.py:634 cps/editbooks.py:1027 cps/web.py:1588 #, python-format msgid "Database error: %(error)s." msgstr "" -#: cps/editbooks.py:599 +#: cps/editbooks.py:638 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "%(book)s kitabına %(ext)s dosya biçimi eklendi" -#: cps/editbooks.py:726 +#: cps/editbooks.py:775 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:763 +#: cps/editbooks.py:807 msgid "Metadata successfully updated" msgstr "Metaveri başarıyla güncellendi" -#: cps/editbooks.py:772 +#: cps/editbooks.py:816 msgid "Error editing book, please check logfile for details" msgstr "eKitap düzenlenirken hata oluştu, detaylar için lütfen log dosyasını kontrol edin" -#: cps/editbooks.py:810 +#: cps/editbooks.py:854 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Yüklenen eKitap muhtemelen kitaplıkta zaten var. Yenisini yüklemeden değiştirmeyi düşünün: " -#: cps/editbooks.py:917 +#: cps/editbooks.py:948 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "%(filename)s dosyası geçici dizine kaydedilemedi" -#: cps/editbooks.py:947 +#: cps/editbooks.py:967 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "" -#: cps/editbooks.py:958 +#: cps/editbooks.py:1013 #, python-format msgid "File %(file)s uploaded" msgstr "%(file)s dosyası yüklendi" -#: cps/editbooks.py:984 +#: cps/editbooks.py:1039 msgid "Source or destination format for conversion missing" msgstr "Dönüştürme için kaynak ya da hedef biçimi eksik" -#: cps/editbooks.py:992 +#: cps/editbooks.py:1047 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "eKitap %(book_format)s formatlarına dönüştürülmek üzere başarıyla sıraya alındı" -#: cps/editbooks.py:996 +#: cps/editbooks.py:1051 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Bu eKitabı dönüştürürken bir hata oluştu: %(res)s" @@ -544,55 +636,68 @@ msgstr "%(file)s dosyası Google Drive'da bulunamadı" msgid "Book path %(path)s not found on Google Drive" msgstr "eKitap yolu %(path)s Google Drive'da bulunamadı" -#: cps/helper.py:576 +#: cps/helper.py:511 +#, fuzzy +msgid "Found an existing account for this e-mail address" +msgstr "Bu e-posta adresi için bir hesap mevcut." + +#: cps/helper.py:519 +msgid "This username is already taken" +msgstr "Bu kullanıcı adı zaten alındı" + +#: cps/helper.py:529 +msgid "Invalid e-mail address format" +msgstr "" + +#: cps/helper.py:602 msgid "Error Downloading Cover" msgstr "" -#: cps/helper.py:579 +#: cps/helper.py:605 msgid "Cover Format Error" msgstr "" -#: cps/helper.py:589 +#: cps/helper.py:615 msgid "Failed to create path for cover" msgstr "" -#: cps/helper.py:605 +#: cps/helper.py:631 msgid "Cover-file is not a valid image file, or could not be stored" msgstr "" -#: cps/helper.py:616 +#: cps/helper.py:642 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" msgstr "" -#: cps/helper.py:629 +#: cps/helper.py:655 msgid "Only jpg/jpeg files are supported as coverfile" msgstr "" -#: cps/helper.py:680 +#: cps/helper.py:707 msgid "Unrar binary file not found" msgstr "" -#: cps/helper.py:694 +#: cps/helper.py:721 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:743 +#: cps/helper.py:769 msgid "Waiting" msgstr "Bekleniyor" -#: cps/helper.py:745 +#: cps/helper.py:771 msgid "Failed" msgstr "Başarısız" -#: cps/helper.py:747 +#: cps/helper.py:773 msgid "Started" msgstr "Başladı" -#: cps/helper.py:749 +#: cps/helper.py:775 msgid "Finished" msgstr "Bitti" -#: cps/helper.py:751 +#: cps/helper.py:777 msgid "Unknown Status" msgstr "Bilinmeyen Durum" @@ -604,65 +709,82 @@ msgstr "" msgid "Kobo Setup" msgstr "" -#: cps/oauth_bb.py:76 +#: cps/oauth_bb.py:78 #, python-format msgid "Register with %(provider)s" msgstr "%(provider)s ile Kaydol" -#: cps/oauth_bb.py:137 cps/remotelogin.py:133 cps/web.py:1424 +#: cps/oauth_bb.py:139 cps/remotelogin.py:133 cps/web.py:1475 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "giriş yaptınız: '%(nickname)s'" -#: cps/oauth_bb.py:147 +#: cps/oauth_bb.py:149 #, python-format msgid "Link to %(oauth)s Succeeded" msgstr "" -#: cps/oauth_bb.py:153 +#: cps/oauth_bb.py:156 msgid "Login failed, No User Linked With OAuth Account" msgstr "" -#: cps/oauth_bb.py:195 +#: cps/oauth_bb.py:198 #, python-format msgid "Unlink to %(oauth)s Succeeded" msgstr "" -#: cps/oauth_bb.py:199 +#: cps/oauth_bb.py:203 #, python-format msgid "Unlink to %(oauth)s Failed" msgstr "" -#: cps/oauth_bb.py:202 +#: cps/oauth_bb.py:206 #, python-format msgid "Not Linked to %(oauth)s" msgstr "" -#: cps/oauth_bb.py:259 +#: cps/oauth_bb.py:262 msgid "Failed to log in with GitHub." msgstr "GitHub ile giriş yapılamadı." -#: cps/oauth_bb.py:264 +#: cps/oauth_bb.py:268 msgid "Failed to fetch user info from GitHub." msgstr "Github'dan kullanıcı bilgileri alınamadı." -#: cps/oauth_bb.py:275 +#: cps/oauth_bb.py:280 msgid "Failed to log in with Google." msgstr "Google ile giriş yapılamadı." -#: cps/oauth_bb.py:280 +#: cps/oauth_bb.py:286 msgid "Failed to fetch user info from Google." msgstr "Google'dan kullanıcı bilgileri alınamadı." -#: cps/oauth_bb.py:312 +#: cps/oauth_bb.py:333 msgid "GitHub Oauth error, please retry later." msgstr "GitHub Oauth hatası, lütfen tekrar deneyin." -#: cps/oauth_bb.py:331 +#: cps/oauth_bb.py:336 +msgid "GitHub Oauth error: {}" +msgstr "" + +#: cps/oauth_bb.py:357 msgid "Google Oauth error, please retry later." msgstr "Google Oauth hatası, lütfen tekrar deneyin." -#: cps/remotelogin.py:65 cps/web.py:1471 +#: cps/oauth_bb.py:360 +msgid "Google Oauth error: {}" +msgstr "" + +#: cps/opds.py:110 cps/opds.py:199 cps/opds.py:276 cps/opds.py:328 +#: cps/templates/grid.html:14 cps/templates/list.html:14 +msgid "All" +msgstr "Tümü" + +#: cps/opds.py:385 +msgid "{} Stars" +msgstr "" + +#: cps/remotelogin.py:65 cps/web.py:1522 msgid "login" msgstr "giriş" @@ -678,7 +800,7 @@ msgstr "Token süresi doldu" msgid "Success! Please return to your device" msgstr "Başarılı! Lütfen cihazınıza dönün" -#: cps/render_template.py:39 cps/web.py:415 +#: cps/render_template.py:39 cps/web.py:414 msgid "Books" msgstr "eKitaplar" @@ -686,7 +808,7 @@ msgstr "eKitaplar" msgid "Show recent books" msgstr "Son eKitapları göster" -#: cps/render_template.py:42 cps/templates/index.xml:18 +#: cps/render_template.py:42 cps/templates/index.xml:25 msgid "Hot Books" msgstr "Popüler" @@ -694,127 +816,130 @@ msgstr "Popüler" msgid "Show Hot Books" msgstr "" -#: cps/render_template.py:45 +#: cps/render_template.py:46 cps/render_template.py:51 msgid "Downloaded Books" msgstr "" -#: cps/render_template.py:47 +#: cps/render_template.py:48 cps/render_template.py:53 +#: cps/templates/user_table.html:151 msgid "Show Downloaded Books" msgstr "" -#: cps/render_template.py:50 cps/templates/index.xml:25 cps/web.py:425 +#: cps/render_template.py:56 cps/templates/index.xml:32 cps/web.py:424 msgid "Top Rated Books" msgstr "" -#: cps/render_template.py:52 +#: cps/render_template.py:58 cps/templates/user_table.html:145 msgid "Show Top Rated Books" msgstr "" -#: cps/render_template.py:53 cps/templates/index.xml:47 -#: cps/templates/index.xml:51 cps/web.py:642 +#: cps/render_template.py:59 cps/templates/index.xml:54 +#: cps/templates/index.xml:58 cps/web.py:650 msgid "Read Books" msgstr "Okunanlar" -#: cps/render_template.py:55 +#: cps/render_template.py:61 msgid "Show read and unread" msgstr "Okunan ve okunmayanları göster" -#: cps/render_template.py:57 cps/templates/index.xml:54 -#: cps/templates/index.xml:58 cps/web.py:645 +#: cps/render_template.py:63 cps/templates/index.xml:61 +#: cps/templates/index.xml:65 cps/web.py:653 msgid "Unread Books" msgstr "Okunmamışlar" -#: cps/render_template.py:59 +#: cps/render_template.py:65 msgid "Show unread" msgstr "Okunmamışları göster" -#: cps/render_template.py:60 +#: cps/render_template.py:66 msgid "Discover" msgstr "Keşfet" -#: cps/render_template.py:62 +#: cps/render_template.py:68 cps/templates/user_table.html:143 +#: cps/templates/user_table.html:146 msgid "Show random books" msgstr "Rastgele eKitap göster" -#: cps/render_template.py:63 cps/templates/book_table.html:50 -#: cps/templates/index.xml:76 cps/web.py:950 +#: cps/render_template.py:69 cps/templates/book_table.html:51 +#: cps/templates/index.xml:83 cps/web.py:1024 msgid "Categories" msgstr "Kategoriler" -#: cps/render_template.py:65 +#: cps/render_template.py:71 cps/templates/user_table.html:142 msgid "Show category selection" msgstr "Kategori seçimini göster" -#: cps/render_template.py:66 cps/templates/book_edit.html:84 -#: cps/templates/book_table.html:51 cps/templates/index.xml:83 -#: cps/templates/search_form.html:62 cps/web.py:854 cps/web.py:864 +#: cps/render_template.py:72 cps/templates/book_edit.html:84 +#: cps/templates/book_table.html:52 cps/templates/index.xml:90 +#: cps/templates/search_form.html:62 cps/web.py:921 cps/web.py:931 msgid "Series" msgstr "Seriler" -#: cps/render_template.py:68 +#: cps/render_template.py:74 cps/templates/user_table.html:141 msgid "Show series selection" msgstr "Seri seçimini göster" -#: cps/render_template.py:69 cps/templates/book_table.html:49 -#: cps/templates/index.xml:62 +#: cps/render_template.py:75 cps/templates/book_table.html:50 +#: cps/templates/index.xml:69 msgid "Authors" msgstr "Yazarlar" -#: cps/render_template.py:71 +#: cps/render_template.py:77 cps/templates/user_table.html:144 msgid "Show author selection" msgstr "Yazar seçimini göster" -#: cps/render_template.py:73 cps/templates/book_table.html:55 -#: cps/templates/index.xml:69 cps/web.py:833 +#: cps/render_template.py:79 cps/templates/book_table.html:56 +#: cps/templates/index.xml:76 cps/web.py:898 msgid "Publishers" msgstr "Yayıncılar" -#: cps/render_template.py:75 +#: cps/render_template.py:81 cps/templates/user_table.html:147 msgid "Show publisher selection" msgstr "Yayıncı seçimini göster" -#: cps/render_template.py:76 cps/templates/book_table.html:53 -#: cps/templates/index.xml:90 cps/templates/search_form.html:100 cps/web.py:929 +#: cps/render_template.py:82 cps/templates/book_table.html:54 +#: cps/templates/index.xml:97 cps/templates/search_form.html:100 +#: cps/web.py:1001 msgid "Languages" msgstr "Diller" -#: cps/render_template.py:79 +#: cps/render_template.py:85 cps/templates/user_table.html:139 msgid "Show language selection" msgstr "Dil seçimini göster" -#: cps/render_template.py:80 cps/templates/index.xml:97 +#: cps/render_template.py:86 cps/templates/index.xml:104 msgid "Ratings" msgstr "Değerlendirmeler" -#: cps/render_template.py:82 +#: cps/render_template.py:88 cps/templates/user_table.html:148 msgid "Show ratings selection" msgstr "Değerlendirme seçimini göster" -#: cps/render_template.py:83 cps/templates/index.xml:105 +#: cps/render_template.py:89 cps/templates/index.xml:112 msgid "File formats" msgstr "Biçimler" -#: cps/render_template.py:85 +#: cps/render_template.py:91 cps/templates/user_table.html:149 msgid "Show file formats selection" msgstr "Dosya biçimi seçimini göster" -#: cps/render_template.py:87 cps/web.py:669 +#: cps/render_template.py:93 cps/web.py:677 msgid "Archived Books" msgstr "" -#: cps/render_template.py:89 +#: cps/render_template.py:95 cps/templates/user_table.html:150 msgid "Show archived books" msgstr "" -#: cps/render_template.py:91 cps/web.py:743 +#: cps/render_template.py:97 cps/web.py:751 msgid "Books List" msgstr "" -#: cps/render_template.py:93 +#: cps/render_template.py:99 cps/templates/user_table.html:152 msgid "Show Books List" msgstr "" -#: cps/shelf.py:69 cps/shelf.py:122 +#: cps/shelf.py:69 cps/shelf.py:124 msgid "Invalid shelf specified" msgstr "Geçersiz kitaplık seçildi" @@ -828,303 +953,307 @@ msgstr "Maalesef bu kitaplığa eKitap eklemenize izin verilmiyor: %(shelfname)s msgid "Book is already part of the shelf: %(shelfname)s" msgstr "eKitap zaten bu kitaplıkta bulunuyor: %(shelfname)s" -#: cps/shelf.py:108 +#: cps/shelf.py:110 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "eKitap kitaplığa eklendi: %(sname)s" -#: cps/shelf.py:126 +#: cps/shelf.py:129 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Bu kitaplığa eKitap eklemenize izin verilmiyor: %(name)s" -#: cps/shelf.py:144 +#: cps/shelf.py:147 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "eKitaplar zaten bu kitaplıkta bulunuyor: %(name)s" -#: cps/shelf.py:156 +#: cps/shelf.py:159 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "eKitaplar kitaplığa eklendi: %(sname)s" -#: cps/shelf.py:161 +#: cps/shelf.py:166 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "eKitaplar kitaplığa eklenemedi: %(sname)s" -#: cps/shelf.py:206 +#: cps/shelf.py:212 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "eKitap kitaplıktan silindi: %(sname)s" -#: cps/shelf.py:214 +#: cps/shelf.py:221 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Maalesef bu kitaplıktan eKitap silmenize izin verilmiyor: %(sname)s" -#: cps/shelf.py:224 cps/templates/layout.html:140 +#: cps/shelf.py:231 cps/templates/layout.html:140 msgid "Create a Shelf" msgstr "Kitaplık oluştur" -#: cps/shelf.py:231 +#: cps/shelf.py:238 msgid "Edit a shelf" msgstr "Kitaplığı düzenle" -#: cps/shelf.py:249 +#: cps/shelf.py:256 #, python-format msgid "Shelf %(title)s created" msgstr "%(title)s kitaplığı oluşturuldu." -#: cps/shelf.py:252 +#: cps/shelf.py:259 #, python-format msgid "Shelf %(title)s changed" msgstr "%(title)s kitaplığı değiştirildi" -#: cps/shelf.py:265 +#: cps/shelf.py:273 msgid "There was an error" msgstr "Bir hata oluştu" -#: cps/shelf.py:281 +#: cps/shelf.py:290 #, python-format msgid "A public shelf with the name '%(title)s' already exists." msgstr "" -#: cps/shelf.py:291 +#: cps/shelf.py:301 #, python-format msgid "A private shelf with the name '%(title)s' already exists." msgstr "" -#: cps/shelf.py:358 +#: cps/shelf.py:370 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Kitaplık sıralamasını değiştir: '%(name)s'" -#: cps/shelf.py:423 +#: cps/shelf.py:436 #, python-format msgid "Shelf: '%(name)s'" msgstr "Kitaplık: '%(name)s'" -#: cps/shelf.py:427 +#: cps/shelf.py:440 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Kitaplık açılırken hata oluştu. Kitaplık mevcut değil ya da erişilebilir değil" -#: cps/updater.py:355 cps/updater.py:366 cps/updater.py:418 cps/updater.py:432 +#: cps/updater.py:374 cps/updater.py:385 cps/updater.py:485 cps/updater.py:500 msgid "Unexpected data while reading update information" msgstr "Güncelleme bilgileri okunurken beklenmeyen veri" -#: cps/updater.py:362 cps/updater.py:424 +#: cps/updater.py:381 cps/updater.py:492 msgid "No update available. You already have the latest version installed" msgstr "Yeni güncelleme mevcut değil. Zaten en son sürüme sahipsiniz." -#: cps/updater.py:379 +#: cps/updater.py:399 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "Yeni bir güncelleme mevcut. Son sürüme güncellemek için aşağıdaki düğmeye tıklayın." -#: cps/updater.py:397 +#: cps/updater.py:417 msgid "Could not fetch update information" msgstr "Güncelleme bilgileri alınamadı" -#: cps/updater.py:411 -msgid "No release information available" -msgstr "Sürüm bilgisi mevcut değil" +#: cps/updater.py:427 +msgid "Click on the button below to update to the latest stable version." +msgstr "Son kararlı sürüme güncellemek için aşağıdaki düğmeye tıklayın." -#: cps/updater.py:468 cps/updater.py:479 cps/updater.py:498 +#: cps/updater.py:436 cps/updater.py:450 cps/updater.py:461 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "Yeni bir güncelleme mevcut. Son sürüme güncellemek için aşağıdaki düğmeye tıklayın: %(version)s" -#: cps/updater.py:489 -msgid "Click on the button below to update to the latest stable version." -msgstr "Son kararlı sürüme güncellemek için aşağıdaki düğmeye tıklayın." +#: cps/updater.py:478 +msgid "No release information available" +msgstr "Sürüm bilgisi mevcut değil" -#: cps/templates/index.html:5 cps/web.py:435 +#: cps/templates/index.html:5 cps/web.py:434 msgid "Discover (Random Books)" msgstr "Keşfet (Rastgele)" -#: cps/web.py:461 +#: cps/web.py:460 msgid "Hot Books (Most Downloaded)" msgstr "" -#: cps/web.py:489 +#: cps/web.py:493 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:503 +#: cps/web.py:508 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "" -#: cps/web.py:517 +#: cps/web.py:522 #, python-format msgid "Author: %(name)s" msgstr "Yazar: %(name)s" -#: cps/web.py:531 +#: cps/web.py:537 #, python-format msgid "Publisher: %(name)s" msgstr "Yayınevi: %(name)s" -#: cps/web.py:544 +#: cps/web.py:550 #, python-format msgid "Series: %(serie)s" msgstr "Seri: %(serie)s" -#: cps/web.py:557 +#: cps/web.py:563 #, python-format msgid "Rating: %(rating)s stars" msgstr "Değerlendirme: %(rating)s yıldız" -#: cps/web.py:570 +#: cps/web.py:576 #, python-format msgid "File format: %(format)s" msgstr "Biçim: %(format)s" -#: cps/web.py:584 +#: cps/web.py:592 #, python-format msgid "Category: %(name)s" msgstr "Kategori: %(name)s" -#: cps/web.py:603 +#: cps/web.py:611 #, python-format msgid "Language: %(name)s" msgstr "Dil: %(name)s" -#: cps/web.py:633 +#: cps/web.py:641 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:703 cps/web.py:1248 +#: cps/templates/layout.html:56 cps/web.py:711 cps/web.py:1314 msgid "Advanced Search" msgstr "Gelişmiş Arama" #: cps/templates/book_edit.html:214 cps/templates/feed.xml:33 #: cps/templates/index.xml:11 cps/templates/layout.html:45 #: cps/templates/layout.html:48 cps/templates/search_form.html:194 -#: cps/web.py:715 cps/web.py:987 +#: cps/web.py:723 cps/web.py:1061 msgid "Search" msgstr "Ara" -#: cps/web.py:882 +#: cps/templates/admin.html:16 cps/web.py:876 +msgid "Downloads" +msgstr "" + +#: cps/web.py:952 msgid "Ratings list" msgstr "Değerlendirme listesi" -#: cps/web.py:901 +#: cps/web.py:973 msgid "File formats list" msgstr "Biçim listesi" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:964 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1038 msgid "Tasks" msgstr "Görevler" -#: cps/web.py:1108 +#: cps/web.py:1182 msgid "Published after " msgstr "Yayınlanma (sonra)" -#: cps/web.py:1115 +#: cps/web.py:1189 msgid "Published before " msgstr "Yayınlanma (önce)" -#: cps/web.py:1145 +#: cps/web.py:1211 #, python-format msgid "Rating <= %(rating)s" msgstr "Değerlendirme <= %(rating)s" -#: cps/web.py:1147 +#: cps/web.py:1213 #, python-format msgid "Rating >= %(rating)s" msgstr "Değerlendirme >= %(rating)s" -#: cps/web.py:1149 +#: cps/web.py:1215 #, python-format msgid "Read Status = %(status)s" msgstr "" -#: cps/web.py:1325 +#: cps/web.py:1387 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "%(kindlemail)s'a gönderilmek üzere başarıyla sıraya alındı" -#: cps/web.py:1329 +#: cps/web.py:1391 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "" -#: cps/web.py:1331 +#: cps/web.py:1393 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "" -#: cps/web.py:1348 +#: cps/web.py:1410 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "E-Posta sunucusu ayarlanmadı, lütfen yöneticinizle iletişime geçin!" -#: cps/web.py:1349 cps/web.py:1359 cps/web.py:1366 cps/web.py:1389 -#: cps/web.py:1393 cps/web.py:1398 cps/web.py:1402 +#: cps/web.py:1411 cps/web.py:1418 cps/web.py:1424 cps/web.py:1443 +#: cps/web.py:1447 cps/web.py:1453 msgid "register" msgstr "kaydol" -#: cps/web.py:1364 -msgid "Invalid e-mail address format" -msgstr "" - -#: cps/web.py:1391 +#: cps/web.py:1445 msgid "Your e-mail is not allowed to register" msgstr "E-posta adresinizle kaydolunmasına izin verilmiyor" -#: cps/web.py:1394 +#: cps/web.py:1448 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Onay e-Postası hesabınıza gönderildi." -#: cps/web.py:1397 -msgid "This username or e-mail address is already in use." -msgstr "Kullanıcı adı ya da e-Posta adresi zaten kullanımda." - -#: cps/web.py:1414 +#: cps/web.py:1465 msgid "Cannot activate LDAP authentication" msgstr "LDAP Kimlik Doğrulaması etkinleştirilemiyor" -#: cps/web.py:1431 +#: cps/web.py:1482 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "" -#: cps/web.py:1437 +#: cps/web.py:1488 #, python-format msgid "Could not login: %(message)s" msgstr "" -#: cps/web.py:1441 cps/web.py:1465 +#: cps/web.py:1492 cps/web.py:1516 msgid "Wrong Username or Password" msgstr "Yanlış Kullanıcı adı ya da Şifre" -#: cps/web.py:1448 +#: cps/web.py:1499 msgid "New Password was send to your email address" msgstr "Yeni şifre e-Posta adresinize gönderildi" -#: cps/web.py:1454 +#: cps/web.py:1505 msgid "Please enter valid username to reset password" msgstr "Şifrenizi sıfırlayabilmek için lütfen geçerli bir kullanıcı adı giriniz" -#: cps/web.py:1460 +#: cps/web.py:1511 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Giriş yaptınız: '%(nickname)s'" -#: cps/web.py:1498 cps/web.py:1583 +#: cps/web.py:1565 cps/web.py:1612 #, python-format msgid "%(name)s's profile" msgstr "%(name)s Profili" -#: cps/web.py:1550 +#: cps/web.py:1579 msgid "Profile updated" msgstr "Profil güncellendi" -#: cps/web.py:1610 cps/web.py:1613 cps/web.py:1616 cps/web.py:1619 -#: cps/web.py:1626 cps/web.py:1631 +#: cps/web.py:1583 +msgid "Found an existing account for this e-mail address." +msgstr "Bu e-posta adresi için bir hesap mevcut." + +#: cps/web.py:1639 cps/web.py:1642 cps/web.py:1645 cps/web.py:1648 +#: cps/web.py:1655 cps/web.py:1660 msgid "Read a Book" msgstr "Kitap Oku" +#: cps/services/gmail.py:41 +msgid "Found no valid gmail.json file with OAuth information" +msgstr "" + #: cps/tasks/convert.py:114 #, python-format msgid "Calibre ebook-convert %(tool)s not found" @@ -1163,221 +1292,231 @@ msgstr "" msgid "Users" msgstr "" -#: cps/templates/admin.html:12 cps/templates/login.html:8 +#: cps/templates/admin.html:13 cps/templates/login.html:8 #: cps/templates/login.html:9 cps/templates/register.html:8 -#: cps/templates/user_edit.html:9 +#: cps/templates/user_edit.html:9 cps/templates/user_table.html:121 msgid "Username" msgstr "Kullanıcı adı" -#: cps/templates/admin.html:13 cps/templates/register.html:13 -#: cps/templates/user_edit.html:14 +#: cps/templates/admin.html:14 cps/templates/register.html:13 +#: cps/templates/user_edit.html:14 cps/templates/user_table.html:122 msgid "E-mail Address" msgstr "" -#: cps/templates/admin.html:14 cps/templates/user_edit.html:27 +#: cps/templates/admin.html:15 cps/templates/user_edit.html:27 msgid "Send to Kindle E-mail Address" msgstr "" -#: cps/templates/admin.html:15 -msgid "Downloads" -msgstr "" - -#: cps/templates/admin.html:16 cps/templates/layout.html:77 +#: cps/templates/admin.html:17 cps/templates/layout.html:77 +#: cps/templates/user_table.html:130 msgid "Admin" msgstr "Yönetim" -#: cps/templates/admin.html:17 cps/templates/login.html:12 +#: cps/templates/admin.html:18 cps/templates/login.html:12 #: cps/templates/login.html:13 cps/templates/user_edit.html:22 msgid "Password" msgstr "Şifre" -#: cps/templates/admin.html:18 cps/templates/layout.html:66 +#: cps/templates/admin.html:19 cps/templates/layout.html:66 +#: cps/templates/user_table.html:132 msgid "Upload" msgstr "Yükleme" -#: cps/templates/admin.html:19 cps/templates/detail.html:18 +#: cps/templates/admin.html:20 cps/templates/detail.html:18 #: cps/templates/detail.html:27 cps/templates/shelf.html:6 +#: cps/templates/user_table.html:133 msgid "Download" msgstr "İndirme" -#: cps/templates/admin.html:20 +#: cps/templates/admin.html:21 msgid "View Books" msgstr "" -#: cps/templates/admin.html:21 +#: cps/templates/admin.html:22 cps/templates/user_table.html:118 +#: cps/templates/user_table.html:135 msgid "Edit" msgstr "Düzenleme" -#: cps/templates/admin.html:22 cps/templates/book_edit.html:16 -#: cps/templates/book_table.html:57 cps/templates/modal_dialogs.html:63 +#: cps/templates/admin.html:23 cps/templates/book_edit.html:16 +#: cps/templates/book_table.html:58 cps/templates/modal_dialogs.html:63 #: cps/templates/modal_dialogs.html:116 cps/templates/user_edit.html:66 +#: cps/templates/user_table.html:136 msgid "Delete" msgstr "Sil" -#: cps/templates/admin.html:23 +#: cps/templates/admin.html:24 msgid "Public Shelf" msgstr "" -#: cps/templates/admin.html:44 +#: cps/templates/admin.html:47 msgid "Add New User" msgstr "" -#: cps/templates/admin.html:46 +#: cps/templates/admin.html:49 msgid "Import LDAP Users" msgstr "" -#: cps/templates/admin.html:53 +#: cps/templates/admin.html:56 msgid "E-mail Server Settings" msgstr "" -#: cps/templates/admin.html:57 cps/templates/email_edit.html:11 +#: cps/templates/admin.html:61 cps/templates/email_edit.html:30 msgid "SMTP Hostname" msgstr "" -#: cps/templates/admin.html:61 cps/templates/email_edit.html:15 +#: cps/templates/admin.html:65 cps/templates/email_edit.html:34 msgid "SMTP Port" msgstr "" -#: cps/templates/admin.html:65 cps/templates/email_edit.html:19 +#: cps/templates/admin.html:69 cps/templates/email_edit.html:38 msgid "Encryption" msgstr "Şifreleme" -#: cps/templates/admin.html:69 cps/templates/email_edit.html:27 +#: cps/templates/admin.html:73 cps/templates/email_edit.html:46 msgid "SMTP Login" msgstr "" -#: cps/templates/admin.html:73 cps/templates/email_edit.html:35 +#: cps/templates/admin.html:77 cps/templates/admin.html:88 +#: cps/templates/email_edit.html:54 msgid "From E-mail" msgstr "" #: cps/templates/admin.html:84 +msgid "E-Mail Service" +msgstr "" + +#: cps/templates/admin.html:85 +msgid "Gmail via Oauth2" +msgstr "" + +#: cps/templates/admin.html:100 msgid "Configuration" msgstr "Ayarlar" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:103 msgid "Calibre Database Directory" msgstr "" -#: cps/templates/admin.html:91 cps/templates/config_edit.html:136 +#: cps/templates/admin.html:107 cps/templates/config_edit.html:136 msgid "Log Level" msgstr "Log Seviyesi" -#: cps/templates/admin.html:95 +#: cps/templates/admin.html:111 msgid "Port" msgstr "Port" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:116 msgid "External Port" msgstr "" -#: cps/templates/admin.html:107 cps/templates/config_view_edit.html:27 +#: cps/templates/admin.html:123 cps/templates/config_view_edit.html:27 msgid "Books per Page" msgstr "" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:127 msgid "Uploads" msgstr "" -#: cps/templates/admin.html:115 +#: cps/templates/admin.html:131 msgid "Anonymous Browsing" msgstr "" -#: cps/templates/admin.html:119 +#: cps/templates/admin.html:135 msgid "Public Registration" msgstr "" -#: cps/templates/admin.html:123 +#: cps/templates/admin.html:139 msgid "Magic Link Remote Login" msgstr "" -#: cps/templates/admin.html:127 +#: cps/templates/admin.html:143 msgid "Reverse Proxy Login" msgstr "" -#: cps/templates/admin.html:132 +#: cps/templates/admin.html:148 msgid "Reverse proxy header name" msgstr "Ters Proxy header adı" -#: cps/templates/admin.html:137 +#: cps/templates/admin.html:153 msgid "Edit Basic Configuration" msgstr "" -#: cps/templates/admin.html:138 +#: cps/templates/admin.html:154 msgid "Edit UI Configuration" msgstr "" -#: cps/templates/admin.html:143 +#: cps/templates/admin.html:159 msgid "Administration" msgstr "Yönetim" -#: cps/templates/admin.html:144 +#: cps/templates/admin.html:160 msgid "Download Debug Package" msgstr "" -#: cps/templates/admin.html:145 +#: cps/templates/admin.html:161 msgid "View Logs" msgstr "" -#: cps/templates/admin.html:148 +#: cps/templates/admin.html:164 msgid "Reconnect Calibre Database" msgstr "" -#: cps/templates/admin.html:149 +#: cps/templates/admin.html:165 msgid "Restart" msgstr "" -#: cps/templates/admin.html:150 +#: cps/templates/admin.html:166 msgid "Shutdown" msgstr "" -#: cps/templates/admin.html:155 +#: cps/templates/admin.html:171 msgid "Update" msgstr "Güncelleme" -#: cps/templates/admin.html:159 +#: cps/templates/admin.html:175 msgid "Version" msgstr "Sürüm" -#: cps/templates/admin.html:160 +#: cps/templates/admin.html:176 msgid "Details" msgstr "Detaylar" -#: cps/templates/admin.html:166 +#: cps/templates/admin.html:182 msgid "Current version" msgstr "Geçerli sürüm" -#: cps/templates/admin.html:173 +#: cps/templates/admin.html:189 msgid "Check for Update" msgstr "" -#: cps/templates/admin.html:174 +#: cps/templates/admin.html:190 msgid "Perform Update" msgstr "Güncelle" -#: cps/templates/admin.html:187 +#: cps/templates/admin.html:203 msgid "Are you sure you want to restart?" msgstr "" -#: cps/templates/admin.html:192 cps/templates/admin.html:206 -#: cps/templates/admin.html:226 cps/templates/shelf.html:95 +#: cps/templates/admin.html:208 cps/templates/admin.html:222 +#: cps/templates/admin.html:242 cps/templates/shelf.html:95 msgid "OK" msgstr "" -#: cps/templates/admin.html:193 cps/templates/admin.html:207 -#: cps/templates/book_edit.html:192 cps/templates/book_table.html:84 +#: cps/templates/admin.html:209 cps/templates/admin.html:223 +#: cps/templates/book_edit.html:192 cps/templates/book_table.html:85 #: cps/templates/config_edit.html:427 cps/templates/config_view_edit.html:151 -#: cps/templates/email_edit.html:47 cps/templates/modal_dialogs.html:64 -#: cps/templates/modal_dialogs.html:99 cps/templates/modal_dialogs.html:117 +#: cps/templates/modal_dialogs.html:64 cps/templates/modal_dialogs.html:99 +#: cps/templates/modal_dialogs.html:117 cps/templates/modal_dialogs.html:135 #: cps/templates/shelf.html:96 cps/templates/shelf_edit.html:19 #: cps/templates/user_edit.html:132 msgid "Cancel" msgstr "" -#: cps/templates/admin.html:205 +#: cps/templates/admin.html:221 msgid "Are you sure you want to shutdown?" msgstr "" -#: cps/templates/admin.html:217 +#: cps/templates/admin.html:233 msgid "Updating, please do not reload this page" msgstr "" @@ -1485,6 +1624,7 @@ msgid "Identifier Value" msgstr "" #: cps/templates/book_edit.html:72 cps/templates/book_edit.html:289 +#: cps/templates/user_table.html:23 msgid "Remove" msgstr "" @@ -1550,7 +1690,7 @@ msgid "Fetch Metadata" msgstr "" #: cps/templates/book_edit.html:191 cps/templates/config_edit.html:424 -#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45 +#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:64 #: cps/templates/shelf_edit.html:17 cps/templates/shelf_order.html:40 #: cps/templates/user_edit.html:130 msgid "Save" @@ -1590,96 +1730,98 @@ msgstr "Arama hatası!" msgid "No Result(s) found! Please try another keyword." msgstr "" -#: cps/templates/book_table.html:10 cps/templates/book_table.html:52 +#: cps/templates/book_table.html:11 cps/templates/book_table.html:53 +#: cps/templates/user_table.html:13 cps/templates/user_table.html:65 +#: cps/templates/user_table.html:88 msgid "This Field is Required" msgstr "" -#: cps/templates/book_table.html:23 +#: cps/templates/book_table.html:24 msgid "Merge selected books" msgstr "" -#: cps/templates/book_table.html:24 +#: cps/templates/book_table.html:25 cps/templates/user_table.html:111 msgid "Remove Selections" msgstr "" -#: cps/templates/book_table.html:30 +#: cps/templates/book_table.html:31 msgid "Update Title Sort automatically" msgstr "" -#: cps/templates/book_table.html:34 +#: cps/templates/book_table.html:35 msgid "Update Author Sort automatically" msgstr "" -#: cps/templates/book_table.html:46 +#: cps/templates/book_table.html:47 msgid "Enter Title" msgstr "" -#: cps/templates/book_table.html:46 cps/templates/config_view_edit.html:23 +#: cps/templates/book_table.html:47 cps/templates/config_view_edit.html:23 #: cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Başlık" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Enter Title Sort" msgstr "" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Title Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Enter Author Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Author Sort" msgstr "" -#: cps/templates/book_table.html:49 +#: cps/templates/book_table.html:50 msgid "Enter Authors" msgstr "" -#: cps/templates/book_table.html:50 +#: cps/templates/book_table.html:51 msgid "Enter Categories" msgstr "" -#: cps/templates/book_table.html:51 +#: cps/templates/book_table.html:52 msgid "Enter Series" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Enter title" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Series Index" msgstr "" -#: cps/templates/book_table.html:53 +#: cps/templates/book_table.html:54 msgid "Enter Languages" msgstr "" -#: cps/templates/book_table.html:54 +#: cps/templates/book_table.html:55 msgid "Publishing Date" msgstr "" -#: cps/templates/book_table.html:55 +#: cps/templates/book_table.html:56 msgid "Enter Publishers" msgstr "" -#: cps/templates/book_table.html:70 cps/templates/modal_dialogs.html:46 +#: cps/templates/book_table.html:71 cps/templates/modal_dialogs.html:46 msgid "Are you really sure?" msgstr "Emin misiniz?" -#: cps/templates/book_table.html:74 +#: cps/templates/book_table.html:75 msgid "Books with Title will be merged from:" msgstr "" -#: cps/templates/book_table.html:78 +#: cps/templates/book_table.html:79 msgid "Into Book with Title:" msgstr "" -#: cps/templates/book_table.html:83 +#: cps/templates/book_table.html:84 msgid "Merge" msgstr "" @@ -1864,7 +2006,7 @@ msgid "LDAP Encryption" msgstr "" #: cps/templates/config_edit.html:268 cps/templates/config_view_edit.html:61 -#: cps/templates/email_edit.html:21 +#: cps/templates/email_edit.html:40 msgid "None" msgstr "Hiçbiri" @@ -2077,6 +2219,7 @@ msgid "Default Visibilities for New Users" msgstr "" #: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82 +#: cps/templates/user_table.html:138 msgid "Show Random Books in Detail View" msgstr "" @@ -2150,43 +2293,69 @@ msgstr "" msgid "Edit Metadata" msgstr "" -#: cps/templates/email_edit.html:22 +#: cps/templates/email_edit.html:12 +msgid "Choose Server Type" +msgstr "" + +#: cps/templates/email_edit.html:14 +msgid "Use Standard E-Mail Account" +msgstr "" + +#: cps/templates/email_edit.html:15 +msgid "Gmail Account with OAuth2 Verfification" +msgstr "" + +#: cps/templates/email_edit.html:21 +msgid "Setup Gmail Account as E-Mail Server" +msgstr "" + +#: cps/templates/email_edit.html:23 +msgid "Revoke Gmail Access" +msgstr "" + +#: cps/templates/email_edit.html:41 msgid "STARTTLS" msgstr "STARTTLS" -#: cps/templates/email_edit.html:23 +#: cps/templates/email_edit.html:42 msgid "SSL/TLS" msgstr "SSL/TLS" -#: cps/templates/email_edit.html:31 +#: cps/templates/email_edit.html:50 msgid "SMTP Password" msgstr "" -#: cps/templates/email_edit.html:38 +#: cps/templates/email_edit.html:57 msgid "Attachment Size Limit" msgstr "" -#: cps/templates/email_edit.html:46 +#: cps/templates/email_edit.html:65 msgid "Save and Send Test E-mail" msgstr "" -#: cps/templates/email_edit.html:51 +#: cps/templates/email_edit.html:69 cps/templates/layout.html:29 +#: cps/templates/shelf_order.html:41 cps/templates/user_table.html:158 +msgid "Back" +msgstr "Geri" + +#: cps/templates/email_edit.html:73 msgid "Allowed Domains (Whitelist)" msgstr "" -#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80 +#: cps/templates/email_edit.html:76 cps/templates/email_edit.html:102 msgid "Add Domain" msgstr "Servis ekle" -#: cps/templates/email_edit.html:57 cps/templates/email_edit.html:83 +#: cps/templates/email_edit.html:79 cps/templates/email_edit.html:105 +#: cps/templates/user_table.html:26 msgid "Add" msgstr "Ekle" -#: cps/templates/email_edit.html:62 cps/templates/email_edit.html:72 +#: cps/templates/email_edit.html:84 cps/templates/email_edit.html:94 msgid "Enter domainname" msgstr "Servis adı girin" -#: cps/templates/email_edit.html:68 +#: cps/templates/email_edit.html:90 msgid "Denied Domains (Blacklist)" msgstr "" @@ -2198,10 +2367,6 @@ msgstr "Sonraki" msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):" msgstr "" -#: cps/templates/grid.html:14 cps/templates/list.html:14 -msgid "All" -msgstr "Tümü" - #: cps/templates/http_error.html:38 msgid "Create Issue" msgstr "" @@ -2232,64 +2397,72 @@ msgstr "" msgid "Start" msgstr "Başlangıç" +#: cps/templates/index.xml:18 +msgid "Alphabetical Books" +msgstr "" + #: cps/templates/index.xml:22 +msgid "Books sorted alphabetically" +msgstr "" + +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Downloads." msgstr "İndirilme sayısına göre bu katalogdaki popüler yayınlar." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:36 msgid "Popular publications from this catalog based on Rating." msgstr "Değerlendirmeye göre bu katalogdaki popüler yayınlar." -#: cps/templates/index.xml:32 +#: cps/templates/index.xml:39 msgid "Recently added Books" msgstr "Yeni eklenen eKitaplar" -#: cps/templates/index.xml:36 +#: cps/templates/index.xml:43 msgid "The latest Books" msgstr "En en eKitaplar" -#: cps/templates/index.xml:39 +#: cps/templates/index.xml:46 msgid "Random Books" msgstr "Rastgele eKitaplar" -#: cps/templates/index.xml:43 +#: cps/templates/index.xml:50 msgid "Show Random Books" msgstr "Rastgele Kitap Göster" -#: cps/templates/index.xml:66 +#: cps/templates/index.xml:73 msgid "Books ordered by Author" msgstr "Yazara göre sıralanmış eKitaplar" -#: cps/templates/index.xml:73 +#: cps/templates/index.xml:80 msgid "Books ordered by publisher" msgstr "Yayınevine göre sıralanmış eKitaplar" -#: cps/templates/index.xml:80 +#: cps/templates/index.xml:87 msgid "Books ordered by category" msgstr "Kategoriye göre sıralanmış eKitaplar" -#: cps/templates/index.xml:87 +#: cps/templates/index.xml:94 msgid "Books ordered by series" msgstr "Seriye göre sıralanmış eKitaplar" -#: cps/templates/index.xml:94 +#: cps/templates/index.xml:101 msgid "Books ordered by Languages" msgstr "Dile göre sıralanmış eKitaplar" -#: cps/templates/index.xml:101 +#: cps/templates/index.xml:108 msgid "Books ordered by Rating" msgstr "" -#: cps/templates/index.xml:109 +#: cps/templates/index.xml:116 msgid "Books ordered by file formats" msgstr "Biçime göre sıralanmış eKitaplar" -#: cps/templates/index.xml:112 cps/templates/layout.html:135 +#: cps/templates/index.xml:119 cps/templates/layout.html:135 #: cps/templates/search_form.html:80 msgid "Shelves" msgstr "" -#: cps/templates/index.xml:116 +#: cps/templates/index.xml:123 msgid "Books organized in shelves" msgstr "" @@ -2297,10 +2470,6 @@ msgstr "" msgid "Home" msgstr "Anasayfa" -#: cps/templates/layout.html:29 cps/templates/shelf_order.html:41 -msgid "Back" -msgstr "Geri" - #: cps/templates/layout.html:35 msgid "Toggle Navigation" msgstr "" @@ -2462,6 +2631,11 @@ msgstr "" msgid "Select" msgstr "" +#: cps/templates/modal_dialogs.html:134 +#, fuzzy +msgid "Ok" +msgstr "Kitap" + #: cps/templates/osd.xml:5 msgid "Calibre-Web eBook Catalog" msgstr "" @@ -2767,10 +2941,6 @@ msgstr "Kullanıcı şifresini sıfırla" msgid "Language of Books" msgstr "" -#: cps/templates/user_edit.html:44 -msgid "Show All" -msgstr "" - #: cps/templates/user_edit.html:53 msgid "OAuth Settings" msgstr "OAuth Ayarları" @@ -2795,7 +2965,7 @@ msgstr "" msgid "Add allowed/Denied Custom Column Values" msgstr "" -#: cps/templates/user_edit.html:135 +#: cps/templates/user_edit.html:135 cps/templates/user_table.html:153 msgid "Delete User" msgstr "" @@ -2803,3 +2973,91 @@ msgstr "" msgid "Generate Kobo Auth URL" msgstr "" +#: cps/templates/user_table.html:68 cps/templates/user_table.html:91 +msgid "Select..." +msgstr "" + +#: cps/templates/user_table.html:118 +msgid "Edit User" +msgstr "" + +#: cps/templates/user_table.html:121 +#, fuzzy +msgid "Enter Username" +msgstr "Kullanıcı adı seç" + +#: cps/templates/user_table.html:122 +#, fuzzy +msgid "Enter E-mail Address" +msgstr "E-Posta adresiniz" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Enter Kindle E-mail Address" +msgstr "E-Posta adresiniz" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Kindle E-mail" +msgstr "Deneme e-Postası" + +#: cps/templates/user_table.html:124 +#, fuzzy +msgid "Locale" +msgstr "Ölçeklendir" + +#: cps/templates/user_table.html:125 +msgid "Visible Book Languages" +msgstr "" + +#: cps/templates/user_table.html:126 +msgid "Edit Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:126 +msgid "Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +msgid "Edit Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +msgid "Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:128 +msgid "Edit Allowed Column Values" +msgstr "" + +#: cps/templates/user_table.html:128 +msgid "Allowed Column Values" +msgstr "" + +#: cps/templates/user_table.html:129 +msgid "Edit Denied Column Values" +msgstr "" + +#: cps/templates/user_table.html:129 +msgid "Denied Columns Values" +msgstr "" + +#: cps/templates/user_table.html:131 +#, fuzzy +msgid "Change Password" +msgstr "Şifre değiştirmeye izin ver" + +#: cps/templates/user_table.html:134 +msgid "View" +msgstr "" + +#: cps/templates/user_table.html:137 +#, fuzzy +msgid "Edit Public Shelfs" +msgstr "Kitaplığı düzenle" + +#: cps/templates/user_table.html:140 +#, fuzzy +msgid "Show read/unread selection" +msgstr "Seri seçimini göster" + diff --git a/cps/translations/uk/LC_MESSAGES/messages.mo b/cps/translations/uk/LC_MESSAGES/messages.mo index 8843fd36..cc239d65 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 d6e1ef32..f1473f61 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: 2021-03-27 12:16+0100\n" +"POT-Creation-Date: 2021-05-01 16:33+0200\n" "PO-Revision-Date: 2017-04-30 00:47+0300\n" "Last-Translator: ABIS Team \n" "Language: uk\n" @@ -15,7 +15,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" +"Generated-By: Babel 2.8.0\n" #: cps/about.py:43 msgid "installed" @@ -29,310 +29,403 @@ msgstr "не встановлено" msgid "Statistics" msgstr "Статистика" -#: cps/admin.py:149 +#: cps/admin.py:151 msgid "Server restarted, please reload page" msgstr "Сервер перезавантажено, будь-ласка, перезавантажте сторінку" -#: cps/admin.py:151 +#: cps/admin.py:153 msgid "Performing shutdown of server, please close window" msgstr "Виконується зупинка серверу, будь-ласка, закрийте вікно" -#: cps/admin.py:159 +#: cps/admin.py:161 msgid "Reconnect successful" msgstr "" -#: cps/admin.py:162 +#: cps/admin.py:164 msgid "Unknown command" msgstr "" -#: cps/admin.py:172 cps/editbooks.py:662 cps/editbooks.py:674 -#: cps/editbooks.py:777 cps/editbooks.py:779 cps/editbooks.py:806 -#: cps/editbooks.py:822 cps/updater.py:521 cps/uploader.py:94 +#: cps/admin.py:174 cps/editbooks.py:668 cps/editbooks.py:682 +#: cps/editbooks.py:821 cps/editbooks.py:823 cps/editbooks.py:850 +#: cps/editbooks.py:866 cps/updater.py:555 cps/uploader.py:94 #: cps/uploader.py:104 msgid "Unknown" msgstr "Невідомий" -#: cps/admin.py:193 +#: cps/admin.py:195 msgid "Admin page" msgstr "Сторінка адміністратора" -#: cps/admin.py:215 +#: cps/admin.py:217 msgid "UI Configuration" msgstr "Конфігурація інтерфейсу" -#: cps/admin.py:247 cps/admin.py:936 +#: cps/admin.py:249 cps/templates/admin.html:46 +#, fuzzy +msgid "Edit Users" +msgstr "Керування сервером" + +#: cps/admin.py:290 +msgid "all" +msgstr "" + +#: cps/admin.py:315 cps/admin.py:1486 +msgid "User not found" +msgstr "" + +#: cps/admin.py:329 +msgid "{} users deleted successfully" +msgstr "" + +#: cps/admin.py:351 cps/templates/user_edit.html:44 +#: cps/templates/user_table.html:69 +msgid "Show All" +msgstr "Показати всі" + +#: cps/admin.py:372 cps/admin.py:378 +msgid "Malformed request" +msgstr "" + +#: cps/admin.py:390 cps/admin.py:1368 +msgid "Guest Name can't be changed" +msgstr "" + +#: cps/admin.py:400 +msgid "Guest can't have this role" +msgstr "" + +#: cps/admin.py:412 cps/admin.py:1333 +msgid "No admin user remaining, can't remove admin role" +msgstr "" + +#: cps/admin.py:416 cps/admin.py:430 +msgid "Value has to be true or false" +msgstr "" + +#: cps/admin.py:418 +msgid "Invalid role" +msgstr "" + +#: cps/admin.py:422 +msgid "Guest can't have this view" +msgstr "" + +#: cps/admin.py:432 +msgid "Invalid view" +msgstr "" + +#: cps/admin.py:435 +msgid "Guest's Locale is determined automatically and can't be set" +msgstr "" + +#: cps/admin.py:439 +msgid "No Valid Locale Given" +msgstr "" + +#: cps/admin.py:450 +msgid "No Valid Book Language Given" +msgstr "" + +#: cps/admin.py:452 +msgid "Parameter not found" +msgstr "" + +#: cps/admin.py:506 cps/admin.py:1219 msgid "Calibre-Web configuration updated" msgstr "" -#: cps/admin.py:258 +#: cps/admin.py:518 msgid "Do you really want to delete the Kobo Token?" msgstr "" -#: cps/admin.py:260 +#: cps/admin.py:520 msgid "Do you really want to delete this domain?" msgstr "" -#: cps/admin.py:262 +#: cps/admin.py:522 msgid "Do you really want to delete this user?" msgstr "" -#: cps/admin.py:264 cps/templates/shelf.html:90 +#: cps/admin.py:524 cps/templates/shelf.html:90 msgid "Are you sure you want to delete this shelf?" msgstr "Ви справді хочете видалити книжкову полицю?" -#: cps/admin.py:510 cps/admin.py:516 cps/admin.py:526 cps/admin.py:536 -#: cps/templates/modal_dialogs.html:29 +#: cps/admin.py:526 +#, fuzzy +msgid "Are you sure you want to change locales of selected user(s)?" +msgstr "Ви справді хочете видалити книжкову полицю?" + +#: cps/admin.py:528 +msgid "Are you sure you want to change visible book languages for selected user(s)?" +msgstr "" + +#: cps/admin.py:530 +msgid "Are you sure you want to change the selected role for the selected user(s)?" +msgstr "" + +#: cps/admin.py:532 +#, fuzzy +msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" +msgstr "Ви справді хочете видалити книжкову полицю?" + +#: cps/admin.py:534 +msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:683 +msgid "Tag not found" +msgstr "" + +#: cps/admin.py:695 +msgid "Invalid Action" +msgstr "" + +#: cps/admin.py:800 cps/admin.py:806 cps/admin.py:816 cps/admin.py:826 +#: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:43 msgid "Deny" msgstr "" -#: cps/admin.py:512 cps/admin.py:518 cps/admin.py:528 cps/admin.py:538 -#: cps/templates/modal_dialogs.html:28 +#: cps/admin.py:802 cps/admin.py:808 cps/admin.py:818 cps/admin.py:828 +#: cps/templates/modal_dialogs.html:28 cps/templates/user_table.html:48 msgid "Allow" msgstr "" -#: cps/admin.py:681 +#: cps/admin.py:971 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "" -#: cps/admin.py:723 +#: cps/admin.py:1016 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:729 +#: cps/admin.py:1022 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:738 +#: cps/admin.py:1052 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "" -#: cps/admin.py:752 cps/admin.py:760 +#: cps/admin.py:1067 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:755 cps/admin.py:763 +#: cps/admin.py:1070 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:768 +#: cps/admin.py:1075 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:771 +#: cps/admin.py:1078 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:779 +#: cps/admin.py:1086 #, python-format msgid "LDAP Member User Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:782 +#: cps/admin.py:1089 msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:790 +#: cps/admin.py:1097 msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:841 +#: cps/admin.py:1123 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:847 +#: cps/admin.py:1129 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:917 cps/admin.py:1024 cps/admin.py:1047 cps/admin.py:1168 -#: cps/shelf.py:102 cps/shelf.py:159 cps/shelf.py:200 cps/shelf.py:261 -#: cps/shelf.py:314 cps/shelf.py:348 cps/shelf.py:418 +#: cps/admin.py:1200 cps/admin.py:1303 cps/admin.py:1395 cps/admin.py:1461 +#: cps/shelf.py:103 cps/shelf.py:163 cps/shelf.py:206 cps/shelf.py:269 +#: cps/shelf.py:325 cps/shelf.py:360 cps/shelf.py:431 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:929 +#: cps/admin.py:1212 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:933 +#: cps/admin.py:1216 msgid "DB is not Writeable" msgstr "" -#: cps/admin.py:972 +#: cps/admin.py:1256 msgid "Basic Configuration" msgstr "Настройки сервера" -#: cps/admin.py:987 cps/web.py:1358 +#: cps/admin.py:1272 cps/web.py:1417 msgid "Please fill out all fields!" msgstr "Будь-ласка, заповніть всі поля!" -#: cps/admin.py:990 cps/admin.py:1002 cps/admin.py:1008 cps/admin.py:1138 -msgid "Add new user" -msgstr "Додати користувача" - -#: cps/admin.py:999 cps/web.py:1496 +#: cps/admin.py:1280 msgid "E-mail is not from valid domain" msgstr "" -#: cps/admin.py:1006 cps/admin.py:1021 -msgid "Found an existing account for this e-mail address or nickname." -msgstr "" +#: cps/admin.py:1284 cps/admin.py:1414 +msgid "Add new user" +msgstr "Додати користувача" -#: cps/admin.py:1017 +#: cps/admin.py:1293 #, python-format msgid "User '%(user)s' created" msgstr "Користувач '%(user)s' додан" -#: cps/admin.py:1031 +#: cps/admin.py:1299 +msgid "Found an existing account for this e-mail address or name." +msgstr "" + +#: cps/admin.py:1312 #, python-format msgid "User '%(nick)s' deleted" msgstr "Користувача '%(nick)s' видалено" -#: cps/admin.py:1034 +#: cps/admin.py:1314 cps/admin.py:1315 +msgid "Can't delete Guest User" +msgstr "" + +#: cps/admin.py:1318 msgid "No admin user remaining, can't delete user" msgstr "" -#: cps/admin.py:1041 -#, python-format -msgid "User '%(nick)s' updated" -msgstr "Користувача '%(nick)s' оновлено" - -#: cps/admin.py:1044 -msgid "An unknown error occured." -msgstr "Сталась невідома помилка" - -#: cps/admin.py:1056 -msgid "No admin user remaining, can't remove admin role" -msgstr "" - -#: cps/admin.py:1092 cps/web.py:1554 -msgid "Found an existing account for this e-mail address." -msgstr "" - -#: cps/admin.py:1101 cps/admin.py:1115 cps/admin.py:1209 cps/web.py:1516 +#: cps/admin.py:1383 cps/admin.py:1504 #, python-format msgid "Edit User %(nick)s" msgstr "Змінити користувача %(nick)s" -#: cps/admin.py:1107 cps/web.py:1509 -msgid "This username is already taken" -msgstr "" +#: cps/admin.py:1387 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "Користувача '%(nick)s' оновлено" -#: cps/admin.py:1147 cps/templates/admin.html:78 +#: cps/admin.py:1391 +#, fuzzy +msgid "An unknown error occurred." +msgstr "Сталась невідома помилка" + +#: cps/admin.py:1423 cps/templates/admin.html:94 msgid "Edit E-mail Server Settings" msgstr "Змінити налаштування SMTP" -#: cps/admin.py:1175 +#: cps/admin.py:1442 +msgid "G-Mail Account Verification Successful" +msgstr "" + +#: cps/admin.py:1468 #, python-format msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" msgstr "" -#: cps/admin.py:1178 +#: cps/admin.py:1471 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "" -#: cps/admin.py:1180 +#: cps/admin.py:1473 msgid "Please configure your e-mail address first..." msgstr "" -#: cps/admin.py:1182 +#: cps/admin.py:1475 msgid "E-mail server settings updated" msgstr "" -#: cps/admin.py:1193 -msgid "User not found" -msgstr "" - -#: cps/admin.py:1220 +#: cps/admin.py:1516 #, python-format msgid "Password for user %(user)s reset" msgstr "" -#: cps/admin.py:1223 cps/web.py:1388 cps/web.py:1452 +#: cps/admin.py:1519 cps/web.py:1442 cps/web.py:1503 msgid "An unknown error occurred. Please try again later." msgstr "" -#: cps/admin.py:1226 cps/web.py:1320 +#: cps/admin.py:1522 cps/web.py:1382 msgid "Please configure the SMTP mail settings first..." msgstr "Будь-ласка, спочатку сконфігуруйте параметри SMTP" -#: cps/admin.py:1237 +#: cps/admin.py:1533 msgid "Logfile viewer" msgstr "" -#: cps/admin.py:1303 +#: cps/admin.py:1599 msgid "Requesting update package" msgstr "Перевірка оновлень" -#: cps/admin.py:1304 +#: cps/admin.py:1600 msgid "Downloading update package" msgstr "Завантаження оновлень" -#: cps/admin.py:1305 +#: cps/admin.py:1601 msgid "Unzipping update package" msgstr "Розпакування оновлення" -#: cps/admin.py:1306 +#: cps/admin.py:1602 msgid "Replacing files" msgstr "" -#: cps/admin.py:1307 +#: cps/admin.py:1603 msgid "Database connections are closed" msgstr "З'єднання з базою даних закрите" -#: cps/admin.py:1308 +#: cps/admin.py:1604 msgid "Stopping server" msgstr "" -#: cps/admin.py:1309 +#: cps/admin.py:1605 msgid "Update finished, please press okay and reload page" msgstr "Оновлення встановлені, натисніть ok і перезавантажте сторінку" -#: cps/admin.py:1310 cps/admin.py:1311 cps/admin.py:1312 cps/admin.py:1313 -#: cps/admin.py:1314 +#: cps/admin.py:1606 cps/admin.py:1607 cps/admin.py:1608 cps/admin.py:1609 +#: cps/admin.py:1610 msgid "Update failed:" msgstr "" -#: cps/admin.py:1310 cps/updater.py:337 cps/updater.py:532 cps/updater.py:534 +#: cps/admin.py:1606 cps/updater.py:356 cps/updater.py:566 cps/updater.py:568 msgid "HTTP Error" msgstr "" -#: cps/admin.py:1311 cps/updater.py:339 cps/updater.py:536 +#: cps/admin.py:1607 cps/updater.py:358 cps/updater.py:570 msgid "Connection error" msgstr "" -#: cps/admin.py:1312 cps/updater.py:341 cps/updater.py:538 +#: cps/admin.py:1608 cps/updater.py:360 cps/updater.py:572 msgid "Timeout while establishing connection" msgstr "" -#: cps/admin.py:1313 cps/updater.py:343 cps/updater.py:540 +#: cps/admin.py:1609 cps/updater.py:362 cps/updater.py:574 msgid "General error" msgstr "" -#: cps/admin.py:1314 +#: cps/admin.py:1610 msgid "Update File Could Not be Saved in Temp Dir" msgstr "" -#: cps/admin.py:1376 +#: cps/admin.py:1671 msgid "Failed to Create at Least One LDAP User" msgstr "" -#: cps/admin.py:1389 +#: cps/admin.py:1684 #, python-format msgid "Error: %(ldaperror)s" msgstr "" -#: cps/admin.py:1393 +#: cps/admin.py:1688 msgid "Error: No user returned in response of LDAP server" msgstr "" -#: cps/admin.py:1426 +#: cps/admin.py:1721 msgid "At Least One LDAP User Not Found in Database" msgstr "" -#: cps/admin.py:1428 +#: cps/admin.py:1723 msgid "{} User Successfully Imported" msgstr "" @@ -344,98 +437,98 @@ msgstr "" msgid "Execution permissions missing" msgstr "" -#: cps/editbooks.py:267 cps/editbooks.py:269 +#: cps/editbooks.py:294 cps/editbooks.py:296 msgid "Book Format Successfully Deleted" msgstr "" -#: cps/editbooks.py:276 cps/editbooks.py:278 +#: cps/editbooks.py:303 cps/editbooks.py:305 msgid "Book Successfully Deleted" msgstr "" -#: cps/editbooks.py:325 cps/editbooks.py:646 cps/web.py:1598 cps/web.py:1634 -#: cps/web.py:1705 +#: cps/editbooks.py:361 cps/editbooks.py:724 cps/web.py:1627 cps/web.py:1663 +#: cps/web.py:1734 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Сталась помилка при відкриванні eBook. Файл не існує або відсутній доступ до нього" -#: cps/editbooks.py:359 +#: cps/editbooks.py:395 msgid "edit metadata" msgstr "змінити метадані" -#: cps/editbooks.py:434 +#: cps/editbooks.py:473 #, python-format msgid "%(langname)s is not a valid language" msgstr "" -#: cps/editbooks.py:556 cps/editbooks.py:905 +#: cps/editbooks.py:595 cps/editbooks.py:936 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "" -#: cps/editbooks.py:560 cps/editbooks.py:909 +#: cps/editbooks.py:599 cps/editbooks.py:940 msgid "File to be uploaded must have an extension" msgstr "Завантажувальний файл повинен мати розширення" -#: cps/editbooks.py:572 +#: cps/editbooks.py:611 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "" -#: cps/editbooks.py:577 +#: cps/editbooks.py:616 #, python-format msgid "Failed to store file %(file)s." msgstr "" -#: cps/editbooks.py:595 cps/editbooks.py:972 cps/web.py:1559 +#: cps/editbooks.py:634 cps/editbooks.py:1027 cps/web.py:1588 #, python-format msgid "Database error: %(error)s." msgstr "" -#: cps/editbooks.py:599 +#: cps/editbooks.py:638 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "" -#: cps/editbooks.py:726 +#: cps/editbooks.py:775 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:763 +#: cps/editbooks.py:807 msgid "Metadata successfully updated" msgstr "" -#: cps/editbooks.py:772 +#: cps/editbooks.py:816 msgid "Error editing book, please check logfile for details" msgstr "Сталась помилка при редагуванні книги. Будь-ласка, перевірте лог-файл для деталей" -#: cps/editbooks.py:810 +#: cps/editbooks.py:854 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "" -#: cps/editbooks.py:917 +#: cps/editbooks.py:948 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "" -#: cps/editbooks.py:947 +#: cps/editbooks.py:967 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "" -#: cps/editbooks.py:958 +#: cps/editbooks.py:1013 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:984 +#: cps/editbooks.py:1039 msgid "Source or destination format for conversion missing" msgstr "" -#: cps/editbooks.py:992 +#: cps/editbooks.py:1047 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "" -#: cps/editbooks.py:996 +#: cps/editbooks.py:1051 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "" @@ -543,55 +636,67 @@ msgstr "" msgid "Book path %(path)s not found on Google Drive" msgstr "" -#: cps/helper.py:576 +#: cps/helper.py:511 +msgid "Found an existing account for this e-mail address" +msgstr "" + +#: cps/helper.py:519 +msgid "This username is already taken" +msgstr "" + +#: cps/helper.py:529 +msgid "Invalid e-mail address format" +msgstr "" + +#: cps/helper.py:602 msgid "Error Downloading Cover" msgstr "" -#: cps/helper.py:579 +#: cps/helper.py:605 msgid "Cover Format Error" msgstr "" -#: cps/helper.py:589 +#: cps/helper.py:615 msgid "Failed to create path for cover" msgstr "" -#: cps/helper.py:605 +#: cps/helper.py:631 msgid "Cover-file is not a valid image file, or could not be stored" msgstr "" -#: cps/helper.py:616 +#: cps/helper.py:642 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" msgstr "" -#: cps/helper.py:629 +#: cps/helper.py:655 msgid "Only jpg/jpeg files are supported as coverfile" msgstr "" -#: cps/helper.py:680 +#: cps/helper.py:707 msgid "Unrar binary file not found" msgstr "" -#: cps/helper.py:694 +#: cps/helper.py:721 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:743 +#: cps/helper.py:769 msgid "Waiting" msgstr "" -#: cps/helper.py:745 +#: cps/helper.py:771 msgid "Failed" msgstr "" -#: cps/helper.py:747 +#: cps/helper.py:773 msgid "Started" msgstr "" -#: cps/helper.py:749 +#: cps/helper.py:775 msgid "Finished" msgstr "" -#: cps/helper.py:751 +#: cps/helper.py:777 msgid "Unknown Status" msgstr "" @@ -603,65 +708,82 @@ msgstr "" msgid "Kobo Setup" msgstr "" -#: cps/oauth_bb.py:76 +#: cps/oauth_bb.py:78 #, python-format msgid "Register with %(provider)s" msgstr "" -#: cps/oauth_bb.py:137 cps/remotelogin.py:133 cps/web.py:1424 +#: cps/oauth_bb.py:139 cps/remotelogin.py:133 cps/web.py:1475 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "Ви увійшли як користувач: '%(nickname)s'" -#: cps/oauth_bb.py:147 +#: cps/oauth_bb.py:149 #, python-format msgid "Link to %(oauth)s Succeeded" msgstr "" -#: cps/oauth_bb.py:153 +#: cps/oauth_bb.py:156 msgid "Login failed, No User Linked With OAuth Account" msgstr "" -#: cps/oauth_bb.py:195 +#: cps/oauth_bb.py:198 #, python-format msgid "Unlink to %(oauth)s Succeeded" msgstr "" -#: cps/oauth_bb.py:199 +#: cps/oauth_bb.py:203 #, python-format msgid "Unlink to %(oauth)s Failed" msgstr "" -#: cps/oauth_bb.py:202 +#: cps/oauth_bb.py:206 #, python-format msgid "Not Linked to %(oauth)s" msgstr "" -#: cps/oauth_bb.py:259 +#: cps/oauth_bb.py:262 msgid "Failed to log in with GitHub." msgstr "" -#: cps/oauth_bb.py:264 +#: cps/oauth_bb.py:268 msgid "Failed to fetch user info from GitHub." msgstr "" -#: cps/oauth_bb.py:275 +#: cps/oauth_bb.py:280 msgid "Failed to log in with Google." msgstr "" -#: cps/oauth_bb.py:280 +#: cps/oauth_bb.py:286 msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:312 +#: cps/oauth_bb.py:333 msgid "GitHub Oauth error, please retry later." msgstr "" -#: cps/oauth_bb.py:331 +#: cps/oauth_bb.py:336 +msgid "GitHub Oauth error: {}" +msgstr "" + +#: cps/oauth_bb.py:357 msgid "Google Oauth error, please retry later." msgstr "" -#: cps/remotelogin.py:65 cps/web.py:1471 +#: cps/oauth_bb.py:360 +msgid "Google Oauth error: {}" +msgstr "" + +#: cps/opds.py:110 cps/opds.py:199 cps/opds.py:276 cps/opds.py:328 +#: cps/templates/grid.html:14 cps/templates/list.html:14 +msgid "All" +msgstr "" + +#: cps/opds.py:385 +msgid "{} Stars" +msgstr "" + +#: cps/remotelogin.py:65 cps/web.py:1522 msgid "login" msgstr "увійти" @@ -677,7 +799,7 @@ msgstr "Час дії токено вичерпано" msgid "Success! Please return to your device" msgstr "Вдалося! Будь-ласка, поверніться до вашого пристрою" -#: cps/render_template.py:39 cps/web.py:415 +#: cps/render_template.py:39 cps/web.py:414 msgid "Books" msgstr "" @@ -685,7 +807,7 @@ msgstr "" msgid "Show recent books" msgstr "Показувати останні книги" -#: cps/render_template.py:42 cps/templates/index.xml:18 +#: cps/render_template.py:42 cps/templates/index.xml:25 msgid "Hot Books" msgstr "Популярні книги" @@ -693,127 +815,130 @@ msgstr "Популярні книги" msgid "Show Hot Books" msgstr "Показувати популярні книги" -#: cps/render_template.py:45 +#: cps/render_template.py:46 cps/render_template.py:51 msgid "Downloaded Books" msgstr "" -#: cps/render_template.py:47 +#: cps/render_template.py:48 cps/render_template.py:53 +#: cps/templates/user_table.html:151 msgid "Show Downloaded Books" msgstr "" -#: cps/render_template.py:50 cps/templates/index.xml:25 cps/web.py:425 +#: cps/render_template.py:56 cps/templates/index.xml:32 cps/web.py:424 msgid "Top Rated Books" msgstr "Книги з найкращим рейтингом" -#: cps/render_template.py:52 +#: cps/render_template.py:58 cps/templates/user_table.html:145 msgid "Show Top Rated Books" msgstr "Показувати книги з найвищим рейтингом" -#: cps/render_template.py:53 cps/templates/index.xml:47 -#: cps/templates/index.xml:51 cps/web.py:642 +#: cps/render_template.py:59 cps/templates/index.xml:54 +#: cps/templates/index.xml:58 cps/web.py:650 msgid "Read Books" msgstr "Прочитані книги" -#: cps/render_template.py:55 +#: cps/render_template.py:61 msgid "Show read and unread" msgstr "Показувати прочитані та непрочитані книги" -#: cps/render_template.py:57 cps/templates/index.xml:54 -#: cps/templates/index.xml:58 cps/web.py:645 +#: cps/render_template.py:63 cps/templates/index.xml:61 +#: cps/templates/index.xml:65 cps/web.py:653 msgid "Unread Books" msgstr "Непрочитані книги" -#: cps/render_template.py:59 +#: cps/render_template.py:65 msgid "Show unread" msgstr "" -#: cps/render_template.py:60 +#: cps/render_template.py:66 msgid "Discover" msgstr "Огляд" -#: cps/render_template.py:62 +#: cps/render_template.py:68 cps/templates/user_table.html:143 +#: cps/templates/user_table.html:146 msgid "Show random books" msgstr "Показувати випадкові книги" -#: cps/render_template.py:63 cps/templates/book_table.html:50 -#: cps/templates/index.xml:76 cps/web.py:950 +#: cps/render_template.py:69 cps/templates/book_table.html:51 +#: cps/templates/index.xml:83 cps/web.py:1024 msgid "Categories" msgstr "Категорії" -#: cps/render_template.py:65 +#: cps/render_template.py:71 cps/templates/user_table.html:142 msgid "Show category selection" msgstr "Показувати вибір категорії" -#: cps/render_template.py:66 cps/templates/book_edit.html:84 -#: cps/templates/book_table.html:51 cps/templates/index.xml:83 -#: cps/templates/search_form.html:62 cps/web.py:854 cps/web.py:864 +#: cps/render_template.py:72 cps/templates/book_edit.html:84 +#: cps/templates/book_table.html:52 cps/templates/index.xml:90 +#: cps/templates/search_form.html:62 cps/web.py:921 cps/web.py:931 msgid "Series" msgstr "Серії" -#: cps/render_template.py:68 +#: cps/render_template.py:74 cps/templates/user_table.html:141 msgid "Show series selection" msgstr "Показувати вибір серії" -#: cps/render_template.py:69 cps/templates/book_table.html:49 -#: cps/templates/index.xml:62 +#: cps/render_template.py:75 cps/templates/book_table.html:50 +#: cps/templates/index.xml:69 msgid "Authors" msgstr "Автори" -#: cps/render_template.py:71 +#: cps/render_template.py:77 cps/templates/user_table.html:144 msgid "Show author selection" msgstr "Показувати вибір автора" -#: cps/render_template.py:73 cps/templates/book_table.html:55 -#: cps/templates/index.xml:69 cps/web.py:833 +#: cps/render_template.py:79 cps/templates/book_table.html:56 +#: cps/templates/index.xml:76 cps/web.py:898 msgid "Publishers" msgstr "" -#: cps/render_template.py:75 +#: cps/render_template.py:81 cps/templates/user_table.html:147 msgid "Show publisher selection" msgstr "" -#: cps/render_template.py:76 cps/templates/book_table.html:53 -#: cps/templates/index.xml:90 cps/templates/search_form.html:100 cps/web.py:929 +#: cps/render_template.py:82 cps/templates/book_table.html:54 +#: cps/templates/index.xml:97 cps/templates/search_form.html:100 +#: cps/web.py:1001 msgid "Languages" msgstr "Мови" -#: cps/render_template.py:79 +#: cps/render_template.py:85 cps/templates/user_table.html:139 msgid "Show language selection" msgstr "Показувати вибір мови" -#: cps/render_template.py:80 cps/templates/index.xml:97 +#: cps/render_template.py:86 cps/templates/index.xml:104 msgid "Ratings" msgstr "" -#: cps/render_template.py:82 +#: cps/render_template.py:88 cps/templates/user_table.html:148 msgid "Show ratings selection" msgstr "" -#: cps/render_template.py:83 cps/templates/index.xml:105 +#: cps/render_template.py:89 cps/templates/index.xml:112 msgid "File formats" msgstr "" -#: cps/render_template.py:85 +#: cps/render_template.py:91 cps/templates/user_table.html:149 msgid "Show file formats selection" msgstr "" -#: cps/render_template.py:87 cps/web.py:669 +#: cps/render_template.py:93 cps/web.py:677 msgid "Archived Books" msgstr "" -#: cps/render_template.py:89 +#: cps/render_template.py:95 cps/templates/user_table.html:150 msgid "Show archived books" msgstr "" -#: cps/render_template.py:91 cps/web.py:743 +#: cps/render_template.py:97 cps/web.py:751 msgid "Books List" msgstr "" -#: cps/render_template.py:93 +#: cps/render_template.py:99 cps/templates/user_table.html:152 msgid "Show Books List" msgstr "" -#: cps/shelf.py:69 cps/shelf.py:122 +#: cps/shelf.py:69 cps/shelf.py:124 msgid "Invalid shelf specified" msgstr "" @@ -827,303 +952,307 @@ msgstr "" msgid "Book is already part of the shelf: %(shelfname)s" msgstr "" -#: cps/shelf.py:108 +#: cps/shelf.py:110 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Книга додана на книжкову полицю: %(sname)s" -#: cps/shelf.py:126 +#: cps/shelf.py:129 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "" -#: cps/shelf.py:144 +#: cps/shelf.py:147 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "" -#: cps/shelf.py:156 +#: cps/shelf.py:159 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "" -#: cps/shelf.py:161 +#: cps/shelf.py:166 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "" -#: cps/shelf.py:206 +#: cps/shelf.py:212 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Книга видалена з книжкової полиці: %(sname)s" -#: cps/shelf.py:214 +#: cps/shelf.py:221 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Вибачте, але у вас немає дозволу для видалення книги з цієї полиці" -#: cps/shelf.py:224 cps/templates/layout.html:140 +#: cps/shelf.py:231 cps/templates/layout.html:140 msgid "Create a Shelf" msgstr "створити книжкову полицю" -#: cps/shelf.py:231 +#: cps/shelf.py:238 msgid "Edit a shelf" msgstr "Змінити книжкову полицю" -#: cps/shelf.py:249 +#: cps/shelf.py:256 #, python-format msgid "Shelf %(title)s created" msgstr "Створена книжкова полиця %(title)s" -#: cps/shelf.py:252 +#: cps/shelf.py:259 #, python-format msgid "Shelf %(title)s changed" msgstr "Книжкова полиця %(title)s змінена" -#: cps/shelf.py:265 +#: cps/shelf.py:273 msgid "There was an error" msgstr "Сталась помилка" -#: cps/shelf.py:281 +#: cps/shelf.py:290 #, python-format msgid "A public shelf with the name '%(title)s' already exists." msgstr "" -#: cps/shelf.py:291 +#: cps/shelf.py:301 #, python-format msgid "A private shelf with the name '%(title)s' already exists." msgstr "" -#: cps/shelf.py:358 +#: cps/shelf.py:370 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Змінити розташування книжкової полиці '%(name)s'" -#: cps/shelf.py:423 +#: cps/shelf.py:436 #, python-format msgid "Shelf: '%(name)s'" msgstr "Книжкова полиця: '%(name)s'" -#: cps/shelf.py:427 +#: cps/shelf.py:440 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Помилка при відкриванні полиці. Полиця не існує або до неї відсутній доступ" -#: cps/updater.py:355 cps/updater.py:366 cps/updater.py:418 cps/updater.py:432 +#: cps/updater.py:374 cps/updater.py:385 cps/updater.py:485 cps/updater.py:500 msgid "Unexpected data while reading update information" msgstr "" -#: cps/updater.py:362 cps/updater.py:424 +#: cps/updater.py:381 cps/updater.py:492 msgid "No update available. You already have the latest version installed" msgstr "" -#: cps/updater.py:379 +#: cps/updater.py:399 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "" -#: cps/updater.py:397 +#: cps/updater.py:417 msgid "Could not fetch update information" msgstr "" -#: cps/updater.py:411 -msgid "No release information available" +#: cps/updater.py:427 +msgid "Click on the button below to update to the latest stable version." msgstr "" -#: cps/updater.py:468 cps/updater.py:479 cps/updater.py:498 +#: cps/updater.py:436 cps/updater.py:450 cps/updater.py:461 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "" -#: cps/updater.py:489 -msgid "Click on the button below to update to the latest stable version." +#: cps/updater.py:478 +msgid "No release information available" msgstr "" -#: cps/templates/index.html:5 cps/web.py:435 +#: cps/templates/index.html:5 cps/web.py:434 msgid "Discover (Random Books)" msgstr "Огляд (випадкові книги)" -#: cps/web.py:461 +#: cps/web.py:460 msgid "Hot Books (Most Downloaded)" msgstr "Популярні книги (найбільш завантажувані)" -#: cps/web.py:489 +#: cps/web.py:493 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:503 +#: cps/web.py:508 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Неможливо відкрити книгу. Файл не існує або немає доступу." -#: cps/web.py:517 +#: cps/web.py:522 #, python-format msgid "Author: %(name)s" msgstr "" -#: cps/web.py:531 +#: cps/web.py:537 #, python-format msgid "Publisher: %(name)s" msgstr "" -#: cps/web.py:544 +#: cps/web.py:550 #, python-format msgid "Series: %(serie)s" msgstr "Серії: %(serie)s" -#: cps/web.py:557 +#: cps/web.py:563 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:570 +#: cps/web.py:576 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:584 +#: cps/web.py:592 #, python-format msgid "Category: %(name)s" msgstr "Категорія: %(name)s" -#: cps/web.py:603 +#: cps/web.py:611 #, python-format msgid "Language: %(name)s" msgstr "Мова: %(name)s" -#: cps/web.py:633 +#: cps/web.py:641 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:703 cps/web.py:1248 +#: cps/templates/layout.html:56 cps/web.py:711 cps/web.py:1314 msgid "Advanced Search" msgstr "Розширений пошук" #: cps/templates/book_edit.html:214 cps/templates/feed.xml:33 #: cps/templates/index.xml:11 cps/templates/layout.html:45 #: cps/templates/layout.html:48 cps/templates/search_form.html:194 -#: cps/web.py:715 cps/web.py:987 +#: cps/web.py:723 cps/web.py:1061 msgid "Search" msgstr "Пошук" -#: cps/web.py:882 +#: cps/templates/admin.html:16 cps/web.py:876 +msgid "Downloads" +msgstr "DLS" + +#: cps/web.py:952 msgid "Ratings list" msgstr "" -#: cps/web.py:901 +#: cps/web.py:973 msgid "File formats list" msgstr "" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:964 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1038 msgid "Tasks" msgstr "" -#: cps/web.py:1108 +#: cps/web.py:1182 msgid "Published after " msgstr "" -#: cps/web.py:1115 +#: cps/web.py:1189 msgid "Published before " msgstr "Опубліковано до" -#: cps/web.py:1145 +#: cps/web.py:1211 #, python-format msgid "Rating <= %(rating)s" msgstr "" -#: cps/web.py:1147 +#: cps/web.py:1213 #, python-format msgid "Rating >= %(rating)s" msgstr "" -#: cps/web.py:1149 +#: cps/web.py:1215 #, python-format msgid "Read Status = %(status)s" msgstr "" -#: cps/web.py:1325 +#: cps/web.py:1387 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "" -#: cps/web.py:1329 +#: cps/web.py:1391 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Помилка при відправці книги: %(res)s" -#: cps/web.py:1331 +#: cps/web.py:1393 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "" -#: cps/web.py:1348 +#: cps/web.py:1410 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "" -#: cps/web.py:1349 cps/web.py:1359 cps/web.py:1366 cps/web.py:1389 -#: cps/web.py:1393 cps/web.py:1398 cps/web.py:1402 +#: cps/web.py:1411 cps/web.py:1418 cps/web.py:1424 cps/web.py:1443 +#: cps/web.py:1447 cps/web.py:1453 msgid "register" msgstr "зареєструватись" -#: cps/web.py:1364 -msgid "Invalid e-mail address format" -msgstr "" - -#: cps/web.py:1391 +#: cps/web.py:1445 msgid "Your e-mail is not allowed to register" msgstr "" -#: cps/web.py:1394 +#: cps/web.py:1448 msgid "Confirmation e-mail was send to your e-mail account." msgstr "" -#: cps/web.py:1397 -msgid "This username or e-mail address is already in use." -msgstr "" - -#: cps/web.py:1414 +#: cps/web.py:1465 msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1431 +#: cps/web.py:1482 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "" -#: cps/web.py:1437 +#: cps/web.py:1488 #, python-format msgid "Could not login: %(message)s" msgstr "" -#: cps/web.py:1441 cps/web.py:1465 +#: cps/web.py:1492 cps/web.py:1516 msgid "Wrong Username or Password" msgstr "Помилка в імені користувача або паролі" -#: cps/web.py:1448 +#: cps/web.py:1499 msgid "New Password was send to your email address" msgstr "" -#: cps/web.py:1454 +#: cps/web.py:1505 msgid "Please enter valid username to reset password" msgstr "" -#: cps/web.py:1460 +#: cps/web.py:1511 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "" -#: cps/web.py:1498 cps/web.py:1583 +#: cps/web.py:1565 cps/web.py:1612 #, python-format msgid "%(name)s's profile" msgstr "Профіль %(name)s" -#: cps/web.py:1550 +#: cps/web.py:1579 msgid "Profile updated" msgstr "Профіль оновлено" -#: cps/web.py:1610 cps/web.py:1613 cps/web.py:1616 cps/web.py:1619 -#: cps/web.py:1626 cps/web.py:1631 +#: cps/web.py:1583 +msgid "Found an existing account for this e-mail address." +msgstr "" + +#: cps/web.py:1639 cps/web.py:1642 cps/web.py:1645 cps/web.py:1648 +#: cps/web.py:1655 cps/web.py:1660 msgid "Read a Book" msgstr "Читати книгу" +#: cps/services/gmail.py:41 +msgid "Found no valid gmail.json file with OAuth information" +msgstr "" + #: cps/tasks/convert.py:114 #, python-format msgid "Calibre ebook-convert %(tool)s not found" @@ -1162,221 +1291,231 @@ msgstr "" msgid "Users" msgstr "Список користувачів" -#: cps/templates/admin.html:12 cps/templates/login.html:8 +#: cps/templates/admin.html:13 cps/templates/login.html:8 #: cps/templates/login.html:9 cps/templates/register.html:8 -#: cps/templates/user_edit.html:9 +#: cps/templates/user_edit.html:9 cps/templates/user_table.html:121 msgid "Username" msgstr "Ім'я користувача" -#: cps/templates/admin.html:13 cps/templates/register.html:13 -#: cps/templates/user_edit.html:14 +#: cps/templates/admin.html:14 cps/templates/register.html:13 +#: cps/templates/user_edit.html:14 cps/templates/user_table.html:122 msgid "E-mail Address" msgstr "" -#: cps/templates/admin.html:14 cps/templates/user_edit.html:27 +#: cps/templates/admin.html:15 cps/templates/user_edit.html:27 msgid "Send to Kindle E-mail Address" msgstr "Kindle" -#: cps/templates/admin.html:15 -msgid "Downloads" -msgstr "DLS" - -#: cps/templates/admin.html:16 cps/templates/layout.html:77 +#: cps/templates/admin.html:17 cps/templates/layout.html:77 +#: cps/templates/user_table.html:130 msgid "Admin" msgstr "Адмін" -#: cps/templates/admin.html:17 cps/templates/login.html:12 +#: cps/templates/admin.html:18 cps/templates/login.html:12 #: cps/templates/login.html:13 cps/templates/user_edit.html:22 msgid "Password" msgstr "Пароль" -#: cps/templates/admin.html:18 cps/templates/layout.html:66 +#: cps/templates/admin.html:19 cps/templates/layout.html:66 +#: cps/templates/user_table.html:132 msgid "Upload" msgstr "Додати нову книгу" -#: cps/templates/admin.html:19 cps/templates/detail.html:18 +#: cps/templates/admin.html:20 cps/templates/detail.html:18 #: cps/templates/detail.html:27 cps/templates/shelf.html:6 +#: cps/templates/user_table.html:133 msgid "Download" msgstr "Завантажити" -#: cps/templates/admin.html:20 +#: cps/templates/admin.html:21 msgid "View Books" msgstr "" -#: cps/templates/admin.html:21 +#: cps/templates/admin.html:22 cps/templates/user_table.html:118 +#: cps/templates/user_table.html:135 msgid "Edit" msgstr "Редагувати" -#: cps/templates/admin.html:22 cps/templates/book_edit.html:16 -#: cps/templates/book_table.html:57 cps/templates/modal_dialogs.html:63 +#: cps/templates/admin.html:23 cps/templates/book_edit.html:16 +#: cps/templates/book_table.html:58 cps/templates/modal_dialogs.html:63 #: cps/templates/modal_dialogs.html:116 cps/templates/user_edit.html:66 +#: cps/templates/user_table.html:136 msgid "Delete" msgstr "Видалити" -#: cps/templates/admin.html:23 +#: cps/templates/admin.html:24 msgid "Public Shelf" msgstr "" -#: cps/templates/admin.html:44 +#: cps/templates/admin.html:47 msgid "Add New User" msgstr "" -#: cps/templates/admin.html:46 +#: cps/templates/admin.html:49 msgid "Import LDAP Users" msgstr "" -#: cps/templates/admin.html:53 +#: cps/templates/admin.html:56 msgid "E-mail Server Settings" msgstr "" -#: cps/templates/admin.html:57 cps/templates/email_edit.html:11 +#: cps/templates/admin.html:61 cps/templates/email_edit.html:30 msgid "SMTP Hostname" msgstr "SMTP-сервер" -#: cps/templates/admin.html:61 cps/templates/email_edit.html:15 +#: cps/templates/admin.html:65 cps/templates/email_edit.html:34 msgid "SMTP Port" msgstr "SMTP-порт" -#: cps/templates/admin.html:65 cps/templates/email_edit.html:19 +#: cps/templates/admin.html:69 cps/templates/email_edit.html:38 msgid "Encryption" msgstr "SSL" -#: cps/templates/admin.html:69 cps/templates/email_edit.html:27 +#: cps/templates/admin.html:73 cps/templates/email_edit.html:46 msgid "SMTP Login" msgstr "SMTP логін" -#: cps/templates/admin.html:73 cps/templates/email_edit.html:35 +#: cps/templates/admin.html:77 cps/templates/admin.html:88 +#: cps/templates/email_edit.html:54 msgid "From E-mail" msgstr "Відправник" #: cps/templates/admin.html:84 +msgid "E-Mail Service" +msgstr "" + +#: cps/templates/admin.html:85 +msgid "Gmail via Oauth2" +msgstr "" + +#: cps/templates/admin.html:100 msgid "Configuration" msgstr "Налаштування сервера" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:103 msgid "Calibre Database Directory" msgstr "Папка Calibre DB" -#: cps/templates/admin.html:91 cps/templates/config_edit.html:136 +#: cps/templates/admin.html:107 cps/templates/config_edit.html:136 msgid "Log Level" msgstr "" -#: cps/templates/admin.html:95 +#: cps/templates/admin.html:111 msgid "Port" msgstr "Порт" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:116 msgid "External Port" msgstr "" -#: cps/templates/admin.html:107 cps/templates/config_view_edit.html:27 +#: cps/templates/admin.html:123 cps/templates/config_view_edit.html:27 msgid "Books per Page" msgstr "Кількість книг на сторінці" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:127 msgid "Uploads" msgstr "Загрузка на сервер" -#: cps/templates/admin.html:115 +#: cps/templates/admin.html:131 msgid "Anonymous Browsing" msgstr "Анонімний перегляд" -#: cps/templates/admin.html:119 +#: cps/templates/admin.html:135 msgid "Public Registration" msgstr "Публічна реєстрація" -#: cps/templates/admin.html:123 +#: cps/templates/admin.html:139 msgid "Magic Link Remote Login" msgstr "" -#: cps/templates/admin.html:127 +#: cps/templates/admin.html:143 msgid "Reverse Proxy Login" msgstr "" -#: cps/templates/admin.html:132 +#: cps/templates/admin.html:148 msgid "Reverse proxy header name" msgstr "" -#: cps/templates/admin.html:137 +#: cps/templates/admin.html:153 msgid "Edit Basic Configuration" msgstr "" -#: cps/templates/admin.html:138 +#: cps/templates/admin.html:154 msgid "Edit UI Configuration" msgstr "" -#: cps/templates/admin.html:143 +#: cps/templates/admin.html:159 msgid "Administration" msgstr "Адміністрування" -#: cps/templates/admin.html:144 +#: cps/templates/admin.html:160 msgid "Download Debug Package" msgstr "" -#: cps/templates/admin.html:145 +#: cps/templates/admin.html:161 msgid "View Logs" msgstr "" -#: cps/templates/admin.html:148 +#: cps/templates/admin.html:164 msgid "Reconnect Calibre Database" msgstr "Повторне підключення до БД Calibre" -#: cps/templates/admin.html:149 +#: cps/templates/admin.html:165 msgid "Restart" msgstr "" -#: cps/templates/admin.html:150 +#: cps/templates/admin.html:166 msgid "Shutdown" msgstr "" -#: cps/templates/admin.html:155 +#: cps/templates/admin.html:171 msgid "Update" msgstr "" -#: cps/templates/admin.html:159 +#: cps/templates/admin.html:175 msgid "Version" msgstr "" -#: cps/templates/admin.html:160 +#: cps/templates/admin.html:176 msgid "Details" msgstr "" -#: cps/templates/admin.html:166 +#: cps/templates/admin.html:182 msgid "Current version" msgstr "" -#: cps/templates/admin.html:173 +#: cps/templates/admin.html:189 msgid "Check for Update" msgstr "Перевірка оновлень" -#: cps/templates/admin.html:174 +#: cps/templates/admin.html:190 msgid "Perform Update" msgstr "Встановити оновлення" -#: cps/templates/admin.html:187 +#: cps/templates/admin.html:203 msgid "Are you sure you want to restart?" msgstr "" -#: cps/templates/admin.html:192 cps/templates/admin.html:206 -#: cps/templates/admin.html:226 cps/templates/shelf.html:95 +#: cps/templates/admin.html:208 cps/templates/admin.html:222 +#: cps/templates/admin.html:242 cps/templates/shelf.html:95 msgid "OK" msgstr "Ok" -#: cps/templates/admin.html:193 cps/templates/admin.html:207 -#: cps/templates/book_edit.html:192 cps/templates/book_table.html:84 +#: cps/templates/admin.html:209 cps/templates/admin.html:223 +#: cps/templates/book_edit.html:192 cps/templates/book_table.html:85 #: cps/templates/config_edit.html:427 cps/templates/config_view_edit.html:151 -#: cps/templates/email_edit.html:47 cps/templates/modal_dialogs.html:64 -#: cps/templates/modal_dialogs.html:99 cps/templates/modal_dialogs.html:117 +#: cps/templates/modal_dialogs.html:64 cps/templates/modal_dialogs.html:99 +#: cps/templates/modal_dialogs.html:117 cps/templates/modal_dialogs.html:135 #: cps/templates/shelf.html:96 cps/templates/shelf_edit.html:19 #: cps/templates/user_edit.html:132 msgid "Cancel" msgstr "" -#: cps/templates/admin.html:205 +#: cps/templates/admin.html:221 msgid "Are you sure you want to shutdown?" msgstr "" -#: cps/templates/admin.html:217 +#: cps/templates/admin.html:233 msgid "Updating, please do not reload this page" msgstr "Встановлення оновлень, будь-ласка, не оновлюйте сторінку" @@ -1484,6 +1623,7 @@ msgid "Identifier Value" msgstr "" #: cps/templates/book_edit.html:72 cps/templates/book_edit.html:289 +#: cps/templates/user_table.html:23 msgid "Remove" msgstr "" @@ -1549,7 +1689,7 @@ msgid "Fetch Metadata" msgstr "Отримати метадані" #: cps/templates/book_edit.html:191 cps/templates/config_edit.html:424 -#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45 +#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:64 #: cps/templates/shelf_edit.html:17 cps/templates/shelf_order.html:40 #: cps/templates/user_edit.html:130 msgid "Save" @@ -1589,96 +1729,98 @@ msgstr "Помилка пошуку!" msgid "No Result(s) found! Please try another keyword." msgstr "" -#: cps/templates/book_table.html:10 cps/templates/book_table.html:52 +#: cps/templates/book_table.html:11 cps/templates/book_table.html:53 +#: cps/templates/user_table.html:13 cps/templates/user_table.html:65 +#: cps/templates/user_table.html:88 msgid "This Field is Required" msgstr "" -#: cps/templates/book_table.html:23 +#: cps/templates/book_table.html:24 msgid "Merge selected books" msgstr "" -#: cps/templates/book_table.html:24 +#: cps/templates/book_table.html:25 cps/templates/user_table.html:111 msgid "Remove Selections" msgstr "" -#: cps/templates/book_table.html:30 +#: cps/templates/book_table.html:31 msgid "Update Title Sort automatically" msgstr "" -#: cps/templates/book_table.html:34 +#: cps/templates/book_table.html:35 msgid "Update Author Sort automatically" msgstr "" -#: cps/templates/book_table.html:46 +#: cps/templates/book_table.html:47 msgid "Enter Title" msgstr "" -#: cps/templates/book_table.html:46 cps/templates/config_view_edit.html:23 +#: cps/templates/book_table.html:47 cps/templates/config_view_edit.html:23 #: cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Заголовок" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Enter Title Sort" msgstr "" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Title Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Enter Author Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Author Sort" msgstr "" -#: cps/templates/book_table.html:49 +#: cps/templates/book_table.html:50 msgid "Enter Authors" msgstr "" -#: cps/templates/book_table.html:50 +#: cps/templates/book_table.html:51 msgid "Enter Categories" msgstr "" -#: cps/templates/book_table.html:51 +#: cps/templates/book_table.html:52 msgid "Enter Series" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Enter title" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Series Index" msgstr "" -#: cps/templates/book_table.html:53 +#: cps/templates/book_table.html:54 msgid "Enter Languages" msgstr "" -#: cps/templates/book_table.html:54 +#: cps/templates/book_table.html:55 msgid "Publishing Date" msgstr "" -#: cps/templates/book_table.html:55 +#: cps/templates/book_table.html:56 msgid "Enter Publishers" msgstr "" -#: cps/templates/book_table.html:70 cps/templates/modal_dialogs.html:46 +#: cps/templates/book_table.html:71 cps/templates/modal_dialogs.html:46 msgid "Are you really sure?" msgstr "" -#: cps/templates/book_table.html:74 +#: cps/templates/book_table.html:75 msgid "Books with Title will be merged from:" msgstr "" -#: cps/templates/book_table.html:78 +#: cps/templates/book_table.html:79 msgid "Into Book with Title:" msgstr "" -#: cps/templates/book_table.html:83 +#: cps/templates/book_table.html:84 msgid "Merge" msgstr "" @@ -1863,7 +2005,7 @@ msgid "LDAP Encryption" msgstr "" #: cps/templates/config_edit.html:268 cps/templates/config_view_edit.html:61 -#: cps/templates/email_edit.html:21 +#: cps/templates/email_edit.html:40 msgid "None" msgstr "Ні" @@ -2076,6 +2218,7 @@ msgid "Default Visibilities for New Users" msgstr "Можливості за замовчуванням для нових користувачів" #: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82 +#: cps/templates/user_table.html:138 msgid "Show Random Books in Detail View" msgstr "Показувати випадкові книги при перегляді деталей" @@ -2149,43 +2292,69 @@ msgstr "" msgid "Edit Metadata" msgstr "Редагувати метадані" -#: cps/templates/email_edit.html:22 +#: cps/templates/email_edit.html:12 +msgid "Choose Server Type" +msgstr "" + +#: cps/templates/email_edit.html:14 +msgid "Use Standard E-Mail Account" +msgstr "" + +#: cps/templates/email_edit.html:15 +msgid "Gmail Account with OAuth2 Verfification" +msgstr "" + +#: cps/templates/email_edit.html:21 +msgid "Setup Gmail Account as E-Mail Server" +msgstr "" + +#: cps/templates/email_edit.html:23 +msgid "Revoke Gmail Access" +msgstr "" + +#: cps/templates/email_edit.html:41 msgid "STARTTLS" msgstr "STARTTLS" -#: cps/templates/email_edit.html:23 +#: cps/templates/email_edit.html:42 msgid "SSL/TLS" msgstr "SSL/TLS" -#: cps/templates/email_edit.html:31 +#: cps/templates/email_edit.html:50 msgid "SMTP Password" msgstr "Пароль SMTP" -#: cps/templates/email_edit.html:38 +#: cps/templates/email_edit.html:57 msgid "Attachment Size Limit" msgstr "" -#: cps/templates/email_edit.html:46 +#: cps/templates/email_edit.html:65 msgid "Save and Send Test E-mail" msgstr "Зберегти налаштування і відправити тестове повідомлення" -#: cps/templates/email_edit.html:51 +#: cps/templates/email_edit.html:69 cps/templates/layout.html:29 +#: cps/templates/shelf_order.html:41 cps/templates/user_table.html:158 +msgid "Back" +msgstr "Назад" + +#: cps/templates/email_edit.html:73 msgid "Allowed Domains (Whitelist)" msgstr "" -#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80 +#: cps/templates/email_edit.html:76 cps/templates/email_edit.html:102 msgid "Add Domain" msgstr "" -#: cps/templates/email_edit.html:57 cps/templates/email_edit.html:83 +#: cps/templates/email_edit.html:79 cps/templates/email_edit.html:105 +#: cps/templates/user_table.html:26 msgid "Add" msgstr "" -#: cps/templates/email_edit.html:62 cps/templates/email_edit.html:72 +#: cps/templates/email_edit.html:84 cps/templates/email_edit.html:94 msgid "Enter domainname" msgstr "" -#: cps/templates/email_edit.html:68 +#: cps/templates/email_edit.html:90 msgid "Denied Domains (Blacklist)" msgstr "" @@ -2197,10 +2366,6 @@ msgstr "Далі" msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):" msgstr "" -#: cps/templates/grid.html:14 cps/templates/list.html:14 -msgid "All" -msgstr "" - #: cps/templates/http_error.html:38 msgid "Create Issue" msgstr "" @@ -2231,64 +2396,72 @@ msgstr "" msgid "Start" msgstr "Старт" +#: cps/templates/index.xml:18 +msgid "Alphabetical Books" +msgstr "" + #: cps/templates/index.xml:22 +msgid "Books sorted alphabetically" +msgstr "" + +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Downloads." msgstr "Популярні книги в цьому каталозі, на основі кількості завантажень" -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:36 msgid "Popular publications from this catalog based on Rating." msgstr "Популярні книги з цього каталогу на основі рейтингу" -#: cps/templates/index.xml:32 +#: cps/templates/index.xml:39 msgid "Recently added Books" msgstr "" -#: cps/templates/index.xml:36 +#: cps/templates/index.xml:43 msgid "The latest Books" msgstr "Останні книги" -#: cps/templates/index.xml:39 +#: cps/templates/index.xml:46 msgid "Random Books" msgstr "Випадковий список книг" -#: cps/templates/index.xml:43 +#: cps/templates/index.xml:50 msgid "Show Random Books" msgstr "Показувати випадкові книги" -#: cps/templates/index.xml:66 +#: cps/templates/index.xml:73 msgid "Books ordered by Author" msgstr "Книги відсортовані за автором" -#: cps/templates/index.xml:73 +#: cps/templates/index.xml:80 msgid "Books ordered by publisher" msgstr "" -#: cps/templates/index.xml:80 +#: cps/templates/index.xml:87 msgid "Books ordered by category" msgstr "Книги відсортовані за категоріями" -#: cps/templates/index.xml:87 +#: cps/templates/index.xml:94 msgid "Books ordered by series" msgstr "Книги відсортовані за серією" -#: cps/templates/index.xml:94 +#: cps/templates/index.xml:101 msgid "Books ordered by Languages" msgstr "" -#: cps/templates/index.xml:101 +#: cps/templates/index.xml:108 msgid "Books ordered by Rating" msgstr "" -#: cps/templates/index.xml:109 +#: cps/templates/index.xml:116 msgid "Books ordered by file formats" msgstr "" -#: cps/templates/index.xml:112 cps/templates/layout.html:135 +#: cps/templates/index.xml:119 cps/templates/layout.html:135 #: cps/templates/search_form.html:80 msgid "Shelves" msgstr "" -#: cps/templates/index.xml:116 +#: cps/templates/index.xml:123 msgid "Books organized in shelves" msgstr "" @@ -2296,10 +2469,6 @@ msgstr "" msgid "Home" msgstr "" -#: cps/templates/layout.html:29 cps/templates/shelf_order.html:41 -msgid "Back" -msgstr "Назад" - #: cps/templates/layout.html:35 msgid "Toggle Navigation" msgstr "Включити навігацію" @@ -2461,6 +2630,11 @@ msgstr "" msgid "Select" msgstr "" +#: cps/templates/modal_dialogs.html:134 +#, fuzzy +msgid "Ok" +msgstr "Книга" + #: cps/templates/osd.xml:5 msgid "Calibre-Web eBook Catalog" msgstr "" @@ -2766,10 +2940,6 @@ msgstr "" msgid "Language of Books" msgstr "Показувати книги на мовах" -#: cps/templates/user_edit.html:44 -msgid "Show All" -msgstr "Показати всі" - #: cps/templates/user_edit.html:53 msgid "OAuth Settings" msgstr "" @@ -2794,7 +2964,7 @@ msgstr "" msgid "Add allowed/Denied Custom Column Values" msgstr "" -#: cps/templates/user_edit.html:135 +#: cps/templates/user_edit.html:135 cps/templates/user_table.html:153 msgid "Delete User" msgstr "Видалити цього користувача" @@ -2802,3 +2972,90 @@ msgstr "Видалити цього користувача" msgid "Generate Kobo Auth URL" msgstr "" +#: cps/templates/user_table.html:68 cps/templates/user_table.html:91 +msgid "Select..." +msgstr "" + +#: cps/templates/user_table.html:118 +#, fuzzy +msgid "Edit User" +msgstr "Керування сервером" + +#: cps/templates/user_table.html:121 +#, fuzzy +msgid "Enter Username" +msgstr "Виберіть ім'я користувача" + +#: cps/templates/user_table.html:122 +#, fuzzy +msgid "Enter E-mail Address" +msgstr "Ваш email-адрес" + +#: cps/templates/user_table.html:123 +#, fuzzy +msgid "Enter Kindle E-mail Address" +msgstr "Kindle" + +#: cps/templates/user_table.html:123 +msgid "Kindle E-mail" +msgstr "" + +#: cps/templates/user_table.html:124 +msgid "Locale" +msgstr "" + +#: cps/templates/user_table.html:125 +msgid "Visible Book Languages" +msgstr "" + +#: cps/templates/user_table.html:126 +msgid "Edit Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:126 +msgid "Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +msgid "Edit Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +msgid "Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:128 +msgid "Edit Allowed Column Values" +msgstr "" + +#: cps/templates/user_table.html:128 +msgid "Allowed Column Values" +msgstr "" + +#: cps/templates/user_table.html:129 +msgid "Edit Denied Column Values" +msgstr "" + +#: cps/templates/user_table.html:129 +msgid "Denied Columns Values" +msgstr "" + +#: cps/templates/user_table.html:131 +#, fuzzy +msgid "Change Password" +msgstr "Дозволити зміну пароля" + +#: cps/templates/user_table.html:134 +msgid "View" +msgstr "" + +#: cps/templates/user_table.html:137 +#, fuzzy +msgid "Edit Public Shelfs" +msgstr "Змінити книжкову полицю" + +#: cps/templates/user_table.html:140 +#, fuzzy +msgid "Show read/unread selection" +msgstr "Показувати вибір серії" + diff --git a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.mo b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.mo index 47e25235..43468ca1 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 469b38dd..50fc7324 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: 2021-03-27 12:16+0100\n" +"POT-Creation-Date: 2021-05-01 16:33+0200\n" "PO-Revision-Date: 2020-09-27 22:18+0800\n" "Last-Translator: dalin \n" "Language: zh_CN\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" +"Generated-By: Babel 2.8.0\n" #: cps/about.py:43 msgid "installed" @@ -30,312 +30,405 @@ msgstr "未安装" msgid "Statistics" msgstr "统计" -#: cps/admin.py:149 +#: cps/admin.py:151 msgid "Server restarted, please reload page" msgstr "服务器已重启,请刷新页面" -#: cps/admin.py:151 +#: cps/admin.py:153 msgid "Performing shutdown of server, please close window" msgstr "正在关闭服务器,请关闭窗口" -#: cps/admin.py:159 +#: cps/admin.py:161 msgid "Reconnect successful" msgstr "重新连接成功" -#: cps/admin.py:162 +#: cps/admin.py:164 msgid "Unknown command" msgstr "未知命令" -#: cps/admin.py:172 cps/editbooks.py:662 cps/editbooks.py:674 -#: cps/editbooks.py:777 cps/editbooks.py:779 cps/editbooks.py:806 -#: cps/editbooks.py:822 cps/updater.py:521 cps/uploader.py:94 +#: cps/admin.py:174 cps/editbooks.py:668 cps/editbooks.py:682 +#: cps/editbooks.py:821 cps/editbooks.py:823 cps/editbooks.py:850 +#: cps/editbooks.py:866 cps/updater.py:555 cps/uploader.py:94 #: cps/uploader.py:104 msgid "Unknown" msgstr "未知" -#: cps/admin.py:193 +#: cps/admin.py:195 msgid "Admin page" msgstr "管理页" -#: cps/admin.py:215 +#: cps/admin.py:217 msgid "UI Configuration" msgstr "界面配置" -#: cps/admin.py:247 cps/admin.py:936 +#: cps/admin.py:249 cps/templates/admin.html:46 +#, fuzzy +msgid "Edit Users" +msgstr "管理员用户" + +#: cps/admin.py:290 +#, fuzzy +msgid "all" +msgstr "全部" + +#: cps/admin.py:315 cps/admin.py:1486 +msgid "User not found" +msgstr "找不到用户" + +#: cps/admin.py:329 +msgid "{} users deleted successfully" +msgstr "成功删除 {} 个用户" + +#: cps/admin.py:351 cps/templates/user_edit.html:44 +#: cps/templates/user_table.html:69 +msgid "Show All" +msgstr "显示全部" + +#: cps/admin.py:372 cps/admin.py:378 +msgid "Malformed request" +msgstr "" + +#: cps/admin.py:390 cps/admin.py:1368 +msgid "Guest Name can't be changed" +msgstr "访客名称无法更改" + +#: cps/admin.py:400 +msgid "Guest can't have this role" +msgstr "游客无法拥有此角色" + +#: cps/admin.py:412 cps/admin.py:1333 +msgid "No admin user remaining, can't remove admin role" +msgstr "理员账户不存在,无法删除管理员角色" + +#: cps/admin.py:416 cps/admin.py:430 +msgid "Value has to be true or false" +msgstr "" + +#: cps/admin.py:418 +msgid "Invalid role" +msgstr "" + +#: cps/admin.py:422 +msgid "Guest can't have this view" +msgstr "游客无法拥有此视图" + +#: cps/admin.py:432 +msgid "Invalid view" +msgstr "" + +#: cps/admin.py:435 +msgid "Guest's Locale is determined automatically and can't be set" +msgstr "游客的本地化是自动侦测而无法设置的" + +#: cps/admin.py:439 +msgid "No Valid Locale Given" +msgstr "" + +#: cps/admin.py:450 +msgid "No Valid Book Language Given" +msgstr "" + +#: cps/admin.py:452 +msgid "Parameter not found" +msgstr "" + +#: cps/admin.py:506 cps/admin.py:1219 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web配置已更新" -#: cps/admin.py:258 +#: cps/admin.py:518 msgid "Do you really want to delete the Kobo Token?" msgstr "您确定删除Kobo Token吗?" -#: cps/admin.py:260 +#: cps/admin.py:520 msgid "Do you really want to delete this domain?" -msgstr "" +msgstr "您确定要删除此域吗?" -#: cps/admin.py:262 +#: cps/admin.py:522 msgid "Do you really want to delete this user?" -msgstr "" +msgstr "您确定要删除此用户吗?" -#: cps/admin.py:264 cps/templates/shelf.html:90 +#: cps/admin.py:524 cps/templates/shelf.html:90 msgid "Are you sure you want to delete this shelf?" msgstr "您确定要删除此书架吗?" -#: cps/admin.py:510 cps/admin.py:516 cps/admin.py:526 cps/admin.py:536 -#: cps/templates/modal_dialogs.html:29 +#: cps/admin.py:526 +msgid "Are you sure you want to change locales of selected user(s)?" +msgstr "您确定要修改选定用户的本地化设置吗?" + +#: cps/admin.py:528 +msgid "Are you sure you want to change visible book languages for selected user(s)?" +msgstr "您确定要修改选定用户的可见书籍语言吗?" + +#: cps/admin.py:530 +msgid "Are you sure you want to change the selected role for the selected user(s)?" +msgstr "您确定要修改选定用户的选定角色吗?" + +#: cps/admin.py:532 +msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" +msgstr "您确定要修改选定用户的选定限制吗?" + +#: cps/admin.py:534 +msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" +msgstr "您确定要修改选定用户的选定可视化限制吗?" + +#: cps/admin.py:683 +msgid "Tag not found" +msgstr "" + +#: cps/admin.py:695 +msgid "Invalid Action" +msgstr "" + +#: cps/admin.py:800 cps/admin.py:806 cps/admin.py:816 cps/admin.py:826 +#: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:43 msgid "Deny" -msgstr "隐藏" +msgstr "拒绝" -#: cps/admin.py:512 cps/admin.py:518 cps/admin.py:528 cps/admin.py:538 -#: cps/templates/modal_dialogs.html:28 +#: cps/admin.py:802 cps/admin.py:808 cps/admin.py:818 cps/admin.py:828 +#: cps/templates/modal_dialogs.html:28 cps/templates/user_table.html:48 msgid "Allow" -msgstr "显示" +msgstr "允许" -#: cps/admin.py:681 +#: cps/admin.py:971 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json 未为 Web 应用程序配置" -#: cps/admin.py:723 +#: cps/admin.py:1016 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "日志文件路径无效,请输入正确的路径" -#: cps/admin.py:729 +#: cps/admin.py:1022 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "访问日志路径无效,请输入正确的路径" -#: cps/admin.py:738 +#: cps/admin.py:1052 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "请输入LDAP主机、端口、DN和用户对象标识符" -#: cps/admin.py:752 cps/admin.py:760 +#: cps/admin.py:1067 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "LDAP组对象过滤器需要一个具有“%s”格式标识符" -#: cps/admin.py:755 cps/admin.py:763 +#: cps/admin.py:1070 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "LDAP组对象过滤器的括号不匹配" -#: cps/admin.py:768 +#: cps/admin.py:1075 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "LDAP用户对象过滤器需要一个具有“%s”格式标识符" -#: cps/admin.py:771 +#: cps/admin.py:1078 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "LDAP用户对象过滤器的括号不匹配" -#: cps/admin.py:779 +#: cps/admin.py:1086 #, python-format msgid "LDAP Member User Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:782 +#: cps/admin.py:1089 msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:790 +#: cps/admin.py:1097 msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:841 +#: cps/admin.py:1123 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "密钥文件路径无效,请输入正确的路径" -#: cps/admin.py:847 +#: cps/admin.py:1129 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "证书文件路径无效,请输入正确的路径" -#: cps/admin.py:917 cps/admin.py:1024 cps/admin.py:1047 cps/admin.py:1168 -#: cps/shelf.py:102 cps/shelf.py:159 cps/shelf.py:200 cps/shelf.py:261 -#: cps/shelf.py:314 cps/shelf.py:348 cps/shelf.py:418 +#: cps/admin.py:1200 cps/admin.py:1303 cps/admin.py:1395 cps/admin.py:1461 +#: cps/shelf.py:103 cps/shelf.py:163 cps/shelf.py:206 cps/shelf.py:269 +#: cps/shelf.py:325 cps/shelf.py:360 cps/shelf.py:431 msgid "Settings DB is not Writeable" msgstr "设置数据库不可写入" -#: cps/admin.py:929 +#: cps/admin.py:1212 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "数据库路径无效,请输入正确的路径" -#: cps/admin.py:933 +#: cps/admin.py:1216 msgid "DB is not Writeable" msgstr "数据库不可写入" -#: cps/admin.py:972 +#: cps/admin.py:1256 msgid "Basic Configuration" msgstr "基本配置" -#: cps/admin.py:987 cps/web.py:1358 +#: cps/admin.py:1272 cps/web.py:1417 msgid "Please fill out all fields!" msgstr "请填写所有字段!" -#: cps/admin.py:990 cps/admin.py:1002 cps/admin.py:1008 cps/admin.py:1138 -msgid "Add new user" -msgstr "添加新用户" - -#: cps/admin.py:999 cps/web.py:1496 +#: cps/admin.py:1280 msgid "E-mail is not from valid domain" msgstr "邮箱不在有效域中" -#: cps/admin.py:1006 cps/admin.py:1021 -msgid "Found an existing account for this e-mail address or nickname." -msgstr "此邮箱或用户名的账号已经存在。" +#: cps/admin.py:1284 cps/admin.py:1414 +msgid "Add new user" +msgstr "添加新用户" -#: cps/admin.py:1017 +#: cps/admin.py:1293 #, python-format msgid "User '%(user)s' created" msgstr "用户“%(user)s”已创建" -#: cps/admin.py:1031 +#: cps/admin.py:1299 +#, fuzzy +msgid "Found an existing account for this e-mail address or name." +msgstr "此邮箱或用户名的账号已经存在。" + +#: cps/admin.py:1312 #, python-format msgid "User '%(nick)s' deleted" msgstr "用户“%(nick)s”已删除" -#: cps/admin.py:1034 +#: cps/admin.py:1314 cps/admin.py:1315 +msgid "Can't delete Guest User" +msgstr "无法删除游客用户" + +#: cps/admin.py:1318 msgid "No admin user remaining, can't delete user" msgstr "管理员账户不存在,无法删除用户" -#: cps/admin.py:1041 -#, python-format -msgid "User '%(nick)s' updated" -msgstr "用户“%(nick)s”已更新" - -#: cps/admin.py:1044 -msgid "An unknown error occured." -msgstr "发生未知错误。" - -#: cps/admin.py:1056 -msgid "No admin user remaining, can't remove admin role" -msgstr "理员账户不存在,无法删除管理员角色" - -#: cps/admin.py:1092 cps/web.py:1554 -msgid "Found an existing account for this e-mail address." -msgstr "此邮箱的账号已经存在。" - -#: cps/admin.py:1101 cps/admin.py:1115 cps/admin.py:1209 cps/web.py:1516 +#: cps/admin.py:1383 cps/admin.py:1504 #, python-format msgid "Edit User %(nick)s" msgstr "编辑用户 %(nick)s" -#: cps/admin.py:1107 cps/web.py:1509 -msgid "This username is already taken" -msgstr "此用户名已被使用" +#: cps/admin.py:1387 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "用户“%(nick)s”已更新" -#: cps/admin.py:1147 cps/templates/admin.html:78 +#: cps/admin.py:1391 +#, fuzzy +msgid "An unknown error occurred." +msgstr "发生未知错误。" + +#: cps/admin.py:1423 cps/templates/admin.html:94 msgid "Edit E-mail Server Settings" msgstr "编辑邮件服务器设置" -#: cps/admin.py:1175 +#: cps/admin.py:1442 +msgid "G-Mail Account Verification Successful" +msgstr "G-Mail账号校验成功" + +#: cps/admin.py:1468 #, python-format msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" msgstr "" -#: cps/admin.py:1178 +#: cps/admin.py:1471 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "发送测试邮件时出错:%(res)s" -#: cps/admin.py:1180 +#: cps/admin.py:1473 msgid "Please configure your e-mail address first..." msgstr "请先配置您的邮箱地址..." -#: cps/admin.py:1182 +#: cps/admin.py:1475 msgid "E-mail server settings updated" msgstr "邮件服务器设置已更新" -#: cps/admin.py:1193 -msgid "User not found" -msgstr "找不到用户" - -#: cps/admin.py:1220 +#: cps/admin.py:1516 #, python-format msgid "Password for user %(user)s reset" msgstr "用户 %(user)s 的密码已重置" -#: cps/admin.py:1223 cps/web.py:1388 cps/web.py:1452 +#: cps/admin.py:1519 cps/web.py:1442 cps/web.py:1503 msgid "An unknown error occurred. Please try again later." msgstr "发生一个未知错误,请稍后再试。" -#: cps/admin.py:1226 cps/web.py:1320 +#: cps/admin.py:1522 cps/web.py:1382 msgid "Please configure the SMTP mail settings first..." msgstr "请先配置SMTP邮箱设置..." -#: cps/admin.py:1237 +#: cps/admin.py:1533 msgid "Logfile viewer" msgstr "日志文件查看器" -#: cps/admin.py:1303 +#: cps/admin.py:1599 msgid "Requesting update package" msgstr "正在请求更新包" -#: cps/admin.py:1304 +#: cps/admin.py:1600 msgid "Downloading update package" msgstr "正在下载更新包" -#: cps/admin.py:1305 +#: cps/admin.py:1601 msgid "Unzipping update package" msgstr "正在解压更新包" -#: cps/admin.py:1306 +#: cps/admin.py:1602 msgid "Replacing files" msgstr "正在替换文件" -#: cps/admin.py:1307 +#: cps/admin.py:1603 msgid "Database connections are closed" msgstr "数据库连接已关闭" -#: cps/admin.py:1308 +#: cps/admin.py:1604 msgid "Stopping server" msgstr "正在停止服务器" -#: cps/admin.py:1309 +#: cps/admin.py:1605 msgid "Update finished, please press okay and reload page" msgstr "更新完成,请点击确定并刷新页面" -#: cps/admin.py:1310 cps/admin.py:1311 cps/admin.py:1312 cps/admin.py:1313 -#: cps/admin.py:1314 +#: cps/admin.py:1606 cps/admin.py:1607 cps/admin.py:1608 cps/admin.py:1609 +#: cps/admin.py:1610 msgid "Update failed:" msgstr "更新失败:" -#: cps/admin.py:1310 cps/updater.py:337 cps/updater.py:532 cps/updater.py:534 +#: cps/admin.py:1606 cps/updater.py:356 cps/updater.py:566 cps/updater.py:568 msgid "HTTP Error" msgstr "HTTP错误" -#: cps/admin.py:1311 cps/updater.py:339 cps/updater.py:536 +#: cps/admin.py:1607 cps/updater.py:358 cps/updater.py:570 msgid "Connection error" msgstr "连接错误" -#: cps/admin.py:1312 cps/updater.py:341 cps/updater.py:538 +#: cps/admin.py:1608 cps/updater.py:360 cps/updater.py:572 msgid "Timeout while establishing connection" msgstr "建立连接超时" -#: cps/admin.py:1313 cps/updater.py:343 cps/updater.py:540 +#: cps/admin.py:1609 cps/updater.py:362 cps/updater.py:574 msgid "General error" msgstr "一般错误" -#: cps/admin.py:1314 +#: cps/admin.py:1610 msgid "Update File Could Not be Saved in Temp Dir" msgstr "更新文件无法保存在临时目录中" -#: cps/admin.py:1376 +#: cps/admin.py:1671 msgid "Failed to Create at Least One LDAP User" msgstr "创建至少一个LDAP用户失败" -#: cps/admin.py:1389 +#: cps/admin.py:1684 #, python-format msgid "Error: %(ldaperror)s" msgstr "错误:%(ldaperror)s" -#: cps/admin.py:1393 +#: cps/admin.py:1688 msgid "Error: No user returned in response of LDAP server" msgstr "错误:在LDAP服务器的响应中没有返回用户" -#: cps/admin.py:1426 +#: cps/admin.py:1721 msgid "At Least One LDAP User Not Found in Database" msgstr "数据库中没有找到至少一个LDAP用户" -#: cps/admin.py:1428 +#: cps/admin.py:1723 msgid "{} User Successfully Imported" -msgstr "" +msgstr "{} 用户被成功导入" #: cps/converter.py:31 msgid "not configured" @@ -345,98 +438,98 @@ msgstr "未配置" msgid "Execution permissions missing" msgstr "缺少执行权限" -#: cps/editbooks.py:267 cps/editbooks.py:269 +#: cps/editbooks.py:294 cps/editbooks.py:296 msgid "Book Format Successfully Deleted" msgstr "书籍格式已成功删除" -#: cps/editbooks.py:276 cps/editbooks.py:278 +#: cps/editbooks.py:303 cps/editbooks.py:305 msgid "Book Successfully Deleted" msgstr "书籍已成功删除" -#: cps/editbooks.py:325 cps/editbooks.py:646 cps/web.py:1598 cps/web.py:1634 -#: cps/web.py:1705 +#: cps/editbooks.py:361 cps/editbooks.py:724 cps/web.py:1627 cps/web.py:1663 +#: cps/web.py:1734 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "打开电子书出错。文件不存在或不可访问" -#: cps/editbooks.py:359 +#: cps/editbooks.py:395 msgid "edit metadata" msgstr "编辑元数据" -#: cps/editbooks.py:434 +#: cps/editbooks.py:473 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s 不是一种有效语言" -#: cps/editbooks.py:556 cps/editbooks.py:905 +#: cps/editbooks.py:595 cps/editbooks.py:936 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "不能上传文件扩展名为“%(ext)s”的文件到此服务器" -#: cps/editbooks.py:560 cps/editbooks.py:909 +#: cps/editbooks.py:599 cps/editbooks.py:940 msgid "File to be uploaded must have an extension" msgstr "要上传的文件必须具有扩展名" -#: cps/editbooks.py:572 +#: cps/editbooks.py:611 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "创建路径 %(path)s 失败(权限拒绝)。" -#: cps/editbooks.py:577 +#: cps/editbooks.py:616 #, python-format msgid "Failed to store file %(file)s." msgstr "保存文件 %(file)s 失败。" -#: cps/editbooks.py:595 cps/editbooks.py:972 cps/web.py:1559 +#: cps/editbooks.py:634 cps/editbooks.py:1027 cps/web.py:1588 #, python-format msgid "Database error: %(error)s." msgstr "数据库错误:%(error)s。" -#: cps/editbooks.py:599 +#: cps/editbooks.py:638 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "已添加 %(ext)s 格式到 %(book)s" -#: cps/editbooks.py:726 +#: cps/editbooks.py:775 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "标识符不区分大小写,覆盖旧标识符" -#: cps/editbooks.py:763 +#: cps/editbooks.py:807 msgid "Metadata successfully updated" msgstr "已成功更新元数据" -#: cps/editbooks.py:772 +#: cps/editbooks.py:816 msgid "Error editing book, please check logfile for details" msgstr "编辑书籍出错,请检查日志文件以获取详细信息" -#: cps/editbooks.py:810 +#: cps/editbooks.py:854 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "上传的书籍可能已经存在,建议修改后重新上传: " -#: cps/editbooks.py:917 +#: cps/editbooks.py:948 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "文件 %(filename)s 无法保存到临时目录" -#: cps/editbooks.py:947 +#: cps/editbooks.py:967 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "移动封面文件失败 %(file)s:%(error)s" -#: cps/editbooks.py:958 +#: cps/editbooks.py:1013 #, python-format msgid "File %(file)s uploaded" msgstr "文件 %(file)s 已上传" -#: cps/editbooks.py:984 +#: cps/editbooks.py:1039 msgid "Source or destination format for conversion missing" msgstr "转换的源或目的格式缺失" -#: cps/editbooks.py:992 +#: cps/editbooks.py:1047 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "书籍已经被成功加入到 %(book_format)s 格式转换队列" -#: cps/editbooks.py:996 +#: cps/editbooks.py:1051 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "转换此书籍时出现错误: %(res)s" @@ -544,55 +637,68 @@ msgstr "Google Drive上找不到文件 %(file)s" msgid "Book path %(path)s not found on Google Drive" msgstr "Google Drive上找不到书籍路径 %(path)s" -#: cps/helper.py:576 +#: cps/helper.py:511 +#, fuzzy +msgid "Found an existing account for this e-mail address" +msgstr "此邮箱的账号已经存在。" + +#: cps/helper.py:519 +msgid "This username is already taken" +msgstr "此用户名已被使用" + +#: cps/helper.py:529 +msgid "Invalid e-mail address format" +msgstr "无效的邮件地址格式" + +#: cps/helper.py:602 msgid "Error Downloading Cover" msgstr "下载封面时出错" -#: cps/helper.py:579 +#: cps/helper.py:605 msgid "Cover Format Error" msgstr "封面格式出错" -#: cps/helper.py:589 +#: cps/helper.py:615 msgid "Failed to create path for cover" msgstr "创建封面路径失败" -#: cps/helper.py:605 +#: cps/helper.py:631 msgid "Cover-file is not a valid image file, or could not be stored" msgstr "封面文件不是有效的图片文件,或者无法存储" -#: cps/helper.py:616 +#: cps/helper.py:642 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" -msgstr "" +msgstr "封面文件只支持jpg/jpeg/png/webp/bmp文件" -#: cps/helper.py:629 +#: cps/helper.py:655 msgid "Only jpg/jpeg files are supported as coverfile" msgstr "仅将jpg、jpeg文件作为封面文件" -#: cps/helper.py:680 +#: cps/helper.py:707 msgid "Unrar binary file not found" msgstr "找不到Unrar执行文件" -#: cps/helper.py:694 +#: cps/helper.py:721 msgid "Error excecuting UnRar" msgstr "执行UnRar时出错" -#: cps/helper.py:743 +#: cps/helper.py:769 msgid "Waiting" msgstr "等待中" -#: cps/helper.py:745 +#: cps/helper.py:771 msgid "Failed" msgstr "失败" -#: cps/helper.py:747 +#: cps/helper.py:773 msgid "Started" msgstr "已开始" -#: cps/helper.py:749 +#: cps/helper.py:775 msgid "Finished" msgstr "已完成" -#: cps/helper.py:751 +#: cps/helper.py:777 msgid "Unknown Status" msgstr "未知状态" @@ -604,65 +710,82 @@ msgstr "请不要使用localhost访问Calibre-Web,以便Kobo设备能获取有 msgid "Kobo Setup" msgstr "Kobo 设置" -#: cps/oauth_bb.py:76 +#: cps/oauth_bb.py:78 #, python-format msgid "Register with %(provider)s" msgstr "使用 %(provider)s 注册" -#: cps/oauth_bb.py:137 cps/remotelogin.py:133 cps/web.py:1424 +#: cps/oauth_bb.py:139 cps/remotelogin.py:133 cps/web.py:1475 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "您现在已以“%(nickname)s”身份登录" -#: cps/oauth_bb.py:147 +#: cps/oauth_bb.py:149 #, python-format msgid "Link to %(oauth)s Succeeded" msgstr "链接到%(oauth)s成功" -#: cps/oauth_bb.py:153 +#: cps/oauth_bb.py:156 msgid "Login failed, No User Linked With OAuth Account" msgstr "登录失败,没有用户与OAuth帐户关联" -#: cps/oauth_bb.py:195 +#: cps/oauth_bb.py:198 #, python-format msgid "Unlink to %(oauth)s Succeeded" msgstr "取消链接到%(oauth)s成功" -#: cps/oauth_bb.py:199 +#: cps/oauth_bb.py:203 #, python-format msgid "Unlink to %(oauth)s Failed" msgstr "取消链接到%(oauth)s失败" -#: cps/oauth_bb.py:202 +#: cps/oauth_bb.py:206 #, python-format msgid "Not Linked to %(oauth)s" msgstr "为连接到%(oauth)s" -#: cps/oauth_bb.py:259 +#: cps/oauth_bb.py:262 msgid "Failed to log in with GitHub." msgstr "使用Github登录失败。" -#: cps/oauth_bb.py:264 +#: cps/oauth_bb.py:268 msgid "Failed to fetch user info from GitHub." msgstr "从Github获取用户信息失败。" -#: cps/oauth_bb.py:275 +#: cps/oauth_bb.py:280 msgid "Failed to log in with Google." msgstr "使用Google登录失败。" -#: cps/oauth_bb.py:280 +#: cps/oauth_bb.py:286 msgid "Failed to fetch user info from Google." msgstr "从Google获取用户信息失败。" -#: cps/oauth_bb.py:312 +#: cps/oauth_bb.py:333 msgid "GitHub Oauth error, please retry later." msgstr "GitHub Oauth 错误,请重试。" -#: cps/oauth_bb.py:331 +#: cps/oauth_bb.py:336 +msgid "GitHub Oauth error: {}" +msgstr "GitHub Oauth 错误: {}" + +#: cps/oauth_bb.py:357 msgid "Google Oauth error, please retry later." msgstr "Google Oauth 错误,请重试。" -#: cps/remotelogin.py:65 cps/web.py:1471 +#: cps/oauth_bb.py:360 +msgid "Google Oauth error: {}" +msgstr "Google Oauth 错误: {}" + +#: cps/opds.py:110 cps/opds.py:199 cps/opds.py:276 cps/opds.py:328 +#: cps/templates/grid.html:14 cps/templates/list.html:14 +msgid "All" +msgstr "全部" + +#: cps/opds.py:385 +msgid "{} Stars" +msgstr "{} 星" + +#: cps/remotelogin.py:65 cps/web.py:1522 msgid "login" msgstr "登录" @@ -678,7 +801,7 @@ msgstr "Token已过期" msgid "Success! Please return to your device" msgstr "成功!请返回您的设备" -#: cps/render_template.py:39 cps/web.py:415 +#: cps/render_template.py:39 cps/web.py:414 msgid "Books" msgstr "书籍" @@ -686,7 +809,7 @@ msgstr "书籍" msgid "Show recent books" msgstr "显示最近书籍" -#: cps/render_template.py:42 cps/templates/index.xml:18 +#: cps/render_template.py:42 cps/templates/index.xml:25 msgid "Hot Books" msgstr "热门书籍" @@ -694,127 +817,130 @@ msgstr "热门书籍" msgid "Show Hot Books" msgstr "显示热门书籍" -#: cps/render_template.py:45 +#: cps/render_template.py:46 cps/render_template.py:51 msgid "Downloaded Books" msgstr "下载历史" -#: cps/render_template.py:47 +#: cps/render_template.py:48 cps/render_template.py:53 +#: cps/templates/user_table.html:151 msgid "Show Downloaded Books" msgstr "显示下载过的书籍" -#: cps/render_template.py:50 cps/templates/index.xml:25 cps/web.py:425 +#: cps/render_template.py:56 cps/templates/index.xml:32 cps/web.py:424 msgid "Top Rated Books" msgstr "最高评分书籍" -#: cps/render_template.py:52 +#: cps/render_template.py:58 cps/templates/user_table.html:145 msgid "Show Top Rated Books" msgstr "显示最高评分书籍" -#: cps/render_template.py:53 cps/templates/index.xml:47 -#: cps/templates/index.xml:51 cps/web.py:642 +#: cps/render_template.py:59 cps/templates/index.xml:54 +#: cps/templates/index.xml:58 cps/web.py:650 msgid "Read Books" msgstr "已读书籍" -#: cps/render_template.py:55 +#: cps/render_template.py:61 msgid "Show read and unread" msgstr "显示阅读状态" -#: cps/render_template.py:57 cps/templates/index.xml:54 -#: cps/templates/index.xml:58 cps/web.py:645 +#: cps/render_template.py:63 cps/templates/index.xml:61 +#: cps/templates/index.xml:65 cps/web.py:653 msgid "Unread Books" msgstr "未读书籍" -#: cps/render_template.py:59 +#: cps/render_template.py:65 msgid "Show unread" msgstr "显示未读" -#: cps/render_template.py:60 +#: cps/render_template.py:66 msgid "Discover" msgstr "发现" -#: cps/render_template.py:62 +#: cps/render_template.py:68 cps/templates/user_table.html:143 +#: cps/templates/user_table.html:146 msgid "Show random books" msgstr "显示随机书籍" -#: cps/render_template.py:63 cps/templates/book_table.html:50 -#: cps/templates/index.xml:76 cps/web.py:950 +#: cps/render_template.py:69 cps/templates/book_table.html:51 +#: cps/templates/index.xml:83 cps/web.py:1024 msgid "Categories" msgstr "分类" -#: cps/render_template.py:65 +#: cps/render_template.py:71 cps/templates/user_table.html:142 msgid "Show category selection" msgstr "显示分类选择" -#: cps/render_template.py:66 cps/templates/book_edit.html:84 -#: cps/templates/book_table.html:51 cps/templates/index.xml:83 -#: cps/templates/search_form.html:62 cps/web.py:854 cps/web.py:864 +#: cps/render_template.py:72 cps/templates/book_edit.html:84 +#: cps/templates/book_table.html:52 cps/templates/index.xml:90 +#: cps/templates/search_form.html:62 cps/web.py:921 cps/web.py:931 msgid "Series" msgstr "丛书" -#: cps/render_template.py:68 +#: cps/render_template.py:74 cps/templates/user_table.html:141 msgid "Show series selection" msgstr "显示丛书选择" -#: cps/render_template.py:69 cps/templates/book_table.html:49 -#: cps/templates/index.xml:62 +#: cps/render_template.py:75 cps/templates/book_table.html:50 +#: cps/templates/index.xml:69 msgid "Authors" msgstr "作者" -#: cps/render_template.py:71 +#: cps/render_template.py:77 cps/templates/user_table.html:144 msgid "Show author selection" msgstr "显示作者选择" -#: cps/render_template.py:73 cps/templates/book_table.html:55 -#: cps/templates/index.xml:69 cps/web.py:833 +#: cps/render_template.py:79 cps/templates/book_table.html:56 +#: cps/templates/index.xml:76 cps/web.py:898 msgid "Publishers" msgstr "出版社" -#: cps/render_template.py:75 +#: cps/render_template.py:81 cps/templates/user_table.html:147 msgid "Show publisher selection" msgstr "显示出版社选择" -#: cps/render_template.py:76 cps/templates/book_table.html:53 -#: cps/templates/index.xml:90 cps/templates/search_form.html:100 cps/web.py:929 +#: cps/render_template.py:82 cps/templates/book_table.html:54 +#: cps/templates/index.xml:97 cps/templates/search_form.html:100 +#: cps/web.py:1001 msgid "Languages" msgstr "语言" -#: cps/render_template.py:79 +#: cps/render_template.py:85 cps/templates/user_table.html:139 msgid "Show language selection" msgstr "显示语言选择" -#: cps/render_template.py:80 cps/templates/index.xml:97 +#: cps/render_template.py:86 cps/templates/index.xml:104 msgid "Ratings" msgstr "评分" -#: cps/render_template.py:82 +#: cps/render_template.py:88 cps/templates/user_table.html:148 msgid "Show ratings selection" msgstr "显示评分选择" -#: cps/render_template.py:83 cps/templates/index.xml:105 +#: cps/render_template.py:89 cps/templates/index.xml:112 msgid "File formats" msgstr "文件格式" -#: cps/render_template.py:85 +#: cps/render_template.py:91 cps/templates/user_table.html:149 msgid "Show file formats selection" msgstr "显示文件格式选择" -#: cps/render_template.py:87 cps/web.py:669 +#: cps/render_template.py:93 cps/web.py:677 msgid "Archived Books" msgstr "归档书籍" -#: cps/render_template.py:89 +#: cps/render_template.py:95 cps/templates/user_table.html:150 msgid "Show archived books" msgstr "显示归档书籍" -#: cps/render_template.py:91 cps/web.py:743 +#: cps/render_template.py:97 cps/web.py:751 msgid "Books List" msgstr "书籍列表" -#: cps/render_template.py:93 +#: cps/render_template.py:99 cps/templates/user_table.html:152 msgid "Show Books List" msgstr "显示书籍列表" -#: cps/shelf.py:69 cps/shelf.py:122 +#: cps/shelf.py:69 cps/shelf.py:124 msgid "Invalid shelf specified" msgstr "指定的书架无效" @@ -828,303 +954,307 @@ msgstr "对不起,您没有添加书籍到书架 %(shelfname)s 的权限" msgid "Book is already part of the shelf: %(shelfname)s" msgstr "此书籍已经是书架 %(shelfname)s 的一部分" -#: cps/shelf.py:108 +#: cps/shelf.py:110 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "此书籍已被添加到书架:%(sname)s" -#: cps/shelf.py:126 +#: cps/shelf.py:129 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "您没有添加书籍到书架 %(name)s 的权限" -#: cps/shelf.py:144 +#: cps/shelf.py:147 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "书籍已经在书架 %(name)s 中了" -#: cps/shelf.py:156 +#: cps/shelf.py:159 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "书籍已经被添加到书架 %(sname)s 中" -#: cps/shelf.py:161 +#: cps/shelf.py:166 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "无法添加书籍到书架:%(sname)s" -#: cps/shelf.py:206 +#: cps/shelf.py:212 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "此书已从书架 %(sname)s 中删除" -#: cps/shelf.py:214 +#: cps/shelf.py:221 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "对不起,您没有从书架 %(sname)s 中删除书籍的权限" -#: cps/shelf.py:224 cps/templates/layout.html:140 +#: cps/shelf.py:231 cps/templates/layout.html:140 msgid "Create a Shelf" msgstr "创建书架" -#: cps/shelf.py:231 +#: cps/shelf.py:238 msgid "Edit a shelf" msgstr "编辑书架" -#: cps/shelf.py:249 +#: cps/shelf.py:256 #, python-format msgid "Shelf %(title)s created" msgstr "书架 %(title)s 已创建" -#: cps/shelf.py:252 +#: cps/shelf.py:259 #, python-format msgid "Shelf %(title)s changed" msgstr "书架 %(title)s 已修改" -#: cps/shelf.py:265 +#: cps/shelf.py:273 msgid "There was an error" msgstr "发生错误" -#: cps/shelf.py:281 +#: cps/shelf.py:290 #, python-format msgid "A public shelf with the name '%(title)s' already exists." msgstr "公共书架:%(title)s已经存在已经存在。" -#: cps/shelf.py:291 +#: cps/shelf.py:301 #, python-format msgid "A private shelf with the name '%(title)s' already exists." msgstr "私有书架:%(title)s已经存在已经存在。" -#: cps/shelf.py:358 +#: cps/shelf.py:370 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "修改书架 %(name)s 顺序" -#: cps/shelf.py:423 +#: cps/shelf.py:436 #, python-format msgid "Shelf: '%(name)s'" msgstr "书架:%(name)s" -#: cps/shelf.py:427 +#: cps/shelf.py:440 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "打开书架出错。书架不存在或不可访问" -#: cps/updater.py:355 cps/updater.py:366 cps/updater.py:418 cps/updater.py:432 +#: cps/updater.py:374 cps/updater.py:385 cps/updater.py:485 cps/updater.py:500 msgid "Unexpected data while reading update information" msgstr "读取更新信息时出现意外数据" -#: cps/updater.py:362 cps/updater.py:424 +#: cps/updater.py:381 cps/updater.py:492 msgid "No update available. You already have the latest version installed" msgstr "无可用更新。您已经安装了最新版本" -#: cps/updater.py:379 +#: cps/updater.py:399 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "有新的更新。单击下面的按钮以更新到最新版本。" -#: cps/updater.py:397 +#: cps/updater.py:417 msgid "Could not fetch update information" msgstr "无法获取更新信息" -#: cps/updater.py:411 -msgid "No release information available" -msgstr "无可用发布信息" +#: cps/updater.py:427 +msgid "Click on the button below to update to the latest stable version." +msgstr "点击下面按钮更新到最新稳定版本。" -#: cps/updater.py:468 cps/updater.py:479 cps/updater.py:498 +#: cps/updater.py:436 cps/updater.py:450 cps/updater.py:461 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "有新的更新。单击下面的按钮以更新到版本: %(version)s" -#: cps/updater.py:489 -msgid "Click on the button below to update to the latest stable version." -msgstr "点击下面按钮更新到最新稳定版本。" +#: cps/updater.py:478 +msgid "No release information available" +msgstr "无可用发布信息" -#: cps/templates/index.html:5 cps/web.py:435 +#: cps/templates/index.html:5 cps/web.py:434 msgid "Discover (Random Books)" msgstr "发现(随机书籍)" -#: cps/web.py:461 +#: cps/web.py:460 msgid "Hot Books (Most Downloaded)" msgstr "热门书籍(最多下载)" -#: cps/web.py:489 +#: cps/web.py:493 #, python-format msgid "Downloaded books by %(user)s" msgstr "%(user)s 下载过的书籍" -#: cps/web.py:503 +#: cps/web.py:508 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "糟糕!选择书名无法打开。文件不存在或者文件不可访问" -#: cps/web.py:517 +#: cps/web.py:522 #, python-format msgid "Author: %(name)s" msgstr "作者:%(name)s" -#: cps/web.py:531 +#: cps/web.py:537 #, python-format msgid "Publisher: %(name)s" msgstr "出版社:%(name)s" -#: cps/web.py:544 +#: cps/web.py:550 #, python-format msgid "Series: %(serie)s" msgstr "丛书:%(serie)s" -#: cps/web.py:557 +#: cps/web.py:563 #, python-format msgid "Rating: %(rating)s stars" msgstr "评分:%(rating)s 星" -#: cps/web.py:570 +#: cps/web.py:576 #, python-format msgid "File format: %(format)s" msgstr "文件格式:%(format)s" -#: cps/web.py:584 +#: cps/web.py:592 #, python-format msgid "Category: %(name)s" msgstr "分类:%(name)s" -#: cps/web.py:603 +#: cps/web.py:611 #, python-format msgid "Language: %(name)s" msgstr "语言:%(name)s" -#: cps/web.py:633 +#: cps/web.py:641 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "自定义列号:%(column)d在Calibre数据库中不存在" -#: cps/templates/layout.html:56 cps/web.py:703 cps/web.py:1248 +#: cps/templates/layout.html:56 cps/web.py:711 cps/web.py:1314 msgid "Advanced Search" msgstr "高级搜索" #: cps/templates/book_edit.html:214 cps/templates/feed.xml:33 #: cps/templates/index.xml:11 cps/templates/layout.html:45 #: cps/templates/layout.html:48 cps/templates/search_form.html:194 -#: cps/web.py:715 cps/web.py:987 +#: cps/web.py:723 cps/web.py:1061 msgid "Search" msgstr "搜索" -#: cps/web.py:882 +#: cps/templates/admin.html:16 cps/web.py:876 +msgid "Downloads" +msgstr "下载次数" + +#: cps/web.py:952 msgid "Ratings list" msgstr "评分列表" -#: cps/web.py:901 +#: cps/web.py:973 msgid "File formats list" msgstr "文件格式列表" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:964 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1038 msgid "Tasks" msgstr "任务列表" -#: cps/web.py:1108 +#: cps/web.py:1182 msgid "Published after " msgstr "出版时间晚于 " -#: cps/web.py:1115 +#: cps/web.py:1189 msgid "Published before " msgstr "出版时间早于 " -#: cps/web.py:1145 +#: cps/web.py:1211 #, python-format msgid "Rating <= %(rating)s" msgstr "评分 <= %(rating)s" -#: cps/web.py:1147 +#: cps/web.py:1213 #, python-format msgid "Rating >= %(rating)s" msgstr "评分 >= %(rating)s" -#: cps/web.py:1149 +#: cps/web.py:1215 #, python-format msgid "Read Status = %(status)s" msgstr "" -#: cps/web.py:1325 +#: cps/web.py:1387 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "书籍已经成功加入 %(kindlemail)s 的发送队列" -#: cps/web.py:1329 +#: cps/web.py:1391 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "糟糕!发送这本书籍的时候出现错误:%(res)s" -#: cps/web.py:1331 +#: cps/web.py:1393 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "请先配置您的kindle邮箱。" -#: cps/web.py:1348 +#: cps/web.py:1410 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "邮件服务未配置,请联系网站管理员!" -#: cps/web.py:1349 cps/web.py:1359 cps/web.py:1366 cps/web.py:1389 -#: cps/web.py:1393 cps/web.py:1398 cps/web.py:1402 +#: cps/web.py:1411 cps/web.py:1418 cps/web.py:1424 cps/web.py:1443 +#: cps/web.py:1447 cps/web.py:1453 msgid "register" msgstr "注册" -#: cps/web.py:1364 -msgid "Invalid e-mail address format" -msgstr "" - -#: cps/web.py:1391 +#: cps/web.py:1445 msgid "Your e-mail is not allowed to register" msgstr "您的电子邮件不允许注册" -#: cps/web.py:1394 +#: cps/web.py:1448 msgid "Confirmation e-mail was send to your e-mail account." msgstr "确认邮件已经发送到您的邮箱。" -#: cps/web.py:1397 -msgid "This username or e-mail address is already in use." -msgstr "这个用户名或者邮箱已被使用。" - -#: cps/web.py:1414 +#: cps/web.py:1465 msgid "Cannot activate LDAP authentication" msgstr "无法激活LDAP认证" -#: cps/web.py:1431 +#: cps/web.py:1482 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "后备登录“%(nickname)s”:无法访问LDAP服务器,或用户未知" -#: cps/web.py:1437 +#: cps/web.py:1488 #, python-format msgid "Could not login: %(message)s" msgstr "无法登录:%(message)s" -#: cps/web.py:1441 cps/web.py:1465 +#: cps/web.py:1492 cps/web.py:1516 msgid "Wrong Username or Password" msgstr "用户名或密码错误" -#: cps/web.py:1448 +#: cps/web.py:1499 msgid "New Password was send to your email address" msgstr "新密码已发送到您的邮箱" -#: cps/web.py:1454 +#: cps/web.py:1505 msgid "Please enter valid username to reset password" msgstr "请输入有效的用户名进行密码重置" -#: cps/web.py:1460 +#: cps/web.py:1511 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "您现在已以“%(nickname)s”登录" -#: cps/web.py:1498 cps/web.py:1583 +#: cps/web.py:1565 cps/web.py:1612 #, python-format msgid "%(name)s's profile" msgstr "%(name)s 的用户配置" -#: cps/web.py:1550 +#: cps/web.py:1579 msgid "Profile updated" msgstr "资料已更新" -#: cps/web.py:1610 cps/web.py:1613 cps/web.py:1616 cps/web.py:1619 -#: cps/web.py:1626 cps/web.py:1631 +#: cps/web.py:1583 +msgid "Found an existing account for this e-mail address." +msgstr "此邮箱的账号已经存在。" + +#: cps/web.py:1639 cps/web.py:1642 cps/web.py:1645 cps/web.py:1648 +#: cps/web.py:1655 cps/web.py:1660 msgid "Read a Book" msgstr "阅读一本书" +#: cps/services/gmail.py:41 +msgid "Found no valid gmail.json file with OAuth information" +msgstr "" + #: cps/tasks/convert.py:114 #, python-format msgid "Calibre ebook-convert %(tool)s not found" @@ -1163,221 +1293,231 @@ msgstr "Calibre 运行失败,错误信息:%(error)s" msgid "Users" msgstr "用户列表" -#: cps/templates/admin.html:12 cps/templates/login.html:8 +#: cps/templates/admin.html:13 cps/templates/login.html:8 #: cps/templates/login.html:9 cps/templates/register.html:8 -#: cps/templates/user_edit.html:9 +#: cps/templates/user_edit.html:9 cps/templates/user_table.html:121 msgid "Username" msgstr "用户名" -#: cps/templates/admin.html:13 cps/templates/register.html:13 -#: cps/templates/user_edit.html:14 +#: cps/templates/admin.html:14 cps/templates/register.html:13 +#: cps/templates/user_edit.html:14 cps/templates/user_table.html:122 msgid "E-mail Address" msgstr "邮箱地址" -#: cps/templates/admin.html:14 cps/templates/user_edit.html:27 +#: cps/templates/admin.html:15 cps/templates/user_edit.html:27 msgid "Send to Kindle E-mail Address" msgstr "接收书籍的Kindle邮箱地址" -#: cps/templates/admin.html:15 -msgid "Downloads" -msgstr "下载次数" - -#: cps/templates/admin.html:16 cps/templates/layout.html:77 +#: cps/templates/admin.html:17 cps/templates/layout.html:77 +#: cps/templates/user_table.html:130 msgid "Admin" msgstr "管理权限" -#: cps/templates/admin.html:17 cps/templates/login.html:12 +#: cps/templates/admin.html:18 cps/templates/login.html:12 #: cps/templates/login.html:13 cps/templates/user_edit.html:22 msgid "Password" msgstr "密码" -#: cps/templates/admin.html:18 cps/templates/layout.html:66 +#: cps/templates/admin.html:19 cps/templates/layout.html:66 +#: cps/templates/user_table.html:132 msgid "Upload" msgstr "上传书籍" -#: cps/templates/admin.html:19 cps/templates/detail.html:18 +#: cps/templates/admin.html:20 cps/templates/detail.html:18 #: cps/templates/detail.html:27 cps/templates/shelf.html:6 +#: cps/templates/user_table.html:133 msgid "Download" msgstr "下载书籍" -#: cps/templates/admin.html:20 +#: cps/templates/admin.html:21 msgid "View Books" msgstr "查看书籍" -#: cps/templates/admin.html:21 +#: cps/templates/admin.html:22 cps/templates/user_table.html:118 +#: cps/templates/user_table.html:135 msgid "Edit" msgstr "编辑书籍" -#: cps/templates/admin.html:22 cps/templates/book_edit.html:16 -#: cps/templates/book_table.html:57 cps/templates/modal_dialogs.html:63 +#: cps/templates/admin.html:23 cps/templates/book_edit.html:16 +#: cps/templates/book_table.html:58 cps/templates/modal_dialogs.html:63 #: cps/templates/modal_dialogs.html:116 cps/templates/user_edit.html:66 +#: cps/templates/user_table.html:136 msgid "Delete" msgstr "删除数据" -#: cps/templates/admin.html:23 +#: cps/templates/admin.html:24 msgid "Public Shelf" msgstr "公共书架" -#: cps/templates/admin.html:44 +#: cps/templates/admin.html:47 msgid "Add New User" msgstr "添加新用户" -#: cps/templates/admin.html:46 +#: cps/templates/admin.html:49 msgid "Import LDAP Users" msgstr "导入LDAP用户" -#: cps/templates/admin.html:53 +#: cps/templates/admin.html:56 msgid "E-mail Server Settings" msgstr "SMTP邮件服务器设置" -#: cps/templates/admin.html:57 cps/templates/email_edit.html:11 +#: cps/templates/admin.html:61 cps/templates/email_edit.html:30 msgid "SMTP Hostname" msgstr "SMTP主机名" -#: cps/templates/admin.html:61 cps/templates/email_edit.html:15 +#: cps/templates/admin.html:65 cps/templates/email_edit.html:34 msgid "SMTP Port" msgstr "SMTP端口" -#: cps/templates/admin.html:65 cps/templates/email_edit.html:19 +#: cps/templates/admin.html:69 cps/templates/email_edit.html:38 msgid "Encryption" msgstr "加密" -#: cps/templates/admin.html:69 cps/templates/email_edit.html:27 +#: cps/templates/admin.html:73 cps/templates/email_edit.html:46 msgid "SMTP Login" msgstr "SMTP用户名" -#: cps/templates/admin.html:73 cps/templates/email_edit.html:35 +#: cps/templates/admin.html:77 cps/templates/admin.html:88 +#: cps/templates/email_edit.html:54 msgid "From E-mail" msgstr "发件人邮箱" #: cps/templates/admin.html:84 +msgid "E-Mail Service" +msgstr "" + +#: cps/templates/admin.html:85 +msgid "Gmail via Oauth2" +msgstr "" + +#: cps/templates/admin.html:100 msgid "Configuration" msgstr "配置" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:103 msgid "Calibre Database Directory" msgstr "Calibre 数据库路径" -#: cps/templates/admin.html:91 cps/templates/config_edit.html:136 +#: cps/templates/admin.html:107 cps/templates/config_edit.html:136 msgid "Log Level" msgstr "日志级别" -#: cps/templates/admin.html:95 +#: cps/templates/admin.html:111 msgid "Port" msgstr "端口" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:116 msgid "External Port" msgstr "扩展端口" -#: cps/templates/admin.html:107 cps/templates/config_view_edit.html:27 +#: cps/templates/admin.html:123 cps/templates/config_view_edit.html:27 msgid "Books per Page" msgstr "每页书籍数" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:127 msgid "Uploads" msgstr "上传" -#: cps/templates/admin.html:115 +#: cps/templates/admin.html:131 msgid "Anonymous Browsing" msgstr "匿名浏览" -#: cps/templates/admin.html:119 +#: cps/templates/admin.html:135 msgid "Public Registration" msgstr "开放注册" -#: cps/templates/admin.html:123 +#: cps/templates/admin.html:139 msgid "Magic Link Remote Login" msgstr "魔法链接远程登录" -#: cps/templates/admin.html:127 +#: cps/templates/admin.html:143 msgid "Reverse Proxy Login" msgstr "反向代理登录" -#: cps/templates/admin.html:132 +#: cps/templates/admin.html:148 msgid "Reverse proxy header name" msgstr "反向代理头部名称" -#: cps/templates/admin.html:137 +#: cps/templates/admin.html:153 msgid "Edit Basic Configuration" msgstr "编辑基本配置" -#: cps/templates/admin.html:138 +#: cps/templates/admin.html:154 msgid "Edit UI Configuration" msgstr "编辑界面配置" -#: cps/templates/admin.html:143 +#: cps/templates/admin.html:159 msgid "Administration" msgstr "管理" -#: cps/templates/admin.html:144 +#: cps/templates/admin.html:160 msgid "Download Debug Package" -msgstr "" +msgstr "下载Debug包" -#: cps/templates/admin.html:145 +#: cps/templates/admin.html:161 msgid "View Logs" msgstr "查看日志文件" -#: cps/templates/admin.html:148 +#: cps/templates/admin.html:164 msgid "Reconnect Calibre Database" msgstr "重新连接到Calibre数据库" -#: cps/templates/admin.html:149 +#: cps/templates/admin.html:165 msgid "Restart" msgstr "重启" -#: cps/templates/admin.html:150 +#: cps/templates/admin.html:166 msgid "Shutdown" msgstr "停止" -#: cps/templates/admin.html:155 +#: cps/templates/admin.html:171 msgid "Update" msgstr "更新" -#: cps/templates/admin.html:159 +#: cps/templates/admin.html:175 msgid "Version" msgstr "版本" -#: cps/templates/admin.html:160 +#: cps/templates/admin.html:176 msgid "Details" msgstr "详情" -#: cps/templates/admin.html:166 +#: cps/templates/admin.html:182 msgid "Current version" msgstr "当前版本" -#: cps/templates/admin.html:173 +#: cps/templates/admin.html:189 msgid "Check for Update" msgstr "检查更新" -#: cps/templates/admin.html:174 +#: cps/templates/admin.html:190 msgid "Perform Update" msgstr "执行更新" -#: cps/templates/admin.html:187 +#: cps/templates/admin.html:203 msgid "Are you sure you want to restart?" msgstr "您确定要重启吗?" -#: cps/templates/admin.html:192 cps/templates/admin.html:206 -#: cps/templates/admin.html:226 cps/templates/shelf.html:95 +#: cps/templates/admin.html:208 cps/templates/admin.html:222 +#: cps/templates/admin.html:242 cps/templates/shelf.html:95 msgid "OK" msgstr "确定" -#: cps/templates/admin.html:193 cps/templates/admin.html:207 -#: cps/templates/book_edit.html:192 cps/templates/book_table.html:84 +#: cps/templates/admin.html:209 cps/templates/admin.html:223 +#: cps/templates/book_edit.html:192 cps/templates/book_table.html:85 #: cps/templates/config_edit.html:427 cps/templates/config_view_edit.html:151 -#: cps/templates/email_edit.html:47 cps/templates/modal_dialogs.html:64 -#: cps/templates/modal_dialogs.html:99 cps/templates/modal_dialogs.html:117 +#: cps/templates/modal_dialogs.html:64 cps/templates/modal_dialogs.html:99 +#: cps/templates/modal_dialogs.html:117 cps/templates/modal_dialogs.html:135 #: cps/templates/shelf.html:96 cps/templates/shelf_edit.html:19 #: cps/templates/user_edit.html:132 msgid "Cancel" msgstr "取消" -#: cps/templates/admin.html:205 +#: cps/templates/admin.html:221 msgid "Are you sure you want to shutdown?" msgstr "您确定要关闭吗?" -#: cps/templates/admin.html:217 +#: cps/templates/admin.html:233 msgid "Updating, please do not reload this page" msgstr "正在更新,请不要刷新页面" @@ -1392,32 +1532,32 @@ msgstr "在书库" #: cps/templates/author.html:26 cps/templates/index.html:68 #: cps/templates/search.html:29 cps/templates/shelf.html:16 msgid "Sort according to book date, newest first" -msgstr "" +msgstr "按图书日期排序,最新优先" #: cps/templates/author.html:27 cps/templates/index.html:69 #: cps/templates/search.html:30 cps/templates/shelf.html:17 msgid "Sort according to book date, oldest first" -msgstr "" +msgstr "按图书日期排序,最旧优先" #: cps/templates/author.html:28 cps/templates/index.html:70 #: cps/templates/search.html:31 cps/templates/shelf.html:18 msgid "Sort title in alphabetical order" -msgstr "" +msgstr "按标题按字母顺序排序" #: cps/templates/author.html:29 cps/templates/index.html:71 #: cps/templates/search.html:32 cps/templates/shelf.html:19 msgid "Sort title in reverse alphabetical order" -msgstr "" +msgstr "按标题逆字母顺序排序" #: cps/templates/author.html:30 cps/templates/index.html:74 #: cps/templates/search.html:35 cps/templates/shelf.html:22 msgid "Sort according to publishing date, newest first" -msgstr "" +msgstr "按出版日期排序,最新优先" #: cps/templates/author.html:31 cps/templates/index.html:75 #: cps/templates/search.html:36 cps/templates/shelf.html:23 msgid "Sort according to publishing date, oldest first" -msgstr "" +msgstr "按出版日期排序,最旧优先" #: cps/templates/author.html:57 cps/templates/author.html:117 #: cps/templates/discover.html:30 cps/templates/index.html:29 @@ -1485,6 +1625,7 @@ msgid "Identifier Value" msgstr "书号编号" #: cps/templates/book_edit.html:72 cps/templates/book_edit.html:289 +#: cps/templates/user_table.html:23 msgid "Remove" msgstr "移除" @@ -1550,7 +1691,7 @@ msgid "Fetch Metadata" msgstr "获取元数据" #: cps/templates/book_edit.html:191 cps/templates/config_edit.html:424 -#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45 +#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:64 #: cps/templates/shelf_edit.html:17 cps/templates/shelf_order.html:40 #: cps/templates/user_edit.html:130 msgid "Save" @@ -1590,96 +1731,98 @@ msgstr "搜索错误!" msgid "No Result(s) found! Please try another keyword." msgstr "无搜索结果!请尝试另一个关键字。" -#: cps/templates/book_table.html:10 cps/templates/book_table.html:52 +#: cps/templates/book_table.html:11 cps/templates/book_table.html:53 +#: cps/templates/user_table.html:13 cps/templates/user_table.html:65 +#: cps/templates/user_table.html:88 msgid "This Field is Required" msgstr "此栏必须填写" -#: cps/templates/book_table.html:23 +#: cps/templates/book_table.html:24 msgid "Merge selected books" msgstr "合并选中的书籍" -#: cps/templates/book_table.html:24 +#: cps/templates/book_table.html:25 cps/templates/user_table.html:111 msgid "Remove Selections" msgstr "删除选中的书籍" -#: cps/templates/book_table.html:30 +#: cps/templates/book_table.html:31 msgid "Update Title Sort automatically" msgstr "自动更新书名排序" -#: cps/templates/book_table.html:34 +#: cps/templates/book_table.html:35 msgid "Update Author Sort automatically" msgstr "自动更新作者排序" -#: cps/templates/book_table.html:46 +#: cps/templates/book_table.html:47 msgid "Enter Title" msgstr "输入书名" -#: cps/templates/book_table.html:46 cps/templates/config_view_edit.html:23 +#: cps/templates/book_table.html:47 cps/templates/config_view_edit.html:23 #: cps/templates/shelf_edit.html:7 msgid "Title" msgstr "书名" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Enter Title Sort" msgstr "输入书名排序" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Title Sort" msgstr "书名排序" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Enter Author Sort" msgstr "输入作者排序" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Author Sort" msgstr "作者排序" -#: cps/templates/book_table.html:49 +#: cps/templates/book_table.html:50 msgid "Enter Authors" msgstr "输入作者" -#: cps/templates/book_table.html:50 +#: cps/templates/book_table.html:51 msgid "Enter Categories" msgstr "输入分类" -#: cps/templates/book_table.html:51 +#: cps/templates/book_table.html:52 msgid "Enter Series" msgstr "输入丛书" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Enter title" msgstr "输入书名" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Series Index" msgstr "丛书编号" -#: cps/templates/book_table.html:53 +#: cps/templates/book_table.html:54 msgid "Enter Languages" msgstr "输入语言" -#: cps/templates/book_table.html:54 +#: cps/templates/book_table.html:55 msgid "Publishing Date" msgstr "出版日期" -#: cps/templates/book_table.html:55 +#: cps/templates/book_table.html:56 msgid "Enter Publishers" msgstr "输入出版社" -#: cps/templates/book_table.html:70 cps/templates/modal_dialogs.html:46 +#: cps/templates/book_table.html:71 cps/templates/modal_dialogs.html:46 msgid "Are you really sure?" msgstr "您真的确认?" -#: cps/templates/book_table.html:74 +#: cps/templates/book_table.html:75 msgid "Books with Title will be merged from:" msgstr "这本书籍将被合并:" -#: cps/templates/book_table.html:78 +#: cps/templates/book_table.html:79 msgid "Into Book with Title:" msgstr "合并到这本书籍:" -#: cps/templates/book_table.html:83 +#: cps/templates/book_table.html:84 msgid "Merge" msgstr "合并" @@ -1864,7 +2007,7 @@ msgid "LDAP Encryption" msgstr "LDAP 加密" #: cps/templates/config_edit.html:268 cps/templates/config_view_edit.html:61 -#: cps/templates/email_edit.html:21 +#: cps/templates/email_edit.html:40 msgid "None" msgstr "无" @@ -1942,19 +2085,19 @@ msgstr "LDAP组成员字段" #: cps/templates/config_edit.html:342 msgid "LDAP Member User Filter Detection" -msgstr "" +msgstr "LDAP成员用户过滤器探测" #: cps/templates/config_edit.html:344 msgid "Autodetect" -msgstr "" +msgstr "自动检测" #: cps/templates/config_edit.html:345 msgid "Custom Filter" -msgstr "" +msgstr "自定义过滤器" #: cps/templates/config_edit.html:350 msgid "LDAP Member User Filter" -msgstr "" +msgstr "LDAP成员用户过滤器" #: cps/templates/config_edit.html:361 #, python-format @@ -2077,6 +2220,7 @@ msgid "Default Visibilities for New Users" msgstr "新用户默认显示权限" #: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82 +#: cps/templates/user_table.html:138 msgid "Show Random Books in Detail View" msgstr "在主页显示随机书籍" @@ -2150,43 +2294,69 @@ msgstr "(公共)" msgid "Edit Metadata" msgstr "编辑元数据" -#: cps/templates/email_edit.html:22 +#: cps/templates/email_edit.html:12 +msgid "Choose Server Type" +msgstr "选择服务器类型" + +#: cps/templates/email_edit.html:14 +msgid "Use Standard E-Mail Account" +msgstr "使用标准电子邮件账号" + +#: cps/templates/email_edit.html:15 +msgid "Gmail Account with OAuth2 Verfification" +msgstr "" + +#: cps/templates/email_edit.html:21 +msgid "Setup Gmail Account as E-Mail Server" +msgstr "" + +#: cps/templates/email_edit.html:23 +msgid "Revoke Gmail Access" +msgstr "" + +#: cps/templates/email_edit.html:41 msgid "STARTTLS" msgstr "STARTTLS协议" -#: cps/templates/email_edit.html:23 +#: cps/templates/email_edit.html:42 msgid "SSL/TLS" msgstr "SSL/TLS协议" -#: cps/templates/email_edit.html:31 +#: cps/templates/email_edit.html:50 msgid "SMTP Password" msgstr "SMTP密码" -#: cps/templates/email_edit.html:38 +#: cps/templates/email_edit.html:57 msgid "Attachment Size Limit" msgstr "附件大小限制" -#: cps/templates/email_edit.html:46 +#: cps/templates/email_edit.html:65 msgid "Save and Send Test E-mail" msgstr "保存设置并发送测试邮件" -#: cps/templates/email_edit.html:51 +#: cps/templates/email_edit.html:69 cps/templates/layout.html:29 +#: cps/templates/shelf_order.html:41 cps/templates/user_table.html:158 +msgid "Back" +msgstr "后退" + +#: cps/templates/email_edit.html:73 msgid "Allowed Domains (Whitelist)" msgstr "允许注册的域名(白名单)" -#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80 +#: cps/templates/email_edit.html:76 cps/templates/email_edit.html:102 msgid "Add Domain" msgstr "添加域名" -#: cps/templates/email_edit.html:57 cps/templates/email_edit.html:83 +#: cps/templates/email_edit.html:79 cps/templates/email_edit.html:105 +#: cps/templates/user_table.html:26 msgid "Add" msgstr "添加" -#: cps/templates/email_edit.html:62 cps/templates/email_edit.html:72 +#: cps/templates/email_edit.html:84 cps/templates/email_edit.html:94 msgid "Enter domainname" msgstr "输入域名" -#: cps/templates/email_edit.html:68 +#: cps/templates/email_edit.html:90 msgid "Denied Domains (Blacklist)" msgstr "禁止注册的域名(黑名单)" @@ -2198,10 +2368,6 @@ msgstr "下一个" msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):" msgstr "在文本编辑器中打开.kobo/Kobo eReader.conf,添加(或编辑):" -#: cps/templates/grid.html:14 cps/templates/list.html:14 -msgid "All" -msgstr "全部" - #: cps/templates/http_error.html:38 msgid "Create Issue" msgstr "创建问题" @@ -2232,64 +2398,72 @@ msgstr "" msgid "Start" msgstr "开始" +#: cps/templates/index.xml:18 +msgid "Alphabetical Books" +msgstr "" + #: cps/templates/index.xml:22 +msgid "Books sorted alphabetically" +msgstr "" + +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Downloads." msgstr "基于下载数的热门书籍。" -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:36 msgid "Popular publications from this catalog based on Rating." msgstr "基于评分的热门书籍。" -#: cps/templates/index.xml:32 +#: cps/templates/index.xml:39 msgid "Recently added Books" msgstr "最近添加的书籍" -#: cps/templates/index.xml:36 +#: cps/templates/index.xml:43 msgid "The latest Books" msgstr "最新书籍" -#: cps/templates/index.xml:39 +#: cps/templates/index.xml:46 msgid "Random Books" msgstr "随机书籍" -#: cps/templates/index.xml:43 +#: cps/templates/index.xml:50 msgid "Show Random Books" msgstr "显示随机书籍" -#: cps/templates/index.xml:66 +#: cps/templates/index.xml:73 msgid "Books ordered by Author" msgstr "书籍按作者排序" -#: cps/templates/index.xml:73 +#: cps/templates/index.xml:80 msgid "Books ordered by publisher" msgstr "书籍按出版社排序" -#: cps/templates/index.xml:80 +#: cps/templates/index.xml:87 msgid "Books ordered by category" msgstr "书籍按分类排序" -#: cps/templates/index.xml:87 +#: cps/templates/index.xml:94 msgid "Books ordered by series" msgstr "书籍按丛书排序" -#: cps/templates/index.xml:94 +#: cps/templates/index.xml:101 msgid "Books ordered by Languages" msgstr "书籍按语言排序" -#: cps/templates/index.xml:101 +#: cps/templates/index.xml:108 msgid "Books ordered by Rating" msgstr "书籍按评分排序" -#: cps/templates/index.xml:109 +#: cps/templates/index.xml:116 msgid "Books ordered by file formats" msgstr "书籍按文件格式排序" -#: cps/templates/index.xml:112 cps/templates/layout.html:135 +#: cps/templates/index.xml:119 cps/templates/layout.html:135 #: cps/templates/search_form.html:80 msgid "Shelves" msgstr "书架列表" -#: cps/templates/index.xml:116 +#: cps/templates/index.xml:123 msgid "Books organized in shelves" msgstr "书架上的书" @@ -2297,10 +2471,6 @@ msgstr "书架上的书" msgid "Home" msgstr "首页" -#: cps/templates/layout.html:29 cps/templates/shelf_order.html:41 -msgid "Back" -msgstr "后退" - #: cps/templates/layout.html:35 msgid "Toggle Navigation" msgstr "切换导航" @@ -2440,27 +2610,32 @@ msgstr "必须先将书籍存档并同步设备,然后才能安全地删除书 #: cps/templates/modal_dialogs.html:76 msgid "Choose File Location" -msgstr "" +msgstr "选择文件位置" #: cps/templates/modal_dialogs.html:82 msgid "type" -msgstr "" +msgstr "类型" #: cps/templates/modal_dialogs.html:83 msgid "name" -msgstr "" +msgstr "名称" #: cps/templates/modal_dialogs.html:84 msgid "size" -msgstr "" +msgstr "大小" #: cps/templates/modal_dialogs.html:90 msgid "Parent Directory" -msgstr "" +msgstr "父目录" #: cps/templates/modal_dialogs.html:98 msgid "Select" -msgstr "" +msgstr "选择" + +#: cps/templates/modal_dialogs.html:134 +#, fuzzy +msgid "Ok" +msgstr "丛书编号" #: cps/templates/osd.xml:5 msgid "Calibre-Web eBook Catalog" @@ -2624,7 +2799,7 @@ msgstr "出版日期到" #: cps/templates/search_form.html:35 msgid "Read Status" -msgstr "" +msgstr "阅读状态" #: cps/templates/search_form.html:52 msgid "Exclude Tags" @@ -2635,9 +2810,8 @@ msgid "Exclude Series" msgstr "排除丛书" #: cps/templates/search_form.html:88 -#, fuzzy msgid "Exclude Shelves" -msgstr "排除丛书" +msgstr "排除书架" #: cps/templates/search_form.html:108 msgid "Exclude Languages" @@ -2665,7 +2839,7 @@ msgstr "删除此书架" #: cps/templates/shelf.html:11 msgid "Edit Shelf Properties" -msgstr "" +msgstr "编辑书架属性" #: cps/templates/shelf.html:13 msgid "Arrange books manually" @@ -2717,7 +2891,7 @@ msgstr "套丛书在此书库中" #: cps/templates/stats.html:29 msgid "System Statistics" -msgstr "" +msgstr "系统统计" #: cps/templates/stats.html:33 msgid "Program Library" @@ -2767,10 +2941,6 @@ msgstr "重置用户密码" msgid "Language of Books" msgstr "按语言显示书籍" -#: cps/templates/user_edit.html:44 -msgid "Show All" -msgstr "显示全部" - #: cps/templates/user_edit.html:53 msgid "OAuth Settings" msgstr "OAuth设置" @@ -2795,7 +2965,7 @@ msgstr "新建或查看" msgid "Add allowed/Denied Custom Column Values" msgstr "添加显示或隐藏书籍的自定义栏目值" -#: cps/templates/user_edit.html:135 +#: cps/templates/user_edit.html:135 cps/templates/user_table.html:153 msgid "Delete User" msgstr "删除此用户" @@ -2803,3 +2973,87 @@ msgstr "删除此用户" msgid "Generate Kobo Auth URL" msgstr "生成Kobo Auth 地址" +#: cps/templates/user_table.html:68 cps/templates/user_table.html:91 +msgid "Select..." +msgstr "选择..." + +#: cps/templates/user_table.html:118 +msgid "Edit User" +msgstr "编辑用户" + +#: cps/templates/user_table.html:121 +msgid "Enter Username" +msgstr "输入用户名" + +#: cps/templates/user_table.html:122 +msgid "Enter E-mail Address" +msgstr "输入邮箱地址" + +#: cps/templates/user_table.html:123 +msgid "Enter Kindle E-mail Address" +msgstr "输入Kindle邮箱地址" + +#: cps/templates/user_table.html:123 +msgid "Kindle E-mail" +msgstr "Kindle邮箱" + +#: cps/templates/user_table.html:124 +msgid "Locale" +msgstr "本地化" + +#: cps/templates/user_table.html:125 +msgid "Visible Book Languages" +msgstr "" + +#: cps/templates/user_table.html:126 +msgid "Edit Denied Tags" +msgstr "编辑拒绝标签" + +#: cps/templates/user_table.html:126 +msgid "Denied Tags" +msgstr "拒绝标签" + +#: cps/templates/user_table.html:127 +msgid "Edit Allowed Tags" +msgstr "编辑允许标签" + +#: cps/templates/user_table.html:127 +msgid "Allowed Tags" +msgstr "允许标签" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Edit Allowed Column Values" +msgstr "添加显示或隐藏书籍的自定义栏目值" + +#: cps/templates/user_table.html:128 +#, fuzzy +msgid "Allowed Column Values" +msgstr "添加显示或隐藏书籍的自定义栏目值" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Edit Denied Column Values" +msgstr "添加显示或隐藏书籍的自定义栏目值" + +#: cps/templates/user_table.html:129 +#, fuzzy +msgid "Denied Columns Values" +msgstr "添加显示或隐藏书籍的自定义栏目值" + +#: cps/templates/user_table.html:131 +msgid "Change Password" +msgstr "修改密码" + +#: cps/templates/user_table.html:134 +msgid "View" +msgstr "" + +#: cps/templates/user_table.html:137 +msgid "Edit Public Shelfs" +msgstr "编辑公共书架" + +#: cps/templates/user_table.html:140 +msgid "Show read/unread selection" +msgstr "显示已读/未读选择" + diff --git a/cps/ub.py b/cps/ub.py index 6cbc0383..d8d65bd0 100644 --- a/cps/ub.py +++ b/cps/ub.py @@ -44,7 +44,7 @@ from sqlalchemy import String, Integer, SmallInteger, Boolean, DateTime, Float, from sqlalchemy.orm.attributes import flag_modified from sqlalchemy.sql.expression import func try: - # Compability with sqlalchemy 2.0 + # Compatibility with sqlalchemy 2.0 from sqlalchemy.orm import declarative_base except ImportError: from sqlalchemy.ext.declarative import declarative_base @@ -713,9 +713,12 @@ def init_db(app_db_path): create_anonymous_user(session) if cli.user_credentials: - username, password = cli.user_credentials.split(':') + username, password = cli.user_credentials.split(':', 1) user = session.query(User).filter(func.lower(User.name) == username.lower()).first() if user: + if not password: + print("Empty password is not allowed") + sys.exit(4) user.password = generate_password_hash(password) if session_commit() == "": print("Password for user '{}' changed".format(username)) diff --git a/cps/updater.py b/cps/updater.py index 87aa842b..fb5219b6 100644 --- a/cps/updater.py +++ b/cps/updater.py @@ -103,20 +103,21 @@ class Updater(threading.Thread): time.sleep(2) return True except requests.exceptions.HTTPError as ex: - log.info(u'HTTP Error %s', ex) + log.error(u'HTTP Error %s', ex) self.status = 8 except requests.exceptions.ConnectionError: - log.info(u'Connection error') + log.error(u'Connection error') self.status = 9 except requests.exceptions.Timeout: - log.info(u'Timeout while establishing connection') + log.error(u'Timeout while establishing connection') self.status = 10 except (requests.exceptions.RequestException, zipfile.BadZipFile): self.status = 11 - log.info(u'General error') - except (IOError, OSError): + log.error(u'General error') + except (IOError, OSError) as ex: self.status = 12 - log.info(u'Update File Could Not be Saved in Temp Dir') + log.error(u'Possible Reason for error: update file could not be saved in temp dir') + log.debug_or_exception(ex) self.pause() return False @@ -182,39 +183,50 @@ class Updater(threading.Thread): @classmethod def moveallfiles(cls, root_src_dir, root_dst_dir): - change_permissions = True new_permissions = os.stat(root_dst_dir) - if sys.platform == "win32" or sys.platform == "darwin": - change_permissions = False - else: - log.debug('Update on OS-System : %s', sys.platform) + log.debug('Performing Update on OS-System: %s', sys.platform) + change_permissions = (sys.platform == "win32" or sys.platform == "darwin") for src_dir, __, files in os.walk(root_src_dir): dst_dir = src_dir.replace(root_src_dir, root_dst_dir, 1) if not os.path.exists(dst_dir): - os.makedirs(dst_dir) - log.debug('Create-Dir: %s', dst_dir) + try: + os.makedirs(dst_dir) + log.debug('Create directory: {}', dst_dir) + except OSError as e: + log.error('Failed creating folder: {} with error {}'.format(dst_dir, e)) if change_permissions: - # print('Permissions: User '+str(new_permissions.st_uid)+' Group '+str(new_permissions.st_uid)) - os.chown(dst_dir, new_permissions.st_uid, new_permissions.st_gid) + try: + os.chown(dst_dir, new_permissions.st_uid, new_permissions.st_gid) + except OSError as e: + old_permissions = os.stat(dst_dir) + log.error('Failed changing permissions of %s. Before: %s:%s After %s:%s error: %s', + dst_dir, old_permissions.st_uid, old_permissions.st_gid, + new_permissions.st_uid, new_permissions.st_gid, e) for file_ in files: src_file = os.path.join(src_dir, file_) dst_file = os.path.join(dst_dir, file_) if os.path.exists(dst_file): if change_permissions: permission = os.stat(dst_file) - log.debug('Remove file before copy: %s', dst_file) - os.remove(dst_file) + try: + os.remove(dst_file) + log.debug('Remove file before copy: %s', dst_file) + except OSError as e: + log.error('Failed removing file: {} with error {}'.format(dst_file, e)) else: if change_permissions: permission = new_permissions - shutil.move(src_file, dst_dir) - log.debug('Move File %s to %s', src_file, dst_dir) + try: + shutil.move(src_file, dst_dir) + log.debug('Move File %s to %s', src_file, dst_dir) + except OSError as ex: + log.error('Failed moving file from {} to {} with error {}'.format(src_file, dst_dir, ex)) if change_permissions: try: os.chown(dst_file, permission.st_uid, permission.st_gid) except OSError as e: old_permissions = os.stat(dst_file) - log.debug('Fail change permissions of %s. Before: %s:%s After %s:%s error: %s', + log.error('Failed changing permissions of %s. Before: %s:%s After %s:%s error: %s', dst_file, old_permissions.st_uid, old_permissions.st_gid, permission.st_uid, permission.st_gid, e) return @@ -266,9 +278,8 @@ class Updater(threading.Thread): shutil.rmtree(item_path, ignore_errors=True) else: try: - log.debug("Delete file %s", item_path) - # log_from_thread("Delete file " + item_path) os.remove(item_path) + log.debug("Delete file %s", item_path) except OSError: log.debug("Could not remove: %s", item_path) shutil.rmtree(source, ignore_errors=True) @@ -283,11 +294,13 @@ class Updater(threading.Thread): @classmethod def _nightly_version_info(cls): if is_sha1(constants.NIGHTLY_VERSION[0]) and len(constants.NIGHTLY_VERSION[1]) > 0: + log.debug("Nightly version: {}, {}".format(constants.NIGHTLY_VERSION[0], constants.NIGHTLY_VERSION[1])) return {'version': constants.NIGHTLY_VERSION[0], 'datetime': constants.NIGHTLY_VERSION[1]} return False @classmethod def _stable_version_info(cls): + log.debug("Stable version: {}".format(constants.STABLE_VERSION)) return constants.STABLE_VERSION # Current version @staticmethod @@ -381,6 +394,7 @@ class Updater(threading.Thread): # if 'committer' in update_data and 'message' in update_data: try: + log.debug("A new update is available.") status['success'] = True status['message'] = _( u'A new update is available. Click on the button below to update to the latest version.') @@ -401,6 +415,7 @@ class Updater(threading.Thread): except (IndexError, KeyError): status['success'] = False status['message'] = _(u'Could not fetch update information') + log.error("Could not fetch update information") return json.dumps(status) return '' @@ -468,6 +483,7 @@ class Updater(threading.Thread): # we are already on newest version, no update available if 'tag_name' not in commit[0]: status['message'] = _(u'Unexpected data while reading update information') + log.error("Unexpected data while reading update information") return json.dumps(status) if commit[0]['tag_name'] == version: status.update({ diff --git a/cps/usermanagement.py b/cps/usermanagement.py index ef7174c4..78e80afe 100644 --- a/cps/usermanagement.py +++ b/cps/usermanagement.py @@ -75,8 +75,9 @@ def load_user_from_auth_header(header_val): basic_username = basic_password = '' # nosec try: header_val = base64.b64decode(header_val).decode('utf-8') - basic_username = header_val.split(':')[0] - basic_password = header_val.split(':')[1] + # Users with colon are invalid: rfc7617 page 4 + basic_username = header_val.split(':', 1)[0] + basic_password = header_val.split(':', 1)[1] except (TypeError, UnicodeDecodeError, binascii.Error): pass user = _fetch_user_by_name(basic_username) diff --git a/cps/web.py b/cps/web.py index e1acdcef..adf0d51e 100644 --- a/cps/web.py +++ b/cps/web.py @@ -26,6 +26,7 @@ from datetime import datetime import json import mimetypes import chardet # dependency of requests +import copy from babel.dates import format_date from babel import Locale as LC @@ -183,11 +184,12 @@ def toggle_read(book_id): calibre_db.session.add(new_cc) calibre_db.session.commit() except (KeyError, AttributeError): - log.error(u"Custom Column No.%d is not exisiting in calibre database", config.config_read_column) + log.error(u"Custom Column No.%d is not existing in calibre database", config.config_read_column) + return "Custom Column No.{} is not existing in calibre database".format(config.config_read_column), 400 except (OperationalError, InvalidRequestError) as e: calibre_db.session.rollback() log.error(u"Read status could not set: %e", e) - + return "Read status could not set: {}".format(e), 400 return "" @web.route("/ajax/togglearchived/", methods=['POST']) @@ -753,20 +755,50 @@ def books_table(): @web.route("/ajax/listbooks") @login_required def list_books(): - off = request.args.get("offset") or 0 - limit = request.args.get("limit") or config.config_books_per_page - # sort = request.args.get("sort") - if request.args.get("order") == 'desc': - order = [db.Books.timestamp.desc()] - else: - order = [db.Books.timestamp.asc()] + off = int(request.args.get("offset") or 0) + limit = int(request.args.get("limit") or config.config_books_per_page) search = request.args.get("search") - total_count = calibre_db.session.query(db.Books).count() - if search: - entries, filtered_count, __ = calibre_db.get_search_results(search, off, order, limit) + sort = request.args.get("sort", "id") + order = request.args.get("order", "").lower() + state = None + join = tuple() + + if sort == "state": + state = json.loads(request.args.get("state", "[]")) + elif sort == "tags": + order = [db.Tags.name.asc()] if order == "asc" else [db.Tags.name.desc()] + join = db.books_tags_link,db.Books.id == db.books_tags_link.c.book, db.Tags + elif sort == "series": + order = [db.Series.name.asc()] if order == "asc" else [db.Series.name.desc()] + join = db.books_series_link,db.Books.id == db.books_series_link.c.book, db.Series + elif sort == "publishers": + order = [db.Publishers.name.asc()] if order == "asc" else [db.Publishers.name.desc()] + join = db.books_publishers_link,db.Books.id == db.books_publishers_link.c.book, db.Publishers + elif sort == "authors": + order = [db.Authors.name.asc()] if order == "asc" else [db.Authors.name.desc()] + join = db.books_authors_link,db.Books.id == db.books_authors_link.c.book, db.Authors + elif sort == "languages": + order = [db.Languages.lang_code.asc()] if order == "asc" else [db.Languages.lang_code.desc()] + join = db.books_languages_link,db.Books.id == db.books_languages_link.c.book, db.Languages + elif order and sort in ["sort", "title", "authors_sort", "series_index"]: + order = [text(sort + " " + order)] + elif not state: + order = [db.Books.timestamp.desc()] + + total_count = filtered_count = calibre_db.session.query(db.Books).count() + + if state: + if search: + books = calibre_db.search_query(search).all() + filtered_count = len(books) + else: + books = calibre_db.session.query(db.Books).filter(calibre_db.common_filters()).all() + entries = calibre_db.get_checkbox_sorted(books, state, off, limit,order) + elif search: + entries, filtered_count, __ = calibre_db.get_search_results(search, off, order, limit, *join) else: - entries, __, __ = calibre_db.fill_indexpage((int(off) / (int(limit)) + 1), limit, db.Books, True, order) - filtered_count = total_count + entries, __, __ = calibre_db.fill_indexpage((int(off) / (int(limit)) + 1), limit, db.Books, True, order, *join) + for entry in entries: for index in range(0, len(entry.languages)): try: @@ -816,9 +848,12 @@ def author_list(): charlist = calibre_db.session.query(func.upper(func.substr(db.Authors.sort, 1, 1)).label('char')) \ .join(db.books_authors_link).join(db.Books).filter(calibre_db.common_filters()) \ .group_by(func.upper(func.substr(db.Authors.sort, 1, 1))).all() - for entry in entries: + # If not creating a copy, readonly databases can not display authornames with "|" in it as changing the name + # starts a change session + autor_copy = copy.deepcopy(entries) + for entry in autor_copy: entry.Authors.name = entry.Authors.name.replace('|', ',') - return render_title_template('list.html', entries=entries, folder='web.books_list', charlist=charlist, + return render_title_template('list.html', entries=autor_copy, folder='web.books_list', charlist=charlist, title=u"Authors", page="authorlist", data='author', order=order_no) else: abort(404) @@ -1083,12 +1118,19 @@ def adv_search_ratings(q, rating_high, rating_low): def adv_search_read_status(q, read_status): if read_status: if config.config_read_column: - if read_status == "True": - q = q.join(db.cc_classes[config.config_read_column], isouter=True) \ - .filter(db.cc_classes[config.config_read_column].value == True) - else: - q = q.join(db.cc_classes[config.config_read_column], isouter=True) \ - .filter(coalesce(db.cc_classes[config.config_read_column].value, False) != True) + try: + if read_status == "True": + q = q.join(db.cc_classes[config.config_read_column], isouter=True) \ + .filter(db.cc_classes[config.config_read_column].value == True) + else: + q = q.join(db.cc_classes[config.config_read_column], isouter=True) \ + .filter(coalesce(db.cc_classes[config.config_read_column].value, False) != True) + except (KeyError, AttributeError): + log.error(u"Custom Column No.%d is not existing in calibre database", config.config_read_column) + flash(_("Custom Column No.%(column)d is not existing in calibre database", + column=config.config_read_column), + category="error") + return q else: if read_status == "True": q = q.join(ub.ReadBook, db.Books.id == ub.ReadBook.book_id, isouter=True) \ @@ -1453,23 +1495,23 @@ def login(): log.info(error) flash(_(u"Could not login: %(message)s", message=error), category="error") else: - ipAdress = request.headers.get('X-Forwarded-For', request.remote_addr) - log.warning('LDAP Login failed for user "%s" IP-address: %s', form['username'], ipAdress) + ip_Address = request.headers.get('X-Forwarded-For', request.remote_addr) + log.warning('LDAP Login failed for user "%s" IP-address: %s', form['username'], ip_Address) flash(_(u"Wrong Username or Password"), category="error") else: - ipAdress = request.headers.get('X-Forwarded-For', request.remote_addr) + ip_Address = request.headers.get('X-Forwarded-For', request.remote_addr) if 'forgot' in form and form['forgot'] == 'forgot': if user != None and user.name != "Guest": ret, __ = reset_password(user.id) if ret == 1: flash(_(u"New Password was send to your email address"), category="info") - log.info('Password reset for user "%s" IP-address: %s', form['username'], ipAdress) + log.info('Password reset for user "%s" IP-address: %s', form['username'], ip_Address) else: log.error(u"An unknown error occurred. Please try again later") flash(_(u"An unknown error occurred. Please try again later."), category="error") else: flash(_(u"Please enter valid username to reset password"), category="error") - log.warning('Username missing for password reset IP-address: %s', ipAdress) + log.warning('Username missing for password reset IP-address: %s', ip_Address) else: if user and check_password_hash(str(user.password), form['password']) and user.name != "Guest": login_user(user, remember=bool(form.get('remember_me'))) @@ -1478,7 +1520,7 @@ def login(): config.config_is_initial = False return redirect_back(url_for("web.index")) else: - log.warning('Login failed for user "%s" IP-address: %s', form['username'], ipAdress) + log.warning('Login failed for user "%s" IP-address: %s', form['username'], ip_Address) flash(_(u"Wrong Username or Password"), category="error") next_url = request.args.get('next', default=url_for("web.index"), type=str) diff --git a/messages.pot b/messages.pot index 78e9e1f1..284462a2 100644 --- a/messages.pot +++ b/messages.pot @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2021-03-27 12:16+0100\n" +"POT-Creation-Date: 2021-05-01 16:33+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.9.0\n" +"Generated-By: Babel 2.8.0\n" #: cps/about.py:43 msgid "installed" @@ -29,310 +29,399 @@ msgstr "" msgid "Statistics" msgstr "" -#: cps/admin.py:149 +#: cps/admin.py:151 msgid "Server restarted, please reload page" msgstr "" -#: cps/admin.py:151 +#: cps/admin.py:153 msgid "Performing shutdown of server, please close window" msgstr "" -#: cps/admin.py:159 +#: cps/admin.py:161 msgid "Reconnect successful" msgstr "" -#: cps/admin.py:162 +#: cps/admin.py:164 msgid "Unknown command" msgstr "" -#: cps/admin.py:172 cps/editbooks.py:662 cps/editbooks.py:674 -#: cps/editbooks.py:777 cps/editbooks.py:779 cps/editbooks.py:806 -#: cps/editbooks.py:822 cps/updater.py:521 cps/uploader.py:94 +#: cps/admin.py:174 cps/editbooks.py:668 cps/editbooks.py:682 +#: cps/editbooks.py:821 cps/editbooks.py:823 cps/editbooks.py:850 +#: cps/editbooks.py:866 cps/updater.py:555 cps/uploader.py:94 #: cps/uploader.py:104 msgid "Unknown" msgstr "" -#: cps/admin.py:193 +#: cps/admin.py:195 msgid "Admin page" msgstr "" -#: cps/admin.py:215 +#: cps/admin.py:217 msgid "UI Configuration" msgstr "" -#: cps/admin.py:247 cps/admin.py:936 +#: cps/admin.py:249 cps/templates/admin.html:46 +msgid "Edit Users" +msgstr "" + +#: cps/admin.py:290 +msgid "all" +msgstr "" + +#: cps/admin.py:315 cps/admin.py:1486 +msgid "User not found" +msgstr "" + +#: cps/admin.py:329 +msgid "{} users deleted successfully" +msgstr "" + +#: cps/admin.py:351 cps/templates/user_edit.html:44 +#: cps/templates/user_table.html:69 +msgid "Show All" +msgstr "" + +#: cps/admin.py:372 cps/admin.py:378 +msgid "Malformed request" +msgstr "" + +#: cps/admin.py:390 cps/admin.py:1368 +msgid "Guest Name can't be changed" +msgstr "" + +#: cps/admin.py:400 +msgid "Guest can't have this role" +msgstr "" + +#: cps/admin.py:412 cps/admin.py:1333 +msgid "No admin user remaining, can't remove admin role" +msgstr "" + +#: cps/admin.py:416 cps/admin.py:430 +msgid "Value has to be true or false" +msgstr "" + +#: cps/admin.py:418 +msgid "Invalid role" +msgstr "" + +#: cps/admin.py:422 +msgid "Guest can't have this view" +msgstr "" + +#: cps/admin.py:432 +msgid "Invalid view" +msgstr "" + +#: cps/admin.py:435 +msgid "Guest's Locale is determined automatically and can't be set" +msgstr "" + +#: cps/admin.py:439 +msgid "No Valid Locale Given" +msgstr "" + +#: cps/admin.py:450 +msgid "No Valid Book Language Given" +msgstr "" + +#: cps/admin.py:452 +msgid "Parameter not found" +msgstr "" + +#: cps/admin.py:506 cps/admin.py:1219 msgid "Calibre-Web configuration updated" msgstr "" -#: cps/admin.py:258 +#: cps/admin.py:518 msgid "Do you really want to delete the Kobo Token?" msgstr "" -#: cps/admin.py:260 +#: cps/admin.py:520 msgid "Do you really want to delete this domain?" msgstr "" -#: cps/admin.py:262 +#: cps/admin.py:522 msgid "Do you really want to delete this user?" msgstr "" -#: cps/admin.py:264 cps/templates/shelf.html:90 +#: cps/admin.py:524 cps/templates/shelf.html:90 msgid "Are you sure you want to delete this shelf?" msgstr "" -#: cps/admin.py:510 cps/admin.py:516 cps/admin.py:526 cps/admin.py:536 -#: cps/templates/modal_dialogs.html:29 +#: cps/admin.py:526 +msgid "Are you sure you want to change locales of selected user(s)?" +msgstr "" + +#: cps/admin.py:528 +msgid "Are you sure you want to change visible book languages for selected user(s)?" +msgstr "" + +#: cps/admin.py:530 +msgid "Are you sure you want to change the selected role for the selected user(s)?" +msgstr "" + +#: cps/admin.py:532 +msgid "Are you sure you want to change the selected restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:534 +msgid "Are you sure you want to change the selected visibility restrictions for the selected user(s)?" +msgstr "" + +#: cps/admin.py:683 +msgid "Tag not found" +msgstr "" + +#: cps/admin.py:695 +msgid "Invalid Action" +msgstr "" + +#: cps/admin.py:800 cps/admin.py:806 cps/admin.py:816 cps/admin.py:826 +#: cps/templates/modal_dialogs.html:29 cps/templates/user_table.html:43 msgid "Deny" msgstr "" -#: cps/admin.py:512 cps/admin.py:518 cps/admin.py:528 cps/admin.py:538 -#: cps/templates/modal_dialogs.html:28 +#: cps/admin.py:802 cps/admin.py:808 cps/admin.py:818 cps/admin.py:828 +#: cps/templates/modal_dialogs.html:28 cps/templates/user_table.html:48 msgid "Allow" msgstr "" -#: cps/admin.py:681 +#: cps/admin.py:971 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "" -#: cps/admin.py:723 +#: cps/admin.py:1016 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:729 +#: cps/admin.py:1022 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:738 +#: cps/admin.py:1052 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "" -#: cps/admin.py:752 cps/admin.py:760 +#: cps/admin.py:1067 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:755 cps/admin.py:763 +#: cps/admin.py:1070 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:768 +#: cps/admin.py:1075 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:771 +#: cps/admin.py:1078 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:779 +#: cps/admin.py:1086 #, python-format msgid "LDAP Member User Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:782 +#: cps/admin.py:1089 msgid "LDAP Member User Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:790 +#: cps/admin.py:1097 msgid "LDAP CACertificate, Certificate or Key Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:841 +#: cps/admin.py:1123 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:847 +#: cps/admin.py:1129 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:917 cps/admin.py:1024 cps/admin.py:1047 cps/admin.py:1168 -#: cps/shelf.py:102 cps/shelf.py:159 cps/shelf.py:200 cps/shelf.py:261 -#: cps/shelf.py:314 cps/shelf.py:348 cps/shelf.py:418 +#: cps/admin.py:1200 cps/admin.py:1303 cps/admin.py:1395 cps/admin.py:1461 +#: cps/shelf.py:103 cps/shelf.py:163 cps/shelf.py:206 cps/shelf.py:269 +#: cps/shelf.py:325 cps/shelf.py:360 cps/shelf.py:431 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:929 +#: cps/admin.py:1212 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:933 +#: cps/admin.py:1216 msgid "DB is not Writeable" msgstr "" -#: cps/admin.py:972 +#: cps/admin.py:1256 msgid "Basic Configuration" msgstr "" -#: cps/admin.py:987 cps/web.py:1358 +#: cps/admin.py:1272 cps/web.py:1417 msgid "Please fill out all fields!" msgstr "" -#: cps/admin.py:990 cps/admin.py:1002 cps/admin.py:1008 cps/admin.py:1138 -msgid "Add new user" -msgstr "" - -#: cps/admin.py:999 cps/web.py:1496 +#: cps/admin.py:1280 msgid "E-mail is not from valid domain" msgstr "" -#: cps/admin.py:1006 cps/admin.py:1021 -msgid "Found an existing account for this e-mail address or nickname." +#: cps/admin.py:1284 cps/admin.py:1414 +msgid "Add new user" msgstr "" -#: cps/admin.py:1017 +#: cps/admin.py:1293 #, python-format msgid "User '%(user)s' created" msgstr "" -#: cps/admin.py:1031 +#: cps/admin.py:1299 +msgid "Found an existing account for this e-mail address or name." +msgstr "" + +#: cps/admin.py:1312 #, python-format msgid "User '%(nick)s' deleted" msgstr "" -#: cps/admin.py:1034 +#: cps/admin.py:1314 cps/admin.py:1315 +msgid "Can't delete Guest User" +msgstr "" + +#: cps/admin.py:1318 msgid "No admin user remaining, can't delete user" msgstr "" -#: cps/admin.py:1041 -#, python-format -msgid "User '%(nick)s' updated" -msgstr "" - -#: cps/admin.py:1044 -msgid "An unknown error occured." -msgstr "" - -#: cps/admin.py:1056 -msgid "No admin user remaining, can't remove admin role" -msgstr "" - -#: cps/admin.py:1092 cps/web.py:1554 -msgid "Found an existing account for this e-mail address." -msgstr "" - -#: cps/admin.py:1101 cps/admin.py:1115 cps/admin.py:1209 cps/web.py:1516 +#: cps/admin.py:1383 cps/admin.py:1504 #, python-format msgid "Edit User %(nick)s" msgstr "" -#: cps/admin.py:1107 cps/web.py:1509 -msgid "This username is already taken" +#: cps/admin.py:1387 +#, python-format +msgid "User '%(nick)s' updated" msgstr "" -#: cps/admin.py:1147 cps/templates/admin.html:78 +#: cps/admin.py:1391 +msgid "An unknown error occurred." +msgstr "" + +#: cps/admin.py:1423 cps/templates/admin.html:94 msgid "Edit E-mail Server Settings" msgstr "" -#: cps/admin.py:1175 +#: cps/admin.py:1442 +msgid "G-Mail Account Verification Successful" +msgstr "" + +#: cps/admin.py:1468 #, python-format msgid "Test e-mail queued for sending to %(email)s, please check Tasks for result" msgstr "" -#: cps/admin.py:1178 +#: cps/admin.py:1471 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "" -#: cps/admin.py:1180 +#: cps/admin.py:1473 msgid "Please configure your e-mail address first..." msgstr "" -#: cps/admin.py:1182 +#: cps/admin.py:1475 msgid "E-mail server settings updated" msgstr "" -#: cps/admin.py:1193 -msgid "User not found" -msgstr "" - -#: cps/admin.py:1220 +#: cps/admin.py:1516 #, python-format msgid "Password for user %(user)s reset" msgstr "" -#: cps/admin.py:1223 cps/web.py:1388 cps/web.py:1452 +#: cps/admin.py:1519 cps/web.py:1442 cps/web.py:1503 msgid "An unknown error occurred. Please try again later." msgstr "" -#: cps/admin.py:1226 cps/web.py:1320 +#: cps/admin.py:1522 cps/web.py:1382 msgid "Please configure the SMTP mail settings first..." msgstr "" -#: cps/admin.py:1237 +#: cps/admin.py:1533 msgid "Logfile viewer" msgstr "" -#: cps/admin.py:1303 +#: cps/admin.py:1599 msgid "Requesting update package" msgstr "" -#: cps/admin.py:1304 +#: cps/admin.py:1600 msgid "Downloading update package" msgstr "" -#: cps/admin.py:1305 +#: cps/admin.py:1601 msgid "Unzipping update package" msgstr "" -#: cps/admin.py:1306 +#: cps/admin.py:1602 msgid "Replacing files" msgstr "" -#: cps/admin.py:1307 +#: cps/admin.py:1603 msgid "Database connections are closed" msgstr "" -#: cps/admin.py:1308 +#: cps/admin.py:1604 msgid "Stopping server" msgstr "" -#: cps/admin.py:1309 +#: cps/admin.py:1605 msgid "Update finished, please press okay and reload page" msgstr "" -#: cps/admin.py:1310 cps/admin.py:1311 cps/admin.py:1312 cps/admin.py:1313 -#: cps/admin.py:1314 +#: cps/admin.py:1606 cps/admin.py:1607 cps/admin.py:1608 cps/admin.py:1609 +#: cps/admin.py:1610 msgid "Update failed:" msgstr "" -#: cps/admin.py:1310 cps/updater.py:337 cps/updater.py:532 cps/updater.py:534 +#: cps/admin.py:1606 cps/updater.py:356 cps/updater.py:566 cps/updater.py:568 msgid "HTTP Error" msgstr "" -#: cps/admin.py:1311 cps/updater.py:339 cps/updater.py:536 +#: cps/admin.py:1607 cps/updater.py:358 cps/updater.py:570 msgid "Connection error" msgstr "" -#: cps/admin.py:1312 cps/updater.py:341 cps/updater.py:538 +#: cps/admin.py:1608 cps/updater.py:360 cps/updater.py:572 msgid "Timeout while establishing connection" msgstr "" -#: cps/admin.py:1313 cps/updater.py:343 cps/updater.py:540 +#: cps/admin.py:1609 cps/updater.py:362 cps/updater.py:574 msgid "General error" msgstr "" -#: cps/admin.py:1314 +#: cps/admin.py:1610 msgid "Update File Could Not be Saved in Temp Dir" msgstr "" -#: cps/admin.py:1376 +#: cps/admin.py:1671 msgid "Failed to Create at Least One LDAP User" msgstr "" -#: cps/admin.py:1389 +#: cps/admin.py:1684 #, python-format msgid "Error: %(ldaperror)s" msgstr "" -#: cps/admin.py:1393 +#: cps/admin.py:1688 msgid "Error: No user returned in response of LDAP server" msgstr "" -#: cps/admin.py:1426 +#: cps/admin.py:1721 msgid "At Least One LDAP User Not Found in Database" msgstr "" -#: cps/admin.py:1428 +#: cps/admin.py:1723 msgid "{} User Successfully Imported" msgstr "" @@ -344,98 +433,98 @@ msgstr "" msgid "Execution permissions missing" msgstr "" -#: cps/editbooks.py:267 cps/editbooks.py:269 +#: cps/editbooks.py:294 cps/editbooks.py:296 msgid "Book Format Successfully Deleted" msgstr "" -#: cps/editbooks.py:276 cps/editbooks.py:278 +#: cps/editbooks.py:303 cps/editbooks.py:305 msgid "Book Successfully Deleted" msgstr "" -#: cps/editbooks.py:325 cps/editbooks.py:646 cps/web.py:1598 cps/web.py:1634 -#: cps/web.py:1705 +#: cps/editbooks.py:361 cps/editbooks.py:724 cps/web.py:1627 cps/web.py:1663 +#: cps/web.py:1734 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "" -#: cps/editbooks.py:359 +#: cps/editbooks.py:395 msgid "edit metadata" msgstr "" -#: cps/editbooks.py:434 +#: cps/editbooks.py:473 #, python-format msgid "%(langname)s is not a valid language" msgstr "" -#: cps/editbooks.py:556 cps/editbooks.py:905 +#: cps/editbooks.py:595 cps/editbooks.py:936 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "" -#: cps/editbooks.py:560 cps/editbooks.py:909 +#: cps/editbooks.py:599 cps/editbooks.py:940 msgid "File to be uploaded must have an extension" msgstr "" -#: cps/editbooks.py:572 +#: cps/editbooks.py:611 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "" -#: cps/editbooks.py:577 +#: cps/editbooks.py:616 #, python-format msgid "Failed to store file %(file)s." msgstr "" -#: cps/editbooks.py:595 cps/editbooks.py:972 cps/web.py:1559 +#: cps/editbooks.py:634 cps/editbooks.py:1027 cps/web.py:1588 #, python-format msgid "Database error: %(error)s." msgstr "" -#: cps/editbooks.py:599 +#: cps/editbooks.py:638 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "" -#: cps/editbooks.py:726 +#: cps/editbooks.py:775 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:763 +#: cps/editbooks.py:807 msgid "Metadata successfully updated" msgstr "" -#: cps/editbooks.py:772 +#: cps/editbooks.py:816 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/editbooks.py:810 +#: cps/editbooks.py:854 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "" -#: cps/editbooks.py:917 +#: cps/editbooks.py:948 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "" -#: cps/editbooks.py:947 +#: cps/editbooks.py:967 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "" -#: cps/editbooks.py:958 +#: cps/editbooks.py:1013 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:984 +#: cps/editbooks.py:1039 msgid "Source or destination format for conversion missing" msgstr "" -#: cps/editbooks.py:992 +#: cps/editbooks.py:1047 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "" -#: cps/editbooks.py:996 +#: cps/editbooks.py:1051 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "" @@ -543,55 +632,67 @@ msgstr "" msgid "Book path %(path)s not found on Google Drive" msgstr "" -#: cps/helper.py:576 +#: cps/helper.py:511 +msgid "Found an existing account for this e-mail address" +msgstr "" + +#: cps/helper.py:519 +msgid "This username is already taken" +msgstr "" + +#: cps/helper.py:529 +msgid "Invalid e-mail address format" +msgstr "" + +#: cps/helper.py:602 msgid "Error Downloading Cover" msgstr "" -#: cps/helper.py:579 +#: cps/helper.py:605 msgid "Cover Format Error" msgstr "" -#: cps/helper.py:589 +#: cps/helper.py:615 msgid "Failed to create path for cover" msgstr "" -#: cps/helper.py:605 +#: cps/helper.py:631 msgid "Cover-file is not a valid image file, or could not be stored" msgstr "" -#: cps/helper.py:616 +#: cps/helper.py:642 msgid "Only jpg/jpeg/png/webp/bmp files are supported as coverfile" msgstr "" -#: cps/helper.py:629 +#: cps/helper.py:655 msgid "Only jpg/jpeg files are supported as coverfile" msgstr "" -#: cps/helper.py:680 +#: cps/helper.py:707 msgid "Unrar binary file not found" msgstr "" -#: cps/helper.py:694 +#: cps/helper.py:721 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:743 +#: cps/helper.py:769 msgid "Waiting" msgstr "" -#: cps/helper.py:745 +#: cps/helper.py:771 msgid "Failed" msgstr "" -#: cps/helper.py:747 +#: cps/helper.py:773 msgid "Started" msgstr "" -#: cps/helper.py:749 +#: cps/helper.py:775 msgid "Finished" msgstr "" -#: cps/helper.py:751 +#: cps/helper.py:777 msgid "Unknown Status" msgstr "" @@ -603,65 +704,82 @@ msgstr "" msgid "Kobo Setup" msgstr "" -#: cps/oauth_bb.py:76 +#: cps/oauth_bb.py:78 #, python-format msgid "Register with %(provider)s" msgstr "" -#: cps/oauth_bb.py:137 cps/remotelogin.py:133 cps/web.py:1424 +#: cps/oauth_bb.py:139 cps/remotelogin.py:133 cps/web.py:1475 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "" -#: cps/oauth_bb.py:147 +#: cps/oauth_bb.py:149 #, python-format msgid "Link to %(oauth)s Succeeded" msgstr "" -#: cps/oauth_bb.py:153 +#: cps/oauth_bb.py:156 msgid "Login failed, No User Linked With OAuth Account" msgstr "" -#: cps/oauth_bb.py:195 +#: cps/oauth_bb.py:198 #, python-format msgid "Unlink to %(oauth)s Succeeded" msgstr "" -#: cps/oauth_bb.py:199 +#: cps/oauth_bb.py:203 #, python-format msgid "Unlink to %(oauth)s Failed" msgstr "" -#: cps/oauth_bb.py:202 +#: cps/oauth_bb.py:206 #, python-format msgid "Not Linked to %(oauth)s" msgstr "" -#: cps/oauth_bb.py:259 +#: cps/oauth_bb.py:262 msgid "Failed to log in with GitHub." msgstr "" -#: cps/oauth_bb.py:264 +#: cps/oauth_bb.py:268 msgid "Failed to fetch user info from GitHub." msgstr "" -#: cps/oauth_bb.py:275 +#: cps/oauth_bb.py:280 msgid "Failed to log in with Google." msgstr "" -#: cps/oauth_bb.py:280 +#: cps/oauth_bb.py:286 msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:312 +#: cps/oauth_bb.py:333 msgid "GitHub Oauth error, please retry later." msgstr "" -#: cps/oauth_bb.py:331 +#: cps/oauth_bb.py:336 +msgid "GitHub Oauth error: {}" +msgstr "" + +#: cps/oauth_bb.py:357 msgid "Google Oauth error, please retry later." msgstr "" -#: cps/remotelogin.py:65 cps/web.py:1471 +#: cps/oauth_bb.py:360 +msgid "Google Oauth error: {}" +msgstr "" + +#: cps/opds.py:110 cps/opds.py:199 cps/opds.py:276 cps/opds.py:328 +#: cps/templates/grid.html:14 cps/templates/list.html:14 +msgid "All" +msgstr "" + +#: cps/opds.py:385 +msgid "{} Stars" +msgstr "" + +#: cps/remotelogin.py:65 cps/web.py:1522 msgid "login" msgstr "" @@ -677,7 +795,7 @@ msgstr "" msgid "Success! Please return to your device" msgstr "" -#: cps/render_template.py:39 cps/web.py:415 +#: cps/render_template.py:39 cps/web.py:414 msgid "Books" msgstr "" @@ -685,7 +803,7 @@ msgstr "" msgid "Show recent books" msgstr "" -#: cps/render_template.py:42 cps/templates/index.xml:18 +#: cps/render_template.py:42 cps/templates/index.xml:25 msgid "Hot Books" msgstr "" @@ -693,127 +811,130 @@ msgstr "" msgid "Show Hot Books" msgstr "" -#: cps/render_template.py:45 +#: cps/render_template.py:46 cps/render_template.py:51 msgid "Downloaded Books" msgstr "" -#: cps/render_template.py:47 +#: cps/render_template.py:48 cps/render_template.py:53 +#: cps/templates/user_table.html:151 msgid "Show Downloaded Books" msgstr "" -#: cps/render_template.py:50 cps/templates/index.xml:25 cps/web.py:425 +#: cps/render_template.py:56 cps/templates/index.xml:32 cps/web.py:424 msgid "Top Rated Books" msgstr "" -#: cps/render_template.py:52 +#: cps/render_template.py:58 cps/templates/user_table.html:145 msgid "Show Top Rated Books" msgstr "" -#: cps/render_template.py:53 cps/templates/index.xml:47 -#: cps/templates/index.xml:51 cps/web.py:642 +#: cps/render_template.py:59 cps/templates/index.xml:54 +#: cps/templates/index.xml:58 cps/web.py:650 msgid "Read Books" msgstr "" -#: cps/render_template.py:55 +#: cps/render_template.py:61 msgid "Show read and unread" msgstr "" -#: cps/render_template.py:57 cps/templates/index.xml:54 -#: cps/templates/index.xml:58 cps/web.py:645 +#: cps/render_template.py:63 cps/templates/index.xml:61 +#: cps/templates/index.xml:65 cps/web.py:653 msgid "Unread Books" msgstr "" -#: cps/render_template.py:59 +#: cps/render_template.py:65 msgid "Show unread" msgstr "" -#: cps/render_template.py:60 +#: cps/render_template.py:66 msgid "Discover" msgstr "" -#: cps/render_template.py:62 +#: cps/render_template.py:68 cps/templates/user_table.html:143 +#: cps/templates/user_table.html:146 msgid "Show random books" msgstr "" -#: cps/render_template.py:63 cps/templates/book_table.html:50 -#: cps/templates/index.xml:76 cps/web.py:950 +#: cps/render_template.py:69 cps/templates/book_table.html:51 +#: cps/templates/index.xml:83 cps/web.py:1024 msgid "Categories" msgstr "" -#: cps/render_template.py:65 +#: cps/render_template.py:71 cps/templates/user_table.html:142 msgid "Show category selection" msgstr "" -#: cps/render_template.py:66 cps/templates/book_edit.html:84 -#: cps/templates/book_table.html:51 cps/templates/index.xml:83 -#: cps/templates/search_form.html:62 cps/web.py:854 cps/web.py:864 +#: cps/render_template.py:72 cps/templates/book_edit.html:84 +#: cps/templates/book_table.html:52 cps/templates/index.xml:90 +#: cps/templates/search_form.html:62 cps/web.py:921 cps/web.py:931 msgid "Series" msgstr "" -#: cps/render_template.py:68 +#: cps/render_template.py:74 cps/templates/user_table.html:141 msgid "Show series selection" msgstr "" -#: cps/render_template.py:69 cps/templates/book_table.html:49 -#: cps/templates/index.xml:62 +#: cps/render_template.py:75 cps/templates/book_table.html:50 +#: cps/templates/index.xml:69 msgid "Authors" msgstr "" -#: cps/render_template.py:71 +#: cps/render_template.py:77 cps/templates/user_table.html:144 msgid "Show author selection" msgstr "" -#: cps/render_template.py:73 cps/templates/book_table.html:55 -#: cps/templates/index.xml:69 cps/web.py:833 +#: cps/render_template.py:79 cps/templates/book_table.html:56 +#: cps/templates/index.xml:76 cps/web.py:898 msgid "Publishers" msgstr "" -#: cps/render_template.py:75 +#: cps/render_template.py:81 cps/templates/user_table.html:147 msgid "Show publisher selection" msgstr "" -#: cps/render_template.py:76 cps/templates/book_table.html:53 -#: cps/templates/index.xml:90 cps/templates/search_form.html:100 cps/web.py:929 +#: cps/render_template.py:82 cps/templates/book_table.html:54 +#: cps/templates/index.xml:97 cps/templates/search_form.html:100 +#: cps/web.py:1001 msgid "Languages" msgstr "" -#: cps/render_template.py:79 +#: cps/render_template.py:85 cps/templates/user_table.html:139 msgid "Show language selection" msgstr "" -#: cps/render_template.py:80 cps/templates/index.xml:97 +#: cps/render_template.py:86 cps/templates/index.xml:104 msgid "Ratings" msgstr "" -#: cps/render_template.py:82 +#: cps/render_template.py:88 cps/templates/user_table.html:148 msgid "Show ratings selection" msgstr "" -#: cps/render_template.py:83 cps/templates/index.xml:105 +#: cps/render_template.py:89 cps/templates/index.xml:112 msgid "File formats" msgstr "" -#: cps/render_template.py:85 +#: cps/render_template.py:91 cps/templates/user_table.html:149 msgid "Show file formats selection" msgstr "" -#: cps/render_template.py:87 cps/web.py:669 +#: cps/render_template.py:93 cps/web.py:677 msgid "Archived Books" msgstr "" -#: cps/render_template.py:89 +#: cps/render_template.py:95 cps/templates/user_table.html:150 msgid "Show archived books" msgstr "" -#: cps/render_template.py:91 cps/web.py:743 +#: cps/render_template.py:97 cps/web.py:751 msgid "Books List" msgstr "" -#: cps/render_template.py:93 +#: cps/render_template.py:99 cps/templates/user_table.html:152 msgid "Show Books List" msgstr "" -#: cps/shelf.py:69 cps/shelf.py:122 +#: cps/shelf.py:69 cps/shelf.py:124 msgid "Invalid shelf specified" msgstr "" @@ -827,303 +948,307 @@ msgstr "" msgid "Book is already part of the shelf: %(shelfname)s" msgstr "" -#: cps/shelf.py:108 +#: cps/shelf.py:110 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "" -#: cps/shelf.py:126 +#: cps/shelf.py:129 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "" -#: cps/shelf.py:144 +#: cps/shelf.py:147 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "" -#: cps/shelf.py:156 +#: cps/shelf.py:159 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "" -#: cps/shelf.py:161 +#: cps/shelf.py:166 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "" -#: cps/shelf.py:206 +#: cps/shelf.py:212 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "" -#: cps/shelf.py:214 +#: cps/shelf.py:221 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" -#: cps/shelf.py:224 cps/templates/layout.html:140 +#: cps/shelf.py:231 cps/templates/layout.html:140 msgid "Create a Shelf" msgstr "" -#: cps/shelf.py:231 +#: cps/shelf.py:238 msgid "Edit a shelf" msgstr "" -#: cps/shelf.py:249 +#: cps/shelf.py:256 #, python-format msgid "Shelf %(title)s created" msgstr "" -#: cps/shelf.py:252 +#: cps/shelf.py:259 #, python-format msgid "Shelf %(title)s changed" msgstr "" -#: cps/shelf.py:265 +#: cps/shelf.py:273 msgid "There was an error" msgstr "" -#: cps/shelf.py:281 +#: cps/shelf.py:290 #, python-format msgid "A public shelf with the name '%(title)s' already exists." msgstr "" -#: cps/shelf.py:291 +#: cps/shelf.py:301 #, python-format msgid "A private shelf with the name '%(title)s' already exists." msgstr "" -#: cps/shelf.py:358 +#: cps/shelf.py:370 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "" -#: cps/shelf.py:423 +#: cps/shelf.py:436 #, python-format msgid "Shelf: '%(name)s'" msgstr "" -#: cps/shelf.py:427 +#: cps/shelf.py:440 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "" -#: cps/updater.py:355 cps/updater.py:366 cps/updater.py:418 cps/updater.py:432 +#: cps/updater.py:374 cps/updater.py:385 cps/updater.py:485 cps/updater.py:500 msgid "Unexpected data while reading update information" msgstr "" -#: cps/updater.py:362 cps/updater.py:424 +#: cps/updater.py:381 cps/updater.py:492 msgid "No update available. You already have the latest version installed" msgstr "" -#: cps/updater.py:379 +#: cps/updater.py:399 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "" -#: cps/updater.py:397 +#: cps/updater.py:417 msgid "Could not fetch update information" msgstr "" -#: cps/updater.py:411 -msgid "No release information available" +#: cps/updater.py:427 +msgid "Click on the button below to update to the latest stable version." msgstr "" -#: cps/updater.py:468 cps/updater.py:479 cps/updater.py:498 +#: cps/updater.py:436 cps/updater.py:450 cps/updater.py:461 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "" -#: cps/updater.py:489 -msgid "Click on the button below to update to the latest stable version." +#: cps/updater.py:478 +msgid "No release information available" msgstr "" -#: cps/templates/index.html:5 cps/web.py:435 +#: cps/templates/index.html:5 cps/web.py:434 msgid "Discover (Random Books)" msgstr "" -#: cps/web.py:461 +#: cps/web.py:460 msgid "Hot Books (Most Downloaded)" msgstr "" -#: cps/web.py:489 +#: cps/web.py:493 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:503 +#: cps/web.py:508 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "" -#: cps/web.py:517 +#: cps/web.py:522 #, python-format msgid "Author: %(name)s" msgstr "" -#: cps/web.py:531 +#: cps/web.py:537 #, python-format msgid "Publisher: %(name)s" msgstr "" -#: cps/web.py:544 +#: cps/web.py:550 #, python-format msgid "Series: %(serie)s" msgstr "" -#: cps/web.py:557 +#: cps/web.py:563 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:570 +#: cps/web.py:576 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:584 +#: cps/web.py:592 #, python-format msgid "Category: %(name)s" msgstr "" -#: cps/web.py:603 +#: cps/web.py:611 #, python-format msgid "Language: %(name)s" msgstr "" -#: cps/web.py:633 +#: cps/web.py:641 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:703 cps/web.py:1248 +#: cps/templates/layout.html:56 cps/web.py:711 cps/web.py:1314 msgid "Advanced Search" msgstr "" #: cps/templates/book_edit.html:214 cps/templates/feed.xml:33 #: cps/templates/index.xml:11 cps/templates/layout.html:45 #: cps/templates/layout.html:48 cps/templates/search_form.html:194 -#: cps/web.py:715 cps/web.py:987 +#: cps/web.py:723 cps/web.py:1061 msgid "Search" msgstr "" -#: cps/web.py:882 +#: cps/templates/admin.html:16 cps/web.py:876 +msgid "Downloads" +msgstr "" + +#: cps/web.py:952 msgid "Ratings list" msgstr "" -#: cps/web.py:901 +#: cps/web.py:973 msgid "File formats list" msgstr "" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:964 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1038 msgid "Tasks" msgstr "" -#: cps/web.py:1108 +#: cps/web.py:1182 msgid "Published after " msgstr "" -#: cps/web.py:1115 +#: cps/web.py:1189 msgid "Published before " msgstr "" -#: cps/web.py:1145 +#: cps/web.py:1211 #, python-format msgid "Rating <= %(rating)s" msgstr "" -#: cps/web.py:1147 +#: cps/web.py:1213 #, python-format msgid "Rating >= %(rating)s" msgstr "" -#: cps/web.py:1149 +#: cps/web.py:1215 #, python-format msgid "Read Status = %(status)s" msgstr "" -#: cps/web.py:1325 +#: cps/web.py:1387 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "" -#: cps/web.py:1329 +#: cps/web.py:1391 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "" -#: cps/web.py:1331 +#: cps/web.py:1393 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "" -#: cps/web.py:1348 +#: cps/web.py:1410 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "" -#: cps/web.py:1349 cps/web.py:1359 cps/web.py:1366 cps/web.py:1389 -#: cps/web.py:1393 cps/web.py:1398 cps/web.py:1402 +#: cps/web.py:1411 cps/web.py:1418 cps/web.py:1424 cps/web.py:1443 +#: cps/web.py:1447 cps/web.py:1453 msgid "register" msgstr "" -#: cps/web.py:1364 -msgid "Invalid e-mail address format" -msgstr "" - -#: cps/web.py:1391 +#: cps/web.py:1445 msgid "Your e-mail is not allowed to register" msgstr "" -#: cps/web.py:1394 +#: cps/web.py:1448 msgid "Confirmation e-mail was send to your e-mail account." msgstr "" -#: cps/web.py:1397 -msgid "This username or e-mail address is already in use." -msgstr "" - -#: cps/web.py:1414 +#: cps/web.py:1465 msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1431 +#: cps/web.py:1482 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "" -#: cps/web.py:1437 +#: cps/web.py:1488 #, python-format msgid "Could not login: %(message)s" msgstr "" -#: cps/web.py:1441 cps/web.py:1465 +#: cps/web.py:1492 cps/web.py:1516 msgid "Wrong Username or Password" msgstr "" -#: cps/web.py:1448 +#: cps/web.py:1499 msgid "New Password was send to your email address" msgstr "" -#: cps/web.py:1454 +#: cps/web.py:1505 msgid "Please enter valid username to reset password" msgstr "" -#: cps/web.py:1460 +#: cps/web.py:1511 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "" -#: cps/web.py:1498 cps/web.py:1583 +#: cps/web.py:1565 cps/web.py:1612 #, python-format msgid "%(name)s's profile" msgstr "" -#: cps/web.py:1550 +#: cps/web.py:1579 msgid "Profile updated" msgstr "" -#: cps/web.py:1610 cps/web.py:1613 cps/web.py:1616 cps/web.py:1619 -#: cps/web.py:1626 cps/web.py:1631 +#: cps/web.py:1583 +msgid "Found an existing account for this e-mail address." +msgstr "" + +#: cps/web.py:1639 cps/web.py:1642 cps/web.py:1645 cps/web.py:1648 +#: cps/web.py:1655 cps/web.py:1660 msgid "Read a Book" msgstr "" +#: cps/services/gmail.py:41 +msgid "Found no valid gmail.json file with OAuth information" +msgstr "" + #: cps/tasks/convert.py:114 #, python-format msgid "Calibre ebook-convert %(tool)s not found" @@ -1162,221 +1287,231 @@ msgstr "" msgid "Users" msgstr "" -#: cps/templates/admin.html:12 cps/templates/login.html:8 +#: cps/templates/admin.html:13 cps/templates/login.html:8 #: cps/templates/login.html:9 cps/templates/register.html:8 -#: cps/templates/user_edit.html:9 +#: cps/templates/user_edit.html:9 cps/templates/user_table.html:121 msgid "Username" msgstr "" -#: cps/templates/admin.html:13 cps/templates/register.html:13 -#: cps/templates/user_edit.html:14 +#: cps/templates/admin.html:14 cps/templates/register.html:13 +#: cps/templates/user_edit.html:14 cps/templates/user_table.html:122 msgid "E-mail Address" msgstr "" -#: cps/templates/admin.html:14 cps/templates/user_edit.html:27 +#: cps/templates/admin.html:15 cps/templates/user_edit.html:27 msgid "Send to Kindle E-mail Address" msgstr "" -#: cps/templates/admin.html:15 -msgid "Downloads" -msgstr "" - -#: cps/templates/admin.html:16 cps/templates/layout.html:77 +#: cps/templates/admin.html:17 cps/templates/layout.html:77 +#: cps/templates/user_table.html:130 msgid "Admin" msgstr "" -#: cps/templates/admin.html:17 cps/templates/login.html:12 +#: cps/templates/admin.html:18 cps/templates/login.html:12 #: cps/templates/login.html:13 cps/templates/user_edit.html:22 msgid "Password" msgstr "" -#: cps/templates/admin.html:18 cps/templates/layout.html:66 +#: cps/templates/admin.html:19 cps/templates/layout.html:66 +#: cps/templates/user_table.html:132 msgid "Upload" msgstr "" -#: cps/templates/admin.html:19 cps/templates/detail.html:18 +#: cps/templates/admin.html:20 cps/templates/detail.html:18 #: cps/templates/detail.html:27 cps/templates/shelf.html:6 +#: cps/templates/user_table.html:133 msgid "Download" msgstr "" -#: cps/templates/admin.html:20 +#: cps/templates/admin.html:21 msgid "View Books" msgstr "" -#: cps/templates/admin.html:21 +#: cps/templates/admin.html:22 cps/templates/user_table.html:118 +#: cps/templates/user_table.html:135 msgid "Edit" msgstr "" -#: cps/templates/admin.html:22 cps/templates/book_edit.html:16 -#: cps/templates/book_table.html:57 cps/templates/modal_dialogs.html:63 +#: cps/templates/admin.html:23 cps/templates/book_edit.html:16 +#: cps/templates/book_table.html:58 cps/templates/modal_dialogs.html:63 #: cps/templates/modal_dialogs.html:116 cps/templates/user_edit.html:66 +#: cps/templates/user_table.html:136 msgid "Delete" msgstr "" -#: cps/templates/admin.html:23 +#: cps/templates/admin.html:24 msgid "Public Shelf" msgstr "" -#: cps/templates/admin.html:44 +#: cps/templates/admin.html:47 msgid "Add New User" msgstr "" -#: cps/templates/admin.html:46 +#: cps/templates/admin.html:49 msgid "Import LDAP Users" msgstr "" -#: cps/templates/admin.html:53 +#: cps/templates/admin.html:56 msgid "E-mail Server Settings" msgstr "" -#: cps/templates/admin.html:57 cps/templates/email_edit.html:11 +#: cps/templates/admin.html:61 cps/templates/email_edit.html:30 msgid "SMTP Hostname" msgstr "" -#: cps/templates/admin.html:61 cps/templates/email_edit.html:15 +#: cps/templates/admin.html:65 cps/templates/email_edit.html:34 msgid "SMTP Port" msgstr "" -#: cps/templates/admin.html:65 cps/templates/email_edit.html:19 +#: cps/templates/admin.html:69 cps/templates/email_edit.html:38 msgid "Encryption" msgstr "" -#: cps/templates/admin.html:69 cps/templates/email_edit.html:27 +#: cps/templates/admin.html:73 cps/templates/email_edit.html:46 msgid "SMTP Login" msgstr "" -#: cps/templates/admin.html:73 cps/templates/email_edit.html:35 +#: cps/templates/admin.html:77 cps/templates/admin.html:88 +#: cps/templates/email_edit.html:54 msgid "From E-mail" msgstr "" #: cps/templates/admin.html:84 -msgid "Configuration" +msgid "E-Mail Service" msgstr "" -#: cps/templates/admin.html:87 -msgid "Calibre Database Directory" -msgstr "" - -#: cps/templates/admin.html:91 cps/templates/config_edit.html:136 -msgid "Log Level" -msgstr "" - -#: cps/templates/admin.html:95 -msgid "Port" +#: cps/templates/admin.html:85 +msgid "Gmail via Oauth2" msgstr "" #: cps/templates/admin.html:100 -msgid "External Port" +msgid "Configuration" msgstr "" -#: cps/templates/admin.html:107 cps/templates/config_view_edit.html:27 -msgid "Books per Page" +#: cps/templates/admin.html:103 +msgid "Calibre Database Directory" +msgstr "" + +#: cps/templates/admin.html:107 cps/templates/config_edit.html:136 +msgid "Log Level" msgstr "" #: cps/templates/admin.html:111 -msgid "Uploads" +msgid "Port" msgstr "" -#: cps/templates/admin.html:115 -msgid "Anonymous Browsing" +#: cps/templates/admin.html:116 +msgid "External Port" msgstr "" -#: cps/templates/admin.html:119 -msgid "Public Registration" -msgstr "" - -#: cps/templates/admin.html:123 -msgid "Magic Link Remote Login" +#: cps/templates/admin.html:123 cps/templates/config_view_edit.html:27 +msgid "Books per Page" msgstr "" #: cps/templates/admin.html:127 -msgid "Reverse Proxy Login" +msgid "Uploads" msgstr "" -#: cps/templates/admin.html:132 -msgid "Reverse proxy header name" +#: cps/templates/admin.html:131 +msgid "Anonymous Browsing" msgstr "" -#: cps/templates/admin.html:137 -msgid "Edit Basic Configuration" +#: cps/templates/admin.html:135 +msgid "Public Registration" msgstr "" -#: cps/templates/admin.html:138 -msgid "Edit UI Configuration" +#: cps/templates/admin.html:139 +msgid "Magic Link Remote Login" msgstr "" #: cps/templates/admin.html:143 -msgid "Administration" -msgstr "" - -#: cps/templates/admin.html:144 -msgid "Download Debug Package" -msgstr "" - -#: cps/templates/admin.html:145 -msgid "View Logs" +msgid "Reverse Proxy Login" msgstr "" #: cps/templates/admin.html:148 -msgid "Reconnect Calibre Database" +msgid "Reverse proxy header name" msgstr "" -#: cps/templates/admin.html:149 -msgid "Restart" +#: cps/templates/admin.html:153 +msgid "Edit Basic Configuration" msgstr "" -#: cps/templates/admin.html:150 -msgid "Shutdown" -msgstr "" - -#: cps/templates/admin.html:155 -msgid "Update" +#: cps/templates/admin.html:154 +msgid "Edit UI Configuration" msgstr "" #: cps/templates/admin.html:159 -msgid "Version" +msgid "Administration" msgstr "" #: cps/templates/admin.html:160 -msgid "Details" +msgid "Download Debug Package" +msgstr "" + +#: cps/templates/admin.html:161 +msgid "View Logs" +msgstr "" + +#: cps/templates/admin.html:164 +msgid "Reconnect Calibre Database" +msgstr "" + +#: cps/templates/admin.html:165 +msgid "Restart" msgstr "" #: cps/templates/admin.html:166 +msgid "Shutdown" +msgstr "" + +#: cps/templates/admin.html:171 +msgid "Update" +msgstr "" + +#: cps/templates/admin.html:175 +msgid "Version" +msgstr "" + +#: cps/templates/admin.html:176 +msgid "Details" +msgstr "" + +#: cps/templates/admin.html:182 msgid "Current version" msgstr "" -#: cps/templates/admin.html:173 +#: cps/templates/admin.html:189 msgid "Check for Update" msgstr "" -#: cps/templates/admin.html:174 +#: cps/templates/admin.html:190 msgid "Perform Update" msgstr "" -#: cps/templates/admin.html:187 +#: cps/templates/admin.html:203 msgid "Are you sure you want to restart?" msgstr "" -#: cps/templates/admin.html:192 cps/templates/admin.html:206 -#: cps/templates/admin.html:226 cps/templates/shelf.html:95 +#: cps/templates/admin.html:208 cps/templates/admin.html:222 +#: cps/templates/admin.html:242 cps/templates/shelf.html:95 msgid "OK" msgstr "" -#: cps/templates/admin.html:193 cps/templates/admin.html:207 -#: cps/templates/book_edit.html:192 cps/templates/book_table.html:84 +#: cps/templates/admin.html:209 cps/templates/admin.html:223 +#: cps/templates/book_edit.html:192 cps/templates/book_table.html:85 #: cps/templates/config_edit.html:427 cps/templates/config_view_edit.html:151 -#: cps/templates/email_edit.html:47 cps/templates/modal_dialogs.html:64 -#: cps/templates/modal_dialogs.html:99 cps/templates/modal_dialogs.html:117 +#: cps/templates/modal_dialogs.html:64 cps/templates/modal_dialogs.html:99 +#: cps/templates/modal_dialogs.html:117 cps/templates/modal_dialogs.html:135 #: cps/templates/shelf.html:96 cps/templates/shelf_edit.html:19 #: cps/templates/user_edit.html:132 msgid "Cancel" msgstr "" -#: cps/templates/admin.html:205 +#: cps/templates/admin.html:221 msgid "Are you sure you want to shutdown?" msgstr "" -#: cps/templates/admin.html:217 +#: cps/templates/admin.html:233 msgid "Updating, please do not reload this page" msgstr "" @@ -1484,6 +1619,7 @@ msgid "Identifier Value" msgstr "" #: cps/templates/book_edit.html:72 cps/templates/book_edit.html:289 +#: cps/templates/user_table.html:23 msgid "Remove" msgstr "" @@ -1549,7 +1685,7 @@ msgid "Fetch Metadata" msgstr "" #: cps/templates/book_edit.html:191 cps/templates/config_edit.html:424 -#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45 +#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:64 #: cps/templates/shelf_edit.html:17 cps/templates/shelf_order.html:40 #: cps/templates/user_edit.html:130 msgid "Save" @@ -1589,96 +1725,98 @@ msgstr "" msgid "No Result(s) found! Please try another keyword." msgstr "" -#: cps/templates/book_table.html:10 cps/templates/book_table.html:52 +#: cps/templates/book_table.html:11 cps/templates/book_table.html:53 +#: cps/templates/user_table.html:13 cps/templates/user_table.html:65 +#: cps/templates/user_table.html:88 msgid "This Field is Required" msgstr "" -#: cps/templates/book_table.html:23 +#: cps/templates/book_table.html:24 msgid "Merge selected books" msgstr "" -#: cps/templates/book_table.html:24 +#: cps/templates/book_table.html:25 cps/templates/user_table.html:111 msgid "Remove Selections" msgstr "" -#: cps/templates/book_table.html:30 +#: cps/templates/book_table.html:31 msgid "Update Title Sort automatically" msgstr "" -#: cps/templates/book_table.html:34 +#: cps/templates/book_table.html:35 msgid "Update Author Sort automatically" msgstr "" -#: cps/templates/book_table.html:46 +#: cps/templates/book_table.html:47 msgid "Enter Title" msgstr "" -#: cps/templates/book_table.html:46 cps/templates/config_view_edit.html:23 +#: cps/templates/book_table.html:47 cps/templates/config_view_edit.html:23 #: cps/templates/shelf_edit.html:7 msgid "Title" msgstr "" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Enter Title Sort" msgstr "" -#: cps/templates/book_table.html:47 +#: cps/templates/book_table.html:48 msgid "Title Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Enter Author Sort" msgstr "" -#: cps/templates/book_table.html:48 +#: cps/templates/book_table.html:49 msgid "Author Sort" msgstr "" -#: cps/templates/book_table.html:49 +#: cps/templates/book_table.html:50 msgid "Enter Authors" msgstr "" -#: cps/templates/book_table.html:50 +#: cps/templates/book_table.html:51 msgid "Enter Categories" msgstr "" -#: cps/templates/book_table.html:51 +#: cps/templates/book_table.html:52 msgid "Enter Series" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Enter title" msgstr "" -#: cps/templates/book_table.html:52 +#: cps/templates/book_table.html:53 msgid "Series Index" msgstr "" -#: cps/templates/book_table.html:53 +#: cps/templates/book_table.html:54 msgid "Enter Languages" msgstr "" -#: cps/templates/book_table.html:54 +#: cps/templates/book_table.html:55 msgid "Publishing Date" msgstr "" -#: cps/templates/book_table.html:55 +#: cps/templates/book_table.html:56 msgid "Enter Publishers" msgstr "" -#: cps/templates/book_table.html:70 cps/templates/modal_dialogs.html:46 +#: cps/templates/book_table.html:71 cps/templates/modal_dialogs.html:46 msgid "Are you really sure?" msgstr "" -#: cps/templates/book_table.html:74 +#: cps/templates/book_table.html:75 msgid "Books with Title will be merged from:" msgstr "" -#: cps/templates/book_table.html:78 +#: cps/templates/book_table.html:79 msgid "Into Book with Title:" msgstr "" -#: cps/templates/book_table.html:83 +#: cps/templates/book_table.html:84 msgid "Merge" msgstr "" @@ -1863,7 +2001,7 @@ msgid "LDAP Encryption" msgstr "" #: cps/templates/config_edit.html:268 cps/templates/config_view_edit.html:61 -#: cps/templates/email_edit.html:21 +#: cps/templates/email_edit.html:40 msgid "None" msgstr "" @@ -2076,6 +2214,7 @@ msgid "Default Visibilities for New Users" msgstr "" #: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82 +#: cps/templates/user_table.html:138 msgid "Show Random Books in Detail View" msgstr "" @@ -2149,43 +2288,69 @@ msgstr "" msgid "Edit Metadata" msgstr "" -#: cps/templates/email_edit.html:22 -msgid "STARTTLS" +#: cps/templates/email_edit.html:12 +msgid "Choose Server Type" +msgstr "" + +#: cps/templates/email_edit.html:14 +msgid "Use Standard E-Mail Account" +msgstr "" + +#: cps/templates/email_edit.html:15 +msgid "Gmail Account with OAuth2 Verfification" +msgstr "" + +#: cps/templates/email_edit.html:21 +msgid "Setup Gmail Account as E-Mail Server" msgstr "" #: cps/templates/email_edit.html:23 +msgid "Revoke Gmail Access" +msgstr "" + +#: cps/templates/email_edit.html:41 +msgid "STARTTLS" +msgstr "" + +#: cps/templates/email_edit.html:42 msgid "SSL/TLS" msgstr "" -#: cps/templates/email_edit.html:31 +#: cps/templates/email_edit.html:50 msgid "SMTP Password" msgstr "" -#: cps/templates/email_edit.html:38 +#: cps/templates/email_edit.html:57 msgid "Attachment Size Limit" msgstr "" -#: cps/templates/email_edit.html:46 +#: cps/templates/email_edit.html:65 msgid "Save and Send Test E-mail" msgstr "" -#: cps/templates/email_edit.html:51 +#: cps/templates/email_edit.html:69 cps/templates/layout.html:29 +#: cps/templates/shelf_order.html:41 cps/templates/user_table.html:158 +msgid "Back" +msgstr "" + +#: cps/templates/email_edit.html:73 msgid "Allowed Domains (Whitelist)" msgstr "" -#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80 +#: cps/templates/email_edit.html:76 cps/templates/email_edit.html:102 msgid "Add Domain" msgstr "" -#: cps/templates/email_edit.html:57 cps/templates/email_edit.html:83 +#: cps/templates/email_edit.html:79 cps/templates/email_edit.html:105 +#: cps/templates/user_table.html:26 msgid "Add" msgstr "" -#: cps/templates/email_edit.html:62 cps/templates/email_edit.html:72 +#: cps/templates/email_edit.html:84 cps/templates/email_edit.html:94 msgid "Enter domainname" msgstr "" -#: cps/templates/email_edit.html:68 +#: cps/templates/email_edit.html:90 msgid "Denied Domains (Blacklist)" msgstr "" @@ -2197,10 +2362,6 @@ msgstr "" msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):" msgstr "" -#: cps/templates/grid.html:14 cps/templates/list.html:14 -msgid "All" -msgstr "" - #: cps/templates/http_error.html:38 msgid "Create Issue" msgstr "" @@ -2231,64 +2392,72 @@ msgstr "" msgid "Start" msgstr "" +#: cps/templates/index.xml:18 +msgid "Alphabetical Books" +msgstr "" + #: cps/templates/index.xml:22 -msgid "Popular publications from this catalog based on Downloads." +msgid "Books sorted alphabetically" msgstr "" #: cps/templates/index.xml:29 -msgid "Popular publications from this catalog based on Rating." -msgstr "" - -#: cps/templates/index.xml:32 -msgid "Recently added Books" +msgid "Popular publications from this catalog based on Downloads." msgstr "" #: cps/templates/index.xml:36 -msgid "The latest Books" +msgid "Popular publications from this catalog based on Rating." msgstr "" #: cps/templates/index.xml:39 -msgid "Random Books" +msgid "Recently added Books" msgstr "" #: cps/templates/index.xml:43 +msgid "The latest Books" +msgstr "" + +#: cps/templates/index.xml:46 +msgid "Random Books" +msgstr "" + +#: cps/templates/index.xml:50 msgid "Show Random Books" msgstr "" -#: cps/templates/index.xml:66 +#: cps/templates/index.xml:73 msgid "Books ordered by Author" msgstr "" -#: cps/templates/index.xml:73 +#: cps/templates/index.xml:80 msgid "Books ordered by publisher" msgstr "" -#: cps/templates/index.xml:80 +#: cps/templates/index.xml:87 msgid "Books ordered by category" msgstr "" -#: cps/templates/index.xml:87 +#: cps/templates/index.xml:94 msgid "Books ordered by series" msgstr "" -#: cps/templates/index.xml:94 +#: cps/templates/index.xml:101 msgid "Books ordered by Languages" msgstr "" -#: cps/templates/index.xml:101 +#: cps/templates/index.xml:108 msgid "Books ordered by Rating" msgstr "" -#: cps/templates/index.xml:109 +#: cps/templates/index.xml:116 msgid "Books ordered by file formats" msgstr "" -#: cps/templates/index.xml:112 cps/templates/layout.html:135 +#: cps/templates/index.xml:119 cps/templates/layout.html:135 #: cps/templates/search_form.html:80 msgid "Shelves" msgstr "" -#: cps/templates/index.xml:116 +#: cps/templates/index.xml:123 msgid "Books organized in shelves" msgstr "" @@ -2296,10 +2465,6 @@ msgstr "" msgid "Home" msgstr "" -#: cps/templates/layout.html:29 cps/templates/shelf_order.html:41 -msgid "Back" -msgstr "" - #: cps/templates/layout.html:35 msgid "Toggle Navigation" msgstr "" @@ -2461,6 +2626,10 @@ msgstr "" msgid "Select" msgstr "" +#: cps/templates/modal_dialogs.html:134 +msgid "Ok" +msgstr "" + #: cps/templates/osd.xml:5 msgid "Calibre-Web eBook Catalog" msgstr "" @@ -2765,10 +2934,6 @@ msgstr "" msgid "Language of Books" msgstr "" -#: cps/templates/user_edit.html:44 -msgid "Show All" -msgstr "" - #: cps/templates/user_edit.html:53 msgid "OAuth Settings" msgstr "" @@ -2793,7 +2958,7 @@ msgstr "" msgid "Add allowed/Denied Custom Column Values" msgstr "" -#: cps/templates/user_edit.html:135 +#: cps/templates/user_edit.html:135 cps/templates/user_table.html:153 msgid "Delete User" msgstr "" @@ -2801,3 +2966,83 @@ msgstr "" msgid "Generate Kobo Auth URL" msgstr "" +#: cps/templates/user_table.html:68 cps/templates/user_table.html:91 +msgid "Select..." +msgstr "" + +#: cps/templates/user_table.html:118 +msgid "Edit User" +msgstr "" + +#: cps/templates/user_table.html:121 +msgid "Enter Username" +msgstr "" + +#: cps/templates/user_table.html:122 +msgid "Enter E-mail Address" +msgstr "" + +#: cps/templates/user_table.html:123 +msgid "Enter Kindle E-mail Address" +msgstr "" + +#: cps/templates/user_table.html:123 +msgid "Kindle E-mail" +msgstr "" + +#: cps/templates/user_table.html:124 +msgid "Locale" +msgstr "" + +#: cps/templates/user_table.html:125 +msgid "Visible Book Languages" +msgstr "" + +#: cps/templates/user_table.html:126 +msgid "Edit Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:126 +msgid "Denied Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +msgid "Edit Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:127 +msgid "Allowed Tags" +msgstr "" + +#: cps/templates/user_table.html:128 +msgid "Edit Allowed Column Values" +msgstr "" + +#: cps/templates/user_table.html:128 +msgid "Allowed Column Values" +msgstr "" + +#: cps/templates/user_table.html:129 +msgid "Edit Denied Column Values" +msgstr "" + +#: cps/templates/user_table.html:129 +msgid "Denied Columns Values" +msgstr "" + +#: cps/templates/user_table.html:131 +msgid "Change Password" +msgstr "" + +#: cps/templates/user_table.html:134 +msgid "View" +msgstr "" + +#: cps/templates/user_table.html:137 +msgid "Edit Public Shelfs" +msgstr "" + +#: cps/templates/user_table.html:140 +msgid "Show read/unread selection" +msgstr "" + diff --git a/optional-requirements.txt b/optional-requirements.txt index b6fee806..eb67f59b 100644 --- a/optional-requirements.txt +++ b/optional-requirements.txt @@ -26,8 +26,8 @@ python-ldap>=3.0.0,<3.4.0 Flask-SimpleLDAP>=1.4.0,<1.5.0 #oauth -Flask-Dance>=1.4.0,<3.1.0 -SQLAlchemy-Utils>=0.33.5,<0.37.0 +Flask-Dance>=1.4.0,<4.1.0 +SQLAlchemy-Utils>=0.33.5,<0.38.0 # extracting metadata lxml>=3.8.0,<4.7.0 diff --git a/test/Calibre-Web TestSummary_Linux.html b/test/Calibre-Web TestSummary_Linux.html index 2d41ea3a..bb999140 100644 --- a/test/Calibre-Web TestSummary_Linux.html +++ b/test/Calibre-Web TestSummary_Linux.html @@ -37,20 +37,20 @@
-

Start Time: 2021-04-05 18:59:35

+

Start Time: 2021-04-27 20:06:09

-

Stop Time: 2021-04-05 21:34:25

+

Stop Time: 2021-04-27 23:04:55

-

Duration: 2h 5 min

+

Duration: 2h 24 min

@@ -234,13 +234,13 @@ - + TestCli 8 - 7 + 8 + 0 0 0 - 1 Detail @@ -268,7 +268,7 @@ -
TestCli - test_cli_SSL_files
+
TestCli - test_change_password
PASS @@ -277,7 +277,7 @@ -
TestCli - test_cli_different_folder
+
TestCli - test_cli_SSL_files
PASS @@ -286,35 +286,18 @@ -
TestCli - test_cli_different_settings_database
+
TestCli - test_cli_different_folder
PASS - + -
TestCli - test_cli_gdrive_location
- - -
- SKIP -
- - - +
TestCli - test_cli_different_settings_database
+ PASS @@ -338,6 +321,39 @@ + + TestCliGdrivedb + 2 + 2 + 0 + 0 + 0 + + Detail + + + + + + + +
TestCliGdrivedb - test_cli_gdrive_location
+ + PASS + + + + + + +
TestCliGdrivedb - test_gdrive_db_nonwrite
+ + PASS + + + + + TestCoverEditBooks 1 @@ -346,13 +362,13 @@ 0 0 - Detail + Detail - +
TestCoverEditBooks - test_upload_jpg
@@ -370,13 +386,13 @@ 0 0 - Detail + Detail - +
TestDeleteDatabase - test_delete_books_in_database
@@ -394,13 +410,13 @@ 0 0 - Detail + Detail - +
TestEbookConvertCalibre - test_convert_deactivate
@@ -409,7 +425,7 @@ - +
TestEbookConvertCalibre - test_convert_email
@@ -418,7 +434,7 @@ - +
TestEbookConvertCalibre - test_convert_failed_and_email
@@ -427,7 +443,7 @@ - +
TestEbookConvertCalibre - test_convert_only
@@ -436,7 +452,7 @@ - +
TestEbookConvertCalibre - test_convert_parameter
@@ -445,7 +461,7 @@ - +
TestEbookConvertCalibre - test_convert_wrong_excecutable
@@ -454,7 +470,7 @@ - +
TestEbookConvertCalibre - test_email_failed
@@ -463,7 +479,7 @@ - +
TestEbookConvertCalibre - test_email_only
@@ -472,7 +488,7 @@ - +
TestEbookConvertCalibre - test_kindle_send_not_configured
@@ -481,7 +497,7 @@ - +
TestEbookConvertCalibre - test_ssl_smtp_setup_error
@@ -490,7 +506,7 @@ - +
TestEbookConvertCalibre - test_starttls_smtp_setup_error
@@ -508,13 +524,13 @@ 0 0 - Detail + Detail - +
TestEbookConvertCalibreGDrive - test_convert_email
@@ -523,7 +539,7 @@ - +
TestEbookConvertCalibreGDrive - test_convert_failed_and_email
@@ -532,7 +548,7 @@ - +
TestEbookConvertCalibreGDrive - test_convert_only
@@ -541,7 +557,7 @@ - +
TestEbookConvertCalibreGDrive - test_convert_parameter
@@ -550,7 +566,7 @@ - +
TestEbookConvertCalibreGDrive - test_email_failed
@@ -559,7 +575,7 @@ - +
TestEbookConvertCalibreGDrive - test_email_only
@@ -577,13 +593,13 @@ 0 0 - Detail + Detail - +
TestEbookConvertKepubify - test_convert_deactivate
@@ -592,7 +608,7 @@ - +
TestEbookConvertKepubify - test_convert_only
@@ -601,7 +617,7 @@ - +
TestEbookConvertKepubify - test_convert_wrong_excecutable
@@ -619,13 +635,13 @@ 0 0 - Detail + Detail - +
TestEbookConvertGDriveKepubify - test_convert_deactivate
@@ -634,7 +650,7 @@ - +
TestEbookConvertGDriveKepubify - test_convert_only
@@ -643,7 +659,7 @@ - +
TestEbookConvertGDriveKepubify - test_convert_wrong_excecutable
@@ -661,13 +677,13 @@ 0 1 - Detail + Detail - +
TestEditAdditionalBooks - test_change_upload_formats
@@ -676,7 +692,7 @@ - +
TestEditAdditionalBooks - test_delete_book
@@ -685,7 +701,7 @@ - +
TestEditAdditionalBooks - test_delete_role
@@ -694,7 +710,7 @@ - +
TestEditAdditionalBooks - test_edit_book_identifier
@@ -703,7 +719,7 @@ - +
TestEditAdditionalBooks - test_edit_book_identifier_capital
@@ -712,7 +728,7 @@ - +
TestEditAdditionalBooks - test_edit_book_identifier_standard
@@ -721,7 +737,7 @@ - +
TestEditAdditionalBooks - test_edit_special_book_identifier
@@ -730,7 +746,7 @@ - +
TestEditAdditionalBooks - test_title_sort
@@ -739,7 +755,7 @@ - +
TestEditAdditionalBooks - test_upload_edit_role
@@ -748,7 +764,7 @@ - +
TestEditAdditionalBooks - test_upload_metadata_cbr
@@ -757,7 +773,7 @@ - +
TestEditAdditionalBooks - test_upload_metadata_cbt
@@ -766,19 +782,19 @@ - +
TestEditAdditionalBooks - test_writeonly_calibre_database
- SKIP + SKIP
-