diff --git a/cps.py b/cps.py index c5ac1e7d..ca7d7230 100755 --- a/cps.py +++ b/cps.py @@ -23,13 +23,17 @@ import os # Insert local directories into path -sys.path.append(os.path.dirname(os.path.abspath(__file__))) -sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'vendor')) +if sys.version_info < (3, 0): + sys.path.append(os.path.dirname(os.path.abspath(__file__.decode('utf-8')))) + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__.decode('utf-8'))), 'vendor')) +else: + sys.path.append(os.path.dirname(os.path.abspath(__file__))) + sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'vendor')) from cps import create_app +from cps import web_server from cps.opds import opds -from cps import Server from cps.web import web from cps.jinjia import jinjia from cps.about import about @@ -56,7 +60,8 @@ def main(): app.register_blueprint(editbook) if oauth_available: app.register_blueprint(oauth) - Server.startServer() + success = web_server.start() + sys.exit(0 if success else 1) if __name__ == '__main__': diff --git a/cps/__init__.py b/cps/__init__.py index 1d3d598d..6b8815e9 100755 --- a/cps/__init__.py +++ b/cps/__init__.py @@ -84,11 +84,11 @@ searched_ids = {} from .worker import WorkerThread global_WorkerThread = WorkerThread() -from .server import server -Server = server() +from .server import WebServer +web_server = WebServer() -from .ldap import Ldap -ldap = Ldap() +from .ldap_login import Ldap +ldap1 = Ldap() babel = Babel() @@ -97,16 +97,22 @@ log = logger.create() def create_app(): app.wsgi_app = ReverseProxied(app.wsgi_app) + # For python2 convert path to unicode + if sys.version_info < (3, 0): + app.static_folder = app.static_folder.decode('utf-8') + app.root_path = app.root_path.decode('utf-8') + app.instance_path = app.instance_path .decode('utf-8') + cache_buster.init_cache_busting(app) log.info('Starting Calibre Web...') Principal(app) lm.init_app(app) app.secret_key = os.getenv('SECRET_KEY', 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT') - Server.init_app(app) + web_server.init_app(app, config) db.setup_db() babel.init_app(app) - ldap.init_app(app) + ldap1.init_app(app) global_WorkerThread.start() return app diff --git a/cps/about.py b/cps/about.py index bc7b0e8a..162a4191 100644 --- a/cps/about.py +++ b/cps/about.py @@ -41,8 +41,9 @@ from jinja2 import __version__ as jinja2Version from pytz import __version__ as pytzVersion from sqlalchemy import __version__ as sqlalchemyVersion -from . import db, converter, Server, uploader +from . import db, converter, uploader from .isoLanguages import __version__ as iso639Version +from .server import VERSION as serverVersion from .web import render_title_template @@ -71,7 +72,7 @@ def stats(): versions['pySqlite'] = 'v' + db.engine.dialect.dbapi.version versions['Sqlite'] = 'v' + db.engine.dialect.dbapi.sqlite_version versions.update(converter.versioncheck()) - versions.update(Server.getNameVersion()) + versions.update(serverVersion) versions['Python'] = sys.version return render_title_template('stats.html', bookcounter=counter, authorcounter=authors, versions=versions, categorycounter=categorys, seriecounter=series, title=_(u"Statistics"), page="stat") diff --git a/cps/admin.py b/cps/admin.py index 9c08d2d4..0ca3067d 100644 --- a/cps/admin.py +++ b/cps/admin.py @@ -41,15 +41,15 @@ from sqlalchemy import and_ from sqlalchemy.exc import IntegrityError from werkzeug.security import generate_password_hash -from . import constants, logger, ldap -from . import db, ub, Server, get_locale, config, updater_thread, babel, gdriveutils +from . import constants, logger, ldap1 +from . import db, ub, web_server, get_locale, config, updater_thread, babel, gdriveutils from .helper import speaking_language, check_valid_domain, check_unrar, send_test_mail, generate_random_password, \ send_registration_mail from .gdriveutils import is_gdrive_ready, gdrive_support, downloadFile, deleteDatabaseOnChange, listRootFolders from .web import admin_required, render_title_template, before_request, unconfigured, login_required_if_no_ano feature_support = dict() -feature_support['ldap'] = ldap.ldap_supported() +feature_support['ldap'] = ldap1.ldap_supported() try: from goodreads.client import GoodreadsClient @@ -63,12 +63,6 @@ except ImportError: # except ImportError: # feature_support['rar'] = False -'''try: - import ldap - feature_support['ldap'] = True -except ImportError: - feature_support['ldap'] = False''' - try: from oauth_bb import oauth_check feature_support['oauth'] = True @@ -103,12 +97,10 @@ def shutdown(): showtext = {} if task == 0: showtext['text'] = _(u'Server restarted, please reload page') - Server.setRestartTyp(True) else: showtext['text'] = _(u'Performing shutdown of server, please close window') - Server.setRestartTyp(False) # stop gevent/tornado server - Server.stopServer() + web_server.stop(task == 0) return json.dumps(showtext) else: if task == 2: @@ -221,8 +213,7 @@ def view_configuration(): # ub.session.close() # ub.engine.dispose() # stop Server - Server.setRestartTyp(True) - Server.stopServer() + web_server.stop(True) log.info('Reboot required, restarting') readColumn = db.session.query(db.Custom_Columns)\ .filter(and_(db.Custom_Columns.datatype == 'bool',db.Custom_Columns.mark_for_delete == 0)).all() @@ -403,14 +394,14 @@ def configuration_helper(origin): flash(_(u'Please enter a LDAP provider, port, DN and user object identifier'), category="error") return render_title_template("config_edit.html", content=config, origin=origin, gdrive=gdriveutils.gdrive_support, gdriveError=gdriveError, - goodreads=goodreads_support, title=_(u"Basic Configuration"), + feature_support=feature_support, title=_(u"Basic Configuration"), page="config") elif not to_save["config_ldap_serv_username"] or not to_save["config_ldap_serv_password"]: ub.session.commit() flash(_(u'Please enter a LDAP service account and password'), category="error") return render_title_template("config_edit.html", content=config, origin=origin, gdrive=gdriveutils.gdrive_support, gdriveError=gdriveError, - goodreads=goodreads_support, title=_(u"Basic Configuration"), + feature_support=feature_support, title=_(u"Basic Configuration"), page="config") else: content.config_login_type = 1 @@ -444,7 +435,7 @@ def configuration_helper(origin): flash(_(u'Certfile location is not valid, please enter correct path'), category="error") return render_title_template("config_edit.html", content=config, origin=origin, gdrive=gdriveutils.gdrive_support, gdriveError=gdriveError, - goodreads=goodreads_support, title=_(u"Basic Configuration"), + feature_support=feature_support, title=_(u"Basic Configuration"), page="config") # Remote login configuration @@ -556,12 +547,11 @@ def configuration_helper(origin): title=_(u"Basic Configuration"), page="config") if reboot_required: # stop Server - Server.setRestartTyp(True) - Server.stopServer() + web_server.stop(True) log.info('Reboot required, restarting') if origin: success = True - if is_gdrive_ready() and feature_support['gdrive'] is True: # and config.config_use_google_drive == True: + if is_gdrive_ready() and feature_support['gdrive'] is True and config.config_use_google_drive == True: gdrivefolders = listRootFolders() else: gdrivefolders = list() @@ -582,9 +572,6 @@ def new_user(): to_save = request.form.to_dict() content.default_language = to_save["default_language"] content.mature_content = "Show_mature_content" in to_save - dat = datetime.strptime("1.1.2019", "%d.%m.%Y") - content.id = int(time.time()*100) - # val= int(uuid.uuid4()) if "locale" in to_save: content.locale = to_save["locale"] @@ -806,19 +793,27 @@ def reset_password(user_id): @login_required @admin_required def view_logfile(): - perpage_p = {0:"30",1:"40",2:"100"} - for key, value in perpage_p.items(): - print(key) - print(value) - return render_title_template("logviewer.html",title=_(u"Logfile viewer"), perpage_p=perpage_p, perpage = 30, - page="logfile") + logfiles = {} + logfiles[0] = logger.get_logfile(config.config_logfile) + logfiles[1] = logger.get_accesslogfile(config.config_access_logfile) + return render_title_template("logviewer.html",title=_(u"Logfile viewer"), accesslog_enable=config.config_access_log, + logfiles=logfiles, page="logfile") -@admi.route("/ajax/accesslog") +@admi.route("/ajax/log/") @login_required @admin_required -def send_logfile(): - return send_from_directory(constants.BASE_DIR,"access.log") +def send_logfile(logtype): + if logtype == 1: + logfile = logger.get_accesslogfile(config.config_access_logfile) + return send_from_directory(os.path.dirname(logfile), + os.path.basename(logfile)) + if logtype == 0: + logfile = logger.get_logfile(config.config_logfile) + return send_from_directory(os.path.dirname(logfile), + os.path.basename(logfile)) + else: + return "" @admi.route("/get_update_status", methods=['GET']) diff --git a/cps/cli.py b/cps/cli.py index 1bda9c93..de12be5a 100644 --- a/cps/cli.py +++ b/cps/cli.py @@ -82,6 +82,18 @@ parser.add_argument('-i', metavar='ip-adress', help='Server IP-Adress to listen' parser.add_argument('-s', metavar='user:pass', help='Sets specific username to new password') args = parser.parse_args() +if sys.version_info < (3, 0): + if args.p: + args.p = args.p.decode('utf-8') + if args.g: + args.g = args.g.decode('utf-8') + if args.k: + args.k = args.k.decode('utf-8') + if args.c: + args.c = args.c.decode('utf-8') + if args.s: + args.s = args.s.decode('utf-8') + settingspath = args.p or os.path.join(_CONFIG_DIR, "app.db") gdpath = args.g or os.path.join(_CONFIG_DIR, "gdrive.db") diff --git a/cps/constants.py b/cps/constants.py index aaf0cd21..fce91312 100644 --- a/cps/constants.py +++ b/cps/constants.py @@ -24,7 +24,12 @@ from collections import namedtuple # Base dir is parent of current file, necessary if called from different folder -BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)),os.pardir)) +if sys.version_info < (3, 0): + BASE_DIR = os.path.abspath(os.path.join( + os.path.dirname(os.path.abspath(__file__)),os.pardir)).decode('utf-8') +else: + BASE_DIR = os.path.abspath(os.path.join( + os.path.dirname(os.path.abspath(__file__)),os.pardir)) STATIC_DIR = os.path.join(BASE_DIR, 'cps', 'static') TEMPLATES_DIR = os.path.join(BASE_DIR, 'cps', 'templates') TRANSLATIONS_DIR = os.path.join(BASE_DIR, 'cps', 'translations') diff --git a/cps/db.py b/cps/db.py index 2cd959ad..5429e93c 100755 --- a/cps/db.py +++ b/cps/db.py @@ -342,7 +342,7 @@ def setup_db(): try: if not os.path.exists(dbpath): raise - engine = create_engine('sqlite:///' + dbpath, + engine = create_engine('sqlite:///{0}'.format(dbpath), echo=False, isolation_level="SERIALIZABLE", connect_args={'check_same_thread': False}) diff --git a/cps/ldap.py b/cps/ldap_login.py similarity index 95% rename from cps/ldap.py rename to cps/ldap_login.py index 0688475a..dcded6f6 100644 --- a/cps/ldap.py +++ b/cps/ldap_login.py @@ -16,10 +16,11 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +from __future__ import division, print_function, unicode_literals import base64 try: - from flask_simpleldap import LDAP, LDAPException + from flask_simpleldap import LDAP # , LDAPException ldap_support = True except ImportError: ldap_support = False diff --git a/cps/logger.py b/cps/logger.py index c249cad7..6b13f50d 100644 --- a/cps/logger.py +++ b/cps/logger.py @@ -25,6 +25,7 @@ from logging.handlers import RotatingFileHandler from .constants import BASE_DIR as _BASE_DIR + ACCESS_FORMATTER_GEVENT = Formatter("%(message)s") ACCESS_FORMATTER_TORNADO = Formatter("[%(asctime)s] %(message)s") @@ -33,7 +34,6 @@ DEFAULT_LOG_LEVEL = logging.INFO DEFAULT_LOG_FILE = os.path.join(_BASE_DIR, "calibre-web.log") DEFAULT_ACCESS_LOG = os.path.join(_BASE_DIR, "access.log") LOG_TO_STDERR = '/dev/stderr' -DEFAULT_ACCESS_LEVEL= logging.INFO logging.addLevelName(logging.WARNING, "WARN") logging.addLevelName(logging.CRITICAL, "CRIT") @@ -73,35 +73,34 @@ def is_valid_logfile(file_path): return (not log_dir) or os.path.isdir(log_dir) -def setup(log_file, log_level=None, logger=None): - if logger != "access" and logger != "tornado.access": - formatter = FORMATTER - default_file = DEFAULT_LOG_FILE - else: - if logger == "tornado.access": - formatter = ACCESS_FORMATTER_TORNADO - else: - formatter = ACCESS_FORMATTER_GEVENT - default_file = DEFAULT_ACCESS_LOG +def _absolute_log_file(log_file, default_log_file): if log_file: if not os.path.dirname(log_file): log_file = os.path.join(_BASE_DIR, log_file) - log_file = os.path.abspath(log_file) - else: - log_file = LOG_TO_STDERR - # log_file = default_file + return os.path.abspath(log_file) - # print ('%r -- %r' % (log_level, log_file)) - if logger != "access" and logger != "tornado.access": - r = logging.root - else: - r = logging.getLogger(logger) - r.propagate = False + return default_log_file + + +def get_logfile(log_file): + return _absolute_log_file(log_file, DEFAULT_LOG_FILE) + + +def get_accesslogfile(log_file): + return _absolute_log_file(log_file, DEFAULT_ACCESS_LOG) + + +def setup(log_file, log_level=None): + ''' + Configure the logging output. + May be called multiple times. + ''' + log_file = _absolute_log_file(log_file, DEFAULT_LOG_FILE) + + r = logging.root r.setLevel(log_level or DEFAULT_LOG_LEVEL) previous_handler = r.handlers[0] if r.handlers else None - # print ('previous %r' % previous_handler) - if previous_handler: # if the log_file has not changed, don't create a new handler if getattr(previous_handler, 'baseFilename', None) == log_file: @@ -115,16 +114,32 @@ def setup(log_file, log_level=None, logger=None): try: file_handler = RotatingFileHandler(log_file, maxBytes=50000, backupCount=2) except IOError: - if log_file == default_file: + if log_file == DEFAULT_LOG_FILE: raise - file_handler = RotatingFileHandler(default_file, maxBytes=50000, backupCount=2) - file_handler.setFormatter(formatter) + file_handler = RotatingFileHandler(DEFAULT_LOG_FILE, maxBytes=50000, backupCount=2) + file_handler.setFormatter(FORMATTER) for h in r.handlers: r.removeHandler(h) h.close() r.addHandler(file_handler) - # print ('new handler %r' % file_handler) + + +def create_access_log(log_file, log_name, formatter): + ''' + One-time configuration for the web server's access log. + ''' + log_file = _absolute_log_file(log_file, DEFAULT_ACCESS_LOG) + logging.debug("access log: %s", log_file) + + access_log = logging.getLogger(log_name) + access_log.propagate = False + access_log.setLevel(logging.INFO) + + file_handler = RotatingFileHandler(log_file, maxBytes=50000, backupCount=2) + file_handler.setFormatter(formatter) + access_log.addHandler(file_handler) + return access_log # Enable logging of smtp lib debug output diff --git a/cps/oauth_bb.py b/cps/oauth_bb.py index 3a48798a..f258e706 100644 --- a/cps/oauth_bb.py +++ b/cps/oauth_bb.py @@ -88,7 +88,7 @@ def register_user_with_oauth(user=None): if len(all_oauth.keys()) == 0: return if user is None: - flash(_(u"Register with %s" % ", ".join(list(all_oauth.values()))), category="success") + flash(_(u"Register with %(provider)s", provider=", ".join(list(all_oauth.values()))), category="success") else: for oauth in all_oauth.keys(): # Find this OAuth token in the database, or create it diff --git a/cps/opds.py b/cps/opds.py index 2ba95635..ee3e86fc 100644 --- a/cps/opds.py +++ b/cps/opds.py @@ -31,7 +31,7 @@ from flask_login import current_user from sqlalchemy.sql.expression import func, text, or_, and_ from werkzeug.security import check_password_hash -from . import logger, config, db, ub, ldap +from . import logger, config, db, ub, ldap1 from .helper import fill_indexpage, get_download_link, get_book_cover from .pagination import Pagination from .web import common_filters, get_search_results, render_read_books, download_required @@ -40,14 +40,14 @@ from .web import common_filters, get_search_results, render_read_books, download opds = Blueprint('opds', __name__) log = logger.create() -ldap_support = ldap.ldap_supported() +ldap_support = ldap1.ldap_supported() def requires_basic_auth_if_no_ano(f): @wraps(f) def decorated(*args, **kwargs): if config.config_login_type == 1 and ldap_support: - return ldap.ldap.basic_auth_required(*args, **kwargs) + return ldap1.ldap.basic_auth_required(*args, **kwargs) auth = request.authorization if config.config_anonbrowse != 1: if not auth or not check_auth(auth.username, auth.password): @@ -57,15 +57,6 @@ def requires_basic_auth_if_no_ano(f): return decorated -'''def basic_auth_required_check(condition): - print("susi") - def decorator(f): - if condition and ldap_support: - return ldap.ldap.basic_auth_required(f) - return requires_basic_auth_if_no_ano(f) - return decorator''' - - @opds.route("/opds/") @requires_basic_auth_if_no_ano def feed_index(): diff --git a/cps/server.py b/cps/server.py index 88c54c78..5945b332 100644 --- a/cps/server.py +++ b/cps/server.py @@ -20,54 +20,60 @@ from __future__ import division, print_function, unicode_literals import sys import os +import errno import signal import socket -import logging try: from gevent.pywsgi import WSGIServer from gevent.pool import Pool - from gevent import __version__ as geventVersion - gevent_present = True + from gevent import __version__ as _version + VERSION = {'Gevent': 'v' + _version} + _GEVENT = True except ImportError: from tornado.wsgi import WSGIContainer from tornado.httpserver import HTTPServer from tornado.ioloop import IOLoop - from tornado import version as tornadoVersion - from tornado import log as tornadoLog - from tornado import options as tornadoOptions - gevent_present = False + from tornado import version as _version + VERSION = {'Tornado': 'v' + _version} + _GEVENT = False -from . import logger, config, global_WorkerThread +from . import logger, global_WorkerThread log = logger.create() -class server: - - wsgiserver = None - restart = False - app = None - access_logger = None +class WebServer: def __init__(self): - signal.signal(signal.SIGINT, self.killServer) - signal.signal(signal.SIGTERM, self.killServer) + signal.signal(signal.SIGINT, self._killServer) + signal.signal(signal.SIGTERM, self._killServer) - def init_app(self, application): - self.app = application - self.port = config.config_port - self.listening = config.get_config_ipaddress(readable=True) + ":" + str(self.port) + self.wsgiserver = None self.access_logger = None + self.restart = False + self.app = None + self.listen_address = None + self.listen_port = None + self.IPV6 = False + self.unix_socket_file = None + self.ssl_args = None + + def init_app(self, application, config): + self.app = application + self.listen_address = config.get_config_ipaddress() + self.IPV6 = config.get_ipaddress_type() + self.listen_port = config.config_port + if config.config_access_log: - if gevent_present: - logger.setup(config.config_access_logfile, logger.DEFAULT_ACCESS_LEVEL, "access") - self.access_logger = logging.getLogger("access") - else: - logger.setup(config.config_access_logfile, logger.DEFAULT_ACCESS_LEVEL, "tornado.access") + log_name = "gevent.access" if _GEVENT else "tornado.access" + formatter = logger.ACCESS_FORMATTER_GEVENT if _GEVENT else logger.ACCESS_FORMATTER_TORNADO + self.access_logger = logger.create_access_log(config.config_access_logfile, log_name, formatter) + else: + if not _GEVENT: + logger.get('tornado.access').disabled = True - self.ssl_args = None certfile_path = config.get_config_certfile() keyfile_path = config.get_config_keyfile() if certfile_path and keyfile_path: @@ -79,101 +85,121 @@ class server: log.warning('Cert path: %s', certfile_path) log.warning('Key path: %s', keyfile_path) + def _make_gevent_unix_socket(self, socket_file): + # the socket file must not exist prior to bind() + if os.path.exists(socket_file): + # avoid nuking regular files and symbolic links (could be a mistype or security issue) + if os.path.isfile(socket_file) or os.path.islink(socket_file): + raise OSError(errno.EEXIST, os.strerror(errno.EEXIST), socket_file) + os.remove(socket_file) + + unix_sock = WSGIServer.get_listener(socket_file, family=socket.AF_UNIX) + self.unix_socket_file = socket_file + + # ensure current user and group have r/w permissions, no permissions for other users + # this way the socket can be shared in a semi-secure manner + # between the user running calibre-web and the user running the fronting webserver + os.chmod(socket_file, 0o660) + + return unix_sock + def _make_gevent_socket(self): - if config.get_config_ipaddress(): - return (config.get_config_ipaddress(), self.port) + if os.name != 'nt': + unix_socket_file = os.environ.get("CALIBRE_UNIX_SOCKET") + if unix_socket_file: + output = "socket:" + unix_socket_file + ":" + str(self.listen_port) + return self._make_gevent_unix_socket(unix_socket_file), output + + if self.listen_address: + return (self.listen_address, self.listen_port), self._get_readable_listen_address() + if os.name == 'nt': - return ('0.0.0.0', self.port) + self.listen_address = '0.0.0.0' + return (self.listen_address, self.listen_port), self._get_readable_listen_address() + address = ('', self.listen_port) try: - s = WSGIServer.get_listener(('', self.port), family=socket.AF_INET6) + sock = WSGIServer.get_listener(address, family=socket.AF_INET6) + output = self._get_readable_listen_address(True) except socket.error as ex: log.error('%s', ex) - log.warning('Unable to listen on \'\', trying on IPv4 only...') - s = WSGIServer.get_listener(('', self.port), family=socket.AF_INET) - log.debug("%r %r", s._sock, s._sock.getsockname()) - return s + log.warning('Unable to listen on "", trying on IPv4 only...') + output = self._get_readable_listen_address(False) + sock = WSGIServer.get_listener(address, family=socket.AF_INET) + return sock, output - def start_gevent(self): + def _start_gevent(self): ssl_args = self.ssl_args or {} - log.info('Starting Gevent server') try: - sock = self._make_gevent_socket() + sock, output = self._make_gevent_socket() + log.info('Starting Gevent server on %s', output) self.wsgiserver = WSGIServer(sock, self.app, log=self.access_logger, spawn=Pool(), **ssl_args) self.wsgiserver.serve_forever() - except socket.error: - try: - log.info('Unable to listen on "", trying on "0.0.0.0" only...') - self.wsgiserver = WSGIServer(('0.0.0.0', config.config_port), self.app, spawn=Pool(), **ssl_args) - self.wsgiserver.serve_forever() - except (OSError, socket.error) as e: - log.info("Error starting server: %s", e.strerror) - print("Error starting server: %s" % e.strerror) - global_WorkerThread.stop() - sys.exit(1) - except Exception: - log.exception("Unknown error while starting gevent") - sys.exit(0) - - def start_tornado(self): - log.info('Starting Tornado server on %s', self.listening) + finally: + if self.unix_socket_file: + os.remove(self.unix_socket_file) + self.unix_socket_file = None + + def _start_tornado(self): + log.info('Starting Tornado server on %s', self._get_readable_listen_address()) + + # Max Buffersize set to 200MB ) + http_server = HTTPServer(WSGIContainer(self.app), + max_buffer_size = 209700000, + ssl_options=self.ssl_args) + http_server.listen(self.listen_port, self.listen_address) + self.wsgiserver=IOLoop.instance() + self.wsgiserver.start() + # wait for stop signal + self.wsgiserver.close(True) + + def _get_readable_listen_address(self, ipV6=False): + if self.listen_address == "": + listen_string = '""' + else: + ipV6 = self.IPV6 + listen_string = self.listen_address + if ipV6: + adress = "[" + listen_string + "]" + else: + adress = listen_string + return adress + ":" + str(self.listen_port) + def start(self): try: - # Max Buffersize set to 200MB ) - http_server = HTTPServer(WSGIContainer(self.app), - max_buffer_size = 209700000, - ssl_options=self.ssl_args) - address = config.get_config_ipaddress() - http_server.listen(self.port, address) - self.wsgiserver=IOLoop.instance() - self.wsgiserver.start() - # wait for stop signal - self.wsgiserver.close(True) - except socket.error as err: - log.exception("Error starting tornado server") - print("Error starting server: %s" % err.strerror) + if _GEVENT: + # leave subprocess out to allow forking for fetchers and processors + self._start_gevent() + else: + self._start_tornado() + except Exception as ex: + log.error("Error starting server: %s", ex) + print("Error starting server: %s" % ex) + return False + finally: + self.wsgiserver = None global_WorkerThread.stop() - sys.exit(1) - def startServer(self): - if gevent_present: - # leave subprocess out to allow forking for fetchers and processors - self.start_gevent() - else: - self.start_tornado() - - if self.restart is True: - log.info("Performing restart of Calibre-Web") - global_WorkerThread.stop() - if os.name == 'nt': - arguments = ["\"" + sys.executable + "\""] - for e in sys.argv: - arguments.append("\"" + e + "\"") - os.execv(sys.executable, arguments) - else: - os.execl(sys.executable, sys.executable, *sys.argv) - else: + if not self.restart: log.info("Performing shutdown of Calibre-Web") - global_WorkerThread.stop() - sys.exit(0) + return True - def setRestartTyp(self,starttyp): - self.restart = starttyp + log.info("Performing restart of Calibre-Web") + arguments = list(sys.argv) + arguments.insert(0, sys.executable) + if os.name == 'nt': + arguments = ["\"%s\"" % a for a in arguments] + os.execv(sys.executable, arguments) + return True - def killServer(self, signum, frame): - self.stopServer() + def _killServer(self, signum, frame): + self.stop() - def stopServer(self): + def stop(self, restart=False): + self.restart = restart if self.wsgiserver: - if gevent_present: + if _GEVENT: self.wsgiserver.close() else: self.wsgiserver.add_callback(self.wsgiserver.stop) - - @staticmethod - def getNameVersion(): - if gevent_present: - return {'Gevent': 'v' + geventVersion} - else: - return {'Tornado': 'v' + tornadoVersion} diff --git a/cps/static/css/style.css b/cps/static/css/style.css index b1edd2ec..1880207a 100644 --- a/cps/static/css/style.css +++ b/cps/static/css/style.css @@ -145,3 +145,14 @@ input.pill:not(:checked) + label .glyphicon { max-height:300px; overflow-y: auto; } + +div.log { + font-family: Courier New; + font-size: 12px; + box-sizing: border-box; + height: 700px; + overflow-y: scroll; + border: 1px solid #ddd; + white-space: nowrap; + padding: 0.5em; +} diff --git a/cps/static/js/get_meta.js b/cps/static/js/get_meta.js index 7c5dbe4f..cf079ba7 100644 --- a/cps/static/js/get_meta.js +++ b/cps/static/js/get_meta.js @@ -20,16 +20,16 @@ * Douban Books api document: https://developers.douban.com/wiki/?title=book_v2 (Chinese Only) */ /* global _, i18nMsg, tinymce */ -var dbResults = []; +// var dbResults = []; var ggResults = []; $(function () { var msg = i18nMsg; /*var douban = "https://api.douban.com"; var dbSearch = "/v2/book/search";*/ - var dbDone = true; + // var dbDone = true; - var google = "https://www.googleapis.com/"; + var google = "https://www.googleapis.com"; var ggSearch = "/books/v1/volumes"; var ggDone = false; @@ -56,11 +56,9 @@ $(function () { if (showFlag === 1) { $("#meta-info").html(""); } - if (ggDone && dbDone) { - if (!ggResults && !dbResults) { - $("#meta-info").html("

" + msg.no_result + "

"); - return; - } + if (!ggDone) { + $("#meta-info").html("

" + msg.no_result + "

"); + return; } if (ggDone && ggResults.length > 0) { ggResults.forEach(function(result) { @@ -137,7 +135,10 @@ $(function () { dataType: "jsonp", jsonp: "callback", success: function success(data) { - ggResults = data.items; + if ("items" in data) { + ggResults = data.items; + ggDone = true; + } }, complete: function complete() { ggDone = true; diff --git a/cps/static/js/logviewer.js b/cps/static/js/logviewer.js index 77c63a3f..1eea3005 100644 --- a/cps/static/js/logviewer.js +++ b/cps/static/js/logviewer.js @@ -1,609 +1,74 @@ -var threadregexp = /(?:^| - )(\[[^\]]*\]):/; - -var colors = ["#ffa", "#aaf", "#afa", "#aff", "#faf", "#aaa", "#fd8", "#f80", "#4df", "#4fc", "#76973c", "#7e56d8", "#99593d", "#37778a", "#4068fc"]; -var screenlines = 1; - -var file = null; -var text; - -var current, nextFilterId = 1; -var shl = null; -var hl = []; -var groupwith = false; -var filterswitch = true; - -var selectedlineid = -1; -var selectedthread = null; -var reachedbottom = false; -var reachedtop = false; - - -function wheelscroll(event) -{ - renderincremental(event.deltaY); -} - -function keypress(event) -{ - if (event.key == "PageDown") { - _render(screenlines - 1); - event.preventDefault(); - } - if (event.key == "PageUp") { - _render(-(screenlines - 1)); - event.preventDefault(); - } - if (event.key == "Home" && event.ctrlKey) { - selectedlineid = 0; - render(); - event.preventDefault(); - } - if (event.key == "End" && event.ctrlKey) { - selectedlineid = text.length - 1; - render(); - event.preventDefault(); - } - if (event.key == "ArrowUp") { - renderincremental(-1); - event.preventDefault(); - } - if (event.key == "ArrowDown") { - renderincremental(1); - event.preventDefault(); - } -} - -function init(filename) { - document.addEventListener("wheel", wheelscroll, false); - document.addEventListener("keypress", keypress, false); - window.addEventListener("resize", resize, false); - - _resize(); - - var s = document.getElementById("search"); - s.value = ""; - selectfilter(0); - reload(filename); -} - -function _resize() -{ - var d = document.getElementById("renderer"); - var t = document.getElementById("toobar"); - screenlines = Math.floor((window.innerHeight - t.offsetHeight) / d.firstChild.offsetHeight) - 1; -} - -function resize() -{ - _resize(); - repaint(); -} - -function reload(filename) -{ - if (shl) shl.cache = {}; - for (_hl of hl) _hl.cache = {}; - - var q = filename; - document.title = "Log: " + (q || "none loaded"); - if (!q) - return; - - var d = document.getElementById("renderer"); - d.innerHTML = "loading " + q + "..."; - - var r = new XMLHttpRequest(); - r.open("GET", "/ajax/accesslog", true); - r.responseType = 'text'; - r.onload = function() { - console.log("prepare"); - prepare(r.responseText); - if (selectedlineid > text.length) { - selectedlineid = -1; - } - console.log("render"); - render(); - }; - r.send(); -} - -function _sanitize(t) -{ - t = t - .replace(/&/g, "&") - .replace(/ /g, " ") - .replace(//g, ">"); - - return t; -} - -function _prepare(t) -{ - // sanitization happens in render, since otherwise it eats enormous amount of memory. - /* - var t = t.split('\n'); - for (var i in t) { - t[i] = _sanitize(t[i]); - } - return t; - */ - return /*_sanitize*/(t).split('\n'); -} - -function prepare(t) -{ - text = _prepare(t); -} - -function render() -{ - _render(0, false); // completely redraws the view from the current scroll position -} - -function repaint() -{ - _render(0, true); // completely redraws the view, but centers the selected line -} - -function renderincremental(difference) -{ - _render(difference); // "scrolls" the view -} - -function _render(increment, repaintonly) -{ - var epoch = new Date(); - - var d = document.getElementById("renderer"); - var filter = _gfilteron(); - - function process(i, append) - { - var t = _sanitize(text[i]); - - var lhl = false; - function dohl(_hl) - { - if (_hl.cache[i] === false) { - // lhl is here unaffected - return t; - } - - var t2 = t.replace(new RegExp("(" + _hl.text_r + ")", "g"), "$1"); - var affecting = (t != t2); - _hl.cache[i] = affecting; - lhl = lhl || (affecting && (!filter || _hl.filter)); - return t2; - } - - for (var h in hl) - t = dohl(hl[h]); - if (shl) - t = dohl(shl); - - if (filter && !lhl && i != selectedlineid) { - return false; - } - - lhl = lhl && !filter; - var div = document.createElement("div"); - div.id = i; - if (lhl) div.className = 'lhl'; - div.onclick = function() { selectline(this); }; - div.innerHTML = t; - if (t.match(new RegExp(selectedthread, "g"))) div.className += ' thread'; - - if (append) - d.appendChild(div); - else - d.insertBefore(div, d.firstChild); - - return true; - } - - var lefttodraw = Math.floor(Math.abs(increment)); - - if (increment < 0) { - // scroll up - reachedbottom = false; - if (reachedtop) { - _hint("reached top of the file"); - return; - } - for (var i = parseInt(d.firstChild.id) - 1; lefttodraw && i >= 0 && i < text.length; --i) { - if (process(i, false)) { - --lefttodraw; - if (d.childNodes.length > screenlines) - d.removeChild(d.lastChild); - } - } - if (lefttodraw) { - _hint("reached top of the file"); - reachedtop = true; - } - } else if (increment > 0) { - // scroll down - reachedtop = false; - if (reachedbottom) { - _hint("reached bottom of the file"); - return; - } - for (var i = parseInt(d.lastChild.id) + 1; lefttodraw && i < text.length; ++i) { - if (process(i, true)) { - --lefttodraw; - if (d.childNodes.length > screenlines) - d.removeChild(d.firstChild); - } - } - if (lefttodraw) { - _hint("reached bottom of the file"); - reachedbottom = true; - } - } else { // == 0 - // redraw all - reachedbottom = false; - reachedtop = false; - lefttodraw = screenlines; - var i = repaintonly ? parseInt(d.firstChild.id) : selectedlineid; - if (i < 0) i = 0; - - d.innerHTML = ""; - for (; lefttodraw && i < text.length; ++i) { - if (process(i, true)) { - --lefttodraw; - } - } - - if (!repaintonly && selectedlineid > -1) { - // center the selected line in the middle of screen! - _render(-(screenlines / 2)); - } - } - - selectline(selectedlineid); - - var now = new Date(); - console.log("rendered in " + (now.getTime() - epoch.getTime()) + "ms"); - - var pos = document.getElementById("position"); - pos.textContent = Math.round((parseInt(d.firstChild.id) / text.length) * 1000) / 10 + "%"; -} - -function _hint(h) -{ - document.getElementById("hint").innerHTML = h; -} - -function _gfilteron() -{ - if (!filterswitch) - return false; - - if (shl && shl.filter) - return true; - - for (var h in hl) - { - if (hl[h].filter) - return true; - } - - return false; -} - -function _getfilterelement(filter) -{ - if (filter == 0) - return document.getElementById("search"); - - return document.getElementById("filter" + filter); -} - -function _setfilterelementstate(p0, _hl) -{ - p0.style.textDecoration = _hl.filter ? "underline" : ""; -} - -function _triminput(t) -{ - t = t - .replace(/^\s+/, "") - .replace(/\s+$/, "") - ; - return t; -} - -function _regexpescape(t) -{ - t = t - .replace(/\\/g, "\\\\") - .replace(/\?/g, "\\?") - .replace(/\./g, "\\.") - .replace(/\+/g, "\\+") - .replace(/\*/g, "\\*") - .replace(/\^/g, "\\^") - .replace(/\$/g, "\\$") - .replace(/\(/g, "\\(") - .replace(/\)/g, "\\)") - .replace(/\[/g, "\\[") - .replace(/\]/g, "\\]") - .replace(/\|/g, "\\|") - ; - return t; -} - -function resetuistate() -{ - groupwith = false; - _hint(""); -} - -function newhl(t, p, persistent) -{ - return { - id: persistent ? nextFilterId++ : 0, - text: t, - text_r: _sanitize(_regexpescape(t)), - color: p ? p.color : colors[0], - filter: p ? p.filter : false, - cache: {} - }; -} - -function selectline(id) -{ - var l0 = document.getElementById(selectedlineid); - if (l0) - l0.style.backgroundColor = ""; - - var l1 = null; - if (typeof(id) == "object") { - l1 = id; - id = parseInt(l1.id); - } else { - l1 = document.getElementById(id); - } - - selectedlineid = id; - if (selectedlineid > -1) - _hint("line # " + (selectedlineid + 1)); - - if (l1) { - l1.style.background = "#faa"; - } - - var thread = null; - var m = text[selectedlineid].match(threadregexp); - if (m) thread = _regexpescape(_sanitize(m[1])); - if (thread != selectedthread) { - selectedthread = thread; - repaint(); - } - - return l1; -} - -function mouseup(event) -{ - if (event.ctrlKey) - return; - - resetuistate(); - - var s = window.getSelection(); - var t = _triminput(s.toString()); - if (!t) - return; - - s = document.getElementById("search"); - s.value = t; - - t = _prepare(t)[0]; - - shl = newhl(t, shl); - selectfilter(0); - repaint(); -} - -function persist() -{ - resetuistate(); - - var dorender = false; - if (!shl) - { - _apply(); - dorender = true; - } - - if (!shl) - return; - - selectfilter(0); - - var _hl = newhl(shl.text, shl, true); - _hl.cache = shl.cache; // hope this is right, shl is updated in _apply, that always creates an empty cache - hl.push(_hl); - - var p = document.getElementById("persistents"); - var p0 = document.createElement("div"); - p0.id = "filter" + _hl.id; - p0.className = "persistent"; - p0.style.backgroundColor = _hl.color; - p0.innerHTML = _hl.text; - p0.onclick = function() {selectfilter(_hl.id)}; - _setfilterelementstate(p0, _hl); - p.appendChild(p0); - - _restartshl(); - selectfilter(_hl.id); - if (dorender) - render(); - - colors.push(colors.shift()); -} - -function _apply() -{ - s = document.getElementById("search"); - var t = _triminput(s.value); - - if (!t) - { - shl = null; - } - else - { - t = _prepare(t)[0]; - shl = newhl(t, shl); - } +/* This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) + * Copyright (C) 2018 OzzieIsaacs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +// Upon loading load the logfile for the first option (event log) +$(function() { + init(0); +}); + +// After change the radio option load the corresponding log file +$("#log_group input").on("change", function() { + var element = $("#log_group input[type='radio']:checked").val(); + init(element); +}); + + +// Handle reloading of the log file and display the content +function init(logType) { + var d = document.getElementById("renderer"); + d.innerHTML = "loading ..."; + + /*var r = new XMLHttpRequest(); + r.open("GET", "/ajax/log/" + logType, true); + r.responseType = "text"; + r.onload = function() { + var text; + text = (r.responseText).split("\n"); + $("#renderer").text(""); + console.log(text.length); + for (var i = 0; i < text.length; i++) { + $("#renderer").append( "
" + _sanitize(text[i]) + "
" ); + } + }; + r.send();*/ + $.ajax({ + url: "/ajax/log/" + logType, + datatype: 'text', + cache: false + }) + .done( function(data) { + var text; + $("#renderer").text(""); + text = (data).split("\n"); + console.log(text.length); + for (var i = 0; i < text.length; i++) { + $("#renderer").append( "
" + _sanitize(text[i]) + "
" ); + } + }); +} + + +function _sanitize(t) { + t = t + .replace(/&/g, "&") + .replace(/ /g, " ") + .replace(//g, ">"); + + return t; } -function highlight() -{ - resetuistate(); - - _apply(); - - repaint(); - selectfilter(0); -} - -function filter() -{ - resetuistate(); - - if ((!shl && !hl.length) || (current == shl)) - { - _apply(); - selectfilter(0); - } - - if (current) { - current.filter = !current.filter; - _setfilterelementstate(_getfilterelement(current.id), current); - if (filterswitch) - render(); - else - repaint(); - } -} - -function group() -{ - resetuistate(); - - // the code it self happens in selectfilter() function - - if (!shl) - { - _hint("press higlight or filter first"); - return; - } - - if (hl.length) - { - groupwith = true; - _hint("-> now select a pinned filter to group the current highlight with"); - } - else - { - _hint("you have to pin a filter with the 'pin' button first"); - } -} - -function _restartshl() -{ - var s = document.getElementById("search"); - s.value = ""; - s.style.backgroundColor = ""; - s.style.textDecoration = ""; - current = shl = null; -} - -function restart() -{ - resetuistate(); - - var filtered = _gfilteron(); // was: = current && current.filter - - if (current == shl) - { - _restartshl(); - } - else - { - var p0 = _getfilterelement(current.id); - - for (var h in hl) - if (hl[h].id == current.id) { - hl.splice(h, 1); - break; - } - - if (current.text) { - shl = newhl(current.text, current); - var s = document.getElementById("search"); - s.value = current.text; - _setfilterelementstate(s, shl); - } - selectfilter(0); - - var p = document.getElementById("persistents"); - p.removeChild(p0); - } - - if (!shl) // means: filter could not be switched back to shl or directly shl was reset - render(); -} - -function selectfilter(filter) -{ - var el0 = _getfilterelement(current ? current.id : 0); - var el1 = _getfilterelement(filter); - - el0.style.border = ""; - el0.style.margin = ""; - el1.style.border = "solid 2px #3ad"; - el1.style.margin = "0px"; - - function filterbyid(id) - { - for (var h in hl) - if (hl[h].id == id) - return hl[h]; - } - - if (groupwith && filter) - { - el1.innerHTML += "+" + shl.text; - var _hl = filterbyid(filter); - _hl.text = ""; // not backward compatible - _hl.text_r += "|" + shl.text_r; - _hl.cache = {}; - resetuistate(); - _restartshl(); - render(); - } - else - resetuistate(); - - current = (filter == 0) ? shl : filterbyid(filter); - - // A bit hacky redraw of the search box color :) - if (filter === 0 && shl) - { - var s = document.getElementById("search"); - s.style.backgroundColor = shl.color; - } -} - -function flipfilter(event) -{ - filterswitch = !filterswitch; - event.target.innerHTML = (filterswitch ? "filters on" : "filters off"); - render(); - - event.stopPropagation(); -} diff --git a/cps/templates/admin.html b/cps/templates/admin.html index a89193d0..6618a113 100644 --- a/cps/templates/admin.html +++ b/cps/templates/admin.html @@ -106,7 +106,7 @@

{{_('Administration')}}

- +
{{_('Reconnect to Calibre DB')}}
{{_('Restart Calibre-Web')}}
{{_('Stop Calibre-Web')}}
diff --git a/cps/templates/logviewer.html b/cps/templates/logviewer.html index 0f01f773..5a47a176 100644 --- a/cps/templates/logviewer.html +++ b/cps/templates/logviewer.html @@ -1,141 +1,15 @@ {% extends "layout.html" %} {% block body %} -{% block header %} - -{% endblock %} - -
- -
apply
-
filters on
-
-
filter
-
-
-
-
- -
-
-
- -   - - -
-
-
{{warning}}
-
-
- -
nothing loaded
- {% for line in log %} - - {% endfor %} -
{{line.line}}{{line.date}}{{line.level}}{{line.message}}
-
-
-
- - - -
-
+
+
+ {{logfiles[0]}}
+ {% if accesslog_enable %} +
+ {{logfiles[1]}}
+ {% endif %} +
+
{% endblock %} {% block js %} - - {% endblock %} diff --git a/cps/translations/de/LC_MESSAGES/messages.mo b/cps/translations/de/LC_MESSAGES/messages.mo index abd73016..3ef503eb 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 b20a0766..9b11fb0f 100644 --- a/cps/translations/de/LC_MESSAGES/messages.po +++ b/cps/translations/de/LC_MESSAGES/messages.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2019-05-31 11:20+0200\n" -"PO-Revision-Date: 2019-05-31 11:19+0200\n" +"POT-Creation-Date: 2019-06-22 19:54+0200\n" +"PO-Revision-Date: 2019-06-22 19:54+0200\n" "Last-Translator: Ozzie Isaacs\n" "Language: de\n" "Language-Team: \n" @@ -16,13 +16,13 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" -#: cps/about.py:76 +#: cps/about.py:78 msgid "Statistics" msgstr "Statistiken" -#: cps/admin.py:97 +#: cps/admin.py:98 msgid "Server restarted, please reload page" msgstr "Server neu gestartet,bitte Seite neu laden" @@ -30,186 +30,202 @@ msgstr "Server neu gestartet,bitte Seite neu laden" msgid "Performing shutdown of server, please close window" msgstr "Server wird runtergefahren, bitte Fenster schließen" -#: cps/admin.py:120 cps/updater.py:445 +#: cps/admin.py:119 cps/updater.py:448 msgid "Unknown" msgstr "Unbekannt" -#: cps/admin.py:139 +#: cps/admin.py:138 msgid "Admin page" msgstr "Admin Seite" -#: cps/admin.py:208 cps/admin.py:486 +#: cps/admin.py:207 cps/admin.py:532 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web Konfiguration wurde aktualisiert" -#: cps/admin.py:222 cps/templates/admin.html:102 +#: cps/admin.py:220 cps/templates/admin.html:102 msgid "UI Configuration" msgstr "Konfiguration Benutzeroberfläche" -#: cps/admin.py:295 +#: cps/admin.py:293 msgid "Import of optional Google Drive requirements missing" msgstr "Optionale Abhängigkeiten für Google Drive fehlen" -#: cps/admin.py:298 +#: cps/admin.py:296 msgid "client_secrets.json is missing or not readable" msgstr "client_secrets.json nicht vorhanden, oder nicht lesbar" -#: cps/admin.py:303 cps/admin.py:332 +#: cps/admin.py:301 cps/admin.py:330 msgid "client_secrets.json is not configured for web application" msgstr "client_secrets.json nicht als Webapplication konfiguriert" -#: cps/admin.py:335 cps/admin.py:361 cps/admin.py:373 cps/admin.py:398 -#: cps/admin.py:426 cps/admin.py:440 cps/admin.py:463 cps/admin.py:476 -#: cps/admin.py:494 cps/admin.py:501 cps/admin.py:516 -#: cps/templates/admin.html:101 +#: cps/admin.py:333 cps/admin.py:359 cps/admin.py:371 cps/admin.py:396 +#: cps/admin.py:403 cps/admin.py:436 cps/admin.py:460 cps/admin.py:474 +#: cps/admin.py:493 cps/admin.py:510 cps/admin.py:522 cps/admin.py:538 +#: cps/admin.py:545 cps/admin.py:559 cps/templates/admin.html:101 msgid "Basic Configuration" msgstr "Basis Konfiguration" -#: cps/admin.py:358 +#: cps/admin.py:356 msgid "Keyfile location is not valid, please enter correct path" msgstr "SSL-Keydatei Speicherort ist ungültig, bitte gültigen Pfad angeben" -#: cps/admin.py:370 +#: cps/admin.py:368 cps/admin.py:433 msgid "Certfile location is not valid, please enter correct path" msgstr "SSL-Certdatei Speicherort ist ungültig, bitte gültigen Pfad angeben" -#: cps/admin.py:395 -msgid "Please enter a LDAP provider and a DN" -msgstr "" +#: cps/admin.py:393 +msgid "Please enter a LDAP provider, port, DN and user object identifier" +msgstr "Bitte LDAP provider, Port, DN und user object identifer eingeben" + +#: cps/admin.py:400 +msgid "Please enter a LDAP service account and password" +msgstr "Bitte LDAP Service Account und Passwort eingeben" -#: cps/admin.py:423 +#: cps/admin.py:457 msgid "Please enter Github oauth credentials" -msgstr "" +msgstr "Bitte die Github Oauth Anmeldedaten eingeben" -#: cps/admin.py:437 +#: cps/admin.py:471 msgid "Please enter Google oauth credentials" -msgstr "" +msgstr "Bitte die Google Oauth Anmeldedaten eingeben" -#: cps/admin.py:460 +#: cps/admin.py:490 msgid "Logfile location is not valid, please enter correct path" msgstr "Speicherort Logdatei ist ungültig, bitte Pfad korrigieren" -#: cps/admin.py:498 +#: cps/admin.py:507 +msgid "Access Logfile location is not valid, please enter correct path" +msgstr "Zugriffs-Logdatei Pfad ist ungültig, bitte gültigen Pfad eingeben" + +#: cps/admin.py:542 msgid "DB location is not valid, please enter correct path" msgstr "DB Speicherort ist ungültig, bitte Pfad korrigieren" -#: cps/admin.py:558 cps/web.py:1045 +#: cps/admin.py:602 cps/web.py:1040 msgid "Please fill out all fields!" msgstr "Bitte alle Felder ausfüllen!" -#: cps/admin.py:560 cps/admin.py:566 cps/admin.py:582 +#: cps/admin.py:604 cps/admin.py:610 cps/admin.py:626 #: cps/templates/admin.html:35 msgid "Add new user" msgstr "Neuen Benutzer hinzufügen" -#: cps/admin.py:564 cps/web.py:1248 +#: cps/admin.py:608 cps/web.py:1251 msgid "E-mail is not from valid domain" msgstr "E-Mail ist nicht Teil einer gültigen Domain" -#: cps/admin.py:572 +#: cps/admin.py:616 #, python-format msgid "User '%(user)s' created" msgstr "Benutzer '%(user)s' angelegt" -#: cps/admin.py:576 +#: cps/admin.py:620 msgid "Found an existing account for this e-mail address or nickname." msgstr "Es existiert bereits ein Account für diese E-Mailadresse oder Benutzernamen." -#: cps/admin.py:607 +#: cps/admin.py:651 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "Test E-Mail wurde erfolgreich an %(kindlemail)s versendet" -#: cps/admin.py:610 +#: cps/admin.py:654 #, 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:612 cps/web.py:1029 +#: cps/admin.py:656 cps/web.py:1023 msgid "Please configure your kindle e-mail address first..." msgstr "Bitte zuerst die Kindle E-Mailadresse konfigurieren..." -#: cps/admin.py:614 +#: cps/admin.py:658 msgid "E-mail server settings updated" msgstr "E-Mail Server Einstellungen aktualisiert" -#: cps/admin.py:615 +#: cps/admin.py:659 msgid "Edit e-mail server settings" msgstr "E-Mail Server Einstellungen bearbeiten" -#: cps/admin.py:640 +#: cps/admin.py:687 #, python-format msgid "User '%(nick)s' deleted" msgstr "Benutzer '%(nick)s' gelöscht" -#: cps/admin.py:711 +#: cps/admin.py:690 +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:761 #, python-format msgid "User '%(nick)s' updated" msgstr "Benutzer '%(nick)s' aktualisiert" -#: cps/admin.py:714 +#: cps/admin.py:764 msgid "An unknown error occured." msgstr "Es ist ein unbekannter Fehler aufgetreten." -#: cps/admin.py:717 +#: cps/admin.py:767 #, python-format msgid "Edit User %(nick)s" msgstr "Benutzer %(nick)s bearbeiten" -#: cps/admin.py:733 +#: cps/admin.py:783 #, python-format msgid "Password for user %(user)s reset" msgstr "Passwort für Benutzer %(user)s wurde zurückgesetzt" -#: cps/admin.py:736 cps/web.py:1070 +#: cps/admin.py:786 cps/web.py:1065 msgid "An unknown error occurred. Please try again later." msgstr "Es ist ein unbekannter Fehler aufgetreten. Bitte später erneut versuchen." -#: cps/admin.py:755 +#: cps/admin.py:797 +msgid "Logfile viewer" +msgstr "Logdatei Anzeige" + +#: cps/admin.py:832 msgid "Requesting update package" msgstr "Frage Update Paket an" -#: cps/admin.py:756 +#: cps/admin.py:833 msgid "Downloading update package" msgstr "Lade Update Paket herunter" -#: cps/admin.py:757 +#: cps/admin.py:834 msgid "Unzipping update package" msgstr "Entpacke Update Paket" -#: cps/admin.py:758 +#: cps/admin.py:835 msgid "Replacing files" msgstr "Ersetze Dateien" -#: cps/admin.py:759 +#: cps/admin.py:836 msgid "Database connections are closed" msgstr "Schließe Datenbankverbindungen" -#: cps/admin.py:760 +#: cps/admin.py:837 msgid "Stopping server" msgstr "Stoppe Server" -#: cps/admin.py:761 +#: cps/admin.py:838 msgid "Update finished, please press okay and reload page" msgstr "Update abgeschlossen, bitte okay drücken und Seite neu laden" -#: cps/admin.py:762 cps/admin.py:763 cps/admin.py:764 cps/admin.py:765 +#: cps/admin.py:839 cps/admin.py:840 cps/admin.py:841 cps/admin.py:842 msgid "Update failed:" msgstr "Update fehlgeschlagen:" -#: cps/admin.py:762 cps/updater.py:277 cps/updater.py:456 cps/updater.py:458 +#: cps/admin.py:839 cps/updater.py:273 cps/updater.py:459 cps/updater.py:461 msgid "HTTP Error" msgstr "HTTP Fehler" -#: cps/admin.py:763 cps/updater.py:279 cps/updater.py:460 +#: cps/admin.py:840 cps/updater.py:275 cps/updater.py:463 msgid "Connection error" msgstr "Verbindungsfehler" -#: cps/admin.py:764 cps/updater.py:281 cps/updater.py:462 +#: cps/admin.py:841 cps/updater.py:277 cps/updater.py:465 msgid "Timeout while establishing connection" msgstr "Timeout beim Verbindungsaufbau" -#: cps/admin.py:765 cps/updater.py:283 cps/updater.py:464 +#: cps/admin.py:842 cps/updater.py:279 cps/updater.py:467 msgid "General error" msgstr "Allgemeiner Fehler" @@ -227,720 +243,714 @@ msgstr "Ausführungsberechtigung nicht vorhanden" msgid "not configured" msgstr "Nicht konfiguriert" -#: cps/editbooks.py:218 cps/editbooks.py:432 +#: cps/editbooks.py:215 cps/editbooks.py:394 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Buch öffnen fehlgeschlagen. Datei existiert nicht, oder ist nicht zugänglich" -#: cps/editbooks.py:246 +#: cps/editbooks.py:243 msgid "edit metadata" msgstr "Metadaten editieren" -#: cps/editbooks.py:325 cps/editbooks.py:595 +#: cps/editbooks.py:322 cps/editbooks.py:557 #, 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:329 cps/editbooks.py:599 +#: cps/editbooks.py:326 cps/editbooks.py:561 msgid "File to be uploaded must have an extension" msgstr "Dateien müssen eine Erweiterung haben, um hochgeladen zu werden" -#: cps/editbooks.py:341 cps/editbooks.py:619 +#: cps/editbooks.py:338 cps/editbooks.py:581 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Fehler beim Erzeugen des Pfads %(path)s (Zugriff verweigert)" -#: cps/editbooks.py:346 +#: cps/editbooks.py:343 #, python-format msgid "Failed to store file %(file)s." msgstr "Fehler beim speichern der Datei %(file)s." -#: cps/editbooks.py:363 +#: cps/editbooks.py:360 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Dateiformat %(ext)s zu %(book)s hinzugefügt" -#: cps/editbooks.py:382 -#, python-format -msgid "Failed to create path for cover %(path)s (Permission denied)." -msgstr "Fehler beim Erzeugen des Pfads für das Cover %(path)s (Zugriff verweigert)" - -#: cps/editbooks.py:390 -#, python-format -msgid "Failed to store cover-file %(cover)s." -msgstr "Fehler beim Speichern des Covers %(cover)s." - -#: cps/editbooks.py:393 -msgid "Cover-file is not a valid image file" -msgstr "Cover-Datei ist keine gültige Bilddatei" - -#: cps/editbooks.py:399 cps/editbooks.py:413 +#: cps/editbooks.py:374 msgid "Cover is not a supported imageformat (jpg/png/webp), can't save" -msgstr "" +msgstr "Cover hat kein unterstütztes Bildformat (jpg/png/webp), kann nicht gespeichert werden" -#: cps/editbooks.py:445 cps/editbooks.py:454 +#: cps/editbooks.py:407 cps/editbooks.py:416 msgid "unknown" msgstr "Unbekannt" -#: cps/editbooks.py:486 +#: cps/editbooks.py:448 msgid "Cover is not a jpg file, can't save" msgstr "Cover ist keine JPG Datei, konnte nicht gespeichert werden" -#: cps/editbooks.py:534 +#: cps/editbooks.py:496 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s ist keine gültige Sprache" -#: cps/editbooks.py:565 +#: cps/editbooks.py:527 msgid "Metadata successfully updated" msgstr "Metadaten wurden erfolgreich aktualisiert" -#: cps/editbooks.py:574 +#: cps/editbooks.py:536 msgid "Error editing book, please check logfile for details" msgstr "Fehler beim Editieren des Buchs, Details im Logfile" -#: cps/editbooks.py:624 +#: cps/editbooks.py:586 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "Fehler beim speichern der Datei %(file)s (Zugriff verweigert)" -#: cps/editbooks.py:629 +#: cps/editbooks.py:591 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "Fehler beim Löschen von Datei %(file)s (Zugriff verweigert)" -#: cps/editbooks.py:712 +#: cps/editbooks.py:674 #, python-format msgid "File %(file)s uploaded" -msgstr "" +msgstr "Datei %(file)s hochgeladen" -#: cps/editbooks.py:741 +#: cps/editbooks.py:703 msgid "Source or destination format for conversion missing" msgstr "Quell- oder Zielformat für Konvertierung fehlt" -#: cps/editbooks.py:751 +#: cps/editbooks.py:711 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Buch wurde erfolgreich für die Konvertierung in das %(book_format)s Format eingereiht" -#: cps/editbooks.py:755 +#: cps/editbooks.py:715 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Es trat ein Fehlker beim Konvertieren des Buches auf: %(res)s" -#: cps/gdrive.py:56 +#: cps/gdrive.py:61 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Google Drive setup is nicht komplett, bitte versuche Google Drive zu deaktivieren und aktiviere es anschließend wieder" -#: cps/gdrive.py:101 +#: cps/gdrive.py:106 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "Callback Domain ist nicht verifiziert, bitte Domain in der Google Developer Console verifizieren" -#: cps/helper.py:97 +#: cps/helper.py:94 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "%(format)s Format nicht gefunden bei Buch ID %(book)d" -#: cps/helper.py:109 +#: cps/helper.py:106 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "%(format)s von Buch %(fn)s nicht auf Google Drive gefunden" -#: cps/helper.py:116 cps/helper.py:223 cps/templates/detail.html:41 +#: cps/helper.py:113 cps/helper.py:220 cps/templates/detail.html:41 #: cps/templates/detail.html:45 msgid "Send to Kindle" msgstr "An Kindle senden" -#: cps/helper.py:117 cps/helper.py:135 cps/helper.py:225 +#: cps/helper.py:114 cps/helper.py:132 cps/helper.py:222 msgid "This e-mail has been sent via Calibre-Web." msgstr "Diese E-Mail wurde durch Calibre-Web versendet." -#: cps/helper.py:128 +#: cps/helper.py:125 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "%(format)s nicht gefunden: %(fn)s" -#: cps/helper.py:133 +#: cps/helper.py:130 msgid "Calibre-Web test e-mail" msgstr "Calibre-Web Test E-Mail" -#: cps/helper.py:134 +#: cps/helper.py:131 msgid "Test e-mail" msgstr "Test E-Mail" -#: cps/helper.py:150 +#: cps/helper.py:147 msgid "Get Started with Calibre-Web" msgstr "Loslegen mit Calibre-Web" -#: cps/helper.py:151 +#: cps/helper.py:148 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "Registrierungs E-Mail für Benutzer %(name)s" -#: cps/helper.py:165 cps/helper.py:167 cps/helper.py:169 cps/helper.py:177 -#: cps/helper.py:179 cps/helper.py:181 +#: cps/helper.py:162 cps/helper.py:164 cps/helper.py:166 cps/helper.py:174 +#: cps/helper.py:176 cps/helper.py:178 #, python-format msgid "Send %(format)s to Kindle" msgstr "Sende %(format)s an Kindle" -#: cps/helper.py:185 +#: cps/helper.py:182 #, python-format msgid "Convert %(orig)s to %(format)s and send to Kindle" msgstr "Konvertiere %(orig)s nach %(format)s und sende an Kindle" -#: cps/helper.py:224 +#: cps/helper.py:221 #, python-format msgid "E-mail: %(book)s" msgstr "E-Mail: %(book)s" -#: cps/helper.py:227 +#: cps/helper.py:224 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "Die angeforderte Datei konnte nicht gelesen werden. Evtl. falsche Zugriffsrechte?" -#: cps/helper.py:335 +#: cps/helper.py:331 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "Umbenennen des Titelpfades '%(src)s' nach '%(dest)s' schlug fehl: %(error)s" -#: cps/helper.py:345 +#: cps/helper.py:341 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "Umbenennen des Authorpfades '%(src)s' nach '%(dest)s' schlug fehl: %(error)s" -#: cps/helper.py:359 +#: cps/helper.py:355 #, python-format msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "Umbenennen der Datei im Pfad '%(src)s' nach '%(dest)s' ist fehlgeschlagen: %(error)s" -#: cps/helper.py:385 cps/helper.py:395 cps/helper.py:403 +#: cps/helper.py:381 cps/helper.py:391 cps/helper.py:399 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "Datei %(file)s wurde nicht auf Google Drive gefunden" -#: cps/helper.py:424 +#: cps/helper.py:420 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "Buchpfad %(path)s wurde nicht auf Google Drive gefunden" -#: cps/helper.py:584 +#: cps/helper.py:579 msgid "Error excecuting UnRar" msgstr "Fehler bei der Ausführung von UnRar" -#: cps/helper.py:586 +#: cps/helper.py:581 msgid "Unrar binary file not found" msgstr "UnRar Datei nicht gefunden" -#: cps/helper.py:614 +#: cps/helper.py:609 msgid "Waiting" msgstr "Wartend" -#: cps/helper.py:616 +#: cps/helper.py:611 msgid "Failed" msgstr "Fehlgeschlagen" -#: cps/helper.py:618 +#: cps/helper.py:613 msgid "Started" msgstr "Gestartet" -#: cps/helper.py:620 +#: cps/helper.py:615 msgid "Finished" msgstr "Beendet" -#: cps/helper.py:622 +#: cps/helper.py:617 msgid "Unknown Status" msgstr "Unbekannter Status" -#: cps/helper.py:627 +#: cps/helper.py:622 msgid "E-mail: " msgstr "E-Mail: " -#: cps/helper.py:629 cps/helper.py:633 +#: cps/helper.py:624 cps/helper.py:628 msgid "Convert: " msgstr "Konvertiere: " -#: cps/helper.py:631 +#: cps/helper.py:626 msgid "Upload: " msgstr "Upload: " -#: cps/helper.py:635 +#: cps/helper.py:630 msgid "Unknown Task: " msgstr "Unbekannte Aufgabe: " -#: cps/oauth_bb.py:87 +#: cps/oauth_bb.py:91 #, python-format -msgid "Register with %s, " +msgid "Register with %(provider)s" msgstr "" -#: cps/oauth_bb.py:145 +#: cps/oauth_bb.py:149 msgid "Failed to log in with GitHub." -msgstr "" +msgstr "Login mit Github fehlgeschlagen." -#: cps/oauth_bb.py:150 +#: cps/oauth_bb.py:154 msgid "Failed to fetch user info from GitHub." -msgstr "" +msgstr "Laden der Benutzerinfo von Github fehlgeschlagen." -#: cps/oauth_bb.py:161 +#: cps/oauth_bb.py:165 msgid "Failed to log in with Google." -msgstr "" +msgstr "Login mit Google fehlgeschlagen." -#: cps/oauth_bb.py:166 +#: cps/oauth_bb.py:170 msgid "Failed to fetch user info from Google." -msgstr "" +msgstr "Laden der Benutzerinfo von Google fehlgeschlagen." -#: cps/oauth_bb.py:265 +#: cps/oauth_bb.py:269 #, python-format msgid "Unlink to %(oauth)s success." -msgstr "" +msgstr "Verbindung zu %(oauth)s erfolgreich getrennt." -#: cps/oauth_bb.py:269 +#: cps/oauth_bb.py:273 #, python-format msgid "Unlink to %(oauth)s failed." -msgstr "" +msgstr "Trennen der Verbindung zu %(oauth)s fehlgeschlagen." -#: cps/oauth_bb.py:272 +#: cps/oauth_bb.py:276 #, python-format msgid "Not linked to %(oauth)s." -msgstr "" +msgstr "Keine Verknüpfung zu %(oauth)s." -#: cps/oauth_bb.py:300 +#: cps/oauth_bb.py:304 msgid "GitHub Oauth error, please retry later." -msgstr "" +msgstr "Github Oauth Fehler, bitte später erneut versuchen." -#: cps/oauth_bb.py:319 +#: cps/oauth_bb.py:323 msgid "Google Oauth error, please retry later." -msgstr "" +msgstr "Google Oauth Fehler, bitte später erneut versuchen." -#: cps/shelf.py:40 cps/shelf.py:92 +#: cps/shelf.py:46 cps/shelf.py:98 msgid "Invalid shelf specified" msgstr "Ungültiges Bücherregal angegeben" -#: cps/shelf.py:47 +#: cps/shelf.py:53 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" msgstr "Keine Erlaubnis ein Buch zum Bücherregale %(shelfname)s hinzuzufügen vorhanden" -#: cps/shelf.py:55 +#: cps/shelf.py:61 msgid "You are not allowed to edit public shelves" msgstr "Keine Erlaubnis öffentliche Bücherregale zu editieren vorhanden" -#: cps/shelf.py:64 +#: cps/shelf.py:70 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" msgstr "Buch ist bereits Teil des Bücherregals %(shelfname)s" -#: cps/shelf.py:78 +#: cps/shelf.py:84 #, 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:97 +#: cps/shelf.py:103 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Keine Erlaubnis ein Buch zum Bücherregal %(name)s hinzuzufügen" -#: cps/shelf.py:102 +#: cps/shelf.py:108 msgid "User is not allowed to edit public shelves" msgstr "Benutzer hat keine Erlaubnis öffentliche Bücherregale zu editieren" -#: cps/shelf.py:120 +#: cps/shelf.py:126 #, 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:134 +#: cps/shelf.py:140 #, 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:136 +#: cps/shelf.py:142 #, 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:173 +#: cps/shelf.py:179 #, 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:179 +#: cps/shelf.py:185 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Keine Erlaubnis das Buch aus dem Bücherregal %(sname)s zu entfernen" -#: cps/shelf.py:200 cps/shelf.py:224 +#: cps/shelf.py:206 cps/shelf.py:230 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Es existiert bereits ein Bücheregal mit dem Titel '%(title)s'." -#: cps/shelf.py:205 +#: cps/shelf.py:211 #, python-format msgid "Shelf %(title)s created" msgstr "Bücherregal %(title)s erzeugt" -#: cps/shelf.py:207 cps/shelf.py:235 +#: cps/shelf.py:213 cps/shelf.py:241 msgid "There was an error" msgstr "Es trat ein Fehler auf" -#: cps/shelf.py:208 cps/shelf.py:210 +#: cps/shelf.py:214 cps/shelf.py:216 msgid "create a shelf" msgstr "Bücherregal erzeugen" -#: cps/shelf.py:233 +#: cps/shelf.py:239 #, python-format msgid "Shelf %(title)s changed" msgstr "Bücherregal %(title)s verändert" -#: cps/shelf.py:236 cps/shelf.py:238 +#: cps/shelf.py:242 cps/shelf.py:244 msgid "Edit a shelf" msgstr "Bücherregal editieren" -#: cps/shelf.py:259 -#, python-format -msgid "successfully deleted shelf %(name)s" -msgstr "Bücherregal %(name)s erfolgreich gelöscht" - -#: cps/shelf.py:289 +#: cps/shelf.py:295 #, python-format msgid "Shelf: '%(name)s'" msgstr "Bücherregal: '%(name)s'" -#: cps/shelf.py:292 +#: cps/shelf.py:298 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Fehler beim Öffnen. Bücherregel exisitert nicht oder ist nicht zugänglich" -#: cps/shelf.py:324 +#: cps/shelf.py:330 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Reihenfolge in Bücherregal '%(name)s' verändern" -#: cps/ub.py:111 +#: cps/ub.py:68 msgid "Recently Added" msgstr "Kürzlich hinzugefügt" -#: cps/ub.py:113 +#: cps/ub.py:70 msgid "Show recent books" msgstr "Zeige kürzlich hinzugefügte Bücher" -#: cps/templates/index.xml:17 cps/ub.py:114 +#: cps/templates/index.xml:17 cps/ub.py:71 msgid "Hot Books" msgstr "Beliebte Bücher" -#: cps/ub.py:115 +#: cps/ub.py:72 msgid "Show hot books" msgstr "Zeige Auswahl Beliebte Bücher" -#: cps/templates/index.xml:24 cps/ub.py:118 +#: cps/templates/index.xml:24 cps/ub.py:75 msgid "Best rated Books" msgstr "Best bewertete Bücher" -#: cps/ub.py:120 +#: cps/ub.py:77 msgid "Show best rated books" msgstr "Zeige am besten bewertete Bücher" -#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:121 -#: cps/web.py:965 +#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:78 +#: cps/web.py:958 msgid "Read Books" msgstr "Gelesene Bücher" -#: cps/ub.py:123 +#: cps/ub.py:80 msgid "Show read and unread" msgstr "Zeige Gelesen/Ungelesen Auswahl" -#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:125 -#: cps/web.py:969 +#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:82 +#: cps/web.py:962 msgid "Unread Books" msgstr "Ungelesene Bücher" -#: cps/ub.py:127 +#: cps/ub.py:84 msgid "Show unread" msgstr "Zeige Ungelesene" -#: cps/ub.py:128 +#: cps/ub.py:85 msgid "Discover" msgstr "Entdecke" -#: cps/ub.py:130 +#: cps/ub.py:87 msgid "Show random books" msgstr "Zeige Zufällige Bücher" -#: cps/ub.py:131 +#: cps/ub.py:88 msgid "Categories" msgstr "Kategorien" -#: cps/ub.py:133 +#: cps/ub.py:90 msgid "Show category selection" msgstr "Zeige Kategorienauswahl" #: cps/templates/book_edit.html:71 cps/templates/search_form.html:53 -#: cps/ub.py:134 +#: cps/ub.py:91 msgid "Series" msgstr "Serien" -#: cps/ub.py:136 +#: cps/ub.py:93 msgid "Show series selection" msgstr "Zeige Serienauswahl" -#: cps/templates/index.xml:61 cps/ub.py:137 +#: cps/templates/index.xml:61 cps/ub.py:94 msgid "Authors" msgstr "Autoren" -#: cps/ub.py:139 +#: cps/ub.py:96 msgid "Show author selection" msgstr "Zeige Autorenauswahl" -#: cps/templates/index.xml:68 cps/ub.py:141 +#: cps/templates/index.xml:68 cps/ub.py:98 msgid "Publishers" msgstr "Verleger" -#: cps/ub.py:143 +#: cps/ub.py:100 msgid "Show publisher selection" msgstr "Zeige Verleger Auswahl" -#: cps/templates/search_form.html:74 cps/ub.py:144 +#: cps/templates/search_form.html:74 cps/ub.py:101 msgid "Languages" msgstr "Sprachen" -#: cps/ub.py:147 +#: cps/ub.py:104 msgid "Show language selection" msgstr "Zeige Sprachauswahl" -#: cps/ub.py:148 +#: cps/ub.py:105 msgid "Ratings" msgstr "Bewertungen" -#: cps/ub.py:150 +#: cps/ub.py:107 msgid "Show ratings selection" msgstr "Zeige Bewertungsauswahl" -#: cps/ub.py:151 +#: cps/ub.py:108 msgid "File formats" -msgstr "" +msgstr "Datei Formate" -#: cps/ub.py:153 +#: cps/ub.py:110 msgid "Show file formats selection" -msgstr "" +msgstr "Zeige Datei Format Auswahl" -#: cps/updater.py:257 cps/updater.py:364 cps/updater.py:377 +#: cps/updater.py:253 cps/updater.py:360 cps/updater.py:373 msgid "Unexpected data while reading update information" msgstr "Updateinformationen enthalten unbekannte Daten" -#: cps/updater.py:264 cps/updater.py:370 +#: cps/updater.py:260 cps/updater.py:366 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:290 cps/updater.py:422 +#: cps/updater.py:286 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 aktuelle Version zu aktualisieren." -#: cps/updater.py:343 +#: cps/updater.py:339 msgid "Could not fetch update information" msgstr "Update Informationen konnten nicht geladen werden" -#: cps/updater.py:357 +#: cps/updater.py:353 msgid "No release information available" msgstr "Keine Release Informationen verfügbar" -#: cps/updater.py:403 cps/updater.py:412 +#: cps/updater.py:406 cps/updater.py:415 #, 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/web.py:457 +#: cps/updater.py:425 +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 updaten." + +#: cps/web.py:445 msgid "Recently Added Books" msgstr "Kürzlich hinzugefügte Bücher" -#: cps/web.py:484 +#: cps/web.py:473 msgid "Best rated books" msgstr "Best bewertete Bücher" -#: cps/templates/index.xml:38 cps/web.py:492 +#: cps/templates/index.xml:38 cps/web.py:481 msgid "Random Books" msgstr "Zufällige Bücher" -#: cps/web.py:516 +#: cps/web.py:505 msgid "Books" -msgstr "" +msgstr "Bücher" -#: cps/web.py:543 +#: cps/web.py:532 msgid "Hot Books (most downloaded)" msgstr "Beliebte Bücher (die meisten Downloads)" -#: cps/web.py:553 cps/web.py:1294 cps/web.py:1383 +#: cps/web.py:542 cps/web.py:1298 cps/web.py:1386 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "Buch öffnen fehlgeschlagen. Datei existiert nicht, oder ist nicht zugänglich:" -#: cps/web.py:580 +#: cps/web.py:559 +#, python-format +msgid "Author: %(name)s" +msgstr "Author: %(name)s" + +#: cps/web.py:571 #, python-format msgid "Publisher: %(name)s" msgstr "Verleger: %(name)s" -#: cps/web.py:591 +#: cps/web.py:582 #, python-format msgid "Series: %(serie)s" msgstr "Serie: %(serie)s" -#: cps/web.py:602 +#: cps/web.py:593 #, python-format msgid "Rating: %(rating)s stars" -msgstr "" +msgstr "Bewertung: %(rating)s Sterne" -#: cps/web.py:613 +#: cps/web.py:604 #, python-format msgid "File format: %(format)s" -msgstr "" +msgstr "Datei Format: %(format)s" -#: cps/web.py:625 +#: cps/web.py:616 #, python-format msgid "Category: %(name)s" msgstr "Kategorie: %(name)s" -#: cps/web.py:659 +#: cps/web.py:650 msgid "Publisher list" msgstr "Verlegerliste" -#: cps/templates/index.xml:82 cps/web.py:675 +#: cps/templates/index.xml:82 cps/web.py:666 msgid "Series list" msgstr "Liste Serien" -#: cps/web.py:689 +#: cps/web.py:680 msgid "Ratings list" msgstr "Bewertungsliste" -#: cps/web.py:702 +#: cps/web.py:693 msgid "File formats list" -msgstr "" +msgstr "Datei Format Liste" -#: cps/web.py:730 +#: cps/web.py:721 msgid "Available languages" msgstr "Verfügbare Sprachen" -#: cps/web.py:750 +#: cps/web.py:741 #, python-format msgid "Language: %(name)s" msgstr "Sprache: %(name)s" -#: cps/templates/index.xml:75 cps/web.py:764 +#: cps/templates/index.xml:75 cps/web.py:755 msgid "Category list" msgstr "Kategorieliste" -#: cps/templates/layout.html:73 cps/web.py:777 +#: cps/templates/layout.html:73 cps/web.py:769 msgid "Tasks" msgstr "Aufgaben" -#: cps/web.py:841 +#: cps/web.py:834 msgid "Published after " msgstr "Herausgegeben nach dem " -#: cps/web.py:848 +#: cps/web.py:841 msgid "Published before " msgstr "Herausgegeben vor dem " -#: cps/web.py:862 +#: cps/web.py:855 #, python-format msgid "Rating <= %(rating)s" msgstr "Bewertung <= %(rating)s" -#: cps/web.py:864 +#: cps/web.py:857 #, python-format msgid "Rating >= %(rating)s" msgstr "Bewertung >= %(rating)s" -#: cps/web.py:924 cps/web.py:933 +#: cps/web.py:917 cps/web.py:926 msgid "search" msgstr "Suche" -#: cps/web.py:1018 +#: cps/web.py:1012 msgid "Please configure the SMTP mail settings first..." msgstr "Bitte zuerst die SMTP Mail Einstellung konfigurieren ..." -#: cps/web.py:1023 +#: cps/web.py:1017 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Buch erfolgreich zum Senden an %(kindlemail)s eingereiht" -#: cps/web.py:1027 +#: cps/web.py:1021 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Beim Senden des Buchs trat ein Fehler auf: %(res)s" -#: cps/web.py:1046 cps/web.py:1071 cps/web.py:1076 cps/web.py:1081 -#: cps/web.py:1085 +#: cps/web.py:1041 cps/web.py:1066 cps/web.py:1070 cps/web.py:1075 +#: cps/web.py:1079 msgid "register" msgstr "Registieren" -#: cps/web.py:1073 +#: cps/web.py:1068 msgid "Your e-mail is not allowed to register" msgstr "Diese E-Mail ist nicht für die Registrierung zugelassen" -#: cps/web.py:1077 +#: cps/web.py:1071 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Eine Bestätigungs E-Mail wurde an den E-Mail Account versendet." -#: cps/web.py:1080 +#: cps/web.py:1074 msgid "This username or e-mail address is already in use." msgstr "Benutzername oder E-Mailadresse ist bereits in Verwendung." -#: cps/web.py:1103 cps/web.py:1115 +#: cps/web.py:1089 +msgid "Cannot activate LDAP authentication" +msgstr "LDAP Authentifizierung kann nicht aktiviert werden" + +#: cps/web.py:1098 cps/web.py:1212 #, python-format -msgid "You are now logged in as: '%(nickname)s'" -msgstr "" +msgid "you are now logged in as: '%(nickname)s'" +msgstr "Du bist nun eingeloggt als '%(nickname)s'" -#: cps/web.py:1108 cps/web.py:1120 +#: cps/web.py:1105 cps/web.py:1122 msgid "Wrong Username or Password" msgstr "Falscher Benutzername oder Passwort" -#: cps/web.py:1111 +#: cps/web.py:1108 msgid "Could not login. LDAP server down, please contact your administrator" -msgstr "" +msgstr "Login nicht erfolgreich, LDAP Server nicht erreichbar, bitte Administrator kontaktieren" -#: cps/web.py:1124 cps/web.py:1146 +#: cps/web.py:1117 +#, python-format +msgid "You are now logged in as: '%(nickname)s'" +msgstr "Eingeloggt als: '%(nickname)s'" + +#: cps/web.py:1126 cps/web.py:1148 msgid "login" msgstr "Login" -#: cps/web.py:1158 cps/web.py:1189 +#: cps/web.py:1160 cps/web.py:1191 msgid "Token not found" msgstr "Token wurde nicht gefunden" -#: cps/web.py:1166 cps/web.py:1197 +#: cps/web.py:1168 cps/web.py:1199 msgid "Token has expired" msgstr "Das Token ist abgelaufen" -#: cps/web.py:1174 +#: cps/web.py:1176 msgid "Success! Please return to your device" msgstr "Erfolg! Bitte zum Gerät zurückkehren" -#: cps/web.py:1210 -#, python-format -msgid "you are now logged in as: '%(nickname)s'" -msgstr "Du bist nun eingeloggt als '%(nickname)s'" - -#: cps/web.py:1250 cps/web.py:1277 cps/web.py:1281 +#: cps/web.py:1253 cps/web.py:1280 cps/web.py:1284 #, python-format msgid "%(name)s's profile" msgstr "%(name)s's Profil" -#: cps/web.py:1274 +#: cps/web.py:1277 msgid "Found an existing account for this e-mail address." msgstr "Es existiert bereits ein Benutzer für diese E-Mailadresse." -#: cps/web.py:1279 +#: cps/web.py:1282 msgid "Profile updated" msgstr "Profil aktualisiert" -#: cps/web.py:1304 cps/web.py:1306 cps/web.py:1308 cps/web.py:1314 -#: cps/web.py:1318 +#: cps/web.py:1308 cps/web.py:1310 cps/web.py:1312 cps/web.py:1318 +#: cps/web.py:1322 msgid "Read a Book" msgstr "Lese ein Buch" -#: cps/web.py:1328 +#: cps/web.py:1332 msgid "Error opening eBook. File does not exist or file is not accessible." -msgstr "" +msgstr "Fehler beim Öffnen des eBooks. Datei existiert nicht, oder Zugriff ist nicht erlaubt. " -#: cps/worker.py:308 +#: cps/worker.py:311 #, python-format msgid "Ebook-converter failed: %(error)s" msgstr "Fehler EBook-converter: %(error)s" -#: cps/worker.py:319 +#: cps/worker.py:322 #, python-format msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "Kindlegen Aufruf mit Fehler %(error)s. Text: %(message)s fehlgeschlagen" @@ -977,7 +987,7 @@ msgstr "Download" #: cps/templates/admin.html:15 msgid "View Ebooks" -msgstr "" +msgstr "EBook ansehen" #: cps/templates/admin.html:16 cps/templates/layout.html:65 msgid "Upload" @@ -1056,53 +1066,57 @@ msgid "Administration" msgstr "Administration" #: cps/templates/admin.html:109 +msgid "View Logfiles" +msgstr "Logdateien ansehen" + +#: cps/templates/admin.html:110 msgid "Reconnect to Calibre DB" msgstr "Calibre-DB neu verbinden" -#: cps/templates/admin.html:110 +#: cps/templates/admin.html:111 msgid "Restart Calibre-Web" msgstr "Calibre-Web Neustarten" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:112 msgid "Stop Calibre-Web" msgstr "Stoppe Calibre-Web" -#: cps/templates/admin.html:117 +#: cps/templates/admin.html:118 msgid "Update" msgstr "Update" -#: cps/templates/admin.html:121 +#: cps/templates/admin.html:122 msgid "Version" msgstr "Version" -#: cps/templates/admin.html:122 +#: cps/templates/admin.html:123 msgid "Details" msgstr "Details" -#: cps/templates/admin.html:128 +#: cps/templates/admin.html:129 msgid "Current version" msgstr "Aktuelle Version" -#: cps/templates/admin.html:134 +#: cps/templates/admin.html:135 msgid "Check for update" msgstr "Suche nach Update" -#: cps/templates/admin.html:135 +#: cps/templates/admin.html:136 msgid "Perform Update" msgstr "Update durchführen" -#: cps/templates/admin.html:147 +#: cps/templates/admin.html:148 msgid "Do you really want to restart Calibre-Web?" msgstr "Calibre-Web wirklich neustarten?" -#: cps/templates/admin.html:152 cps/templates/admin.html:166 -#: cps/templates/admin.html:186 cps/templates/shelf.html:72 +#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:187 cps/templates/shelf.html:72 msgid "Ok" msgstr "Ok" -#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:154 cps/templates/admin.html:168 #: cps/templates/book_edit.html:174 cps/templates/book_edit.html:196 -#: cps/templates/config_edit.html:281 cps/templates/config_view_edit.html:147 +#: cps/templates/config_edit.html:331 cps/templates/config_view_edit.html:147 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 @@ -1110,11 +1124,11 @@ msgstr "Ok" msgid "Back" msgstr "Zurück" -#: cps/templates/admin.html:165 +#: cps/templates/admin.html:166 msgid "Do you really want to stop Calibre-Web?" msgstr "Calibre-Web wirklich stoppen?" -#: cps/templates/admin.html:177 +#: cps/templates/admin.html:178 msgid "Updating, please do not reload page" msgstr "Updatevorgang, bitte Seite nicht neu laden" @@ -1243,7 +1257,7 @@ msgstr "Buch nach Bearbeitung ansehen" msgid "Get metadata" msgstr "Metadaten laden" -#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:279 +#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329 #: cps/templates/config_view_edit.html:146 cps/templates/login.html:20 #: cps/templates/search_form.html:150 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:130 @@ -1387,123 +1401,171 @@ msgstr "Log Level" msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "Position und Name des Logfiles (calibre-web.log bei keinem Eintrag)" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:134 +msgid "Enable Access Log" +msgstr "Zugriffs-Logdatei aktivieren" + +#: cps/templates/config_edit.html:137 +msgid "Location and name of access logfile (access.log for no entry)" +msgstr "Position und Name des Zugriffs-Logfiles (access.log bei keinem Eintrag)" + +#: cps/templates/config_edit.html:148 msgid "Feature Configuration" msgstr "Feature Konfiguration" -#: cps/templates/config_edit.html:148 +#: cps/templates/config_edit.html:156 msgid "Enable uploading" msgstr "Hochladen aktivieren" -#: cps/templates/config_edit.html:152 +#: cps/templates/config_edit.html:160 msgid "Enable anonymous browsing" msgstr "Anonymes Browsen aktivieren" -#: cps/templates/config_edit.html:156 +#: cps/templates/config_edit.html:164 msgid "Enable public registration" msgstr "Öffentliche Registrierung aktivieren" -#: cps/templates/config_edit.html:160 +#: cps/templates/config_edit.html:168 msgid "Enable remote login (\"magic link\")" msgstr "Remote Login aktivieren ('Magischer Link')" -#: cps/templates/config_edit.html:165 +#: cps/templates/config_edit.html:173 msgid "Use" msgstr "Benutze" -#: cps/templates/config_edit.html:166 +#: cps/templates/config_edit.html:174 msgid "Obtain an API Key" msgstr "Einen API Schlüssel erhalten" -#: cps/templates/config_edit.html:170 +#: cps/templates/config_edit.html:178 msgid "Goodreads API Key" msgstr "Öffentlicher Goodreads API Schlüssel" -#: cps/templates/config_edit.html:174 +#: cps/templates/config_edit.html:182 msgid "Goodreads API Secret" msgstr "Geheimer Goodreads API Schlüssel" -#: cps/templates/config_edit.html:181 +#: cps/templates/config_edit.html:189 msgid "Login type" msgstr "Login typ" -#: cps/templates/config_edit.html:183 +#: cps/templates/config_edit.html:191 msgid "Use standard Authentication" msgstr "Benutze Standard Anmeldung" -#: cps/templates/config_edit.html:185 +#: cps/templates/config_edit.html:193 msgid "Use LDAP Authentication" msgstr "Benutze LDAP Login" -#: cps/templates/config_edit.html:188 +#: cps/templates/config_edit.html:196 msgid "Use GitHub OAuth" msgstr "Benutze Github Oauth" -#: cps/templates/config_edit.html:189 +#: cps/templates/config_edit.html:197 msgid "Use Google OAuth" msgstr "Benutze Google Oauth" -#: cps/templates/config_edit.html:196 -msgid "LDAP Provider URL" -msgstr "LDAP Anbieter Url" +#: cps/templates/config_edit.html:204 +msgid "LDAP Server Host Name or IP Address" +msgstr "LDAP Server Host Name oder IP Adresse" + +#: cps/templates/config_edit.html:208 +msgid "LDAP Server Port" +msgstr "LDAP Server Port" + +#: cps/templates/config_edit.html:212 +msgid "LDAP schema (ldap or ldaps)" +msgstr "LDAP Schema (ldap oder ldaps)" + +#: cps/templates/config_edit.html:216 +msgid "LDAP Admin username" +msgstr "LDAP Admin Benutzername" + +#: cps/templates/config_edit.html:220 +msgid "LDAP Admin password" +msgstr "LDAP Admin Passwort" -#: cps/templates/config_edit.html:200 +#: cps/templates/config_edit.html:225 +msgid "LDAP Server use SSL" +msgstr "LDAP Server benutzt SSL" + +#: cps/templates/config_edit.html:229 +msgid "LDAP Server use TLS" +msgstr "LDAP Server benutzt TLS" + +#: cps/templates/config_edit.html:233 +msgid "LDAP Server Certificate" +msgstr "LDAP Server Zertifikat" + +#: cps/templates/config_edit.html:237 +msgid "LDAP SSL Certificate Path" +msgstr "LDAP SSL Zertifikat Pfad" + +#: cps/templates/config_edit.html:242 msgid "LDAP Distinguished Name (DN)" -msgstr "" +msgstr "LDAP Distinguished Name (DN)" -#: cps/templates/config_edit.html:208 +#: cps/templates/config_edit.html:246 +msgid "LDAP User object filter" +msgstr "LDAP User Object Filter" + +#: cps/templates/config_edit.html:251 +msgid "LDAP Server is OpenLDAP?" +msgstr "LDAP Server ist OpenLDAP?" + +#: cps/templates/config_edit.html:258 msgid "Obtain GitHub OAuth Credential" -msgstr "" +msgstr "GitHub OAuth Credential erhalten" -#: cps/templates/config_edit.html:211 +#: cps/templates/config_edit.html:261 msgid "GitHub OAuth Client Id" msgstr "Github OAuth Client ID" -#: cps/templates/config_edit.html:215 +#: cps/templates/config_edit.html:265 msgid "GitHub OAuth Client Secret" msgstr "Github OAuth Client Secret" -#: cps/templates/config_edit.html:221 +#: cps/templates/config_edit.html:271 msgid "Obtain Google OAuth Credential" -msgstr "" +msgstr "Google OAuth Credential erhalten" -#: cps/templates/config_edit.html:224 +#: cps/templates/config_edit.html:274 msgid "Google OAuth Client Id" msgstr "Google OAuth Client ID" -#: cps/templates/config_edit.html:228 +#: cps/templates/config_edit.html:278 msgid "Google OAuth Client Secret" msgstr "Google OAuth Client Secret" -#: cps/templates/config_edit.html:242 +#: cps/templates/config_edit.html:292 msgid "External binaries" msgstr "Externe Programme" -#: cps/templates/config_edit.html:250 +#: cps/templates/config_edit.html:300 msgid "No converter" msgstr "Kein Konverter" -#: cps/templates/config_edit.html:252 +#: cps/templates/config_edit.html:302 msgid "Use Kindlegen" msgstr "Kindlegen benutzen" -#: cps/templates/config_edit.html:254 +#: cps/templates/config_edit.html:304 msgid "Use calibre's ebook converter" msgstr "Benutze Calibre's Ebook Konverter" -#: cps/templates/config_edit.html:258 +#: cps/templates/config_edit.html:308 msgid "E-Book converter settings" msgstr "E-Book Konverter Einstellungen" -#: cps/templates/config_edit.html:262 +#: cps/templates/config_edit.html:312 msgid "Path to convertertool" msgstr "Pfad zu Konvertertool" -#: cps/templates/config_edit.html:268 +#: cps/templates/config_edit.html:318 msgid "Location of Unrar binary" msgstr "Pfad zum UnRar Programm" -#: cps/templates/config_edit.html:284 cps/templates/layout.html:84 +#: cps/templates/config_edit.html:334 cps/templates/layout.html:84 #: cps/templates/login.html:4 msgid "Login" msgstr "Login" @@ -1566,7 +1628,7 @@ msgstr "Downloads erlauben" #: cps/templates/config_view_edit.html:89 cps/templates/user_edit.html:96 msgid "Allow book viewer" -msgstr "" +msgstr "Buch Anzeige erlauben" #: cps/templates/config_view_edit.html:93 cps/templates/user_edit.html:100 msgid "Allow Uploads" @@ -1717,9 +1779,9 @@ msgstr "Zurück zur Hautseite" msgid "Discover (Random Books)" msgstr "Entdecke (Zufälliges Buch)" -#: cps/templates/index.html:65 +#: cps/templates/index.html:64 msgid "Group by series" -msgstr "" +msgstr "Gruppierung per Serie" #: cps/templates/index.xml:6 msgid "Start" @@ -1779,7 +1841,7 @@ msgstr "Persönliches Bücherregal des Benutzers, nur sichtbar für den aktuelle #: cps/templates/layout.html:28 msgid "Home" -msgstr "" +msgstr "Home" #: cps/templates/layout.html:34 msgid "Toggle navigation" @@ -1796,7 +1858,7 @@ msgstr "Einstellungen" #: cps/templates/layout.html:78 msgid "Account" -msgstr "" +msgstr "Account" #: cps/templates/layout.html:80 msgid "Logout" @@ -1860,6 +1922,14 @@ msgstr "Merken" msgid "Log in with magic link" msgstr "Einloggen mit magischem Link" +#: cps/templates/logviewer.html:5 +msgid "Show Calibre-Web log" +msgstr "Zeige Calibre-Web Logdatei" + +#: cps/templates/logviewer.html:8 +msgid "Show access log" +msgstr "Zeige Zugriffslogdatei" + #: cps/templates/osd.xml:5 msgid "Calibre-Web ebook catalog" msgstr "Calibre-Web E-Book Katalog" @@ -1966,7 +2036,7 @@ msgstr "Rechts nach links" #: cps/templates/readpdf.html:29 msgid "PDF reader" -msgstr "" +msgstr "PDF Reader" #: cps/templates/readtxt.html:6 msgid "Basic txt Reader" @@ -2154,15 +2224,15 @@ msgstr "Zeige alle" #: cps/templates/user_edit.html:52 msgid "OAuth Settings" -msgstr "" +msgstr "Oauth Einstellungen" #: cps/templates/user_edit.html:54 msgid "Link" -msgstr "" +msgstr "Verknüpfung herstellen" #: cps/templates/user_edit.html:56 msgid "Unlink" -msgstr "" +msgstr "Verknüpfung entfernen" #: cps/templates/user_edit.html:124 msgid "Delete this user" @@ -2211,3 +2281,21 @@ msgstr "Letzte Downloads" #~ msgid "PDF.js viewer" #~ msgstr "PDF.js Viewer" +#~ msgid "Failed to create path for cover %(path)s (Permission denied)." +#~ msgstr "Fehler beim Erzeugen des Pfads für das Cover %(path)s (Zugriff verweigert)" + +#~ msgid "Failed to store cover-file %(cover)s." +#~ msgstr "Fehler beim Speichern des Covers %(cover)s." + +#~ msgid "Cover-file is not a valid image file" +#~ msgstr "Cover-Datei ist keine gültige Bilddatei" + +#~ msgid "successfully deleted shelf %(name)s" +#~ msgstr "Bücherregal %(name)s erfolgreich gelöscht" + +#~ msgid "LDAP Provider URL" +#~ msgstr "LDAP Anbieter Url" + +#~ msgid "Register with %s, " +#~ msgstr "" + diff --git a/cps/translations/es/LC_MESSAGES/messages.mo b/cps/translations/es/LC_MESSAGES/messages.mo index b9404c8b..6d50c4d7 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 206f5129..960f9dee 100644 --- a/cps/translations/es/LC_MESSAGES/messages.po +++ b/cps/translations/es/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: 2019-05-31 11:20+0200\n" +"POT-Creation-Date: 2019-06-22 19:54+0200\n" "PO-Revision-Date: 2018-10-05 11:27+0100\n" "Last-Translator: victorhck \n" "Language: es\n" @@ -16,13 +16,13 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" -#: cps/about.py:76 +#: cps/about.py:78 msgid "Statistics" msgstr "Estadísticas" -#: cps/admin.py:97 +#: cps/admin.py:98 msgid "Server restarted, please reload page" msgstr "Servidor reiniciado. Por favor, recargue la página" @@ -30,186 +30,202 @@ msgstr "Servidor reiniciado. Por favor, recargue la página" msgid "Performing shutdown of server, please close window" msgstr "Servidor en proceso de apagado. Por favor, cierre la ventana." -#: cps/admin.py:120 cps/updater.py:445 +#: cps/admin.py:119 cps/updater.py:448 msgid "Unknown" msgstr "Desconocido" -#: cps/admin.py:139 +#: cps/admin.py:138 msgid "Admin page" msgstr "Página de administración" -#: cps/admin.py:208 cps/admin.py:486 +#: cps/admin.py:207 cps/admin.py:532 msgid "Calibre-Web configuration updated" msgstr "Configuración de Calibre-Web actualizada" -#: cps/admin.py:222 cps/templates/admin.html:102 +#: cps/admin.py:220 cps/templates/admin.html:102 msgid "UI Configuration" msgstr "Configuración de la interfaz del usuario" -#: cps/admin.py:295 +#: cps/admin.py:293 msgid "Import of optional Google Drive requirements missing" msgstr "Falta la importación de requisitos opcionales de Google Drive" -#: cps/admin.py:298 +#: cps/admin.py:296 msgid "client_secrets.json is missing or not readable" msgstr "client_secrets.json está desaparecido o no se puede leer" -#: cps/admin.py:303 cps/admin.py:332 +#: cps/admin.py:301 cps/admin.py:330 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:335 cps/admin.py:361 cps/admin.py:373 cps/admin.py:398 -#: cps/admin.py:426 cps/admin.py:440 cps/admin.py:463 cps/admin.py:476 -#: cps/admin.py:494 cps/admin.py:501 cps/admin.py:516 -#: cps/templates/admin.html:101 +#: cps/admin.py:333 cps/admin.py:359 cps/admin.py:371 cps/admin.py:396 +#: cps/admin.py:403 cps/admin.py:436 cps/admin.py:460 cps/admin.py:474 +#: cps/admin.py:493 cps/admin.py:510 cps/admin.py:522 cps/admin.py:538 +#: cps/admin.py:545 cps/admin.py:559 cps/templates/admin.html:101 msgid "Basic Configuration" msgstr "Configuración básica" -#: cps/admin.py:358 +#: cps/admin.py:356 msgid "Keyfile location is not valid, please enter correct path" msgstr "La ubicación del fichero clave (Keyfile) no es válida, por favor introduzca la ruta correcta" -#: cps/admin.py:370 +#: cps/admin.py:368 cps/admin.py:433 msgid "Certfile location is not valid, please enter correct path" msgstr "La ubicación del fichero de certificado (Certfile) no es válida, por favor introduzca la ruta correcta" -#: cps/admin.py:395 -msgid "Please enter a LDAP provider and a DN" +#: cps/admin.py:393 +msgid "Please enter a LDAP provider, port, DN and user object identifier" msgstr "" -#: cps/admin.py:423 +#: cps/admin.py:400 +msgid "Please enter a LDAP service account and password" +msgstr "" + +#: cps/admin.py:457 msgid "Please enter Github oauth credentials" msgstr "" -#: cps/admin.py:437 +#: cps/admin.py:471 msgid "Please enter Google oauth credentials" msgstr "" -#: cps/admin.py:460 +#: cps/admin.py:490 msgid "Logfile location is not valid, please enter correct path" msgstr "La ubicación del fichero de registro (Logfile) no es válida, por favor introduzca la ruta correcta" -#: cps/admin.py:498 +#: cps/admin.py:507 +msgid "Access Logfile location is not valid, please enter correct path" +msgstr "" + +#: cps/admin.py:542 msgid "DB location is not valid, please enter correct path" msgstr "Localización de la BD inválida, por favor introduzca la ruta correcta" -#: cps/admin.py:558 cps/web.py:1045 +#: cps/admin.py:602 cps/web.py:1040 msgid "Please fill out all fields!" msgstr "¡Por favor completar todos los campos!" -#: cps/admin.py:560 cps/admin.py:566 cps/admin.py:582 +#: cps/admin.py:604 cps/admin.py:610 cps/admin.py:626 #: cps/templates/admin.html:35 msgid "Add new user" msgstr "Agregar un nuevo usuario" -#: cps/admin.py:564 cps/web.py:1248 +#: cps/admin.py:608 cps/web.py:1251 msgid "E-mail is not from valid domain" msgstr "El correo electrónico no tiene un nombre de dominio válido" -#: cps/admin.py:572 +#: cps/admin.py:616 #, python-format msgid "User '%(user)s' created" msgstr "Usuario '%(user)s' creado" -#: cps/admin.py:576 +#: cps/admin.py:620 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:607 +#: cps/admin.py:651 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "Correo electrónico de prueba enviado con éxito a %(kindlemail)s" -#: cps/admin.py:610 +#: cps/admin.py:654 #, 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:612 cps/web.py:1029 +#: cps/admin.py:656 cps/web.py:1023 msgid "Please configure your kindle e-mail address first..." msgstr "Por favor configure primero la dirección de correo de su kindle..." -#: cps/admin.py:614 +#: cps/admin.py:658 msgid "E-mail server settings updated" msgstr "Actualizados los ajustes del servidor de correo electrónico" -#: cps/admin.py:615 +#: cps/admin.py:659 msgid "Edit e-mail server settings" msgstr "Editar los ajustes del servidor de correo electrónico" -#: cps/admin.py:640 +#: cps/admin.py:687 #, python-format msgid "User '%(nick)s' deleted" msgstr "Usuario '%(nick)s' borrado" -#: cps/admin.py:711 +#: cps/admin.py:690 +msgid "No admin user remaining, can't delete user" +msgstr "" + +#: cps/admin.py:761 #, python-format msgid "User '%(nick)s' updated" msgstr "Usuario '%(nick)s' actualizado" -#: cps/admin.py:714 +#: cps/admin.py:764 msgid "An unknown error occured." msgstr "Ocurrió un error inesperado." -#: cps/admin.py:717 +#: cps/admin.py:767 #, python-format msgid "Edit User %(nick)s" msgstr "Editar Usuario %(nick)s" -#: cps/admin.py:733 +#: cps/admin.py:783 #, python-format msgid "Password for user %(user)s reset" msgstr "Contraseña para el usuario %(user)s reinicializada" -#: cps/admin.py:736 cps/web.py:1070 +#: cps/admin.py:786 cps/web.py:1065 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:755 +#: cps/admin.py:797 +msgid "Logfile viewer" +msgstr "" + +#: cps/admin.py:832 msgid "Requesting update package" msgstr "Solicitando paquete de actualización" -#: cps/admin.py:756 +#: cps/admin.py:833 msgid "Downloading update package" msgstr "Descargando paquete de actualización" -#: cps/admin.py:757 +#: cps/admin.py:834 msgid "Unzipping update package" msgstr "Descomprimiendo paquete de actualización" -#: cps/admin.py:758 +#: cps/admin.py:835 msgid "Replacing files" msgstr "" -#: cps/admin.py:759 +#: cps/admin.py:836 msgid "Database connections are closed" msgstr "Los conexiones de base datos están cerradas" -#: cps/admin.py:760 +#: cps/admin.py:837 msgid "Stopping server" msgstr "" -#: cps/admin.py:761 +#: cps/admin.py:838 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:762 cps/admin.py:763 cps/admin.py:764 cps/admin.py:765 +#: cps/admin.py:839 cps/admin.py:840 cps/admin.py:841 cps/admin.py:842 msgid "Update failed:" msgstr "" -#: cps/admin.py:762 cps/updater.py:277 cps/updater.py:456 cps/updater.py:458 +#: cps/admin.py:839 cps/updater.py:273 cps/updater.py:459 cps/updater.py:461 msgid "HTTP Error" msgstr "Error HTTP" -#: cps/admin.py:763 cps/updater.py:279 cps/updater.py:460 +#: cps/admin.py:840 cps/updater.py:275 cps/updater.py:463 msgid "Connection error" msgstr "Error de conexión" -#: cps/admin.py:764 cps/updater.py:281 cps/updater.py:462 +#: cps/admin.py:841 cps/updater.py:277 cps/updater.py:465 msgid "Timeout while establishing connection" msgstr "Tiempo agotado mientras se trataba de establecer la conexión" -#: cps/admin.py:765 cps/updater.py:283 cps/updater.py:464 +#: cps/admin.py:842 cps/updater.py:279 cps/updater.py:467 msgid "General error" msgstr "Error general" @@ -227,720 +243,714 @@ msgstr "Permisos de ejecución ausentes" msgid "not configured" msgstr "" -#: cps/editbooks.py:218 cps/editbooks.py:432 +#: cps/editbooks.py:215 cps/editbooks.py:394 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:246 +#: cps/editbooks.py:243 msgid "edit metadata" msgstr "editar metadatos" -#: cps/editbooks.py:325 cps/editbooks.py:595 +#: cps/editbooks.py:322 cps/editbooks.py:557 #, 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:329 cps/editbooks.py:599 +#: cps/editbooks.py:326 cps/editbooks.py:561 msgid "File to be uploaded must have an extension" msgstr "El archivo a subir debe tener una extensión" -#: cps/editbooks.py:341 cps/editbooks.py:619 +#: cps/editbooks.py:338 cps/editbooks.py:581 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Fallo al crear la ruta %(path)s (permiso denegado)" -#: cps/editbooks.py:346 +#: cps/editbooks.py:343 #, python-format msgid "Failed to store file %(file)s." msgstr "Falla al guardar el archivo %(file)s." -#: cps/editbooks.py:363 +#: cps/editbooks.py:360 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Fichero con formato %(ext)s añadido a %(book)s" -#: cps/editbooks.py:382 -#, python-format -msgid "Failed to create path for cover %(path)s (Permission denied)." -msgstr "" - -#: cps/editbooks.py:390 -#, python-format -msgid "Failed to store cover-file %(cover)s." -msgstr "" - -#: cps/editbooks.py:393 -msgid "Cover-file is not a valid image file" -msgstr "" - -#: cps/editbooks.py:399 cps/editbooks.py:413 +#: cps/editbooks.py:374 msgid "Cover is not a supported imageformat (jpg/png/webp), can't save" msgstr "" -#: cps/editbooks.py:445 cps/editbooks.py:454 +#: cps/editbooks.py:407 cps/editbooks.py:416 msgid "unknown" msgstr "desconocido" -#: cps/editbooks.py:486 +#: cps/editbooks.py:448 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/editbooks.py:534 +#: cps/editbooks.py:496 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s no es un idioma válido" -#: cps/editbooks.py:565 +#: cps/editbooks.py:527 msgid "Metadata successfully updated" msgstr "" -#: cps/editbooks.py:574 +#: cps/editbooks.py:536 msgid "Error editing book, please check logfile for details" msgstr "Error al editar el libro, por favor compruebe el fichero de registro (logfile) para tener más detalles" -#: cps/editbooks.py:624 +#: cps/editbooks.py:586 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "Fallo al guardar el archivo %(file)s (permiso denegado)" -#: cps/editbooks.py:629 +#: cps/editbooks.py:591 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "Fallo al borrar el archivo %(file)s (permiso denegado)" -#: cps/editbooks.py:712 +#: cps/editbooks.py:674 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:741 +#: cps/editbooks.py:703 msgid "Source or destination format for conversion missing" msgstr "Falta la fuente o el formato de destino para la conversión" -#: cps/editbooks.py:751 +#: cps/editbooks.py:711 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Libro puesto a la cola con éxito para convertirlo a %(book_format)s" -#: cps/editbooks.py:755 +#: cps/editbooks.py:715 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Ocurrió un error al convertir este libro: %(res)s" -#: cps/gdrive.py:56 +#: cps/gdrive.py:61 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "" -#: cps/gdrive.py:101 +#: cps/gdrive.py:106 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "El dominio de devolución de llamada no se ha verificado, siga los pasos para verificar el dominio en la consola de desarrollador de Google" -#: cps/helper.py:97 +#: cps/helper.py:94 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "%(format)s formato no encontrado para el id del libro: %(book)d" -#: cps/helper.py:109 +#: cps/helper.py:106 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "%(format)s no encontrado en Google Drive: %(fn)s" -#: cps/helper.py:116 cps/helper.py:223 cps/templates/detail.html:41 +#: cps/helper.py:113 cps/helper.py:220 cps/templates/detail.html:41 #: cps/templates/detail.html:45 msgid "Send to Kindle" msgstr "Enviar a Kindle" -#: cps/helper.py:117 cps/helper.py:135 cps/helper.py:225 +#: cps/helper.py:114 cps/helper.py:132 cps/helper.py:222 msgid "This e-mail has been sent via Calibre-Web." msgstr "Este correo electrónico ha sido enviado por Calibre-Web." -#: cps/helper.py:128 +#: cps/helper.py:125 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "%(format)s no encontrado: %(fn)s" -#: cps/helper.py:133 +#: cps/helper.py:130 msgid "Calibre-Web test e-mail" msgstr "Calibre-Web comprobar correo electrónico" -#: cps/helper.py:134 +#: cps/helper.py:131 msgid "Test e-mail" msgstr "Comprobar correo electrónico" -#: cps/helper.py:150 +#: cps/helper.py:147 msgid "Get Started with Calibre-Web" msgstr "Primeros pasos con Calibre-Web" -#: cps/helper.py:151 +#: cps/helper.py:148 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "Registrar un correo electrónico para el usuario: %(name)s" -#: cps/helper.py:165 cps/helper.py:167 cps/helper.py:169 cps/helper.py:177 -#: cps/helper.py:179 cps/helper.py:181 +#: cps/helper.py:162 cps/helper.py:164 cps/helper.py:166 cps/helper.py:174 +#: cps/helper.py:176 cps/helper.py:178 #, python-format msgid "Send %(format)s to Kindle" msgstr "" -#: cps/helper.py:185 +#: cps/helper.py:182 #, python-format msgid "Convert %(orig)s to %(format)s and send to Kindle" msgstr "" -#: cps/helper.py:224 +#: cps/helper.py:221 #, python-format msgid "E-mail: %(book)s" msgstr "Correo electrónico: %(book)s" -#: cps/helper.py:227 +#: cps/helper.py:224 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "El fichero solicitado no puede ser leído. ¿Quizás existen problemas con los permisos?" -#: cps/helper.py:335 +#: cps/helper.py:331 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "El renombrado del título de: '%(src)s' a '%(dest)s' falló con errores: %(error)s" -#: cps/helper.py:345 +#: cps/helper.py:341 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "El renombrado del autor de: '%(src)s' a '%(dest)s' falló con errores: %(error)s" -#: cps/helper.py:359 +#: cps/helper.py:355 #, python-format msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:385 cps/helper.py:395 cps/helper.py:403 +#: cps/helper.py:381 cps/helper.py:391 cps/helper.py:399 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "Fichero %(file)s no encontrado en Google Drive" -#: cps/helper.py:424 +#: cps/helper.py:420 #, python-format 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:584 +#: cps/helper.py:579 msgid "Error excecuting UnRar" msgstr "Error ejecutando UnRar" -#: cps/helper.py:586 +#: cps/helper.py:581 msgid "Unrar binary file not found" msgstr "Fichero binario Unrar no encontrado" -#: cps/helper.py:614 +#: cps/helper.py:609 msgid "Waiting" msgstr "Esperando" -#: cps/helper.py:616 +#: cps/helper.py:611 msgid "Failed" msgstr "Fallido" -#: cps/helper.py:618 +#: cps/helper.py:613 msgid "Started" msgstr "Comenzado" -#: cps/helper.py:620 +#: cps/helper.py:615 msgid "Finished" msgstr "Finalizado" -#: cps/helper.py:622 +#: cps/helper.py:617 msgid "Unknown Status" msgstr "" -#: cps/helper.py:627 +#: cps/helper.py:622 msgid "E-mail: " msgstr "" -#: cps/helper.py:629 cps/helper.py:633 +#: cps/helper.py:624 cps/helper.py:628 msgid "Convert: " msgstr "" -#: cps/helper.py:631 +#: cps/helper.py:626 msgid "Upload: " msgstr "" -#: cps/helper.py:635 +#: cps/helper.py:630 msgid "Unknown Task: " msgstr "" -#: cps/oauth_bb.py:87 +#: cps/oauth_bb.py:91 #, python-format -msgid "Register with %s, " +msgid "Register with %(provider)s" msgstr "" -#: cps/oauth_bb.py:145 +#: cps/oauth_bb.py:149 msgid "Failed to log in with GitHub." msgstr "" -#: cps/oauth_bb.py:150 +#: cps/oauth_bb.py:154 msgid "Failed to fetch user info from GitHub." msgstr "" -#: cps/oauth_bb.py:161 +#: cps/oauth_bb.py:165 msgid "Failed to log in with Google." msgstr "" -#: cps/oauth_bb.py:166 +#: cps/oauth_bb.py:170 msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:265 +#: cps/oauth_bb.py:269 #, python-format msgid "Unlink to %(oauth)s success." msgstr "" -#: cps/oauth_bb.py:269 +#: cps/oauth_bb.py:273 #, python-format msgid "Unlink to %(oauth)s failed." msgstr "" -#: cps/oauth_bb.py:272 +#: cps/oauth_bb.py:276 #, python-format msgid "Not linked to %(oauth)s." msgstr "" -#: cps/oauth_bb.py:300 +#: cps/oauth_bb.py:304 msgid "GitHub Oauth error, please retry later." msgstr "" -#: cps/oauth_bb.py:319 +#: cps/oauth_bb.py:323 msgid "Google Oauth error, please retry later." msgstr "" -#: cps/shelf.py:40 cps/shelf.py:92 +#: cps/shelf.py:46 cps/shelf.py:98 msgid "Invalid shelf specified" msgstr "Estante especificado inválido" -#: cps/shelf.py:47 +#: cps/shelf.py:53 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" msgstr "" -#: cps/shelf.py:55 +#: cps/shelf.py:61 msgid "You are not allowed to edit public shelves" msgstr "" -#: cps/shelf.py:64 +#: cps/shelf.py:70 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" msgstr "" -#: cps/shelf.py:78 +#: cps/shelf.py:84 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "El libro fue agregado a el estante: %(sname)s" -#: cps/shelf.py:97 +#: cps/shelf.py:103 #, 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:102 +#: cps/shelf.py:108 msgid "User is not allowed to edit public shelves" msgstr "El usuario no tiene permiso para editar estantes públicos" -#: cps/shelf.py:120 +#: cps/shelf.py:126 #, 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:134 +#: cps/shelf.py:140 #, 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:136 +#: cps/shelf.py:142 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "No se pudieron agregar libros al estante: %(sname)s" -#: cps/shelf.py:173 +#: cps/shelf.py:179 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "El libro fue eliminado del estante: %(sname)s" -#: cps/shelf.py:179 +#: cps/shelf.py:185 #, 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:200 cps/shelf.py:224 +#: cps/shelf.py:206 cps/shelf.py:230 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Un estante con el nombre '%(title)s' ya existe." -#: cps/shelf.py:205 +#: cps/shelf.py:211 #, python-format msgid "Shelf %(title)s created" msgstr "Estante %(title)s creado" -#: cps/shelf.py:207 cps/shelf.py:235 +#: cps/shelf.py:213 cps/shelf.py:241 msgid "There was an error" msgstr "Ha sucedido un error" -#: cps/shelf.py:208 cps/shelf.py:210 +#: cps/shelf.py:214 cps/shelf.py:216 msgid "create a shelf" msgstr "crear un estante" -#: cps/shelf.py:233 +#: cps/shelf.py:239 #, python-format msgid "Shelf %(title)s changed" msgstr "Estante %(title)s cambiado" -#: cps/shelf.py:236 cps/shelf.py:238 +#: cps/shelf.py:242 cps/shelf.py:244 msgid "Edit a shelf" msgstr "Editar un estante" -#: cps/shelf.py:259 -#, python-format -msgid "successfully deleted shelf %(name)s" -msgstr "Estante %(name)s fue borrado correctamente" - -#: cps/shelf.py:289 +#: cps/shelf.py:295 #, python-format msgid "Shelf: '%(name)s'" msgstr "Estante: '%(name)s'" -#: cps/shelf.py:292 +#: cps/shelf.py:298 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/shelf.py:324 +#: cps/shelf.py:330 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Cambiar orden del estante: '%(name)s'" -#: cps/ub.py:111 +#: cps/ub.py:68 msgid "Recently Added" msgstr "Añadido recientemente" -#: cps/ub.py:113 +#: cps/ub.py:70 msgid "Show recent books" msgstr "Mostrar libros recientes" -#: cps/templates/index.xml:17 cps/ub.py:114 +#: cps/templates/index.xml:17 cps/ub.py:71 msgid "Hot Books" msgstr "Libros populares" -#: cps/ub.py:115 +#: cps/ub.py:72 msgid "Show hot books" msgstr "Mostrar libros populares" -#: cps/templates/index.xml:24 cps/ub.py:118 +#: cps/templates/index.xml:24 cps/ub.py:75 msgid "Best rated Books" msgstr "Libros mejor valorados" -#: cps/ub.py:120 +#: cps/ub.py:77 msgid "Show best rated books" msgstr "Mostrar libros mejor valorados" -#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:121 -#: cps/web.py:965 +#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:78 +#: cps/web.py:958 msgid "Read Books" msgstr "Libros leídos" -#: cps/ub.py:123 +#: cps/ub.py:80 msgid "Show read and unread" msgstr "Mostrar leídos y no leídos" -#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:125 -#: cps/web.py:969 +#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:82 +#: cps/web.py:962 msgid "Unread Books" msgstr "Libros no leídos" -#: cps/ub.py:127 +#: cps/ub.py:84 msgid "Show unread" msgstr "" -#: cps/ub.py:128 +#: cps/ub.py:85 msgid "Discover" msgstr "Descubrir" -#: cps/ub.py:130 +#: cps/ub.py:87 msgid "Show random books" msgstr "Mostrar libros al azar" -#: cps/ub.py:131 +#: cps/ub.py:88 msgid "Categories" msgstr "Categorías" -#: cps/ub.py:133 +#: cps/ub.py:90 msgid "Show category selection" msgstr "Mostrar categorías elegidas" #: cps/templates/book_edit.html:71 cps/templates/search_form.html:53 -#: cps/ub.py:134 +#: cps/ub.py:91 msgid "Series" msgstr "Series" -#: cps/ub.py:136 +#: cps/ub.py:93 msgid "Show series selection" msgstr "Mostrar series seleccionadas" -#: cps/templates/index.xml:61 cps/ub.py:137 +#: cps/templates/index.xml:61 cps/ub.py:94 msgid "Authors" msgstr "Autores" -#: cps/ub.py:139 +#: cps/ub.py:96 msgid "Show author selection" msgstr "Mostrar selección de autores" -#: cps/templates/index.xml:68 cps/ub.py:141 +#: cps/templates/index.xml:68 cps/ub.py:98 msgid "Publishers" msgstr "" -#: cps/ub.py:143 +#: cps/ub.py:100 msgid "Show publisher selection" msgstr "" -#: cps/templates/search_form.html:74 cps/ub.py:144 +#: cps/templates/search_form.html:74 cps/ub.py:101 msgid "Languages" msgstr "Idioma" -#: cps/ub.py:147 +#: cps/ub.py:104 msgid "Show language selection" msgstr "Mostrar idioma seleccionado" -#: cps/ub.py:148 +#: cps/ub.py:105 msgid "Ratings" msgstr "" -#: cps/ub.py:150 +#: cps/ub.py:107 msgid "Show ratings selection" msgstr "" -#: cps/ub.py:151 +#: cps/ub.py:108 msgid "File formats" msgstr "" -#: cps/ub.py:153 +#: cps/ub.py:110 msgid "Show file formats selection" msgstr "" -#: cps/updater.py:257 cps/updater.py:364 cps/updater.py:377 +#: cps/updater.py:253 cps/updater.py:360 cps/updater.py:373 msgid "Unexpected data while reading update information" msgstr "Dato inesperado mientras se leía la información de actualización" -#: cps/updater.py:264 cps/updater.py:370 +#: cps/updater.py:260 cps/updater.py:366 msgid "No update available. You already have the latest version installed" msgstr "Actualización no disponible. Ya tienes la versión más reciente instalada" -#: cps/updater.py:290 cps/updater.py:422 +#: cps/updater.py:286 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:343 +#: cps/updater.py:339 msgid "Could not fetch update information" msgstr "No se puede conseguir información sobre la actualización" -#: cps/updater.py:357 +#: cps/updater.py:353 msgid "No release information available" msgstr "" -#: cps/updater.py:403 cps/updater.py:412 +#: cps/updater.py:406 cps/updater.py:415 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "" -#: cps/web.py:457 +#: cps/updater.py:425 +msgid "Click on the button below to update to the latest stable version." +msgstr "" + +#: cps/web.py:445 msgid "Recently Added Books" msgstr "Libros recientemente añadidos" -#: cps/web.py:484 +#: cps/web.py:473 msgid "Best rated books" msgstr "Libros mejor valorados" -#: cps/templates/index.xml:38 cps/web.py:492 +#: cps/templates/index.xml:38 cps/web.py:481 msgid "Random Books" msgstr "Libros al azar" -#: cps/web.py:516 +#: cps/web.py:505 msgid "Books" msgstr "" -#: cps/web.py:543 +#: cps/web.py:532 msgid "Hot Books (most downloaded)" msgstr "Libros populares (los mas descargados)" -#: cps/web.py:553 cps/web.py:1294 cps/web.py:1383 +#: cps/web.py:542 cps/web.py:1298 cps/web.py:1386 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "Error en la apertura del eBook. El archivo no existe o no es accesible:" -#: cps/web.py:580 +#: cps/web.py:559 +#, python-format +msgid "Author: %(name)s" +msgstr "" + +#: cps/web.py:571 #, python-format msgid "Publisher: %(name)s" msgstr "" -#: cps/web.py:591 +#: cps/web.py:582 #, python-format msgid "Series: %(serie)s" msgstr "Series : %(serie)s" -#: cps/web.py:602 +#: cps/web.py:593 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:613 +#: cps/web.py:604 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:625 +#: cps/web.py:616 #, python-format msgid "Category: %(name)s" msgstr "Categoría : %(name)s" -#: cps/web.py:659 +#: cps/web.py:650 msgid "Publisher list" msgstr "" -#: cps/templates/index.xml:82 cps/web.py:675 +#: cps/templates/index.xml:82 cps/web.py:666 msgid "Series list" msgstr "Lista de series" -#: cps/web.py:689 +#: cps/web.py:680 msgid "Ratings list" msgstr "" -#: cps/web.py:702 +#: cps/web.py:693 msgid "File formats list" msgstr "" -#: cps/web.py:730 +#: cps/web.py:721 msgid "Available languages" msgstr "Idiomas disponibles" -#: cps/web.py:750 +#: cps/web.py:741 #, python-format msgid "Language: %(name)s" msgstr "Idioma: %(name)s" -#: cps/templates/index.xml:75 cps/web.py:764 +#: cps/templates/index.xml:75 cps/web.py:755 msgid "Category list" msgstr "Lista de categorías" -#: cps/templates/layout.html:73 cps/web.py:777 +#: cps/templates/layout.html:73 cps/web.py:769 msgid "Tasks" msgstr "Tareas" -#: cps/web.py:841 +#: cps/web.py:834 msgid "Published after " msgstr "Publicado antes de" -#: cps/web.py:848 +#: cps/web.py:841 msgid "Published before " msgstr "Publicado después de" -#: cps/web.py:862 +#: cps/web.py:855 #, python-format msgid "Rating <= %(rating)s" msgstr "Clasificación <= %(rating)s" -#: cps/web.py:864 +#: cps/web.py:857 #, python-format msgid "Rating >= %(rating)s" msgstr "Clasificación >= %(rating)s" -#: cps/web.py:924 cps/web.py:933 +#: cps/web.py:917 cps/web.py:926 msgid "search" msgstr "búsqueda" -#: cps/web.py:1018 +#: cps/web.py:1012 msgid "Please configure the SMTP mail settings first..." msgstr "Configurar primero los parámetros SMTP por favor..." -#: cps/web.py:1023 +#: cps/web.py:1017 #, 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:1027 +#: cps/web.py:1021 #, python-format msgid "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:1046 cps/web.py:1071 cps/web.py:1076 cps/web.py:1081 -#: cps/web.py:1085 +#: cps/web.py:1041 cps/web.py:1066 cps/web.py:1070 cps/web.py:1075 +#: cps/web.py:1079 msgid "register" msgstr "registrarse" -#: cps/web.py:1073 +#: cps/web.py:1068 msgid "Your e-mail is not allowed to register" msgstr "Su correo electrónico no está permitido para registrarse" -#: cps/web.py:1077 +#: cps/web.py:1071 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 electrónico." -#: cps/web.py:1080 +#: cps/web.py:1074 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:1103 cps/web.py:1115 -#, python-format -msgid "You are now logged in as: '%(nickname)s'" +#: cps/web.py:1089 +msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1108 cps/web.py:1120 +#: cps/web.py:1098 cps/web.py:1212 +#, python-format +msgid "you are now logged in as: '%(nickname)s'" +msgstr "Sesión iniciada como : '%(nickname)s'" + +#: cps/web.py:1105 cps/web.py:1122 msgid "Wrong Username or Password" msgstr "Usuario o contraseña inválido" -#: cps/web.py:1111 +#: cps/web.py:1108 msgid "Could not login. LDAP server down, please contact your administrator" msgstr "" -#: cps/web.py:1124 cps/web.py:1146 +#: cps/web.py:1117 +#, python-format +msgid "You are now logged in as: '%(nickname)s'" +msgstr "" + +#: cps/web.py:1126 cps/web.py:1148 msgid "login" msgstr "Iniciar sesión" -#: cps/web.py:1158 cps/web.py:1189 +#: cps/web.py:1160 cps/web.py:1191 msgid "Token not found" msgstr "Token no encontrado" -#: cps/web.py:1166 cps/web.py:1197 +#: cps/web.py:1168 cps/web.py:1199 msgid "Token has expired" msgstr "El token ha expirado" -#: cps/web.py:1174 +#: cps/web.py:1176 msgid "Success! Please return to your device" msgstr "¡Correcto! Por favor regrese a su dispositivo" -#: cps/web.py:1210 -#, python-format -msgid "you are now logged in as: '%(nickname)s'" -msgstr "Sesión iniciada como : '%(nickname)s'" - -#: cps/web.py:1250 cps/web.py:1277 cps/web.py:1281 +#: cps/web.py:1253 cps/web.py:1280 cps/web.py:1284 #, python-format msgid "%(name)s's profile" msgstr "Perfil de %(name)s" -#: cps/web.py:1274 +#: cps/web.py:1277 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:1279 +#: cps/web.py:1282 msgid "Profile updated" msgstr "Perfil actualizado" -#: cps/web.py:1304 cps/web.py:1306 cps/web.py:1308 cps/web.py:1314 -#: cps/web.py:1318 +#: cps/web.py:1308 cps/web.py:1310 cps/web.py:1312 cps/web.py:1318 +#: cps/web.py:1322 msgid "Read a Book" msgstr "Leer un libro" -#: cps/web.py:1328 +#: cps/web.py:1332 msgid "Error opening eBook. File does not exist or file is not accessible." msgstr "" -#: cps/worker.py:308 +#: cps/worker.py:311 #, python-format msgid "Ebook-converter failed: %(error)s" msgstr "Falló Ebook-converter: %(error)s" -#: cps/worker.py:319 +#: cps/worker.py:322 #, python-format msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "Kindlegen falló con error %(error)s. Mensaje: %(message)s" @@ -1056,53 +1066,57 @@ msgid "Administration" msgstr "Administración" #: cps/templates/admin.html:109 +msgid "View Logfiles" +msgstr "" + +#: cps/templates/admin.html:110 msgid "Reconnect to Calibre DB" msgstr "Reconectar a la BD Calibre" -#: cps/templates/admin.html:110 +#: cps/templates/admin.html:111 msgid "Restart Calibre-Web" msgstr "Reiniciar Calibre-Web" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:112 msgid "Stop Calibre-Web" msgstr "Detener Calibre-Web" -#: cps/templates/admin.html:117 +#: cps/templates/admin.html:118 msgid "Update" msgstr "Actualizar" -#: cps/templates/admin.html:121 +#: cps/templates/admin.html:122 msgid "Version" msgstr "Versión" -#: cps/templates/admin.html:122 +#: cps/templates/admin.html:123 msgid "Details" msgstr "Detalles" -#: cps/templates/admin.html:128 +#: cps/templates/admin.html:129 msgid "Current version" msgstr "Versión actual" -#: cps/templates/admin.html:134 +#: cps/templates/admin.html:135 msgid "Check for update" msgstr "Comprobar actualizaciones" -#: cps/templates/admin.html:135 +#: cps/templates/admin.html:136 msgid "Perform Update" msgstr "Realizar actualización" -#: cps/templates/admin.html:147 +#: cps/templates/admin.html:148 msgid "Do you really want to restart Calibre-Web?" msgstr "¿Realmente quiere reiniciar Calibre-Web?" -#: cps/templates/admin.html:152 cps/templates/admin.html:166 -#: cps/templates/admin.html:186 cps/templates/shelf.html:72 +#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:187 cps/templates/shelf.html:72 msgid "Ok" msgstr "Ok" -#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:154 cps/templates/admin.html:168 #: cps/templates/book_edit.html:174 cps/templates/book_edit.html:196 -#: cps/templates/config_edit.html:281 cps/templates/config_view_edit.html:147 +#: cps/templates/config_edit.html:331 cps/templates/config_view_edit.html:147 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 @@ -1110,11 +1124,11 @@ msgstr "Ok" msgid "Back" msgstr "Regresar" -#: cps/templates/admin.html:165 +#: cps/templates/admin.html:166 msgid "Do you really want to stop Calibre-Web?" msgstr "¿Realmente quiere detener Calibre-Web?" -#: cps/templates/admin.html:177 +#: cps/templates/admin.html:178 msgid "Updating, please do not reload page" msgstr "Actualizando. Por favor, no recargue la página" @@ -1243,7 +1257,7 @@ msgstr "ver libro tras la edición" msgid "Get metadata" msgstr "Obtener metadatos" -#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:279 +#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329 #: cps/templates/config_view_edit.html:146 cps/templates/login.html:20 #: cps/templates/search_form.html:150 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:130 @@ -1387,123 +1401,171 @@ msgstr "Nivel de registro" msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "Ubicación y nombre del archivo de registro (si no se especifica será calibre-web.log)" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:134 +msgid "Enable Access Log" +msgstr "" + +#: cps/templates/config_edit.html:137 +msgid "Location and name of access logfile (access.log for no entry)" +msgstr "" + +#: cps/templates/config_edit.html:148 msgid "Feature Configuration" msgstr "Configuración de características" -#: cps/templates/config_edit.html:148 +#: cps/templates/config_edit.html:156 msgid "Enable uploading" msgstr "Permitir subida" -#: cps/templates/config_edit.html:152 +#: cps/templates/config_edit.html:160 msgid "Enable anonymous browsing" msgstr "Permitir navegación anónima" -#: cps/templates/config_edit.html:156 +#: cps/templates/config_edit.html:164 msgid "Enable public registration" msgstr "Permitir registro público" -#: cps/templates/config_edit.html:160 +#: cps/templates/config_edit.html:168 msgid "Enable remote login (\"magic link\")" msgstr "Permitir inicio de sesión remoto (\"magic link\")" -#: cps/templates/config_edit.html:165 +#: cps/templates/config_edit.html:173 msgid "Use" msgstr "Usar" -#: cps/templates/config_edit.html:166 +#: cps/templates/config_edit.html:174 msgid "Obtain an API Key" msgstr "Obtener una API Key" -#: cps/templates/config_edit.html:170 +#: cps/templates/config_edit.html:178 msgid "Goodreads API Key" msgstr "Goodreads API Key" -#: cps/templates/config_edit.html:174 +#: cps/templates/config_edit.html:182 msgid "Goodreads API Secret" msgstr "Goodreads API Secret" -#: cps/templates/config_edit.html:181 +#: cps/templates/config_edit.html:189 msgid "Login type" msgstr "" -#: cps/templates/config_edit.html:183 +#: cps/templates/config_edit.html:191 msgid "Use standard Authentication" msgstr "" -#: cps/templates/config_edit.html:185 +#: cps/templates/config_edit.html:193 msgid "Use LDAP Authentication" msgstr "" -#: cps/templates/config_edit.html:188 +#: cps/templates/config_edit.html:196 msgid "Use GitHub OAuth" msgstr "" -#: cps/templates/config_edit.html:189 +#: cps/templates/config_edit.html:197 msgid "Use Google OAuth" msgstr "" -#: cps/templates/config_edit.html:196 -msgid "LDAP Provider URL" +#: cps/templates/config_edit.html:204 +msgid "LDAP Server Host Name or IP Address" +msgstr "" + +#: cps/templates/config_edit.html:208 +msgid "LDAP Server Port" +msgstr "" + +#: cps/templates/config_edit.html:212 +msgid "LDAP schema (ldap or ldaps)" +msgstr "" + +#: cps/templates/config_edit.html:216 +msgid "LDAP Admin username" +msgstr "" + +#: cps/templates/config_edit.html:220 +msgid "LDAP Admin password" +msgstr "" + +#: cps/templates/config_edit.html:225 +msgid "LDAP Server use SSL" msgstr "" -#: cps/templates/config_edit.html:200 +#: cps/templates/config_edit.html:229 +msgid "LDAP Server use TLS" +msgstr "" + +#: cps/templates/config_edit.html:233 +msgid "LDAP Server Certificate" +msgstr "" + +#: cps/templates/config_edit.html:237 +msgid "LDAP SSL Certificate Path" +msgstr "" + +#: cps/templates/config_edit.html:242 msgid "LDAP Distinguished Name (DN)" msgstr "" -#: cps/templates/config_edit.html:208 +#: cps/templates/config_edit.html:246 +msgid "LDAP User object filter" +msgstr "" + +#: cps/templates/config_edit.html:251 +msgid "LDAP Server is OpenLDAP?" +msgstr "" + +#: cps/templates/config_edit.html:258 msgid "Obtain GitHub OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:211 +#: cps/templates/config_edit.html:261 msgid "GitHub OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:215 +#: cps/templates/config_edit.html:265 msgid "GitHub OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:221 +#: cps/templates/config_edit.html:271 msgid "Obtain Google OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:224 +#: cps/templates/config_edit.html:274 msgid "Google OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:228 +#: cps/templates/config_edit.html:278 msgid "Google OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:242 +#: cps/templates/config_edit.html:292 msgid "External binaries" msgstr "Binarios externos" -#: cps/templates/config_edit.html:250 +#: cps/templates/config_edit.html:300 msgid "No converter" msgstr "No convertir" -#: cps/templates/config_edit.html:252 +#: cps/templates/config_edit.html:302 msgid "Use Kindlegen" msgstr "Utilizar Kindlegen" -#: cps/templates/config_edit.html:254 +#: cps/templates/config_edit.html:304 msgid "Use calibre's ebook converter" msgstr "Utilizar el convertidor de libros de Calibre" -#: cps/templates/config_edit.html:258 +#: cps/templates/config_edit.html:308 msgid "E-Book converter settings" msgstr "Ajustes del convertidos E-Book" -#: cps/templates/config_edit.html:262 +#: cps/templates/config_edit.html:312 msgid "Path to convertertool" msgstr "Ruta para convertertool" -#: cps/templates/config_edit.html:268 +#: cps/templates/config_edit.html:318 msgid "Location of Unrar binary" msgstr "Ubicación del binario de Unrar" -#: cps/templates/config_edit.html:284 cps/templates/layout.html:84 +#: cps/templates/config_edit.html:334 cps/templates/layout.html:84 #: cps/templates/login.html:4 msgid "Login" msgstr "Inicio de sesión" @@ -1717,7 +1779,7 @@ msgstr "" msgid "Discover (Random Books)" msgstr "Descubrir (Libros al azar)" -#: cps/templates/index.html:65 +#: cps/templates/index.html:64 msgid "Group by series" msgstr "" @@ -1860,6 +1922,14 @@ msgstr "Recordarme" msgid "Log in with magic link" msgstr "Iniciar sesión con \"magic link\"" +#: cps/templates/logviewer.html:5 +msgid "Show Calibre-Web log" +msgstr "" + +#: cps/templates/logviewer.html:8 +msgid "Show access log" +msgstr "" + #: cps/templates/osd.xml:5 msgid "Calibre-Web ebook catalog" msgstr "Cátalogo de ebook de Calibre-Web" @@ -2254,13 +2324,13 @@ msgstr "Descargas recientes" #~ msgstr "" #~ msgid "Failed to create path for cover %(path)s (Permission denied)." -#~ msgstr "Fallo al crear la ruta para la cubierta %(path)s (Permiso denegado)." +#~ msgstr "" #~ msgid "Failed to store cover-file %(cover)s." -#~ msgstr "Fallo al guardar el archivo de cubierta %(cover)s." +#~ msgstr "" #~ msgid "Cover-file is not a valid image file" -#~ msgstr "El archivo de imagen de la portada no es válido" +#~ msgstr "" #~ msgid "Cover is not a jpg file, can't save" #~ msgstr "La cubierta no es un archivo jpg, no se puede guardar" @@ -2319,3 +2389,15 @@ msgstr "Descargas recientes" #~ msgid "PDF.js viewer" #~ msgstr "Visor PDF.js" +#~ msgid "Please enter a LDAP provider and a DN" +#~ msgstr "" + +#~ msgid "successfully deleted shelf %(name)s" +#~ msgstr "Estante %(name)s fue borrado correctamente" + +#~ msgid "LDAP Provider URL" +#~ msgstr "" + +#~ msgid "Register with %s, " +#~ msgstr "" + diff --git a/cps/translations/fr/LC_MESSAGES/messages.mo b/cps/translations/fr/LC_MESSAGES/messages.mo index ad5a2025..e227b89e 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 957dba43..3f63673c 100644 --- a/cps/translations/fr/LC_MESSAGES/messages.po +++ b/cps/translations/fr/LC_MESSAGES/messages.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-05-31 11:20+0200\n" +"POT-Creation-Date: 2019-06-22 19:54+0200\n" "PO-Revision-Date: 2019-02-03 14:57+0100\n" "Last-Translator: Nicolas Roudninski \n" "Language: fr\n" @@ -29,13 +29,13 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" -#: cps/about.py:76 +#: cps/about.py:78 msgid "Statistics" msgstr "Statistiques" -#: cps/admin.py:97 +#: cps/admin.py:98 msgid "Server restarted, please reload page" msgstr "Serveur redémarré, merci de rafraîchir la page" @@ -43,186 +43,202 @@ msgstr "Serveur redémarré, merci de rafraîchir la page" msgid "Performing shutdown of server, please close window" msgstr "Arrêt du serveur en cours, merci de fermer la fenêtre" -#: cps/admin.py:120 cps/updater.py:445 +#: cps/admin.py:119 cps/updater.py:448 msgid "Unknown" msgstr "Inconnu" -#: cps/admin.py:139 +#: cps/admin.py:138 msgid "Admin page" msgstr "Page administrateur" -#: cps/admin.py:208 cps/admin.py:486 +#: cps/admin.py:207 cps/admin.py:532 msgid "Calibre-Web configuration updated" msgstr "Configuration de Calibre-Web mise à jour" -#: cps/admin.py:222 cps/templates/admin.html:102 +#: cps/admin.py:220 cps/templates/admin.html:102 msgid "UI Configuration" msgstr "Configuration de l’interface utilisateur" -#: cps/admin.py:295 +#: cps/admin.py:293 msgid "Import of optional Google Drive requirements missing" msgstr "L’import des pré-requis optionnels pour Google Drive est manquant" -#: cps/admin.py:298 +#: cps/admin.py:296 msgid "client_secrets.json is missing or not readable" msgstr "client_secrets.json est manquant ou ne peut être lu" -#: cps/admin.py:303 cps/admin.py:332 +#: cps/admin.py:301 cps/admin.py:330 msgid "client_secrets.json is not configured for web application" msgstr "client_secrets.json n’est pas configuré pour une application web" -#: cps/admin.py:335 cps/admin.py:361 cps/admin.py:373 cps/admin.py:398 -#: cps/admin.py:426 cps/admin.py:440 cps/admin.py:463 cps/admin.py:476 -#: cps/admin.py:494 cps/admin.py:501 cps/admin.py:516 -#: cps/templates/admin.html:101 +#: cps/admin.py:333 cps/admin.py:359 cps/admin.py:371 cps/admin.py:396 +#: cps/admin.py:403 cps/admin.py:436 cps/admin.py:460 cps/admin.py:474 +#: cps/admin.py:493 cps/admin.py:510 cps/admin.py:522 cps/admin.py:538 +#: cps/admin.py:545 cps/admin.py:559 cps/templates/admin.html:101 msgid "Basic Configuration" msgstr "Configuration principale" -#: cps/admin.py:358 +#: cps/admin.py:356 msgid "Keyfile location is not valid, please enter correct path" msgstr "L’emplacement du fichier de la clé de chiffrement (keyfile) n’est pas valide, veuillez saisir un chemin d’accès correct" -#: cps/admin.py:370 +#: cps/admin.py:368 cps/admin.py:433 msgid "Certfile location is not valid, please enter correct path" msgstr "L’emplacement du fichier de certificat (cert) n’est pas valide, veuillez saisir un chemin d’accès correct" -#: cps/admin.py:395 -msgid "Please enter a LDAP provider and a DN" +#: cps/admin.py:393 +msgid "Please enter a LDAP provider, port, DN and user object identifier" msgstr "" -#: cps/admin.py:423 +#: cps/admin.py:400 +msgid "Please enter a LDAP service account and password" +msgstr "" + +#: cps/admin.py:457 msgid "Please enter Github oauth credentials" msgstr "" -#: cps/admin.py:437 +#: cps/admin.py:471 msgid "Please enter Google oauth credentials" msgstr "" -#: cps/admin.py:460 +#: cps/admin.py:490 msgid "Logfile location is not valid, please enter correct path" msgstr "L’emplacement du fichier de Log n’est pas valide, veuillez saisir un chemin d’accès correct" -#: cps/admin.py:498 +#: cps/admin.py:507 +msgid "Access Logfile location is not valid, please enter correct path" +msgstr "" + +#: cps/admin.py:542 msgid "DB location is not valid, please enter correct path" msgstr "L’emplacement du fichier de base de donnée (DB) n’est pas valide, veuillez saisir un chemin d’accès correct" -#: cps/admin.py:558 cps/web.py:1045 +#: cps/admin.py:602 cps/web.py:1040 msgid "Please fill out all fields!" msgstr "SVP, complétez tous les champs !" -#: cps/admin.py:560 cps/admin.py:566 cps/admin.py:582 +#: cps/admin.py:604 cps/admin.py:610 cps/admin.py:626 #: cps/templates/admin.html:35 msgid "Add new user" msgstr "Ajouter un nouvel utilisateur" -#: cps/admin.py:564 cps/web.py:1248 +#: cps/admin.py:608 cps/web.py:1251 msgid "E-mail is not from valid domain" msgstr "Cette adresse de courriel n’appartient pas à un domaine valide" -#: cps/admin.py:572 +#: cps/admin.py:616 #, python-format msgid "User '%(user)s' created" msgstr "Utilisateur '%(user)s' créé" -#: cps/admin.py:576 +#: cps/admin.py:620 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:607 +#: cps/admin.py:651 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "Courriel de test envoyé avec succès sur %(kindlemail)s" -#: cps/admin.py:610 +#: cps/admin.py:654 #, 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:612 cps/web.py:1029 +#: cps/admin.py:656 cps/web.py:1023 msgid "Please configure your kindle e-mail address first..." msgstr "Veuillez configurer votre adresse de courriel Kindle en premier lieu…" -#: cps/admin.py:614 +#: cps/admin.py:658 msgid "E-mail server settings updated" msgstr "Les paramètres du serveur de courriels ont été mis à jour" -#: cps/admin.py:615 +#: cps/admin.py:659 msgid "Edit e-mail server settings" msgstr "Modifier les paramètres du serveur de courriels" -#: cps/admin.py:640 +#: cps/admin.py:687 #, python-format msgid "User '%(nick)s' deleted" msgstr "Utilisateur '%(nick)s' supprimé" -#: cps/admin.py:711 +#: cps/admin.py:690 +msgid "No admin user remaining, can't delete user" +msgstr "" + +#: cps/admin.py:761 #, python-format msgid "User '%(nick)s' updated" msgstr "Utilisateur '%(nick)s' mis à jour" -#: cps/admin.py:714 +#: cps/admin.py:764 msgid "An unknown error occured." msgstr "Oups ! Une erreur inconnue a eu lieu." -#: cps/admin.py:717 +#: cps/admin.py:767 #, python-format msgid "Edit User %(nick)s" msgstr "Éditer l'utilisateur %(nick)s" -#: cps/admin.py:733 +#: cps/admin.py:783 #, 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:736 cps/web.py:1070 +#: cps/admin.py:786 cps/web.py:1065 msgid "An unknown error occurred. Please try again later." msgstr "Une erreur inconnue est survenue. Veuillez réessayer plus tard." -#: cps/admin.py:755 +#: cps/admin.py:797 +msgid "Logfile viewer" +msgstr "" + +#: cps/admin.py:832 msgid "Requesting update package" msgstr "Demander une mise à jour" -#: cps/admin.py:756 +#: cps/admin.py:833 msgid "Downloading update package" msgstr "Téléchargement la mise à jour" -#: cps/admin.py:757 +#: cps/admin.py:834 msgid "Unzipping update package" msgstr "Décompression de la mise à jour" -#: cps/admin.py:758 +#: cps/admin.py:835 msgid "Replacing files" msgstr "Remplacement des fichiers" -#: cps/admin.py:759 +#: cps/admin.py:836 msgid "Database connections are closed" msgstr "Connexion à la base de donnée fermée" -#: cps/admin.py:760 +#: cps/admin.py:837 msgid "Stopping server" msgstr "Arrêt du serveur" -#: cps/admin.py:761 +#: cps/admin.py:838 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:762 cps/admin.py:763 cps/admin.py:764 cps/admin.py:765 +#: cps/admin.py:839 cps/admin.py:840 cps/admin.py:841 cps/admin.py:842 msgid "Update failed:" msgstr "La mise à jour à échouée : " -#: cps/admin.py:762 cps/updater.py:277 cps/updater.py:456 cps/updater.py:458 +#: cps/admin.py:839 cps/updater.py:273 cps/updater.py:459 cps/updater.py:461 msgid "HTTP Error" msgstr "Erreur HTTP" -#: cps/admin.py:763 cps/updater.py:279 cps/updater.py:460 +#: cps/admin.py:840 cps/updater.py:275 cps/updater.py:463 msgid "Connection error" msgstr "Erreur de connexion" -#: cps/admin.py:764 cps/updater.py:281 cps/updater.py:462 +#: cps/admin.py:841 cps/updater.py:277 cps/updater.py:465 msgid "Timeout while establishing connection" msgstr "Délai d'attente dépassé lors de l'établissement de connexion" -#: cps/admin.py:765 cps/updater.py:283 cps/updater.py:464 +#: cps/admin.py:842 cps/updater.py:279 cps/updater.py:467 msgid "General error" msgstr "Erreur générale" @@ -240,720 +256,714 @@ msgstr "Permission d’exécution manquante" msgid "not configured" msgstr "non configuré" -#: cps/editbooks.py:218 cps/editbooks.py:432 +#: cps/editbooks.py:215 cps/editbooks.py:394 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:246 +#: cps/editbooks.py:243 msgid "edit metadata" msgstr "modifier les métadonnées" -#: cps/editbooks.py:325 cps/editbooks.py:595 +#: cps/editbooks.py:322 cps/editbooks.py:557 #, 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:329 cps/editbooks.py:599 +#: cps/editbooks.py:326 cps/editbooks.py:561 msgid "File to be uploaded must have an extension" msgstr "Pour être déposé le fichier doit avoir une extension" -#: cps/editbooks.py:341 cps/editbooks.py:619 +#: cps/editbooks.py:338 cps/editbooks.py:581 #, 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:346 +#: cps/editbooks.py:343 #, python-format msgid "Failed to store file %(file)s." msgstr "Echec de la sauvegarde du fichier %(file)s." -#: cps/editbooks.py:363 +#: cps/editbooks.py:360 #, 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:382 -#, python-format -msgid "Failed to create path for cover %(path)s (Permission denied)." -msgstr "" - -#: cps/editbooks.py:390 -#, python-format -msgid "Failed to store cover-file %(cover)s." -msgstr "" - -#: cps/editbooks.py:393 -msgid "Cover-file is not a valid image file" -msgstr "" - -#: cps/editbooks.py:399 cps/editbooks.py:413 +#: cps/editbooks.py:374 msgid "Cover is not a supported imageformat (jpg/png/webp), can't save" msgstr "" -#: cps/editbooks.py:445 cps/editbooks.py:454 +#: cps/editbooks.py:407 cps/editbooks.py:416 msgid "unknown" msgstr "inconnu" -#: cps/editbooks.py:486 +#: cps/editbooks.py:448 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/editbooks.py:534 +#: cps/editbooks.py:496 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s n'est pas une langue valide" -#: cps/editbooks.py:565 +#: cps/editbooks.py:527 msgid "Metadata successfully updated" msgstr "Les métadonnées ont bien été mise à jour" -#: cps/editbooks.py:574 +#: cps/editbooks.py:536 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:624 +#: cps/editbooks.py:586 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "Impossible d'enregistrer le fichier %(file)s (permission refusée)" -#: cps/editbooks.py:629 +#: cps/editbooks.py:591 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "Impossible de supprimer le fichier %(file)s (permission refusée)" -#: cps/editbooks.py:712 +#: cps/editbooks.py:674 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:741 +#: cps/editbooks.py:703 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:751 +#: cps/editbooks.py:711 #, 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:755 +#: cps/editbooks.py:715 #, 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" -#: cps/gdrive.py:56 +#: cps/gdrive.py:61 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "" -#: cps/gdrive.py:101 +#: cps/gdrive.py:106 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "Le domaine de retour d’appel (Callback domain) est non vérifié, Veuillez suivre les étapes nécessaires pour vérifier le domaine dans la console de développement de Google" -#: cps/helper.py:97 +#: cps/helper.py:94 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "le format %(format)s est introuvable pour le livre : %(book)d" -#: cps/helper.py:109 +#: cps/helper.py:106 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "le %(format)s est introuvable sur Google Drive : %(fn)s" -#: cps/helper.py:116 cps/helper.py:223 cps/templates/detail.html:41 +#: cps/helper.py:113 cps/helper.py:220 cps/templates/detail.html:41 #: cps/templates/detail.html:45 msgid "Send to Kindle" msgstr "Envoyer vers Kindle" -#: cps/helper.py:117 cps/helper.py:135 cps/helper.py:225 +#: cps/helper.py:114 cps/helper.py:132 cps/helper.py:222 msgid "This e-mail has been sent via Calibre-Web." msgstr "Ce courriel a été envoyé depuis Calibre-Web." -#: cps/helper.py:128 +#: cps/helper.py:125 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "%(format)s introuvable : %(fn)s" -#: cps/helper.py:133 +#: cps/helper.py:130 msgid "Calibre-Web test e-mail" msgstr "Courriel de test de Calibre-Web" -#: cps/helper.py:134 +#: cps/helper.py:131 msgid "Test e-mail" msgstr "Courriel de test" -#: cps/helper.py:150 +#: cps/helper.py:147 msgid "Get Started with Calibre-Web" msgstr "Bien démarrer avec Calibre-Web" -#: cps/helper.py:151 +#: cps/helper.py:148 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "Courriel d’inscription pour l’utilisateur : %(name)s" -#: cps/helper.py:165 cps/helper.py:167 cps/helper.py:169 cps/helper.py:177 -#: cps/helper.py:179 cps/helper.py:181 +#: cps/helper.py:162 cps/helper.py:164 cps/helper.py:166 cps/helper.py:174 +#: cps/helper.py:176 cps/helper.py:178 #, python-format msgid "Send %(format)s to Kindle" msgstr "Envoyer %(format)s vers le Kindle" -#: cps/helper.py:185 +#: cps/helper.py:182 #, python-format msgid "Convert %(orig)s to %(format)s and send to Kindle" msgstr "Convertir de %(orig)s vers %(format)s et envoyer au Kindle" -#: cps/helper.py:224 +#: cps/helper.py:221 #, python-format msgid "E-mail: %(book)s" msgstr "Courriel : %(book)s" -#: cps/helper.py:227 +#: cps/helper.py:224 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "Le fichier demandé n’a pu être lu. Problème de permission d’accès ?" -#: cps/helper.py:335 +#: cps/helper.py:331 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "Renommer le titre de : '%(src)s' à '%(dest)s' a échoué avec l’erreur : %(error)s" -#: cps/helper.py:345 +#: cps/helper.py:341 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "Renommer l’auteur de : '%(src)s' à '%(dest)s' a échoué avec l’erreur : %(error)s" -#: cps/helper.py:359 +#: cps/helper.py:355 #, python-format msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "La modification du nom de fichier du chemin : '%(src)s' vers '%(dest)s' a échoué avec l’erreur : %(error)s" -#: cps/helper.py:385 cps/helper.py:395 cps/helper.py:403 +#: cps/helper.py:381 cps/helper.py:391 cps/helper.py:399 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "" -#: cps/helper.py:424 +#: cps/helper.py:420 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "" -#: cps/helper.py:584 +#: cps/helper.py:579 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:586 +#: cps/helper.py:581 msgid "Unrar binary file not found" msgstr "" -#: cps/helper.py:614 +#: cps/helper.py:609 msgid "Waiting" msgstr "" -#: cps/helper.py:616 +#: cps/helper.py:611 msgid "Failed" msgstr "" -#: cps/helper.py:618 +#: cps/helper.py:613 msgid "Started" msgstr "" -#: cps/helper.py:620 +#: cps/helper.py:615 msgid "Finished" msgstr "Terminé" -#: cps/helper.py:622 +#: cps/helper.py:617 msgid "Unknown Status" msgstr "Statut inconnu" -#: cps/helper.py:627 +#: cps/helper.py:622 msgid "E-mail: " msgstr "Courriel : " -#: cps/helper.py:629 cps/helper.py:633 +#: cps/helper.py:624 cps/helper.py:628 msgid "Convert: " msgstr "Convertir vers : " -#: cps/helper.py:631 +#: cps/helper.py:626 msgid "Upload: " msgstr "Déposer : " -#: cps/helper.py:635 +#: cps/helper.py:630 msgid "Unknown Task: " msgstr "Tâche inconnue : " -#: cps/oauth_bb.py:87 +#: cps/oauth_bb.py:91 #, python-format -msgid "Register with %s, " +msgid "Register with %(provider)s" msgstr "" -#: cps/oauth_bb.py:145 +#: cps/oauth_bb.py:149 msgid "Failed to log in with GitHub." msgstr "" -#: cps/oauth_bb.py:150 +#: cps/oauth_bb.py:154 msgid "Failed to fetch user info from GitHub." msgstr "" -#: cps/oauth_bb.py:161 +#: cps/oauth_bb.py:165 msgid "Failed to log in with Google." msgstr "" -#: cps/oauth_bb.py:166 +#: cps/oauth_bb.py:170 msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:265 +#: cps/oauth_bb.py:269 #, python-format msgid "Unlink to %(oauth)s success." msgstr "" -#: cps/oauth_bb.py:269 +#: cps/oauth_bb.py:273 #, python-format msgid "Unlink to %(oauth)s failed." msgstr "" -#: cps/oauth_bb.py:272 +#: cps/oauth_bb.py:276 #, python-format msgid "Not linked to %(oauth)s." msgstr "" -#: cps/oauth_bb.py:300 +#: cps/oauth_bb.py:304 msgid "GitHub Oauth error, please retry later." msgstr "" -#: cps/oauth_bb.py:319 +#: cps/oauth_bb.py:323 msgid "Google Oauth error, please retry later." msgstr "" -#: cps/shelf.py:40 cps/shelf.py:92 +#: cps/shelf.py:46 cps/shelf.py:98 msgid "Invalid shelf specified" msgstr "L’étagère indiquée est invalide" -#: cps/shelf.py:47 +#: cps/shelf.py:53 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" msgstr "Désolé, vous n’êtes pas autorisé à ajouter un livre dans l’étagère %(shelfname)s" -#: cps/shelf.py:55 +#: cps/shelf.py:61 msgid "You are not allowed to edit public shelves" msgstr "Désolé, vous n’êtes pas autorisé à éditer les étagères publiques" -#: cps/shelf.py:64 +#: cps/shelf.py:70 #, python-format 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:78 +#: cps/shelf.py:84 #, 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:97 +#: cps/shelf.py:103 #, 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:102 +#: cps/shelf.py:108 msgid "User is not allowed to edit public shelves" msgstr "L’utilisateur n’est pas autorisé à éditer les étagères publiques" -#: cps/shelf.py:120 +#: cps/shelf.py:126 #, 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:134 +#: cps/shelf.py:140 #, 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:136 +#: cps/shelf.py:142 #, 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:173 +#: cps/shelf.py:179 #, 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:179 +#: cps/shelf.py:185 #, 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:200 cps/shelf.py:224 +#: cps/shelf.py:206 cps/shelf.py:230 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Une étagère de ce nom '%(title)s' existe déjà." -#: cps/shelf.py:205 +#: cps/shelf.py:211 #, python-format msgid "Shelf %(title)s created" msgstr "Étagère %(title)s créée" -#: cps/shelf.py:207 cps/shelf.py:235 +#: cps/shelf.py:213 cps/shelf.py:241 msgid "There was an error" msgstr "Il y a eu une erreur" -#: cps/shelf.py:208 cps/shelf.py:210 +#: cps/shelf.py:214 cps/shelf.py:216 msgid "create a shelf" msgstr "Créer une étagère" -#: cps/shelf.py:233 +#: cps/shelf.py:239 #, python-format msgid "Shelf %(title)s changed" msgstr "L’étagère %(title)s a été modifiée" -#: cps/shelf.py:236 cps/shelf.py:238 +#: cps/shelf.py:242 cps/shelf.py:244 msgid "Edit a shelf" msgstr "Modifier une étagère" -#: cps/shelf.py:259 -#, python-format -msgid "successfully deleted shelf %(name)s" -msgstr "l’étagère %(name)s a été supprimé avec succès" - -#: cps/shelf.py:289 +#: cps/shelf.py:295 #, python-format msgid "Shelf: '%(name)s'" msgstr "Étagère : '%(name)s'" -#: cps/shelf.py:292 +#: cps/shelf.py:298 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/shelf.py:324 +#: cps/shelf.py:330 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Modifier l’arrangement de l’étagère : ‘%(name)s’" -#: cps/ub.py:111 +#: cps/ub.py:68 msgid "Recently Added" msgstr "Ajouts récents" -#: cps/ub.py:113 +#: cps/ub.py:70 msgid "Show recent books" msgstr "Afficher les livres récents" -#: cps/templates/index.xml:17 cps/ub.py:114 +#: cps/templates/index.xml:17 cps/ub.py:71 msgid "Hot Books" msgstr "Livres populaires" -#: cps/ub.py:115 +#: cps/ub.py:72 msgid "Show hot books" msgstr "Montrer les livres populaires" -#: cps/templates/index.xml:24 cps/ub.py:118 +#: cps/templates/index.xml:24 cps/ub.py:75 msgid "Best rated Books" msgstr "Livres les mieux notés" -#: cps/ub.py:120 +#: cps/ub.py:77 msgid "Show best rated books" msgstr "Montrer les livres les mieux notés" -#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:121 -#: cps/web.py:965 +#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:78 +#: cps/web.py:958 msgid "Read Books" msgstr "Livres lus" -#: cps/ub.py:123 +#: cps/ub.py:80 msgid "Show read and unread" msgstr "Montrer lu et non-lu" -#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:125 -#: cps/web.py:969 +#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:82 +#: cps/web.py:962 msgid "Unread Books" msgstr "Livres non-lus" -#: cps/ub.py:127 +#: cps/ub.py:84 msgid "Show unread" msgstr "" -#: cps/ub.py:128 +#: cps/ub.py:85 msgid "Discover" msgstr "Découvrir" -#: cps/ub.py:130 +#: cps/ub.py:87 msgid "Show random books" msgstr "Montrer des livres au hasard" -#: cps/ub.py:131 +#: cps/ub.py:88 msgid "Categories" msgstr "Catégories" -#: cps/ub.py:133 +#: cps/ub.py:90 msgid "Show category selection" msgstr "Montrer la sélection par catégories" #: cps/templates/book_edit.html:71 cps/templates/search_form.html:53 -#: cps/ub.py:134 +#: cps/ub.py:91 msgid "Series" msgstr "Séries" -#: cps/ub.py:136 +#: cps/ub.py:93 msgid "Show series selection" msgstr "Montrer la sélection par séries" -#: cps/templates/index.xml:61 cps/ub.py:137 +#: cps/templates/index.xml:61 cps/ub.py:94 msgid "Authors" msgstr "Auteurs" -#: cps/ub.py:139 +#: cps/ub.py:96 msgid "Show author selection" msgstr "Montrer la sélection par auteur" -#: cps/templates/index.xml:68 cps/ub.py:141 +#: cps/templates/index.xml:68 cps/ub.py:98 msgid "Publishers" msgstr "Editeurs" -#: cps/ub.py:143 +#: cps/ub.py:100 msgid "Show publisher selection" msgstr "Montrer la sélection par éditeur" -#: cps/templates/search_form.html:74 cps/ub.py:144 +#: cps/templates/search_form.html:74 cps/ub.py:101 msgid "Languages" msgstr "Langues" -#: cps/ub.py:147 +#: cps/ub.py:104 msgid "Show language selection" msgstr "Montrer la sélection par langue" -#: cps/ub.py:148 +#: cps/ub.py:105 msgid "Ratings" msgstr "" -#: cps/ub.py:150 +#: cps/ub.py:107 msgid "Show ratings selection" msgstr "" -#: cps/ub.py:151 +#: cps/ub.py:108 msgid "File formats" msgstr "" -#: cps/ub.py:153 +#: cps/ub.py:110 msgid "Show file formats selection" msgstr "" -#: cps/updater.py:257 cps/updater.py:364 cps/updater.py:377 +#: cps/updater.py:253 cps/updater.py:360 cps/updater.py:373 msgid "Unexpected data while reading update information" msgstr "Données inattendues lors de la lecture des informations de mise à jour" -#: cps/updater.py:264 cps/updater.py:370 +#: cps/updater.py:260 cps/updater.py:366 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:290 cps/updater.py:422 +#: cps/updater.py:286 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:343 +#: cps/updater.py:339 msgid "Could not fetch update information" msgstr "Impossible d'extraire les informations de mise à jour" -#: cps/updater.py:357 +#: cps/updater.py:353 msgid "No release information available" msgstr "Aucune information concernant cette version n’est disponible" -#: cps/updater.py:403 cps/updater.py:412 +#: cps/updater.py:406 cps/updater.py:415 #, 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/web.py:457 +#: cps/updater.py:425 +msgid "Click on the button below to update to the latest stable version." +msgstr "" + +#: cps/web.py:445 msgid "Recently Added Books" msgstr "Ajouts récents" -#: cps/web.py:484 +#: cps/web.py:473 msgid "Best rated books" msgstr "Livres les mieux notés" -#: cps/templates/index.xml:38 cps/web.py:492 +#: cps/templates/index.xml:38 cps/web.py:481 msgid "Random Books" msgstr "Livres au hasard" -#: cps/web.py:516 +#: cps/web.py:505 msgid "Books" msgstr "" -#: cps/web.py:543 +#: cps/web.py:532 msgid "Hot Books (most downloaded)" msgstr "Livres populaires (les plus téléchargés)" -#: cps/web.py:553 cps/web.py:1294 cps/web.py:1383 +#: cps/web.py:542 cps/web.py:1298 cps/web.py:1386 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "Erreur d'ouverture du livre numérique. Le fichier n'existe pas ou n'est pas accessible :" -#: cps/web.py:580 +#: cps/web.py:559 +#, python-format +msgid "Author: %(name)s" +msgstr "" + +#: cps/web.py:571 #, python-format msgid "Publisher: %(name)s" msgstr "Editeur : '%(name)s'" -#: cps/web.py:591 +#: cps/web.py:582 #, python-format msgid "Series: %(serie)s" msgstr "Séries : %(serie)s" -#: cps/web.py:602 +#: cps/web.py:593 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:613 +#: cps/web.py:604 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:625 +#: cps/web.py:616 #, python-format msgid "Category: %(name)s" msgstr "Catégorie : %(name)s" -#: cps/web.py:659 +#: cps/web.py:650 msgid "Publisher list" msgstr "Liste des éditeurs" -#: cps/templates/index.xml:82 cps/web.py:675 +#: cps/templates/index.xml:82 cps/web.py:666 msgid "Series list" msgstr "Liste des séries" -#: cps/web.py:689 +#: cps/web.py:680 msgid "Ratings list" msgstr "" -#: cps/web.py:702 +#: cps/web.py:693 msgid "File formats list" msgstr "" -#: cps/web.py:730 +#: cps/web.py:721 msgid "Available languages" msgstr "Langues disponibles" -#: cps/web.py:750 +#: cps/web.py:741 #, python-format msgid "Language: %(name)s" msgstr "Langue : %(name)s" -#: cps/templates/index.xml:75 cps/web.py:764 +#: cps/templates/index.xml:75 cps/web.py:755 msgid "Category list" msgstr "Liste des catégories" -#: cps/templates/layout.html:73 cps/web.py:777 +#: cps/templates/layout.html:73 cps/web.py:769 msgid "Tasks" msgstr "Tâches" -#: cps/web.py:841 +#: cps/web.py:834 msgid "Published after " msgstr "Publié après le " -#: cps/web.py:848 +#: cps/web.py:841 msgid "Published before " msgstr "Publié avant le " -#: cps/web.py:862 +#: cps/web.py:855 #, python-format msgid "Rating <= %(rating)s" msgstr "Évaluation <= %(rating)s" -#: cps/web.py:864 +#: cps/web.py:857 #, python-format msgid "Rating >= %(rating)s" msgstr "Évaluation >= %(rating)s" -#: cps/web.py:924 cps/web.py:933 +#: cps/web.py:917 cps/web.py:926 msgid "search" msgstr "recherche" -#: cps/web.py:1018 +#: cps/web.py:1012 msgid "Please configure the SMTP mail settings first..." msgstr "Veuillez configurer les paramètres SMTP au préalable…" -#: cps/web.py:1023 +#: cps/web.py:1017 #, 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 envois vers %(kindlemail)s" -#: cps/web.py:1027 +#: cps/web.py:1021 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Il y a eu une erreur en envoyant ce livre : %(res)s" -#: cps/web.py:1046 cps/web.py:1071 cps/web.py:1076 cps/web.py:1081 -#: cps/web.py:1085 +#: cps/web.py:1041 cps/web.py:1066 cps/web.py:1070 cps/web.py:1075 +#: cps/web.py:1079 msgid "register" msgstr "s’enregistrer" -#: cps/web.py:1073 +#: cps/web.py:1068 msgid "Your e-mail is not allowed to register" msgstr "Votre adresse de courriel n’est pas autorisé pour une inscription" -#: cps/web.py:1077 +#: cps/web.py:1071 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Le courriel de confirmation a été envoyé à votre adresse." -#: cps/web.py:1080 +#: cps/web.py:1074 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:1103 cps/web.py:1115 -#, python-format -msgid "You are now logged in as: '%(nickname)s'" +#: cps/web.py:1089 +msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1108 cps/web.py:1120 +#: cps/web.py:1098 cps/web.py:1212 +#, python-format +msgid "you are now logged in as: '%(nickname)s'" +msgstr "Vous êtes maintenant connecté sous : '%(nickname)s'" + +#: cps/web.py:1105 cps/web.py:1122 msgid "Wrong Username or Password" msgstr "Mauvais nom d'utilisateur ou mot de passe" -#: cps/web.py:1111 +#: cps/web.py:1108 msgid "Could not login. LDAP server down, please contact your administrator" msgstr "" -#: cps/web.py:1124 cps/web.py:1146 +#: cps/web.py:1117 +#, python-format +msgid "You are now logged in as: '%(nickname)s'" +msgstr "" + +#: cps/web.py:1126 cps/web.py:1148 msgid "login" msgstr "connexion" -#: cps/web.py:1158 cps/web.py:1189 +#: cps/web.py:1160 cps/web.py:1191 msgid "Token not found" msgstr "Jeton non trouvé" -#: cps/web.py:1166 cps/web.py:1197 +#: cps/web.py:1168 cps/web.py:1199 msgid "Token has expired" msgstr "Jeton expiré" -#: cps/web.py:1174 +#: cps/web.py:1176 msgid "Success! Please return to your device" msgstr "Réussite! Merci de vous tourner vers votre appareil" -#: cps/web.py:1210 -#, python-format -msgid "you are now logged in as: '%(nickname)s'" -msgstr "Vous êtes maintenant connecté sous : '%(nickname)s'" - -#: cps/web.py:1250 cps/web.py:1277 cps/web.py:1281 +#: cps/web.py:1253 cps/web.py:1280 cps/web.py:1284 #, python-format msgid "%(name)s's profile" msgstr "Profil de %(name)s" -#: cps/web.py:1274 +#: cps/web.py:1277 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:1279 +#: cps/web.py:1282 msgid "Profile updated" msgstr "Profil mis à jour" -#: cps/web.py:1304 cps/web.py:1306 cps/web.py:1308 cps/web.py:1314 -#: cps/web.py:1318 +#: cps/web.py:1308 cps/web.py:1310 cps/web.py:1312 cps/web.py:1318 +#: cps/web.py:1322 msgid "Read a Book" msgstr "Lire un livre" -#: cps/web.py:1328 +#: cps/web.py:1332 msgid "Error opening eBook. File does not exist or file is not accessible." msgstr "" -#: cps/worker.py:308 +#: cps/worker.py:311 #, python-format msgid "Ebook-converter failed: %(error)s" msgstr "La commande ebook-convert a échouée : %(error)s" -#: cps/worker.py:319 +#: cps/worker.py:322 #, python-format msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "La commande Kindlegen a échouée avec le code d’erreur : %(error)s et le message : %(message)s" @@ -1069,53 +1079,57 @@ msgid "Administration" msgstr "Administration" #: cps/templates/admin.html:109 +msgid "View Logfiles" +msgstr "" + +#: cps/templates/admin.html:110 msgid "Reconnect to Calibre DB" msgstr "Se reconnecter à Calibre-Web" -#: cps/templates/admin.html:110 +#: cps/templates/admin.html:111 msgid "Restart Calibre-Web" msgstr "Redémarrer Calibre-Web" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:112 msgid "Stop Calibre-Web" msgstr "Arrêter Calibre-Web" -#: cps/templates/admin.html:117 +#: cps/templates/admin.html:118 msgid "Update" msgstr "Mise à jour de Calibre-Web" -#: cps/templates/admin.html:121 +#: cps/templates/admin.html:122 msgid "Version" msgstr "Version" -#: cps/templates/admin.html:122 +#: cps/templates/admin.html:123 msgid "Details" msgstr "Détails" -#: cps/templates/admin.html:128 +#: cps/templates/admin.html:129 msgid "Current version" msgstr "Version actuellement installée" -#: cps/templates/admin.html:134 +#: cps/templates/admin.html:135 msgid "Check for update" msgstr "Rechercher les mise à jour" -#: cps/templates/admin.html:135 +#: cps/templates/admin.html:136 msgid "Perform Update" msgstr "Effectuer la mise à jour" -#: cps/templates/admin.html:147 +#: cps/templates/admin.html:148 msgid "Do you really want to restart Calibre-Web?" msgstr "Voulez-vous vraiment redémarrer Calibre-Web?" -#: cps/templates/admin.html:152 cps/templates/admin.html:166 -#: cps/templates/admin.html:186 cps/templates/shelf.html:72 +#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:187 cps/templates/shelf.html:72 msgid "Ok" msgstr "D’accord" -#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:154 cps/templates/admin.html:168 #: cps/templates/book_edit.html:174 cps/templates/book_edit.html:196 -#: cps/templates/config_edit.html:281 cps/templates/config_view_edit.html:147 +#: cps/templates/config_edit.html:331 cps/templates/config_view_edit.html:147 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 @@ -1123,11 +1137,11 @@ msgstr "D’accord" msgid "Back" msgstr "Retour" -#: cps/templates/admin.html:165 +#: cps/templates/admin.html:166 msgid "Do you really want to stop Calibre-Web?" msgstr "Voulez-Vous vraiment arrêter Calibre-Web?" -#: cps/templates/admin.html:177 +#: cps/templates/admin.html:178 msgid "Updating, please do not reload page" msgstr "Mise à jour en cours, ne pas rafraîchir la page" @@ -1256,7 +1270,7 @@ msgstr "voir le livre après l'édition" msgid "Get metadata" msgstr "Obtenir les métadonnées" -#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:279 +#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329 #: cps/templates/config_view_edit.html:146 cps/templates/login.html:20 #: cps/templates/search_form.html:150 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:130 @@ -1400,123 +1414,171 @@ msgstr "Niveau de journalisation" msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "Emplacement et nom du fichier journal (sera calibre-web.log si vide)" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:134 +msgid "Enable Access Log" +msgstr "" + +#: cps/templates/config_edit.html:137 +msgid "Location and name of access logfile (access.log for no entry)" +msgstr "" + +#: cps/templates/config_edit.html:148 msgid "Feature Configuration" msgstr "Configuration des options" -#: cps/templates/config_edit.html:148 +#: cps/templates/config_edit.html:156 msgid "Enable uploading" msgstr "Autoriser le dépôt de fichier" -#: cps/templates/config_edit.html:152 +#: cps/templates/config_edit.html:160 msgid "Enable anonymous browsing" msgstr "Autoriser la navigation anonyme" -#: cps/templates/config_edit.html:156 +#: cps/templates/config_edit.html:164 msgid "Enable public registration" msgstr "Autoriser l’inscription publique" -#: cps/templates/config_edit.html:160 +#: cps/templates/config_edit.html:168 msgid "Enable remote login (\"magic link\")" msgstr "Activer la connexion (\"magic link\")" -#: cps/templates/config_edit.html:165 +#: cps/templates/config_edit.html:173 msgid "Use" msgstr "Utiliser" -#: cps/templates/config_edit.html:166 +#: cps/templates/config_edit.html:174 msgid "Obtain an API Key" msgstr "Obtenir la clé API" -#: cps/templates/config_edit.html:170 +#: cps/templates/config_edit.html:178 msgid "Goodreads API Key" msgstr "Clé de l’API Goodreads" -#: cps/templates/config_edit.html:174 +#: cps/templates/config_edit.html:182 msgid "Goodreads API Secret" msgstr "Secret de l’API Goodreads" -#: cps/templates/config_edit.html:181 +#: cps/templates/config_edit.html:189 msgid "Login type" msgstr "" -#: cps/templates/config_edit.html:183 +#: cps/templates/config_edit.html:191 msgid "Use standard Authentication" msgstr "" -#: cps/templates/config_edit.html:185 +#: cps/templates/config_edit.html:193 msgid "Use LDAP Authentication" msgstr "" -#: cps/templates/config_edit.html:188 +#: cps/templates/config_edit.html:196 msgid "Use GitHub OAuth" msgstr "" -#: cps/templates/config_edit.html:189 +#: cps/templates/config_edit.html:197 msgid "Use Google OAuth" msgstr "" -#: cps/templates/config_edit.html:196 -msgid "LDAP Provider URL" +#: cps/templates/config_edit.html:204 +msgid "LDAP Server Host Name or IP Address" +msgstr "" + +#: cps/templates/config_edit.html:208 +msgid "LDAP Server Port" +msgstr "" + +#: cps/templates/config_edit.html:212 +msgid "LDAP schema (ldap or ldaps)" +msgstr "" + +#: cps/templates/config_edit.html:216 +msgid "LDAP Admin username" +msgstr "" + +#: cps/templates/config_edit.html:220 +msgid "LDAP Admin password" +msgstr "" + +#: cps/templates/config_edit.html:225 +msgid "LDAP Server use SSL" msgstr "" -#: cps/templates/config_edit.html:200 +#: cps/templates/config_edit.html:229 +msgid "LDAP Server use TLS" +msgstr "" + +#: cps/templates/config_edit.html:233 +msgid "LDAP Server Certificate" +msgstr "" + +#: cps/templates/config_edit.html:237 +msgid "LDAP SSL Certificate Path" +msgstr "" + +#: cps/templates/config_edit.html:242 msgid "LDAP Distinguished Name (DN)" msgstr "" -#: cps/templates/config_edit.html:208 +#: cps/templates/config_edit.html:246 +msgid "LDAP User object filter" +msgstr "" + +#: cps/templates/config_edit.html:251 +msgid "LDAP Server is OpenLDAP?" +msgstr "" + +#: cps/templates/config_edit.html:258 msgid "Obtain GitHub OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:211 +#: cps/templates/config_edit.html:261 msgid "GitHub OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:215 +#: cps/templates/config_edit.html:265 msgid "GitHub OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:221 +#: cps/templates/config_edit.html:271 msgid "Obtain Google OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:224 +#: cps/templates/config_edit.html:274 msgid "Google OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:228 +#: cps/templates/config_edit.html:278 msgid "Google OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:242 +#: cps/templates/config_edit.html:292 msgid "External binaries" msgstr "Configuration des outils de conversion externes" -#: cps/templates/config_edit.html:250 +#: cps/templates/config_edit.html:300 msgid "No converter" msgstr "Pas de convertisseur" -#: cps/templates/config_edit.html:252 +#: cps/templates/config_edit.html:302 msgid "Use Kindlegen" msgstr "Utiliser Kindlegen" -#: cps/templates/config_edit.html:254 +#: cps/templates/config_edit.html:304 msgid "Use calibre's ebook converter" msgstr "Utiliser Calibre ebook-convert" -#: cps/templates/config_edit.html:258 +#: cps/templates/config_edit.html:308 msgid "E-Book converter settings" msgstr "Paramètres de la commande de conversion de livres" -#: cps/templates/config_edit.html:262 +#: cps/templates/config_edit.html:312 msgid "Path to convertertool" msgstr "Chemin d’accès à la commande de conversion" -#: cps/templates/config_edit.html:268 +#: cps/templates/config_edit.html:318 msgid "Location of Unrar binary" msgstr "Chemin d’accès à la commande UnRar" -#: cps/templates/config_edit.html:284 cps/templates/layout.html:84 +#: cps/templates/config_edit.html:334 cps/templates/layout.html:84 #: cps/templates/login.html:4 msgid "Login" msgstr "Connexion" @@ -1730,7 +1792,7 @@ msgstr "Retour à l’accueil" msgid "Discover (Random Books)" msgstr "Découverte (livres au hasard)" -#: cps/templates/index.html:65 +#: cps/templates/index.html:64 msgid "Group by series" msgstr "" @@ -1873,6 +1935,14 @@ msgstr "Se rappeler de moi" msgid "Log in with magic link" msgstr "Se connecter avec le (\"magic link\")" +#: cps/templates/logviewer.html:5 +msgid "Show Calibre-Web log" +msgstr "" + +#: cps/templates/logviewer.html:8 +msgid "Show access log" +msgstr "" + #: cps/templates/osd.xml:5 msgid "Calibre-Web ebook catalog" msgstr "Catalogue de livres électroniques Calibre-Web" @@ -2222,13 +2292,13 @@ msgstr "Téléchargements récents" #~ msgstr "Mise à jour effectuée" #~ msgid "Failed to create path for cover %(path)s (Permission denied)." -#~ msgstr "Impossible de créer le chemin d’accès pour la couverture %(path)s (Autorisation refusée)" +#~ msgstr "" #~ msgid "Failed to store cover-file %(cover)s." -#~ msgstr "Echec de la sauvegarde du fichier de couverture %(cover)s." +#~ msgstr "" #~ msgid "Cover-file is not a valid image file" -#~ msgstr "Le fichier de couverture n’est pas un fichier d’image valide" +#~ msgstr "" #~ msgid "Cover is not a jpg file, can't save" #~ msgstr "Le fichier de couverture n’est pas au format jpg, impossible de sauvegarder" @@ -2287,3 +2357,15 @@ msgstr "Téléchargements récents" #~ msgid "PDF.js viewer" #~ msgstr "Visionneuse PDF.js" +#~ msgid "Please enter a LDAP provider and a DN" +#~ msgstr "" + +#~ msgid "successfully deleted shelf %(name)s" +#~ msgstr "l’étagère %(name)s a été supprimé avec succès" + +#~ msgid "LDAP Provider URL" +#~ msgstr "" + +#~ msgid "Register with %s, " +#~ msgstr "" + diff --git a/cps/translations/hu/LC_MESSAGES/messages.mo b/cps/translations/hu/LC_MESSAGES/messages.mo index 849f222c..579ec736 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 d24efcc7..843ddc77 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: 2019-05-31 11:20+0200\n" +"POT-Creation-Date: 2019-06-22 19:54+0200\n" "PO-Revision-Date: 2019-04-06 23:36+0200\n" "Last-Translator: \n" "Language: hu\n" @@ -16,13 +16,13 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" -#: cps/about.py:76 +#: cps/about.py:78 msgid "Statistics" msgstr "Statisztika" -#: cps/admin.py:97 +#: cps/admin.py:98 msgid "Server restarted, please reload page" msgstr "A kiszolgáló újraindult, tölts be újra az oldalt!" @@ -30,186 +30,202 @@ msgstr "A kiszolgáló újraindult, tölts be újra az oldalt!" 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:120 cps/updater.py:445 +#: cps/admin.py:119 cps/updater.py:448 msgid "Unknown" msgstr "Ismeretlen" -#: cps/admin.py:139 +#: cps/admin.py:138 msgid "Admin page" msgstr "Rendszergazda oldala" -#: cps/admin.py:208 cps/admin.py:486 +#: cps/admin.py:207 cps/admin.py:532 msgid "Calibre-Web configuration updated" msgstr "A Calibre-Web konfigurációja frissítve." -#: cps/admin.py:222 cps/templates/admin.html:102 +#: cps/admin.py:220 cps/templates/admin.html:102 msgid "UI Configuration" msgstr "Felhasználói felület beállításai" -#: cps/admin.py:295 +#: cps/admin.py:293 msgid "Import of optional Google Drive requirements missing" msgstr "Hiányzanak a Google Drive használatához szükséges komponensek" -#: cps/admin.py:298 +#: cps/admin.py:296 msgid "client_secrets.json is missing or not readable" msgstr "A client_secrets.json hiányzik vagy nem olvasható." -#: cps/admin.py:303 cps/admin.py:332 +#: cps/admin.py:301 cps/admin.py:330 msgid "client_secrets.json is not configured for web application" msgstr "A client_secrets.json nincs beállítva a web alkalmazáshoz." -#: cps/admin.py:335 cps/admin.py:361 cps/admin.py:373 cps/admin.py:398 -#: cps/admin.py:426 cps/admin.py:440 cps/admin.py:463 cps/admin.py:476 -#: cps/admin.py:494 cps/admin.py:501 cps/admin.py:516 -#: cps/templates/admin.html:101 +#: cps/admin.py:333 cps/admin.py:359 cps/admin.py:371 cps/admin.py:396 +#: cps/admin.py:403 cps/admin.py:436 cps/admin.py:460 cps/admin.py:474 +#: cps/admin.py:493 cps/admin.py:510 cps/admin.py:522 cps/admin.py:538 +#: cps/admin.py:545 cps/admin.py:559 cps/templates/admin.html:101 msgid "Basic Configuration" msgstr "Alapvető beállítások" -#: cps/admin.py:358 +#: cps/admin.py:356 msgid "Keyfile location is not valid, please enter correct path" msgstr "A kulcsfájl helye nem érvényes, adj meg érvényes elérési utat" -#: cps/admin.py:370 +#: cps/admin.py:368 cps/admin.py:433 msgid "Certfile location is not valid, please enter correct path" msgstr "A tanusítványfájl helye nem érvényes, adj meg érvényes elérési utat" -#: cps/admin.py:395 -msgid "Please enter a LDAP provider and a DN" +#: cps/admin.py:393 +msgid "Please enter a LDAP provider, port, DN and user object identifier" msgstr "" -#: cps/admin.py:423 +#: cps/admin.py:400 +msgid "Please enter a LDAP service account and password" +msgstr "" + +#: cps/admin.py:457 msgid "Please enter Github oauth credentials" msgstr "" -#: cps/admin.py:437 +#: cps/admin.py:471 msgid "Please enter Google oauth credentials" msgstr "" -#: cps/admin.py:460 +#: cps/admin.py:490 msgid "Logfile location is not valid, please enter correct path" msgstr "A naplófájl helye nem érvényes, adj meg érvényes elérési utat" -#: cps/admin.py:498 +#: cps/admin.py:507 +msgid "Access Logfile location is not valid, please enter correct path" +msgstr "" + +#: cps/admin.py:542 msgid "DB location is not valid, please enter correct path" msgstr "Az adatbázis helye nem érvényes, adj meg érvényes elérési utat" -#: cps/admin.py:558 cps/web.py:1045 +#: cps/admin.py:602 cps/web.py:1040 msgid "Please fill out all fields!" msgstr "Az összes mezőt ki kell tölteni!" -#: cps/admin.py:560 cps/admin.py:566 cps/admin.py:582 +#: cps/admin.py:604 cps/admin.py:610 cps/admin.py:626 #: cps/templates/admin.html:35 msgid "Add new user" msgstr "Új felhasználó hozzáadása" -#: cps/admin.py:564 cps/web.py:1248 +#: cps/admin.py:608 cps/web.py:1251 msgid "E-mail is not from valid domain" msgstr "Az e-mail tartománya nem érvényes." -#: cps/admin.py:572 +#: cps/admin.py:616 #, python-format msgid "User '%(user)s' created" msgstr "A következő felhasználó létrehozva: %(user)s" -#: cps/admin.py:576 +#: cps/admin.py:620 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:607 +#: cps/admin.py:651 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "A teszt levél sikeresen elküldve ide: %(kindlemail)s" -#: cps/admin.py:610 +#: cps/admin.py:654 #, 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:612 cps/web.py:1029 +#: cps/admin.py:656 cps/web.py:1023 msgid "Please configure your kindle e-mail address first..." msgstr "Először be kell állítani a kindle e-mail címet..." -#: cps/admin.py:614 +#: cps/admin.py:658 msgid "E-mail server settings updated" msgstr "Az e-mail kiszolgáló beállításai frissítve." -#: cps/admin.py:615 +#: cps/admin.py:659 msgid "Edit e-mail server settings" msgstr "Az e-mail kiszolgáló beállításainak módosítása" -#: cps/admin.py:640 +#: cps/admin.py:687 #, python-format msgid "User '%(nick)s' deleted" msgstr "A felhasználó törölve: %(nick)s" -#: cps/admin.py:711 +#: cps/admin.py:690 +msgid "No admin user remaining, can't delete user" +msgstr "" + +#: cps/admin.py:761 #, python-format msgid "User '%(nick)s' updated" msgstr "A felhasználó frissítve: %(nick)s" -#: cps/admin.py:714 +#: cps/admin.py:764 msgid "An unknown error occured." msgstr "Ismeretlen hiba történt." -#: cps/admin.py:717 +#: cps/admin.py:767 #, python-format msgid "Edit User %(nick)s" msgstr " A felhasználó szerkesztése: %(nick)s" -#: cps/admin.py:733 +#: cps/admin.py:783 #, 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:736 cps/web.py:1070 +#: cps/admin.py:786 cps/web.py:1065 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:755 +#: cps/admin.py:797 +msgid "Logfile viewer" +msgstr "" + +#: cps/admin.py:832 msgid "Requesting update package" msgstr "Frissítési csomag kérése" -#: cps/admin.py:756 +#: cps/admin.py:833 msgid "Downloading update package" msgstr "Frissítési csomag letöltése" -#: cps/admin.py:757 +#: cps/admin.py:834 msgid "Unzipping update package" msgstr "Frissítési csomag kitömörítése" -#: cps/admin.py:758 +#: cps/admin.py:835 msgid "Replacing files" msgstr "Fájlok cserélése" -#: cps/admin.py:759 +#: cps/admin.py:836 msgid "Database connections are closed" msgstr "Adatbázis kapcsolatok lezárva" -#: cps/admin.py:760 +#: cps/admin.py:837 msgid "Stopping server" msgstr "Szerver leállítása" -#: cps/admin.py:761 +#: cps/admin.py:838 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:762 cps/admin.py:763 cps/admin.py:764 cps/admin.py:765 +#: cps/admin.py:839 cps/admin.py:840 cps/admin.py:841 cps/admin.py:842 msgid "Update failed:" msgstr "A frissítés nem sikerült:" -#: cps/admin.py:762 cps/updater.py:277 cps/updater.py:456 cps/updater.py:458 +#: cps/admin.py:839 cps/updater.py:273 cps/updater.py:459 cps/updater.py:461 msgid "HTTP Error" msgstr "HTTP hiba" -#: cps/admin.py:763 cps/updater.py:279 cps/updater.py:460 +#: cps/admin.py:840 cps/updater.py:275 cps/updater.py:463 msgid "Connection error" msgstr "Kapcsolódási hiba" -#: cps/admin.py:764 cps/updater.py:281 cps/updater.py:462 +#: cps/admin.py:841 cps/updater.py:277 cps/updater.py:465 msgid "Timeout while establishing connection" msgstr "Időtúllépés a kapcsolódás során" -#: cps/admin.py:765 cps/updater.py:283 cps/updater.py:464 +#: cps/admin.py:842 cps/updater.py:279 cps/updater.py:467 msgid "General error" msgstr "Általános hiba" @@ -227,720 +243,714 @@ msgstr "Nincs jogosultság a futtatáshoz" msgid "not configured" msgstr "nincs konfigurálva" -#: cps/editbooks.py:218 cps/editbooks.py:432 +#: cps/editbooks.py:215 cps/editbooks.py:394 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:246 +#: cps/editbooks.py:243 msgid "edit metadata" msgstr "Metaadatok szerkesztése" -#: cps/editbooks.py:325 cps/editbooks.py:595 +#: cps/editbooks.py:322 cps/editbooks.py:557 #, 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:329 cps/editbooks.py:599 +#: cps/editbooks.py:326 cps/editbooks.py:561 msgid "File to be uploaded must have an extension" msgstr "A feltöltendő fájlnak kiterjesztéssel kell rendelkeznie!" -#: cps/editbooks.py:341 cps/editbooks.py:619 +#: cps/editbooks.py:338 cps/editbooks.py:581 #, 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:346 +#: cps/editbooks.py:343 #, python-format msgid "Failed to store file %(file)s." msgstr "Nem sikerült elmenteni a %(file)s fájlt." -#: cps/editbooks.py:363 +#: cps/editbooks.py:360 #, 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:382 -#, python-format -msgid "Failed to create path for cover %(path)s (Permission denied)." -msgstr "" - -#: cps/editbooks.py:390 -#, python-format -msgid "Failed to store cover-file %(cover)s." -msgstr "" - -#: cps/editbooks.py:393 -msgid "Cover-file is not a valid image file" -msgstr "" - -#: cps/editbooks.py:399 cps/editbooks.py:413 +#: cps/editbooks.py:374 msgid "Cover is not a supported imageformat (jpg/png/webp), can't save" msgstr "" -#: cps/editbooks.py:445 cps/editbooks.py:454 +#: cps/editbooks.py:407 cps/editbooks.py:416 msgid "unknown" msgstr "ismeretlen" -#: cps/editbooks.py:486 +#: cps/editbooks.py:448 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/editbooks.py:534 +#: cps/editbooks.py:496 #, python-format msgid "%(langname)s is not a valid language" msgstr "A(z) %(langname)s nem érvényes nyelv" -#: cps/editbooks.py:565 +#: cps/editbooks.py:527 msgid "Metadata successfully updated" msgstr "A metaadatok sikeresen frissültek" -#: cps/editbooks.py:574 +#: cps/editbooks.py:536 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:624 +#: cps/editbooks.py:586 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "Nem sikerült elmenteni a %(file)s fájlt." -#: cps/editbooks.py:629 +#: cps/editbooks.py:591 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "Nem sikerült törölni a %(file)s fájlt." -#: cps/editbooks.py:712 +#: cps/editbooks.py:674 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:741 +#: cps/editbooks.py:703 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:751 +#: cps/editbooks.py:711 #, 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:755 +#: cps/editbooks.py:715 #, 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" -#: cps/gdrive.py:56 +#: cps/gdrive.py:61 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "A Google Drive beállítása nem fejeződött be, próbáld kikapcsolni és újra aktíválni a Google Drive-ot." -#: cps/gdrive.py:101 +#: cps/gdrive.py:106 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "A visszahívási tartomány nem ellenőrzött, kövesd az alábbi lépéseket a tartomány ellenőrzéséhez a Google Developer Console-ban:" -#: cps/helper.py:97 +#: cps/helper.py:94 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "A(z) %(format)s formátum nem található a következő könyvhöz: %(book)d" -#: cps/helper.py:109 +#: cps/helper.py:106 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "%(format)s nem található a Google Drive-on: %(fn)s" -#: cps/helper.py:116 cps/helper.py:223 cps/templates/detail.html:41 +#: cps/helper.py:113 cps/helper.py:220 cps/templates/detail.html:41 #: cps/templates/detail.html:45 msgid "Send to Kindle" msgstr "Küldés Kindle-re" -#: cps/helper.py:117 cps/helper.py:135 cps/helper.py:225 +#: cps/helper.py:114 cps/helper.py:132 cps/helper.py:222 msgid "This e-mail has been sent via Calibre-Web." msgstr "Ez az e-mail a Calibre-Web-en keresztül lett küldve." -#: cps/helper.py:128 +#: cps/helper.py:125 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "%(format)s nem található: %(fn)s" -#: cps/helper.py:133 +#: cps/helper.py:130 msgid "Calibre-Web test e-mail" msgstr "Calibre-Web teszt e-mail" -#: cps/helper.py:134 +#: cps/helper.py:131 msgid "Test e-mail" msgstr "Teszt e-mail" -#: cps/helper.py:150 +#: cps/helper.py:147 msgid "Get Started with Calibre-Web" msgstr "Kezdő lépések a Calibre-Web-bel" -#: cps/helper.py:151 +#: cps/helper.py:148 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "Regisztrációs e-mail a következő felhasználóhoz: %(name)s" -#: cps/helper.py:165 cps/helper.py:167 cps/helper.py:169 cps/helper.py:177 -#: cps/helper.py:179 cps/helper.py:181 +#: cps/helper.py:162 cps/helper.py:164 cps/helper.py:166 cps/helper.py:174 +#: cps/helper.py:176 cps/helper.py:178 #, python-format msgid "Send %(format)s to Kindle" msgstr "%(format)s küldése Kindle-re" -#: cps/helper.py:185 +#: cps/helper.py:182 #, python-format msgid "Convert %(orig)s to %(format)s and send to Kindle" msgstr "%(orig)s konvertálása %(format)s-ra és küldés Kindle-re" -#: cps/helper.py:224 +#: cps/helper.py:221 #, python-format msgid "E-mail: %(book)s" msgstr "E-mail: %(book)s" -#: cps/helper.py:227 +#: cps/helper.py:224 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "A kért fájl nem olvasható. Esetleg jogosultsági probléma lenne?" -#: cps/helper.py:335 +#: cps/helper.py:331 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "A cím átnevezése \"%(src)s\"-ról \"%(dest)s\"-ra nem sikerült a következő hiba miatt: %(error)s" -#: cps/helper.py:345 +#: cps/helper.py:341 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "A szerző átnevezése \"%(src)s\"-ról \"%(dest)s\"-ra nem sikerült a következő hiba miatt: %(error)s" -#: cps/helper.py:359 +#: cps/helper.py:355 #, python-format msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "\"%(src)s\" fájl átnevezése \"%(dest)s\"-re nem sikerült a következő hiba miatt: %(error)s" -#: cps/helper.py:385 cps/helper.py:395 cps/helper.py:403 +#: cps/helper.py:381 cps/helper.py:391 cps/helper.py:399 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "A \"%(file)s\" fájl nem található a Google Drive-on" -#: cps/helper.py:424 +#: cps/helper.py:420 #, python-format 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:584 +#: cps/helper.py:579 msgid "Error excecuting UnRar" msgstr "Hiba az UnRar futtatásakor" -#: cps/helper.py:586 +#: cps/helper.py:581 msgid "Unrar binary file not found" msgstr "Az Unrar futtatható állománya nem található" -#: cps/helper.py:614 +#: cps/helper.py:609 msgid "Waiting" msgstr "Várakozás" -#: cps/helper.py:616 +#: cps/helper.py:611 msgid "Failed" msgstr "Nem sikerült" -#: cps/helper.py:618 +#: cps/helper.py:613 msgid "Started" msgstr "Elindítva" -#: cps/helper.py:620 +#: cps/helper.py:615 msgid "Finished" msgstr "Végrehajtva" -#: cps/helper.py:622 +#: cps/helper.py:617 msgid "Unknown Status" msgstr "Ismeretlen állapot" -#: cps/helper.py:627 +#: cps/helper.py:622 msgid "E-mail: " msgstr "E-mail cím: " -#: cps/helper.py:629 cps/helper.py:633 +#: cps/helper.py:624 cps/helper.py:628 msgid "Convert: " msgstr "Konvertálás:" -#: cps/helper.py:631 +#: cps/helper.py:626 msgid "Upload: " msgstr "Feltöltés:" -#: cps/helper.py:635 +#: cps/helper.py:630 msgid "Unknown Task: " msgstr "Ismeretlen feladat:" -#: cps/oauth_bb.py:87 +#: cps/oauth_bb.py:91 #, python-format -msgid "Register with %s, " +msgid "Register with %(provider)s" msgstr "" -#: cps/oauth_bb.py:145 +#: cps/oauth_bb.py:149 msgid "Failed to log in with GitHub." msgstr "" -#: cps/oauth_bb.py:150 +#: cps/oauth_bb.py:154 msgid "Failed to fetch user info from GitHub." msgstr "" -#: cps/oauth_bb.py:161 +#: cps/oauth_bb.py:165 msgid "Failed to log in with Google." msgstr "" -#: cps/oauth_bb.py:166 +#: cps/oauth_bb.py:170 msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:265 +#: cps/oauth_bb.py:269 #, python-format msgid "Unlink to %(oauth)s success." msgstr "" -#: cps/oauth_bb.py:269 +#: cps/oauth_bb.py:273 #, python-format msgid "Unlink to %(oauth)s failed." msgstr "" -#: cps/oauth_bb.py:272 +#: cps/oauth_bb.py:276 #, python-format msgid "Not linked to %(oauth)s." msgstr "" -#: cps/oauth_bb.py:300 +#: cps/oauth_bb.py:304 msgid "GitHub Oauth error, please retry later." msgstr "" -#: cps/oauth_bb.py:319 +#: cps/oauth_bb.py:323 msgid "Google Oauth error, please retry later." msgstr "" -#: cps/shelf.py:40 cps/shelf.py:92 +#: cps/shelf.py:46 cps/shelf.py:98 msgid "Invalid shelf specified" msgstr "A megadott polc érvénytelen!" -#: cps/shelf.py:47 +#: cps/shelf.py:53 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" msgstr "Elnézést, nem vagy jogosult hozzáadni a könyvet a következő polcra: %(shelfname)s" -#: cps/shelf.py:55 +#: cps/shelf.py:61 msgid "You are not allowed to edit public shelves" msgstr "Nem vagy jogosult szerkeszteni nyilvános polcokat" -#: cps/shelf.py:64 +#: cps/shelf.py:70 #, python-format 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:78 +#: cps/shelf.py:84 #, 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:97 +#: cps/shelf.py:103 #, 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:102 +#: cps/shelf.py:108 msgid "User is not allowed to edit public shelves" msgstr "A felhasználó nem szerkeszthet nyilvános polcokat" -#: cps/shelf.py:120 +#: cps/shelf.py:126 #, 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:134 +#: cps/shelf.py:140 #, 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:136 +#: cps/shelf.py:142 #, 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:173 +#: cps/shelf.py:179 #, 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:179 +#: cps/shelf.py:185 #, 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:200 cps/shelf.py:224 +#: cps/shelf.py:206 cps/shelf.py:230 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Már létezik \"%(title)s\" nevű polc!" -#: cps/shelf.py:205 +#: cps/shelf.py:211 #, python-format msgid "Shelf %(title)s created" msgstr "A következő polc létre lett hozva: %(title)s" -#: cps/shelf.py:207 cps/shelf.py:235 +#: cps/shelf.py:213 cps/shelf.py:241 msgid "There was an error" msgstr "Hiba történt" -#: cps/shelf.py:208 cps/shelf.py:210 +#: cps/shelf.py:214 cps/shelf.py:216 msgid "create a shelf" msgstr "Polc készítése" -#: cps/shelf.py:233 +#: cps/shelf.py:239 #, python-format msgid "Shelf %(title)s changed" msgstr "A következő polc megváltoztatva: %(title)s" -#: cps/shelf.py:236 cps/shelf.py:238 +#: cps/shelf.py:242 cps/shelf.py:244 msgid "Edit a shelf" msgstr "Polc szerkesztése" -#: cps/shelf.py:259 -#, python-format -msgid "successfully deleted shelf %(name)s" -msgstr "A következő polc sikeresen törölve: %(name)s" - -#: cps/shelf.py:289 +#: cps/shelf.py:295 #, python-format msgid "Shelf: '%(name)s'" msgstr "Polc: '%(name)s'" -#: cps/shelf.py:292 +#: cps/shelf.py:298 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/shelf.py:324 +#: cps/shelf.py:330 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "A következő polc átrendezése: %(name)s" -#: cps/ub.py:111 +#: cps/ub.py:68 msgid "Recently Added" msgstr "Legutóbb hozzáadott" -#: cps/ub.py:113 +#: cps/ub.py:70 msgid "Show recent books" msgstr "Legutóbbi könyvek mutatása" -#: cps/templates/index.xml:17 cps/ub.py:114 +#: cps/templates/index.xml:17 cps/ub.py:71 msgid "Hot Books" msgstr "Kelendő könyvek" -#: cps/ub.py:115 +#: cps/ub.py:72 msgid "Show hot books" msgstr "Kelendő könyvek mutatása" -#: cps/templates/index.xml:24 cps/ub.py:118 +#: cps/templates/index.xml:24 cps/ub.py:75 msgid "Best rated Books" msgstr "Legjobb könyvek" -#: cps/ub.py:120 +#: cps/ub.py:77 msgid "Show best rated books" msgstr "Legjobbra értékelt könyvek mutatása" -#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:121 -#: cps/web.py:965 +#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:78 +#: cps/web.py:958 msgid "Read Books" msgstr "Olvasott könyvek" -#: cps/ub.py:123 +#: cps/ub.py:80 msgid "Show read and unread" msgstr "Mutassa az olvasva/olvasatlan állapotot" -#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:125 -#: cps/web.py:969 +#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:82 +#: cps/web.py:962 msgid "Unread Books" msgstr "Olvasatlan könyvek" -#: cps/ub.py:127 +#: cps/ub.py:84 msgid "Show unread" msgstr "" -#: cps/ub.py:128 +#: cps/ub.py:85 msgid "Discover" msgstr "Felfedezés" -#: cps/ub.py:130 +#: cps/ub.py:87 msgid "Show random books" msgstr "Könyvek találomra mutatása" -#: cps/ub.py:131 +#: cps/ub.py:88 msgid "Categories" msgstr "Címkék" -#: cps/ub.py:133 +#: cps/ub.py:90 msgid "Show category selection" msgstr "Címke választó mutatása" #: cps/templates/book_edit.html:71 cps/templates/search_form.html:53 -#: cps/ub.py:134 +#: cps/ub.py:91 msgid "Series" msgstr "Sorozatok" -#: cps/ub.py:136 +#: cps/ub.py:93 msgid "Show series selection" msgstr "Sorozat választó mutatása" -#: cps/templates/index.xml:61 cps/ub.py:137 +#: cps/templates/index.xml:61 cps/ub.py:94 msgid "Authors" msgstr "Szerzők" -#: cps/ub.py:139 +#: cps/ub.py:96 msgid "Show author selection" msgstr "Szerző választó mutatása" -#: cps/templates/index.xml:68 cps/ub.py:141 +#: cps/templates/index.xml:68 cps/ub.py:98 msgid "Publishers" msgstr "Kiadók" -#: cps/ub.py:143 +#: cps/ub.py:100 msgid "Show publisher selection" msgstr "Kiadó választó mutatása" -#: cps/templates/search_form.html:74 cps/ub.py:144 +#: cps/templates/search_form.html:74 cps/ub.py:101 msgid "Languages" msgstr "Nyelvek" -#: cps/ub.py:147 +#: cps/ub.py:104 msgid "Show language selection" msgstr "Nyelv választó mutatása" -#: cps/ub.py:148 +#: cps/ub.py:105 msgid "Ratings" msgstr "" -#: cps/ub.py:150 +#: cps/ub.py:107 msgid "Show ratings selection" msgstr "" -#: cps/ub.py:151 +#: cps/ub.py:108 msgid "File formats" msgstr "" -#: cps/ub.py:153 +#: cps/ub.py:110 msgid "Show file formats selection" msgstr "" -#: cps/updater.py:257 cps/updater.py:364 cps/updater.py:377 +#: cps/updater.py:253 cps/updater.py:360 cps/updater.py:373 msgid "Unexpected data while reading update information" msgstr "Ismeretlen adat a frissítési információk olvasásakor" -#: cps/updater.py:264 cps/updater.py:370 +#: cps/updater.py:260 cps/updater.py:366 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:290 cps/updater.py:422 +#: cps/updater.py:286 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:343 +#: cps/updater.py:339 msgid "Could not fetch update information" msgstr "Nem lehetett begyűjteni a frissítési információkat" -#: cps/updater.py:357 +#: cps/updater.py:353 msgid "No release information available" msgstr "Nincs információ a kiadásról." -#: cps/updater.py:403 cps/updater.py:412 +#: cps/updater.py:406 cps/updater.py:415 #, 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/web.py:457 +#: cps/updater.py:425 +msgid "Click on the button below to update to the latest stable version." +msgstr "" + +#: cps/web.py:445 msgid "Recently Added Books" msgstr "Legutóbb hozzáadott könyvek" -#: cps/web.py:484 +#: cps/web.py:473 msgid "Best rated books" msgstr "Legjobbra értékelt könyvek" -#: cps/templates/index.xml:38 cps/web.py:492 +#: cps/templates/index.xml:38 cps/web.py:481 msgid "Random Books" msgstr "Könyvek találomra" -#: cps/web.py:516 +#: cps/web.py:505 msgid "Books" msgstr "" -#: cps/web.py:543 +#: cps/web.py:532 msgid "Hot Books (most downloaded)" msgstr "Kelendő könyvek (legtöbbet letöltöttek)" -#: cps/web.py:553 cps/web.py:1294 cps/web.py:1383 +#: cps/web.py:542 cps/web.py:1298 cps/web.py:1386 msgid "Error opening eBook. File does not exist or file 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:580 +#: cps/web.py:559 +#, python-format +msgid "Author: %(name)s" +msgstr "" + +#: cps/web.py:571 #, python-format msgid "Publisher: %(name)s" msgstr "Kiadó: %(name)s" -#: cps/web.py:591 +#: cps/web.py:582 #, python-format msgid "Series: %(serie)s" msgstr "Sorozat: %(serie)s" -#: cps/web.py:602 +#: cps/web.py:593 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:613 +#: cps/web.py:604 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:625 +#: cps/web.py:616 #, python-format msgid "Category: %(name)s" msgstr "Címke: %(name)s" -#: cps/web.py:659 +#: cps/web.py:650 msgid "Publisher list" msgstr "Kiadók listája" -#: cps/templates/index.xml:82 cps/web.py:675 +#: cps/templates/index.xml:82 cps/web.py:666 msgid "Series list" msgstr "Sorozatok listája" -#: cps/web.py:689 +#: cps/web.py:680 msgid "Ratings list" msgstr "" -#: cps/web.py:702 +#: cps/web.py:693 msgid "File formats list" msgstr "" -#: cps/web.py:730 +#: cps/web.py:721 msgid "Available languages" msgstr "Elérhető nyelvek" -#: cps/web.py:750 +#: cps/web.py:741 #, python-format msgid "Language: %(name)s" msgstr "Nyelv: %(name)s" -#: cps/templates/index.xml:75 cps/web.py:764 +#: cps/templates/index.xml:75 cps/web.py:755 msgid "Category list" msgstr "Címkék listája" -#: cps/templates/layout.html:73 cps/web.py:777 +#: cps/templates/layout.html:73 cps/web.py:769 msgid "Tasks" msgstr "Feladatok" -#: cps/web.py:841 +#: cps/web.py:834 msgid "Published after " msgstr "Kiadva ezután: " -#: cps/web.py:848 +#: cps/web.py:841 msgid "Published before " msgstr "Kiadva ezelőtt: " -#: cps/web.py:862 +#: cps/web.py:855 #, python-format msgid "Rating <= %(rating)s" msgstr "Értékelés <= %(rating)s" -#: cps/web.py:864 +#: cps/web.py:857 #, python-format msgid "Rating >= %(rating)s" msgstr "Értékelés <= %(rating)s" -#: cps/web.py:924 cps/web.py:933 +#: cps/web.py:917 cps/web.py:926 msgid "search" msgstr "keresés" -#: cps/web.py:1018 +#: cps/web.py:1012 msgid "Please configure the SMTP mail settings first..." msgstr "Először be kell állítani az SMTP levelező beállításokat..." -#: cps/web.py:1023 +#: cps/web.py:1017 #, 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:1027 +#: cps/web.py:1021 #, python-format msgid "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:1046 cps/web.py:1071 cps/web.py:1076 cps/web.py:1081 -#: cps/web.py:1085 +#: cps/web.py:1041 cps/web.py:1066 cps/web.py:1070 cps/web.py:1075 +#: cps/web.py:1079 msgid "register" msgstr "regisztrálás" -#: cps/web.py:1073 +#: cps/web.py:1068 msgid "Your e-mail is not allowed to register" msgstr "Nem engedélyezett a megadott e-mail cím bejegyzése" -#: cps/web.py:1077 +#: cps/web.py:1071 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:1080 +#: cps/web.py:1074 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:1103 cps/web.py:1115 -#, python-format -msgid "You are now logged in as: '%(nickname)s'" +#: cps/web.py:1089 +msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1108 cps/web.py:1120 +#: cps/web.py:1098 cps/web.py:1212 +#, python-format +msgid "you are now logged in as: '%(nickname)s'" +msgstr "Be vagy jelentkezve mint: %(nickname)s" + +#: cps/web.py:1105 cps/web.py:1122 msgid "Wrong Username or Password" msgstr "Rossz felhasználó név vagy jelszó!" -#: cps/web.py:1111 +#: cps/web.py:1108 msgid "Could not login. LDAP server down, please contact your administrator" msgstr "" -#: cps/web.py:1124 cps/web.py:1146 +#: cps/web.py:1117 +#, python-format +msgid "You are now logged in as: '%(nickname)s'" +msgstr "" + +#: cps/web.py:1126 cps/web.py:1148 msgid "login" msgstr "belépés" -#: cps/web.py:1158 cps/web.py:1189 +#: cps/web.py:1160 cps/web.py:1191 msgid "Token not found" msgstr "A token nem található." -#: cps/web.py:1166 cps/web.py:1197 +#: cps/web.py:1168 cps/web.py:1199 msgid "Token has expired" msgstr "A token érvényessége lejárt." -#: cps/web.py:1174 +#: cps/web.py:1176 msgid "Success! Please return to your device" msgstr "Sikerült! Újra használható az eszköz." -#: cps/web.py:1210 -#, python-format -msgid "you are now logged in as: '%(nickname)s'" -msgstr "Be vagy jelentkezve mint: %(nickname)s" - -#: cps/web.py:1250 cps/web.py:1277 cps/web.py:1281 +#: cps/web.py:1253 cps/web.py:1280 cps/web.py:1284 #, python-format msgid "%(name)s's profile" msgstr "%(name)s profilja" -#: cps/web.py:1274 +#: cps/web.py:1277 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:1279 +#: cps/web.py:1282 msgid "Profile updated" msgstr "A profil frissítve." -#: cps/web.py:1304 cps/web.py:1306 cps/web.py:1308 cps/web.py:1314 -#: cps/web.py:1318 +#: cps/web.py:1308 cps/web.py:1310 cps/web.py:1312 cps/web.py:1318 +#: cps/web.py:1322 msgid "Read a Book" msgstr "Egy olvasott könyv" -#: cps/web.py:1328 +#: cps/web.py:1332 msgid "Error opening eBook. File does not exist or file is not accessible." msgstr "" -#: cps/worker.py:308 +#: cps/worker.py:311 #, python-format msgid "Ebook-converter failed: %(error)s" msgstr "Az e-könyv átalakítás nem sikerült: %(error)s" -#: cps/worker.py:319 +#: cps/worker.py:322 #, python-format msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "A Kindlegen futtatása nem sikerült a(z) %(error)s hiba miatt. Üzenet: %(message)s" @@ -1056,53 +1066,57 @@ msgid "Administration" msgstr "Adminisztráció" #: cps/templates/admin.html:109 +msgid "View Logfiles" +msgstr "" + +#: cps/templates/admin.html:110 msgid "Reconnect to Calibre DB" msgstr "Újracsatlakozás a Calibre adatbázishoz" -#: cps/templates/admin.html:110 +#: cps/templates/admin.html:111 msgid "Restart Calibre-Web" msgstr "A Calibre adatbázis újraindítása" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:112 msgid "Stop Calibre-Web" msgstr "A Calibre adatbázis leállítása" -#: cps/templates/admin.html:117 +#: cps/templates/admin.html:118 msgid "Update" msgstr "Frissítés" -#: cps/templates/admin.html:121 +#: cps/templates/admin.html:122 msgid "Version" msgstr "Verzió" -#: cps/templates/admin.html:122 +#: cps/templates/admin.html:123 msgid "Details" msgstr "Részletek" -#: cps/templates/admin.html:128 +#: cps/templates/admin.html:129 msgid "Current version" msgstr "Jelenlegi verzió" -#: cps/templates/admin.html:134 +#: cps/templates/admin.html:135 msgid "Check for update" msgstr "Frissítés keresése" -#: cps/templates/admin.html:135 +#: cps/templates/admin.html:136 msgid "Perform Update" msgstr "Frissítés elkezdése" -#: cps/templates/admin.html:147 +#: cps/templates/admin.html:148 msgid "Do you really want to restart Calibre-Web?" msgstr "Valóban újra akarod indítani a Calibre-Web-et?" -#: cps/templates/admin.html:152 cps/templates/admin.html:166 -#: cps/templates/admin.html:186 cps/templates/shelf.html:72 +#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:187 cps/templates/shelf.html:72 msgid "Ok" msgstr "OK" -#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:154 cps/templates/admin.html:168 #: cps/templates/book_edit.html:174 cps/templates/book_edit.html:196 -#: cps/templates/config_edit.html:281 cps/templates/config_view_edit.html:147 +#: cps/templates/config_edit.html:331 cps/templates/config_view_edit.html:147 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 @@ -1110,11 +1124,11 @@ msgstr "OK" msgid "Back" msgstr "Vissza" -#: cps/templates/admin.html:165 +#: cps/templates/admin.html:166 msgid "Do you really want to stop Calibre-Web?" msgstr "Valóban le akarod állítani a Calibre-Web-et?" -#: cps/templates/admin.html:177 +#: cps/templates/admin.html:178 msgid "Updating, please do not reload page" msgstr "Frissítés folyamatban, ne töltsd újra az oldalt" @@ -1243,7 +1257,7 @@ msgstr "Könyv megnézése szerkesztés után" msgid "Get metadata" msgstr "Metaadatok beszerzése" -#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:279 +#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329 #: cps/templates/config_view_edit.html:146 cps/templates/login.html:20 #: cps/templates/search_form.html:150 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:130 @@ -1387,123 +1401,171 @@ msgstr "Naplózás szintje" msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "Naplófájl helye és neve (üresen hagyva calibre-web.log)" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:134 +msgid "Enable Access Log" +msgstr "" + +#: cps/templates/config_edit.html:137 +msgid "Location and name of access logfile (access.log for no entry)" +msgstr "" + +#: cps/templates/config_edit.html:148 msgid "Feature Configuration" msgstr "Funkciók beállítása" -#: cps/templates/config_edit.html:148 +#: cps/templates/config_edit.html:156 msgid "Enable uploading" msgstr "Feltöltés engedélyezése" -#: cps/templates/config_edit.html:152 +#: cps/templates/config_edit.html:160 msgid "Enable anonymous browsing" msgstr "Böngészés bejelentkezés nélkül engedélyezése" -#: cps/templates/config_edit.html:156 +#: cps/templates/config_edit.html:164 msgid "Enable public registration" msgstr "Nyilvános regisztráció engedélyezése" -#: cps/templates/config_edit.html:160 +#: cps/templates/config_edit.html:168 msgid "Enable remote login (\"magic link\")" msgstr "Távoli belépés engedélyezése (\"varázs-hivatkozás\")" -#: cps/templates/config_edit.html:165 +#: cps/templates/config_edit.html:173 msgid "Use" msgstr "Engedélyezés" -#: cps/templates/config_edit.html:166 +#: cps/templates/config_edit.html:174 msgid "Obtain an API Key" msgstr "API-kulcs beszerzése" -#: cps/templates/config_edit.html:170 +#: cps/templates/config_edit.html:178 msgid "Goodreads API Key" msgstr "Goodreads API-kulcs" -#: cps/templates/config_edit.html:174 +#: cps/templates/config_edit.html:182 msgid "Goodreads API Secret" msgstr "Goodreads API titkos kód" -#: cps/templates/config_edit.html:181 +#: cps/templates/config_edit.html:189 msgid "Login type" msgstr "" -#: cps/templates/config_edit.html:183 +#: cps/templates/config_edit.html:191 msgid "Use standard Authentication" msgstr "" -#: cps/templates/config_edit.html:185 +#: cps/templates/config_edit.html:193 msgid "Use LDAP Authentication" msgstr "" -#: cps/templates/config_edit.html:188 +#: cps/templates/config_edit.html:196 msgid "Use GitHub OAuth" msgstr "" -#: cps/templates/config_edit.html:189 +#: cps/templates/config_edit.html:197 msgid "Use Google OAuth" msgstr "" -#: cps/templates/config_edit.html:196 -msgid "LDAP Provider URL" +#: cps/templates/config_edit.html:204 +msgid "LDAP Server Host Name or IP Address" +msgstr "" + +#: cps/templates/config_edit.html:208 +msgid "LDAP Server Port" +msgstr "" + +#: cps/templates/config_edit.html:212 +msgid "LDAP schema (ldap or ldaps)" +msgstr "" + +#: cps/templates/config_edit.html:216 +msgid "LDAP Admin username" +msgstr "" + +#: cps/templates/config_edit.html:220 +msgid "LDAP Admin password" +msgstr "" + +#: cps/templates/config_edit.html:225 +msgid "LDAP Server use SSL" msgstr "" -#: cps/templates/config_edit.html:200 +#: cps/templates/config_edit.html:229 +msgid "LDAP Server use TLS" +msgstr "" + +#: cps/templates/config_edit.html:233 +msgid "LDAP Server Certificate" +msgstr "" + +#: cps/templates/config_edit.html:237 +msgid "LDAP SSL Certificate Path" +msgstr "" + +#: cps/templates/config_edit.html:242 msgid "LDAP Distinguished Name (DN)" msgstr "" -#: cps/templates/config_edit.html:208 +#: cps/templates/config_edit.html:246 +msgid "LDAP User object filter" +msgstr "" + +#: cps/templates/config_edit.html:251 +msgid "LDAP Server is OpenLDAP?" +msgstr "" + +#: cps/templates/config_edit.html:258 msgid "Obtain GitHub OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:211 +#: cps/templates/config_edit.html:261 msgid "GitHub OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:215 +#: cps/templates/config_edit.html:265 msgid "GitHub OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:221 +#: cps/templates/config_edit.html:271 msgid "Obtain Google OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:224 +#: cps/templates/config_edit.html:274 msgid "Google OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:228 +#: cps/templates/config_edit.html:278 msgid "Google OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:242 +#: cps/templates/config_edit.html:292 msgid "External binaries" msgstr "Külső futtatható fájlok" -#: cps/templates/config_edit.html:250 +#: cps/templates/config_edit.html:300 msgid "No converter" msgstr "Átalakítás nélkül" -#: cps/templates/config_edit.html:252 +#: cps/templates/config_edit.html:302 msgid "Use Kindlegen" msgstr "Kindlegen használata" -#: cps/templates/config_edit.html:254 +#: cps/templates/config_edit.html:304 msgid "Use calibre's ebook converter" msgstr "Calibre e-könyv átalakító használata" -#: cps/templates/config_edit.html:258 +#: cps/templates/config_edit.html:308 msgid "E-Book converter settings" msgstr "E-könyv átalakító beállításai" -#: cps/templates/config_edit.html:262 +#: cps/templates/config_edit.html:312 msgid "Path to convertertool" msgstr "Elérési út az átalakító-eszközhöz" -#: cps/templates/config_edit.html:268 +#: cps/templates/config_edit.html:318 msgid "Location of Unrar binary" msgstr "Az Unrar futtatási állományának helye" -#: cps/templates/config_edit.html:284 cps/templates/layout.html:84 +#: cps/templates/config_edit.html:334 cps/templates/layout.html:84 #: cps/templates/login.html:4 msgid "Login" msgstr "Belépés" @@ -1717,7 +1779,7 @@ msgstr "Vissza a kezdőlapra" msgid "Discover (Random Books)" msgstr "Felfedezés (könyvek találomra)" -#: cps/templates/index.html:65 +#: cps/templates/index.html:64 msgid "Group by series" msgstr "" @@ -1860,6 +1922,14 @@ msgstr "Emlékezz rám" msgid "Log in with magic link" msgstr "Belépés varázshivatkozással" +#: cps/templates/logviewer.html:5 +msgid "Show Calibre-Web log" +msgstr "" + +#: cps/templates/logviewer.html:8 +msgid "Show access log" +msgstr "" + #: cps/templates/osd.xml:5 msgid "Calibre-Web ebook catalog" msgstr "Calibre-Web e-könyv katalógus" @@ -3235,13 +3305,13 @@ msgstr "Utolsó letöltések" #~ msgstr "Dokumentum előkészítése nyomtatásra..." #~ msgid "Failed to create path for cover %(path)s (Permission denied)." -#~ msgstr "Nem sikerült létrehozni az elérési utat a borítóhoz (engedély megtagadva): %(path)s." +#~ msgstr "" #~ msgid "Failed to store cover-file %(cover)s." -#~ msgstr "Nem sikerült elmenteni a borító-fájlt: %(cover)s." +#~ msgstr "" #~ msgid "Cover-file is not a valid image file" -#~ msgstr "A borító-fájl nem érvényes képfájl!" +#~ msgstr "" #~ msgid "Cover is not a jpg file, can't save" #~ msgstr "A borító nem jpg fájl, nem lehet elmenteni." @@ -3297,3 +3367,15 @@ msgstr "Utolsó letöltések" #~ msgid "PDF.js viewer" #~ msgstr "PDF.js olvasó" +#~ msgid "Please enter a LDAP provider and a DN" +#~ msgstr "" + +#~ msgid "successfully deleted shelf %(name)s" +#~ msgstr "A következő polc sikeresen törölve: %(name)s" + +#~ msgid "LDAP Provider URL" +#~ msgstr "" + +#~ msgid "Register with %s, " +#~ msgstr "" + diff --git a/cps/translations/it/LC_MESSAGES/messages.mo b/cps/translations/it/LC_MESSAGES/messages.mo index 8778b0da..cda874e8 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 ddf8e92b..75b140e4 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: 2019-05-31 11:20+0200\n" +"POT-Creation-Date: 2019-06-22 19:54+0200\n" "PO-Revision-Date: 2017-04-04 15:09+0200\n" "Last-Translator: Marco Picone \n" "Language: it\n" @@ -15,13 +15,13 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" -#: cps/about.py:76 +#: cps/about.py:78 msgid "Statistics" msgstr "Statistica" -#: cps/admin.py:97 +#: cps/admin.py:98 msgid "Server restarted, please reload page" msgstr "Server riavviato, per favore ricarica la pagina" @@ -29,186 +29,202 @@ msgstr "Server riavviato, per favore ricarica la pagina" msgid "Performing shutdown of server, please close window" msgstr "Eseguo l'arresto del server, per favore chiudi la finestra." -#: cps/admin.py:120 cps/updater.py:445 +#: cps/admin.py:119 cps/updater.py:448 msgid "Unknown" msgstr "Sconosciuto" -#: cps/admin.py:139 +#: cps/admin.py:138 msgid "Admin page" msgstr "Pagina di amministrazione" -#: cps/admin.py:208 cps/admin.py:486 +#: cps/admin.py:207 cps/admin.py:532 msgid "Calibre-Web configuration updated" msgstr "Aggiornamento della configurazione di Calibre-Web" -#: cps/admin.py:222 cps/templates/admin.html:102 +#: cps/admin.py:220 cps/templates/admin.html:102 msgid "UI Configuration" msgstr "Configurazione dell'interfaccia utente" -#: cps/admin.py:295 +#: cps/admin.py:293 msgid "Import of optional Google Drive requirements missing" msgstr "Importa parametri mancanti per Google Drive" -#: cps/admin.py:298 +#: cps/admin.py:296 msgid "client_secrets.json is missing or not readable" msgstr "client_secrets.json manca o è inaccessibile" -#: cps/admin.py:303 cps/admin.py:332 +#: cps/admin.py:301 cps/admin.py:330 msgid "client_secrets.json is not configured for web application" msgstr "client_secrets.json non è configurato per questa applicazione web" -#: cps/admin.py:335 cps/admin.py:361 cps/admin.py:373 cps/admin.py:398 -#: cps/admin.py:426 cps/admin.py:440 cps/admin.py:463 cps/admin.py:476 -#: cps/admin.py:494 cps/admin.py:501 cps/admin.py:516 -#: cps/templates/admin.html:101 +#: cps/admin.py:333 cps/admin.py:359 cps/admin.py:371 cps/admin.py:396 +#: cps/admin.py:403 cps/admin.py:436 cps/admin.py:460 cps/admin.py:474 +#: cps/admin.py:493 cps/admin.py:510 cps/admin.py:522 cps/admin.py:538 +#: cps/admin.py:545 cps/admin.py:559 cps/templates/admin.html:101 msgid "Basic Configuration" msgstr "Configurazione di base" -#: cps/admin.py:358 +#: cps/admin.py:356 msgid "Keyfile location is not valid, please enter correct path" msgstr "La posizione del Keyfile non è corretta: per favore indica il percorso corretto" -#: cps/admin.py:370 +#: cps/admin.py:368 cps/admin.py:433 msgid "Certfile location is not valid, please enter correct path" msgstr "La posizione del Cerfile non è corretta: per favore indica il percorso corretto" -#: cps/admin.py:395 -msgid "Please enter a LDAP provider and a DN" +#: cps/admin.py:393 +msgid "Please enter a LDAP provider, port, DN and user object identifier" msgstr "" -#: cps/admin.py:423 +#: cps/admin.py:400 +msgid "Please enter a LDAP service account and password" +msgstr "" + +#: cps/admin.py:457 msgid "Please enter Github oauth credentials" msgstr "" -#: cps/admin.py:437 +#: cps/admin.py:471 msgid "Please enter Google oauth credentials" msgstr "" -#: cps/admin.py:460 +#: cps/admin.py:490 msgid "Logfile location is not valid, please enter correct path" msgstr "La posizione del Logfile non è corretta: per favore indica il percorso corretto" -#: cps/admin.py:498 +#: cps/admin.py:507 +msgid "Access Logfile location is not valid, please enter correct path" +msgstr "" + +#: cps/admin.py:542 msgid "DB location is not valid, please enter correct path" msgstr "La posizione DB non è corretta: per favore indica il percorso corretto" -#: cps/admin.py:558 cps/web.py:1045 +#: cps/admin.py:602 cps/web.py:1040 msgid "Please fill out all fields!" msgstr "Per favore compila tutti i campi!" -#: cps/admin.py:560 cps/admin.py:566 cps/admin.py:582 +#: cps/admin.py:604 cps/admin.py:610 cps/admin.py:626 #: cps/templates/admin.html:35 msgid "Add new user" msgstr "Aggiungi un nuovo utente" -#: cps/admin.py:564 cps/web.py:1248 +#: cps/admin.py:608 cps/web.py:1251 msgid "E-mail is not from valid domain" msgstr "L'e-mail non proviene da un dominio valido" -#: cps/admin.py:572 +#: cps/admin.py:616 #, python-format msgid "User '%(user)s' created" msgstr "Utente '%(user)s' creato" -#: cps/admin.py:576 +#: cps/admin.py:620 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:607 +#: cps/admin.py:651 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "E-mail di test inviato con successo a %(kindlemail)s" -#: cps/admin.py:610 +#: cps/admin.py:654 #, 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:612 cps/web.py:1029 +#: cps/admin.py:656 cps/web.py:1023 msgid "Please configure your kindle e-mail address first..." msgstr "Per favore configura dapprima il tuo indirizzo e-mail di Kindle..." -#: cps/admin.py:614 +#: cps/admin.py:658 msgid "E-mail server settings updated" msgstr "Configurazione del server e-mail aggiornata" -#: cps/admin.py:615 +#: cps/admin.py:659 msgid "Edit e-mail server settings" msgstr "Modifica la configurazione del server e-mail" -#: cps/admin.py:640 +#: cps/admin.py:687 #, python-format msgid "User '%(nick)s' deleted" msgstr "Utente '%(nick)s' eliminato" -#: cps/admin.py:711 +#: cps/admin.py:690 +msgid "No admin user remaining, can't delete user" +msgstr "" + +#: cps/admin.py:761 #, python-format msgid "User '%(nick)s' updated" msgstr "Utente '%(nick)s' aggiornato" -#: cps/admin.py:714 +#: cps/admin.py:764 msgid "An unknown error occured." msgstr "Si è verificato un errore imprevisto." -#: cps/admin.py:717 +#: cps/admin.py:767 #, python-format msgid "Edit User %(nick)s" msgstr "Modifica utente %(nick)s" -#: cps/admin.py:733 +#: cps/admin.py:783 #, python-format msgid "Password for user %(user)s reset" msgstr "La password dell'utente %(user)s è stata resettata" -#: cps/admin.py:736 cps/web.py:1070 +#: cps/admin.py:786 cps/web.py:1065 msgid "An unknown error occurred. Please try again later." msgstr "Si è verificato un errore sconosciuto: per favore riprova." -#: cps/admin.py:755 +#: cps/admin.py:797 +msgid "Logfile viewer" +msgstr "" + +#: cps/admin.py:832 msgid "Requesting update package" msgstr "Richiesta del pacchetto di aggiornamento" -#: cps/admin.py:756 +#: cps/admin.py:833 msgid "Downloading update package" msgstr "Scarico il pacchetto di aggiornamento" -#: cps/admin.py:757 +#: cps/admin.py:834 msgid "Unzipping update package" msgstr "Decomprimo il pacchetto di aggiornamento" -#: cps/admin.py:758 +#: cps/admin.py:835 msgid "Replacing files" msgstr "Sostituzione files" -#: cps/admin.py:759 +#: cps/admin.py:836 msgid "Database connections are closed" msgstr "Le connessioni al database sono chiuse" -#: cps/admin.py:760 +#: cps/admin.py:837 msgid "Stopping server" msgstr "Arresta il server" -#: cps/admin.py:761 +#: cps/admin.py:838 msgid "Update finished, please press okay and reload page" msgstr "Aggiornamento completato, prego premere ok e ricaricare la pagina" -#: cps/admin.py:762 cps/admin.py:763 cps/admin.py:764 cps/admin.py:765 +#: cps/admin.py:839 cps/admin.py:840 cps/admin.py:841 cps/admin.py:842 msgid "Update failed:" msgstr "Aggiornamento fallito:" -#: cps/admin.py:762 cps/updater.py:277 cps/updater.py:456 cps/updater.py:458 +#: cps/admin.py:839 cps/updater.py:273 cps/updater.py:459 cps/updater.py:461 msgid "HTTP Error" msgstr "HTTP Error" -#: cps/admin.py:763 cps/updater.py:279 cps/updater.py:460 +#: cps/admin.py:840 cps/updater.py:275 cps/updater.py:463 msgid "Connection error" msgstr "Errore di connessione" -#: cps/admin.py:764 cps/updater.py:281 cps/updater.py:462 +#: cps/admin.py:841 cps/updater.py:277 cps/updater.py:465 msgid "Timeout while establishing connection" msgstr "Tempo scaduto nello stabilire la connessione" -#: cps/admin.py:765 cps/updater.py:283 cps/updater.py:464 +#: cps/admin.py:842 cps/updater.py:279 cps/updater.py:467 msgid "General error" msgstr "Errore generale" @@ -226,720 +242,714 @@ msgstr "Mancano le autorizzazioni di esecuzione" msgid "not configured" msgstr "non configurato" -#: cps/editbooks.py:218 cps/editbooks.py:432 +#: cps/editbooks.py:215 cps/editbooks.py:394 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:246 +#: cps/editbooks.py:243 msgid "edit metadata" msgstr "modifica i metadati" -#: cps/editbooks.py:325 cps/editbooks.py:595 +#: cps/editbooks.py:322 cps/editbooks.py:557 #, 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:329 cps/editbooks.py:599 +#: cps/editbooks.py:326 cps/editbooks.py:561 msgid "File to be uploaded must have an extension" msgstr "Il file da caricare deve avere un'estensione" -#: cps/editbooks.py:341 cps/editbooks.py:619 +#: cps/editbooks.py:338 cps/editbooks.py:581 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Impossibile creare il percorso %(path)s (autorizzazione negata)." -#: cps/editbooks.py:346 +#: cps/editbooks.py:343 #, python-format msgid "Failed to store file %(file)s." msgstr "Il salvataggio del file %(file)s è fallito." -#: cps/editbooks.py:363 +#: cps/editbooks.py:360 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Ho aggiunto l'estensione %(ext)s al libro %(book)s" -#: cps/editbooks.py:382 -#, python-format -msgid "Failed to create path for cover %(path)s (Permission denied)." -msgstr "" - -#: cps/editbooks.py:390 -#, python-format -msgid "Failed to store cover-file %(cover)s." -msgstr "" - -#: cps/editbooks.py:393 -msgid "Cover-file is not a valid image file" -msgstr "" - -#: cps/editbooks.py:399 cps/editbooks.py:413 +#: cps/editbooks.py:374 msgid "Cover is not a supported imageformat (jpg/png/webp), can't save" msgstr "" -#: cps/editbooks.py:445 cps/editbooks.py:454 +#: cps/editbooks.py:407 cps/editbooks.py:416 msgid "unknown" msgstr "sconosciuto" -#: cps/editbooks.py:486 +#: cps/editbooks.py:448 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/editbooks.py:534 +#: cps/editbooks.py:496 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s non è una lingua valida" -#: cps/editbooks.py:565 +#: cps/editbooks.py:527 msgid "Metadata successfully updated" msgstr "I metadati sono stati aggiornati con successo" -#: cps/editbooks.py:574 +#: cps/editbooks.py:536 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:624 +#: cps/editbooks.py:586 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "Impossibile salvare il file %(file)s (autorizzazione negata)" -#: cps/editbooks.py:629 +#: cps/editbooks.py:591 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "Impossibile eliminare il file %(file)s (autorizzazione negata)" -#: cps/editbooks.py:712 +#: cps/editbooks.py:674 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:741 +#: cps/editbooks.py:703 msgid "Source or destination format for conversion missing" msgstr "Il formato sorgente o quello di destinazione per la conversione mancano" -#: cps/editbooks.py:751 +#: cps/editbooks.py:711 #, 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:755 +#: cps/editbooks.py:715 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Si è verificato un errore durante la conversione del libro: %(res)s" -#: cps/gdrive.py:56 +#: cps/gdrive.py:61 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "La configurazione di Google Drive non è stata completata correttamente. Prova a disattivare e riattivare nuovamente Google Drive" -#: cps/gdrive.py:101 +#: cps/gdrive.py:106 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "Callback domain non è stato verificato. Per favore intraprendi il necessario per verificare il dominio nella developer console di Google" -#: cps/helper.py:97 +#: cps/helper.py:94 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "%(format)s formato non trovato per il libro: %(book)d" -#: cps/helper.py:109 +#: cps/helper.py:106 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "%(format)s non trovato su Google Drive: %(fn)s" -#: cps/helper.py:116 cps/helper.py:223 cps/templates/detail.html:41 +#: cps/helper.py:113 cps/helper.py:220 cps/templates/detail.html:41 #: cps/templates/detail.html:45 msgid "Send to Kindle" msgstr "Invia a Kindle" -#: cps/helper.py:117 cps/helper.py:135 cps/helper.py:225 +#: cps/helper.py:114 cps/helper.py:132 cps/helper.py:222 msgid "This e-mail has been sent via Calibre-Web." msgstr "Questo e-mail è stato spedito tramite Calibre-Web." -#: cps/helper.py:128 +#: cps/helper.py:125 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "%(format)s non trovato: %(fn)s" -#: cps/helper.py:133 +#: cps/helper.py:130 msgid "Calibre-Web test e-mail" msgstr "E-mail di test da Calibre-Web" -#: cps/helper.py:134 +#: cps/helper.py:131 msgid "Test e-mail" msgstr "E-mail di test" -#: cps/helper.py:150 +#: cps/helper.py:147 msgid "Get Started with Calibre-Web" msgstr "Inizia con Calibre-Web" -#: cps/helper.py:151 +#: cps/helper.py:148 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "E-mail di registrazione per l'utente: %(name)s" -#: cps/helper.py:165 cps/helper.py:167 cps/helper.py:169 cps/helper.py:177 -#: cps/helper.py:179 cps/helper.py:181 +#: cps/helper.py:162 cps/helper.py:164 cps/helper.py:166 cps/helper.py:174 +#: cps/helper.py:176 cps/helper.py:178 #, python-format msgid "Send %(format)s to Kindle" msgstr "Invia %(format)s a Kindle" -#: cps/helper.py:185 +#: cps/helper.py:182 #, python-format msgid "Convert %(orig)s to %(format)s and send to Kindle" msgstr "Converti %(orig)s in %(format)s e spedisci a Kindle" -#: cps/helper.py:224 +#: cps/helper.py:221 #, python-format msgid "E-mail: %(book)s" msgstr "E-mail: %(book)s" -#: cps/helper.py:227 +#: cps/helper.py:224 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "Il file richiesto non può essere letto. I permessi sono corretti?" -#: cps/helper.py:335 +#: cps/helper.py:331 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "La modifica del titolo da: '%(src)s' a '%(dest)s' è terminata con l'errore: %(error)s" -#: cps/helper.py:345 +#: cps/helper.py:341 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "La modifica dell'autore da: '%(src)s' a '%(dest)s' è terminata con l'errore: %(error)s" -#: cps/helper.py:359 +#: cps/helper.py:355 #, python-format msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "La modifica del file nella cartella da '%(src)s' a '%(dest)s' è terminata con l'errore: %(error)s" -#: cps/helper.py:385 cps/helper.py:395 cps/helper.py:403 +#: cps/helper.py:381 cps/helper.py:391 cps/helper.py:399 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "File %(file)s non trovato su Google Drive" -#: cps/helper.py:424 +#: cps/helper.py:420 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "Non ho trovato la cartella %(path)s su Google Drive" -#: cps/helper.py:584 +#: cps/helper.py:579 msgid "Error excecuting UnRar" msgstr "Errore nell'esecuzione di UnRar" -#: cps/helper.py:586 +#: cps/helper.py:581 msgid "Unrar binary file not found" msgstr "Non ho trovato il file binario di UnRar" -#: cps/helper.py:614 +#: cps/helper.py:609 msgid "Waiting" msgstr "Attendere" -#: cps/helper.py:616 +#: cps/helper.py:611 msgid "Failed" msgstr "Fallito" -#: cps/helper.py:618 +#: cps/helper.py:613 msgid "Started" msgstr "Avviato" -#: cps/helper.py:620 +#: cps/helper.py:615 msgid "Finished" msgstr "Terminato" -#: cps/helper.py:622 +#: cps/helper.py:617 msgid "Unknown Status" msgstr "Stato sconosciuto" -#: cps/helper.py:627 +#: cps/helper.py:622 msgid "E-mail: " msgstr "E-mail: " -#: cps/helper.py:629 cps/helper.py:633 +#: cps/helper.py:624 cps/helper.py:628 msgid "Convert: " msgstr "Conversione: " -#: cps/helper.py:631 +#: cps/helper.py:626 msgid "Upload: " msgstr "Upload: " -#: cps/helper.py:635 +#: cps/helper.py:630 msgid "Unknown Task: " msgstr "Processo sconosciuto: " -#: cps/oauth_bb.py:87 +#: cps/oauth_bb.py:91 #, python-format -msgid "Register with %s, " +msgid "Register with %(provider)s" msgstr "" -#: cps/oauth_bb.py:145 +#: cps/oauth_bb.py:149 msgid "Failed to log in with GitHub." msgstr "" -#: cps/oauth_bb.py:150 +#: cps/oauth_bb.py:154 msgid "Failed to fetch user info from GitHub." msgstr "" -#: cps/oauth_bb.py:161 +#: cps/oauth_bb.py:165 msgid "Failed to log in with Google." msgstr "" -#: cps/oauth_bb.py:166 +#: cps/oauth_bb.py:170 msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:265 +#: cps/oauth_bb.py:269 #, python-format msgid "Unlink to %(oauth)s success." msgstr "" -#: cps/oauth_bb.py:269 +#: cps/oauth_bb.py:273 #, python-format msgid "Unlink to %(oauth)s failed." msgstr "" -#: cps/oauth_bb.py:272 +#: cps/oauth_bb.py:276 #, python-format msgid "Not linked to %(oauth)s." msgstr "" -#: cps/oauth_bb.py:300 +#: cps/oauth_bb.py:304 msgid "GitHub Oauth error, please retry later." msgstr "" -#: cps/oauth_bb.py:319 +#: cps/oauth_bb.py:323 msgid "Google Oauth error, please retry later." msgstr "" -#: cps/shelf.py:40 cps/shelf.py:92 +#: cps/shelf.py:46 cps/shelf.py:98 msgid "Invalid shelf specified" msgstr "Lo scaffale specificato non è valevole" -#: cps/shelf.py:47 +#: cps/shelf.py:53 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" msgstr "Mi spiace, ma non sei autorizzato ad aggiungere libri allo scaffale: %(shelfname)s" -#: cps/shelf.py:55 +#: cps/shelf.py:61 msgid "You are not allowed to edit public shelves" msgstr "Non sei autorizzato a modificare gli scaffali pubblici" -#: cps/shelf.py:64 +#: cps/shelf.py:70 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" msgstr "Il libro è gia presente nello scaffale: %(shelfname)s" -#: cps/shelf.py:78 +#: cps/shelf.py:84 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Il libro è stato aggiunto allo scaffale: %(sname)s" -#: cps/shelf.py:97 +#: cps/shelf.py:103 #, 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:102 +#: cps/shelf.py:108 msgid "User is not allowed to edit public shelves" msgstr "L'utente non è autorizzato a modificare gli scaffali pubblici" -#: cps/shelf.py:120 +#: cps/shelf.py:126 #, 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:134 +#: cps/shelf.py:140 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "I libri sono stati aggiunti allo scaffale: %(sname)s" -#: cps/shelf.py:136 +#: cps/shelf.py:142 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "Non posso aggiungere libri allo scaffale: %(sname)s" -#: cps/shelf.py:173 +#: cps/shelf.py:179 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Il libro è stato rimosso dallo scaffale: %(sname)s" -#: cps/shelf.py:179 +#: cps/shelf.py:185 #, 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:200 cps/shelf.py:224 +#: cps/shelf.py:206 cps/shelf.py:230 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Uno scaffale con il nome '%(title)s' esiste già." -#: cps/shelf.py:205 +#: cps/shelf.py:211 #, python-format msgid "Shelf %(title)s created" msgstr "Lo scaffale %(title)s è stato creato" -#: cps/shelf.py:207 cps/shelf.py:235 +#: cps/shelf.py:213 cps/shelf.py:241 msgid "There was an error" msgstr "C'era un errore" -#: cps/shelf.py:208 cps/shelf.py:210 +#: cps/shelf.py:214 cps/shelf.py:216 msgid "create a shelf" msgstr "crea uno scaffale" -#: cps/shelf.py:233 +#: cps/shelf.py:239 #, python-format msgid "Shelf %(title)s changed" msgstr "Lo scaffale %(title)s è stato modificato" -#: cps/shelf.py:236 cps/shelf.py:238 +#: cps/shelf.py:242 cps/shelf.py:244 msgid "Edit a shelf" msgstr "Modifica uno scaffale" -#: cps/shelf.py:259 -#, python-format -msgid "successfully deleted shelf %(name)s" -msgstr "lo scaffale %(name)s è stato eliminato con successo" - -#: cps/shelf.py:289 +#: cps/shelf.py:295 #, python-format msgid "Shelf: '%(name)s'" msgstr "Scaffale: '%(name)s'" -#: cps/shelf.py:292 +#: cps/shelf.py:298 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/shelf.py:324 +#: cps/shelf.py:330 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Modificare l'ordine dello scaffale: '%(name)s'" -#: cps/ub.py:111 +#: cps/ub.py:68 msgid "Recently Added" msgstr "Aggiunto recentemente" -#: cps/ub.py:113 +#: cps/ub.py:70 msgid "Show recent books" msgstr "Mostra i libri recenti" -#: cps/templates/index.xml:17 cps/ub.py:114 +#: cps/templates/index.xml:17 cps/ub.py:71 msgid "Hot Books" msgstr "Hot Ebook" -#: cps/ub.py:115 +#: cps/ub.py:72 msgid "Show hot books" msgstr "Mostra libri popolari" -#: cps/templates/index.xml:24 cps/ub.py:118 +#: cps/templates/index.xml:24 cps/ub.py:75 msgid "Best rated Books" msgstr "Libri più votati" -#: cps/ub.py:120 +#: cps/ub.py:77 msgid "Show best rated books" msgstr "Mostra la sezione dei libri più votati" -#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:121 -#: cps/web.py:965 +#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:78 +#: cps/web.py:958 msgid "Read Books" msgstr "Libri da leggere" -#: cps/ub.py:123 +#: cps/ub.py:80 msgid "Show read and unread" msgstr "Mostra letto e non letto" -#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:125 -#: cps/web.py:969 +#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:82 +#: cps/web.py:962 msgid "Unread Books" msgstr "Libri non letti" -#: cps/ub.py:127 +#: cps/ub.py:84 msgid "Show unread" msgstr "" -#: cps/ub.py:128 +#: cps/ub.py:85 msgid "Discover" msgstr "Per scoprire" -#: cps/ub.py:130 +#: cps/ub.py:87 msgid "Show random books" msgstr "Mostra libro a caso" -#: cps/ub.py:131 +#: cps/ub.py:88 msgid "Categories" msgstr "Categoria" -#: cps/ub.py:133 +#: cps/ub.py:90 msgid "Show category selection" msgstr "Mostra la selezione delle categorie" #: cps/templates/book_edit.html:71 cps/templates/search_form.html:53 -#: cps/ub.py:134 +#: cps/ub.py:91 msgid "Series" msgstr "Serie" -#: cps/ub.py:136 +#: cps/ub.py:93 msgid "Show series selection" msgstr "Mostra la selezione delle serie" -#: cps/templates/index.xml:61 cps/ub.py:137 +#: cps/templates/index.xml:61 cps/ub.py:94 msgid "Authors" msgstr "Autori" -#: cps/ub.py:139 +#: cps/ub.py:96 msgid "Show author selection" msgstr "Mostra la selezione dell'autore" -#: cps/templates/index.xml:68 cps/ub.py:141 +#: cps/templates/index.xml:68 cps/ub.py:98 msgid "Publishers" msgstr "Editori" -#: cps/ub.py:143 +#: cps/ub.py:100 msgid "Show publisher selection" msgstr "Mostra la selezione dell'editore" -#: cps/templates/search_form.html:74 cps/ub.py:144 +#: cps/templates/search_form.html:74 cps/ub.py:101 msgid "Languages" msgstr "Lingua" -#: cps/ub.py:147 +#: cps/ub.py:104 msgid "Show language selection" msgstr "Mostra la selezione della lingua" -#: cps/ub.py:148 +#: cps/ub.py:105 msgid "Ratings" msgstr "" -#: cps/ub.py:150 +#: cps/ub.py:107 msgid "Show ratings selection" msgstr "" -#: cps/ub.py:151 +#: cps/ub.py:108 msgid "File formats" msgstr "" -#: cps/ub.py:153 +#: cps/ub.py:110 msgid "Show file formats selection" msgstr "" -#: cps/updater.py:257 cps/updater.py:364 cps/updater.py:377 +#: cps/updater.py:253 cps/updater.py:360 cps/updater.py:373 msgid "Unexpected data while reading update information" msgstr "Dati inattesi durante il processo di aggiornamento" -#: cps/updater.py:264 cps/updater.py:370 +#: cps/updater.py:260 cps/updater.py:366 msgid "No update available. You already have the latest version installed" msgstr "Nessun aggiornamento disponibile. Hai già installato l'ultima versione disponibile" -#: cps/updater.py:290 cps/updater.py:422 +#: cps/updater.py:286 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:343 +#: cps/updater.py:339 msgid "Could not fetch update information" msgstr "Impossibile recuperare informazioni di aggiornamento" -#: cps/updater.py:357 +#: cps/updater.py:353 msgid "No release information available" msgstr "Non sono disponibili informazioni sulla versione" -#: cps/updater.py:403 cps/updater.py:412 +#: cps/updater.py:406 cps/updater.py:415 #, 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/web.py:457 +#: cps/updater.py:425 +msgid "Click on the button below to update to the latest stable version." +msgstr "" + +#: cps/web.py:445 msgid "Recently Added Books" msgstr "Libri aggiunti di recente" -#: cps/web.py:484 +#: cps/web.py:473 msgid "Best rated books" msgstr "I libri con le migliori valutazioni" -#: cps/templates/index.xml:38 cps/web.py:492 +#: cps/templates/index.xml:38 cps/web.py:481 msgid "Random Books" msgstr "Libri a caso" -#: cps/web.py:516 +#: cps/web.py:505 msgid "Books" msgstr "" -#: cps/web.py:543 +#: cps/web.py:532 msgid "Hot Books (most downloaded)" msgstr "I libri più richiesti" -#: cps/web.py:553 cps/web.py:1294 cps/web.py:1383 +#: cps/web.py:542 cps/web.py:1298 cps/web.py:1386 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/web.py:580 +#: cps/web.py:559 +#, python-format +msgid "Author: %(name)s" +msgstr "" + +#: cps/web.py:571 #, python-format msgid "Publisher: %(name)s" msgstr "Editore: %(name)s" -#: cps/web.py:591 +#: cps/web.py:582 #, python-format msgid "Series: %(serie)s" msgstr "Serie: %(serie)s" -#: cps/web.py:602 +#: cps/web.py:593 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:613 +#: cps/web.py:604 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:625 +#: cps/web.py:616 #, python-format msgid "Category: %(name)s" msgstr "Categoria: %(name)s" -#: cps/web.py:659 +#: cps/web.py:650 msgid "Publisher list" msgstr "Lista degli editori" -#: cps/templates/index.xml:82 cps/web.py:675 +#: cps/templates/index.xml:82 cps/web.py:666 msgid "Series list" msgstr "Lista delle serie" -#: cps/web.py:689 +#: cps/web.py:680 msgid "Ratings list" msgstr "" -#: cps/web.py:702 +#: cps/web.py:693 msgid "File formats list" msgstr "" -#: cps/web.py:730 +#: cps/web.py:721 msgid "Available languages" msgstr "Lingue disponibili" -#: cps/web.py:750 +#: cps/web.py:741 #, python-format msgid "Language: %(name)s" msgstr "Lingua: %(name)s" -#: cps/templates/index.xml:75 cps/web.py:764 +#: cps/templates/index.xml:75 cps/web.py:755 msgid "Category list" msgstr "Elenco categorie" -#: cps/templates/layout.html:73 cps/web.py:777 +#: cps/templates/layout.html:73 cps/web.py:769 msgid "Tasks" msgstr "Compito" -#: cps/web.py:841 +#: cps/web.py:834 msgid "Published after " msgstr "Pubblicato dopo " -#: cps/web.py:848 +#: cps/web.py:841 msgid "Published before " msgstr "Pubblicato prima " -#: cps/web.py:862 +#: cps/web.py:855 #, python-format msgid "Rating <= %(rating)s" msgstr "Valutazione <= %(rating)s" -#: cps/web.py:864 +#: cps/web.py:857 #, python-format msgid "Rating >= %(rating)s" msgstr "Valutazione >= %(rating)s" -#: cps/web.py:924 cps/web.py:933 +#: cps/web.py:917 cps/web.py:926 msgid "search" msgstr "ricerca" -#: cps/web.py:1018 +#: cps/web.py:1012 msgid "Please configure the SMTP mail settings first..." msgstr "Configurare dapprima le impostazioni del server SMTP..." -#: cps/web.py:1023 +#: cps/web.py:1017 #, 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:1027 +#: cps/web.py:1021 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Si è verificato un errore durante l'invio di questo libro: %(res)s" -#: cps/web.py:1046 cps/web.py:1071 cps/web.py:1076 cps/web.py:1081 -#: cps/web.py:1085 +#: cps/web.py:1041 cps/web.py:1066 cps/web.py:1070 cps/web.py:1075 +#: cps/web.py:1079 msgid "register" msgstr "registra" -#: cps/web.py:1073 +#: cps/web.py:1068 msgid "Your e-mail is not allowed to register" msgstr "Il tuo e-mail non può essere utilizzato per la registrazione" -#: cps/web.py:1077 +#: cps/web.py:1071 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Un e-mail di conferma è stato inviato al tuo indirizzo." -#: cps/web.py:1080 +#: cps/web.py:1074 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:1103 cps/web.py:1115 -#, python-format -msgid "You are now logged in as: '%(nickname)s'" +#: cps/web.py:1089 +msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1108 cps/web.py:1120 +#: cps/web.py:1098 cps/web.py:1212 +#, python-format +msgid "you are now logged in as: '%(nickname)s'" +msgstr "ora sei connesso come: '%(nickname)s'" + +#: cps/web.py:1105 cps/web.py:1122 msgid "Wrong Username or Password" msgstr "Nome utente o password errati" -#: cps/web.py:1111 +#: cps/web.py:1108 msgid "Could not login. LDAP server down, please contact your administrator" msgstr "" -#: cps/web.py:1124 cps/web.py:1146 +#: cps/web.py:1117 +#, python-format +msgid "You are now logged in as: '%(nickname)s'" +msgstr "" + +#: cps/web.py:1126 cps/web.py:1148 msgid "login" msgstr "accedi" -#: cps/web.py:1158 cps/web.py:1189 +#: cps/web.py:1160 cps/web.py:1191 msgid "Token not found" msgstr "Token non trovato" -#: cps/web.py:1166 cps/web.py:1197 +#: cps/web.py:1168 cps/web.py:1199 msgid "Token has expired" msgstr "Il token è scaduto" -#: cps/web.py:1174 +#: cps/web.py:1176 msgid "Success! Please return to your device" msgstr "Successo! Torna al tuo dispositivo" -#: cps/web.py:1210 -#, python-format -msgid "you are now logged in as: '%(nickname)s'" -msgstr "ora sei connesso come: '%(nickname)s'" - -#: cps/web.py:1250 cps/web.py:1277 cps/web.py:1281 +#: cps/web.py:1253 cps/web.py:1280 cps/web.py:1284 #, python-format msgid "%(name)s's profile" msgstr "Profilo di %(name)s" -#: cps/web.py:1274 +#: cps/web.py:1277 msgid "Found an existing account for this e-mail address." msgstr "Ho trovato un account creato in precedenza con questo e-mail." -#: cps/web.py:1279 +#: cps/web.py:1282 msgid "Profile updated" msgstr "Profilo aggiornato" -#: cps/web.py:1304 cps/web.py:1306 cps/web.py:1308 cps/web.py:1314 -#: cps/web.py:1318 +#: cps/web.py:1308 cps/web.py:1310 cps/web.py:1312 cps/web.py:1318 +#: cps/web.py:1322 msgid "Read a Book" msgstr "Leggere un libro" -#: cps/web.py:1328 +#: cps/web.py:1332 msgid "Error opening eBook. File does not exist or file is not accessible." msgstr "" -#: cps/worker.py:308 +#: cps/worker.py:311 #, python-format msgid "Ebook-converter failed: %(error)s" msgstr "Errore nel convertitore: %(error)s" -#: cps/worker.py:319 +#: cps/worker.py:322 #, python-format msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "Kindlegen ha restituito l'errore %(error)s. Messaggio: %(message)s" @@ -1055,53 +1065,57 @@ msgid "Administration" msgstr "Amministrazione" #: cps/templates/admin.html:109 +msgid "View Logfiles" +msgstr "" + +#: cps/templates/admin.html:110 msgid "Reconnect to Calibre DB" msgstr "Ricollegare al DB Calibre" -#: cps/templates/admin.html:110 +#: cps/templates/admin.html:111 msgid "Restart Calibre-Web" msgstr "Riavvia Calibre-Web" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:112 msgid "Stop Calibre-Web" msgstr "Arresta Calibre-Web" -#: cps/templates/admin.html:117 +#: cps/templates/admin.html:118 msgid "Update" msgstr "Aggiornamento" -#: cps/templates/admin.html:121 +#: cps/templates/admin.html:122 msgid "Version" msgstr "Versione" -#: cps/templates/admin.html:122 +#: cps/templates/admin.html:123 msgid "Details" msgstr "Dettagli" -#: cps/templates/admin.html:128 +#: cps/templates/admin.html:129 msgid "Current version" msgstr "Versione attuale" -#: cps/templates/admin.html:134 +#: cps/templates/admin.html:135 msgid "Check for update" msgstr "Ricerca aggiornamenti" -#: cps/templates/admin.html:135 +#: cps/templates/admin.html:136 msgid "Perform Update" msgstr "Esegui aggiornamento" -#: cps/templates/admin.html:147 +#: cps/templates/admin.html:148 msgid "Do you really want to restart Calibre-Web?" msgstr "Vuoi veramente riavviare Calibre-Web?" -#: cps/templates/admin.html:152 cps/templates/admin.html:166 -#: cps/templates/admin.html:186 cps/templates/shelf.html:72 +#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:187 cps/templates/shelf.html:72 msgid "Ok" msgstr "Ok" -#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:154 cps/templates/admin.html:168 #: cps/templates/book_edit.html:174 cps/templates/book_edit.html:196 -#: cps/templates/config_edit.html:281 cps/templates/config_view_edit.html:147 +#: cps/templates/config_edit.html:331 cps/templates/config_view_edit.html:147 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 @@ -1109,11 +1123,11 @@ msgstr "Ok" msgid "Back" msgstr "Indietro" -#: cps/templates/admin.html:165 +#: cps/templates/admin.html:166 msgid "Do you really want to stop Calibre-Web?" msgstr "Vuoi veramente arrestare Calibre-Web?" -#: cps/templates/admin.html:177 +#: cps/templates/admin.html:178 msgid "Updating, please do not reload page" msgstr "Aggiornamento, non ricaricare la pagina." @@ -1242,7 +1256,7 @@ msgstr "visualizzare il libro dopo la modifica" msgid "Get metadata" msgstr "Ottieni metadati" -#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:279 +#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329 #: cps/templates/config_view_edit.html:146 cps/templates/login.html:20 #: cps/templates/search_form.html:150 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:130 @@ -1386,123 +1400,171 @@ msgstr "Livello di Log" msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "Percorso e nome del logfile (senza indicazioni sarà calibre-web.log)" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:134 +msgid "Enable Access Log" +msgstr "" + +#: cps/templates/config_edit.html:137 +msgid "Location and name of access logfile (access.log for no entry)" +msgstr "" + +#: cps/templates/config_edit.html:148 msgid "Feature Configuration" msgstr "Configurazione della caratteristica" -#: cps/templates/config_edit.html:148 +#: cps/templates/config_edit.html:156 msgid "Enable uploading" msgstr "Abilita il caricamento" -#: cps/templates/config_edit.html:152 +#: cps/templates/config_edit.html:160 msgid "Enable anonymous browsing" msgstr "Abilita la navigazione anonima" -#: cps/templates/config_edit.html:156 +#: cps/templates/config_edit.html:164 msgid "Enable public registration" msgstr "Abilita la registrazione pubblica" -#: cps/templates/config_edit.html:160 +#: cps/templates/config_edit.html:168 msgid "Enable remote login (\"magic link\")" msgstr "Attiva login remoto (\"magic link\")" -#: cps/templates/config_edit.html:165 +#: cps/templates/config_edit.html:173 msgid "Use" msgstr "Uso" -#: cps/templates/config_edit.html:166 +#: cps/templates/config_edit.html:174 msgid "Obtain an API Key" msgstr "Ottenere una chiave API" -#: cps/templates/config_edit.html:170 +#: cps/templates/config_edit.html:178 msgid "Goodreads API Key" msgstr "API di Goodreads" -#: cps/templates/config_edit.html:174 +#: cps/templates/config_edit.html:182 msgid "Goodreads API Secret" msgstr "Goodreads API Secret" -#: cps/templates/config_edit.html:181 +#: cps/templates/config_edit.html:189 msgid "Login type" msgstr "" -#: cps/templates/config_edit.html:183 +#: cps/templates/config_edit.html:191 msgid "Use standard Authentication" msgstr "" -#: cps/templates/config_edit.html:185 +#: cps/templates/config_edit.html:193 msgid "Use LDAP Authentication" msgstr "" -#: cps/templates/config_edit.html:188 +#: cps/templates/config_edit.html:196 msgid "Use GitHub OAuth" msgstr "" -#: cps/templates/config_edit.html:189 +#: cps/templates/config_edit.html:197 msgid "Use Google OAuth" msgstr "" -#: cps/templates/config_edit.html:196 -msgid "LDAP Provider URL" +#: cps/templates/config_edit.html:204 +msgid "LDAP Server Host Name or IP Address" +msgstr "" + +#: cps/templates/config_edit.html:208 +msgid "LDAP Server Port" +msgstr "" + +#: cps/templates/config_edit.html:212 +msgid "LDAP schema (ldap or ldaps)" +msgstr "" + +#: cps/templates/config_edit.html:216 +msgid "LDAP Admin username" +msgstr "" + +#: cps/templates/config_edit.html:220 +msgid "LDAP Admin password" +msgstr "" + +#: cps/templates/config_edit.html:225 +msgid "LDAP Server use SSL" msgstr "" -#: cps/templates/config_edit.html:200 +#: cps/templates/config_edit.html:229 +msgid "LDAP Server use TLS" +msgstr "" + +#: cps/templates/config_edit.html:233 +msgid "LDAP Server Certificate" +msgstr "" + +#: cps/templates/config_edit.html:237 +msgid "LDAP SSL Certificate Path" +msgstr "" + +#: cps/templates/config_edit.html:242 msgid "LDAP Distinguished Name (DN)" msgstr "" -#: cps/templates/config_edit.html:208 +#: cps/templates/config_edit.html:246 +msgid "LDAP User object filter" +msgstr "" + +#: cps/templates/config_edit.html:251 +msgid "LDAP Server is OpenLDAP?" +msgstr "" + +#: cps/templates/config_edit.html:258 msgid "Obtain GitHub OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:211 +#: cps/templates/config_edit.html:261 msgid "GitHub OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:215 +#: cps/templates/config_edit.html:265 msgid "GitHub OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:221 +#: cps/templates/config_edit.html:271 msgid "Obtain Google OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:224 +#: cps/templates/config_edit.html:274 msgid "Google OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:228 +#: cps/templates/config_edit.html:278 msgid "Google OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:242 +#: cps/templates/config_edit.html:292 msgid "External binaries" msgstr "Files binari esterni" -#: cps/templates/config_edit.html:250 +#: cps/templates/config_edit.html:300 msgid "No converter" msgstr "Nessun convertitore" -#: cps/templates/config_edit.html:252 +#: cps/templates/config_edit.html:302 msgid "Use Kindlegen" msgstr "Utilizza Kindlegen" -#: cps/templates/config_edit.html:254 +#: cps/templates/config_edit.html:304 msgid "Use calibre's ebook converter" msgstr "Utilizza il convertitore di Calibre" -#: cps/templates/config_edit.html:258 +#: cps/templates/config_edit.html:308 msgid "E-Book converter settings" msgstr "Configurazione del convertitore di e-book" -#: cps/templates/config_edit.html:262 +#: cps/templates/config_edit.html:312 msgid "Path to convertertool" msgstr "Percorso del convertitore" -#: cps/templates/config_edit.html:268 +#: cps/templates/config_edit.html:318 msgid "Location of Unrar binary" msgstr "Percorso di UnRar" -#: cps/templates/config_edit.html:284 cps/templates/layout.html:84 +#: cps/templates/config_edit.html:334 cps/templates/layout.html:84 #: cps/templates/login.html:4 msgid "Login" msgstr "Accesso" @@ -1716,7 +1778,7 @@ msgstr "Ritorno alla pagina principale" msgid "Discover (Random Books)" msgstr "Scoprire (libri casuali)" -#: cps/templates/index.html:65 +#: cps/templates/index.html:64 msgid "Group by series" msgstr "" @@ -1859,6 +1921,14 @@ msgstr "Ricordami" msgid "Log in with magic link" msgstr "Accedi con magic link" +#: cps/templates/logviewer.html:5 +msgid "Show Calibre-Web log" +msgstr "" + +#: cps/templates/logviewer.html:8 +msgid "Show access log" +msgstr "" + #: cps/templates/osd.xml:5 msgid "Calibre-Web ebook catalog" msgstr "Catalogo Calibre-Web" @@ -3426,13 +3496,13 @@ msgstr "Download Recenti" #~ msgstr "Zaza" #~ msgid "Failed to create path for cover %(path)s (Permission denied)." -#~ msgstr "Impossibile creare il percorso per la copertina %(path)s (autorizzazione negata)." +#~ msgstr "" #~ msgid "Failed to store cover-file %(cover)s." -#~ msgstr "Impossibile salvare la copertina %(cover)s." +#~ msgstr "" #~ msgid "Cover-file is not a valid image file" -#~ msgstr "Il file della copertina non è un file d'immagine valido" +#~ msgstr "" #~ msgid "Cover is not a jpg file, can't save" #~ msgstr "La copertina non è un file in formato jpg: non posso salvare" @@ -3491,3 +3561,15 @@ msgstr "Download Recenti" #~ msgid "PDF.js viewer" #~ msgstr "Visore PDF.js" +#~ msgid "Please enter a LDAP provider and a DN" +#~ msgstr "" + +#~ msgid "successfully deleted shelf %(name)s" +#~ msgstr "lo scaffale %(name)s è stato eliminato con successo" + +#~ msgid "LDAP Provider URL" +#~ msgstr "" + +#~ msgid "Register with %s, " +#~ msgstr "" + diff --git a/cps/translations/ja/LC_MESSAGES/messages.mo b/cps/translations/ja/LC_MESSAGES/messages.mo index 345d4d04..ef48be8b 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 301580ac..a17b0f49 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: 2019-05-31 11:20+0200\n" +"POT-Creation-Date: 2019-06-22 19:54+0200\n" "PO-Revision-Date: 2018-02-07 02:20-0500\n" "Last-Translator: white \n" "Language: ja\n" @@ -16,13 +16,13 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" -#: cps/about.py:76 +#: cps/about.py:78 msgid "Statistics" msgstr "統計" -#: cps/admin.py:97 +#: cps/admin.py:98 msgid "Server restarted, please reload page" msgstr "サーバを再起動しました。ページを再読み込みしてください" @@ -30,186 +30,202 @@ msgstr "サーバを再起動しました。ページを再読み込みしてく msgid "Performing shutdown of server, please close window" msgstr "サーバをシャットダウンしています。ページを閉じてください" -#: cps/admin.py:120 cps/updater.py:445 +#: cps/admin.py:119 cps/updater.py:448 msgid "Unknown" msgstr "不明" -#: cps/admin.py:139 +#: cps/admin.py:138 msgid "Admin page" msgstr "管理者ページ" -#: cps/admin.py:208 cps/admin.py:486 +#: cps/admin.py:207 cps/admin.py:532 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web の設定を更新しました" -#: cps/admin.py:222 cps/templates/admin.html:102 +#: cps/admin.py:220 cps/templates/admin.html:102 msgid "UI Configuration" msgstr "UI設定" -#: cps/admin.py:295 +#: cps/admin.py:293 msgid "Import of optional Google Drive requirements missing" msgstr "Googleドライブ用のOptional Requirementsがインストールされていません" -#: cps/admin.py:298 +#: cps/admin.py:296 msgid "client_secrets.json is missing or not readable" msgstr "client_secrets.json が存在しないか読み込めません" -#: cps/admin.py:303 cps/admin.py:332 +#: cps/admin.py:301 cps/admin.py:330 msgid "client_secrets.json is not configured for web application" msgstr "client_secrets.json がWebアプリ用に設定されていません" -#: cps/admin.py:335 cps/admin.py:361 cps/admin.py:373 cps/admin.py:398 -#: cps/admin.py:426 cps/admin.py:440 cps/admin.py:463 cps/admin.py:476 -#: cps/admin.py:494 cps/admin.py:501 cps/admin.py:516 -#: cps/templates/admin.html:101 +#: cps/admin.py:333 cps/admin.py:359 cps/admin.py:371 cps/admin.py:396 +#: cps/admin.py:403 cps/admin.py:436 cps/admin.py:460 cps/admin.py:474 +#: cps/admin.py:493 cps/admin.py:510 cps/admin.py:522 cps/admin.py:538 +#: cps/admin.py:545 cps/admin.py:559 cps/templates/admin.html:101 msgid "Basic Configuration" msgstr "基本設定" -#: cps/admin.py:358 +#: cps/admin.py:356 msgid "Keyfile location is not valid, please enter correct path" msgstr "キーファイルが無効です。正しいパスを入力してください" -#: cps/admin.py:370 +#: cps/admin.py:368 cps/admin.py:433 msgid "Certfile location is not valid, please enter correct path" msgstr "証明書が無効です。正しいパスを入力してください" -#: cps/admin.py:395 -msgid "Please enter a LDAP provider and a DN" +#: cps/admin.py:393 +msgid "Please enter a LDAP provider, port, DN and user object identifier" msgstr "" -#: cps/admin.py:423 +#: cps/admin.py:400 +msgid "Please enter a LDAP service account and password" +msgstr "" + +#: cps/admin.py:457 msgid "Please enter Github oauth credentials" msgstr "" -#: cps/admin.py:437 +#: cps/admin.py:471 msgid "Please enter Google oauth credentials" msgstr "" -#: cps/admin.py:460 +#: cps/admin.py:490 msgid "Logfile location is not valid, please enter correct path" msgstr "ログファイルが無効です。正しいパスを入力してください" -#: cps/admin.py:498 +#: cps/admin.py:507 +msgid "Access Logfile location is not valid, please enter correct path" +msgstr "" + +#: cps/admin.py:542 msgid "DB location is not valid, please enter correct path" msgstr "データベースが無効です。正しいパスを入力してください" -#: cps/admin.py:558 cps/web.py:1045 +#: cps/admin.py:602 cps/web.py:1040 msgid "Please fill out all fields!" msgstr "全ての項目を入力してください" -#: cps/admin.py:560 cps/admin.py:566 cps/admin.py:582 +#: cps/admin.py:604 cps/admin.py:610 cps/admin.py:626 #: cps/templates/admin.html:35 msgid "Add new user" msgstr "新規ユーザ追加" -#: cps/admin.py:564 cps/web.py:1248 +#: cps/admin.py:608 cps/web.py:1251 msgid "E-mail is not from valid domain" msgstr "このメールは有効なドメインからのものではありません" -#: cps/admin.py:572 +#: cps/admin.py:616 #, python-format msgid "User '%(user)s' created" msgstr "ユーザ '%(user)s' を作成しました" -#: cps/admin.py:576 +#: cps/admin.py:620 msgid "Found an existing account for this e-mail address or nickname." msgstr "このメールアドレスかニックネームで登録されたアカウントが見つかりました" -#: cps/admin.py:607 +#: cps/admin.py:651 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "テストメールが %(kindlemail)s に送信されました" -#: cps/admin.py:610 +#: cps/admin.py:654 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "テストメールを %(res)s に送信中にエラーが発生しました" -#: cps/admin.py:612 cps/web.py:1029 +#: cps/admin.py:656 cps/web.py:1023 msgid "Please configure your kindle e-mail address first..." msgstr "初めにKindleのメールアドレスを設定してください" -#: cps/admin.py:614 +#: cps/admin.py:658 msgid "E-mail server settings updated" msgstr "メールサーバの設定を更新しました" -#: cps/admin.py:615 +#: cps/admin.py:659 msgid "Edit e-mail server settings" msgstr "メールサーバの設定を編集" -#: cps/admin.py:640 +#: cps/admin.py:687 #, python-format msgid "User '%(nick)s' deleted" msgstr "ユーザ '%(nick)s' を削除しました" -#: cps/admin.py:711 +#: cps/admin.py:690 +msgid "No admin user remaining, can't delete user" +msgstr "" + +#: cps/admin.py:761 #, python-format msgid "User '%(nick)s' updated" msgstr "ユーザ '%(nick)s' を更新しました" -#: cps/admin.py:714 +#: cps/admin.py:764 msgid "An unknown error occured." msgstr "不明なエラーが発生しました。" -#: cps/admin.py:717 +#: cps/admin.py:767 #, python-format msgid "Edit User %(nick)s" msgstr "%(nick)s を編集" -#: cps/admin.py:733 +#: cps/admin.py:783 #, python-format msgid "Password for user %(user)s reset" msgstr "%(user)s 用のパスワードをリセット" -#: cps/admin.py:736 cps/web.py:1070 +#: cps/admin.py:786 cps/web.py:1065 msgid "An unknown error occurred. Please try again later." msgstr "不明なエラーが発生しました。あとで再試行してください。" -#: cps/admin.py:755 +#: cps/admin.py:797 +msgid "Logfile viewer" +msgstr "" + +#: cps/admin.py:832 msgid "Requesting update package" msgstr "更新データを要求中" -#: cps/admin.py:756 +#: cps/admin.py:833 msgid "Downloading update package" msgstr "更新データをダウンロード中" -#: cps/admin.py:757 +#: cps/admin.py:834 msgid "Unzipping update package" msgstr "更新データを展開中" -#: cps/admin.py:758 +#: cps/admin.py:835 msgid "Replacing files" msgstr "ファイルを置換中" -#: cps/admin.py:759 +#: cps/admin.py:836 msgid "Database connections are closed" msgstr "データベースの接続を切断完了" -#: cps/admin.py:760 +#: cps/admin.py:837 msgid "Stopping server" msgstr "サーバ停止中" -#: cps/admin.py:761 +#: cps/admin.py:838 msgid "Update finished, please press okay and reload page" msgstr "アップデート完了、OKを押してページをリロードしてください" -#: cps/admin.py:762 cps/admin.py:763 cps/admin.py:764 cps/admin.py:765 +#: cps/admin.py:839 cps/admin.py:840 cps/admin.py:841 cps/admin.py:842 msgid "Update failed:" msgstr "アップデート失敗:" -#: cps/admin.py:762 cps/updater.py:277 cps/updater.py:456 cps/updater.py:458 +#: cps/admin.py:839 cps/updater.py:273 cps/updater.py:459 cps/updater.py:461 msgid "HTTP Error" msgstr "HTTPエラー" -#: cps/admin.py:763 cps/updater.py:279 cps/updater.py:460 +#: cps/admin.py:840 cps/updater.py:275 cps/updater.py:463 msgid "Connection error" msgstr "接続エラー" -#: cps/admin.py:764 cps/updater.py:281 cps/updater.py:462 +#: cps/admin.py:841 cps/updater.py:277 cps/updater.py:465 msgid "Timeout while establishing connection" msgstr "接続を確立中にタイムアウトしました" -#: cps/admin.py:765 cps/updater.py:283 cps/updater.py:464 +#: cps/admin.py:842 cps/updater.py:279 cps/updater.py:467 msgid "General error" msgstr "エラー発生" @@ -227,720 +243,714 @@ msgstr "実行許可がありません" msgid "not configured" msgstr "未設定です" -#: cps/editbooks.py:218 cps/editbooks.py:432 +#: cps/editbooks.py:215 cps/editbooks.py:394 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "電子書籍を開けません。ファイルが存在しないかアクセスできません" -#: cps/editbooks.py:246 +#: cps/editbooks.py:243 msgid "edit metadata" msgstr "メタデータを編集" -#: cps/editbooks.py:325 cps/editbooks.py:595 +#: cps/editbooks.py:322 cps/editbooks.py:557 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "ファイル拡張子 '%(ext)s' をこのサーバにアップロードすることは許可されていません" -#: cps/editbooks.py:329 cps/editbooks.py:599 +#: cps/editbooks.py:326 cps/editbooks.py:561 msgid "File to be uploaded must have an extension" msgstr "アップロードするファイルには拡張子が必要です" -#: cps/editbooks.py:341 cps/editbooks.py:619 +#: cps/editbooks.py:338 cps/editbooks.py:581 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "%(path)s の作成に失敗しました (Permission denied)。" -#: cps/editbooks.py:346 +#: cps/editbooks.py:343 #, python-format msgid "Failed to store file %(file)s." msgstr "%(file)s を保存できません。" -#: cps/editbooks.py:363 +#: cps/editbooks.py:360 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "ファイル形式 %(ext)s が %(book)s に追加されました" -#: cps/editbooks.py:382 -#, python-format -msgid "Failed to create path for cover %(path)s (Permission denied)." -msgstr "" - -#: cps/editbooks.py:390 -#, python-format -msgid "Failed to store cover-file %(cover)s." -msgstr "" - -#: cps/editbooks.py:393 -msgid "Cover-file is not a valid image file" -msgstr "" - -#: cps/editbooks.py:399 cps/editbooks.py:413 +#: cps/editbooks.py:374 msgid "Cover is not a supported imageformat (jpg/png/webp), can't save" msgstr "" -#: cps/editbooks.py:445 cps/editbooks.py:454 +#: cps/editbooks.py:407 cps/editbooks.py:416 msgid "unknown" msgstr "不明" -#: cps/editbooks.py:486 +#: cps/editbooks.py:448 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/editbooks.py:534 +#: cps/editbooks.py:496 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s は有効な言語ではありません" -#: cps/editbooks.py:565 +#: cps/editbooks.py:527 msgid "Metadata successfully updated" msgstr "メタデータを更新しました" -#: cps/editbooks.py:574 +#: cps/editbooks.py:536 msgid "Error editing book, please check logfile for details" msgstr "本の編集でエラーが発生しました。詳細はログファイルを確認してください" -#: cps/editbooks.py:624 +#: cps/editbooks.py:586 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "ファイル %(file)s の保存に失敗しました (Permission denied)。" -#: cps/editbooks.py:629 +#: cps/editbooks.py:591 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "ファイル %(file)s の削除に失敗しました (Permission denied)。" -#: cps/editbooks.py:712 +#: cps/editbooks.py:674 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:741 +#: cps/editbooks.py:703 msgid "Source or destination format for conversion missing" msgstr "変換元の形式または変換後の形式が指定されていません" -#: cps/editbooks.py:751 +#: cps/editbooks.py:711 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "本の %(book_format)s への変換がキューに追加されました" -#: cps/editbooks.py:755 +#: cps/editbooks.py:715 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "この本の変換中にエラーが発生しました: %(res)s" -#: cps/gdrive.py:56 +#: cps/gdrive.py:61 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Googleドライブの設定が完了していません。Googleドライブを無効化してから再度有効にしてみてください" -#: cps/gdrive.py:101 +#: cps/gdrive.py:106 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "コールバックドメインが認証されていません。Google Developer Consoleでドメインを認証してください" -#: cps/helper.py:97 +#: cps/helper.py:94 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "ID: %(book)d の本に %(format)s フォーマットはありません" -#: cps/helper.py:109 +#: cps/helper.py:106 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "Googleドライブ: %(fn)s に %(format)s はありません" -#: cps/helper.py:116 cps/helper.py:223 cps/templates/detail.html:41 +#: cps/helper.py:113 cps/helper.py:220 cps/templates/detail.html:41 #: cps/templates/detail.html:45 msgid "Send to Kindle" msgstr "Kindleに送信" -#: cps/helper.py:117 cps/helper.py:135 cps/helper.py:225 +#: cps/helper.py:114 cps/helper.py:132 cps/helper.py:222 msgid "This e-mail has been sent via Calibre-Web." msgstr "このメールはCalibre-Web経由で送信されました。" -#: cps/helper.py:128 +#: cps/helper.py:125 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "%(format)s がありません: %(fn)s" -#: cps/helper.py:133 +#: cps/helper.py:130 msgid "Calibre-Web test e-mail" msgstr "Calibre-Web テストメール" -#: cps/helper.py:134 +#: cps/helper.py:131 msgid "Test e-mail" msgstr "テストメール" -#: cps/helper.py:150 +#: cps/helper.py:147 msgid "Get Started with Calibre-Web" msgstr "Calibre-Webを始める" -#: cps/helper.py:151 +#: cps/helper.py:148 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "ユーザ: %(name)s 用の登録メール" -#: cps/helper.py:165 cps/helper.py:167 cps/helper.py:169 cps/helper.py:177 -#: cps/helper.py:179 cps/helper.py:181 +#: cps/helper.py:162 cps/helper.py:164 cps/helper.py:166 cps/helper.py:174 +#: cps/helper.py:176 cps/helper.py:178 #, python-format msgid "Send %(format)s to Kindle" msgstr "Kindleに %(format)s を送信" -#: cps/helper.py:185 +#: cps/helper.py:182 #, python-format msgid "Convert %(orig)s to %(format)s and send to Kindle" msgstr "%(orig)s を %(format)s に変換してからKindleに送信" -#: cps/helper.py:224 +#: cps/helper.py:221 #, python-format msgid "E-mail: %(book)s" msgstr "メール: %(book)s" -#: cps/helper.py:227 +#: cps/helper.py:224 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "要求されたファイルを読み込めませんでした。権限設定が正しいか確認してください。" -#: cps/helper.py:335 +#: cps/helper.py:331 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "エラー: %(error)s により、タイトルを %(src)s から %(dest)s に変更できませんでした。" -#: cps/helper.py:345 +#: cps/helper.py:341 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "エラー: %(error)s により、著者名を %(src)s から %(dest)s に変更できませんでした。" -#: cps/helper.py:359 +#: cps/helper.py:355 #, python-format msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "エラー: %(error)s により、ファイルパスを %(src)s から %(dest)s に変更できませんでした。" -#: cps/helper.py:385 cps/helper.py:395 cps/helper.py:403 +#: cps/helper.py:381 cps/helper.py:391 cps/helper.py:399 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "ファイル %(file)s はGoogleドライブ上にありません" -#: cps/helper.py:424 +#: cps/helper.py:420 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "本のパス %(path)s はGoogleドライブ上にありません" -#: cps/helper.py:584 +#: cps/helper.py:579 msgid "Error excecuting UnRar" msgstr "rarファイルを展開中にエラーが発生しました" -#: cps/helper.py:586 +#: cps/helper.py:581 msgid "Unrar binary file not found" msgstr "Unrarバイナリが見つかりません" -#: cps/helper.py:614 +#: cps/helper.py:609 msgid "Waiting" msgstr "待機中" -#: cps/helper.py:616 +#: cps/helper.py:611 msgid "Failed" msgstr "失敗" -#: cps/helper.py:618 +#: cps/helper.py:613 msgid "Started" msgstr "開始" -#: cps/helper.py:620 +#: cps/helper.py:615 msgid "Finished" msgstr "終了" -#: cps/helper.py:622 +#: cps/helper.py:617 msgid "Unknown Status" msgstr "不明" -#: cps/helper.py:627 +#: cps/helper.py:622 msgid "E-mail: " msgstr "メール: " -#: cps/helper.py:629 cps/helper.py:633 +#: cps/helper.py:624 cps/helper.py:628 msgid "Convert: " msgstr "変換: " -#: cps/helper.py:631 +#: cps/helper.py:626 msgid "Upload: " msgstr "アップロード: " -#: cps/helper.py:635 +#: cps/helper.py:630 msgid "Unknown Task: " msgstr "不明なタスク: " -#: cps/oauth_bb.py:87 +#: cps/oauth_bb.py:91 #, python-format -msgid "Register with %s, " +msgid "Register with %(provider)s" msgstr "" -#: cps/oauth_bb.py:145 +#: cps/oauth_bb.py:149 msgid "Failed to log in with GitHub." msgstr "" -#: cps/oauth_bb.py:150 +#: cps/oauth_bb.py:154 msgid "Failed to fetch user info from GitHub." msgstr "" -#: cps/oauth_bb.py:161 +#: cps/oauth_bb.py:165 msgid "Failed to log in with Google." msgstr "" -#: cps/oauth_bb.py:166 +#: cps/oauth_bb.py:170 msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:265 +#: cps/oauth_bb.py:269 #, python-format msgid "Unlink to %(oauth)s success." msgstr "" -#: cps/oauth_bb.py:269 +#: cps/oauth_bb.py:273 #, python-format msgid "Unlink to %(oauth)s failed." msgstr "" -#: cps/oauth_bb.py:272 +#: cps/oauth_bb.py:276 #, python-format msgid "Not linked to %(oauth)s." msgstr "" -#: cps/oauth_bb.py:300 +#: cps/oauth_bb.py:304 msgid "GitHub Oauth error, please retry later." msgstr "" -#: cps/oauth_bb.py:319 +#: cps/oauth_bb.py:323 msgid "Google Oauth error, please retry later." msgstr "" -#: cps/shelf.py:40 cps/shelf.py:92 +#: cps/shelf.py:46 cps/shelf.py:98 msgid "Invalid shelf specified" msgstr "指定された本棚は無効です" -#: cps/shelf.py:47 +#: cps/shelf.py:53 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" msgstr "申し訳ありませんが、あなたは %(shelfname)s に本を追加することが許可されていません" -#: cps/shelf.py:55 +#: cps/shelf.py:61 msgid "You are not allowed to edit public shelves" msgstr "みんなの本棚を編集することが許可されていません" -#: cps/shelf.py:64 +#: cps/shelf.py:70 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" msgstr "この本は %(shelfname)s にすでに追加されています" -#: cps/shelf.py:78 +#: cps/shelf.py:84 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "本を %(sname)s に追加しました" -#: cps/shelf.py:97 +#: cps/shelf.py:103 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "%(name)s に本を追加することが許可されていません" -#: cps/shelf.py:102 +#: cps/shelf.py:108 msgid "User is not allowed to edit public shelves" msgstr "みんなの本棚を編集することが許可されていません" -#: cps/shelf.py:120 +#: cps/shelf.py:126 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "これらの本は %(name)s にすでに追加されています" -#: cps/shelf.py:134 +#: cps/shelf.py:140 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "本が %(sname)s に追加されました" -#: cps/shelf.py:136 +#: cps/shelf.py:142 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "%(sname)s に本を追加できません" -#: cps/shelf.py:173 +#: cps/shelf.py:179 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "本が %(sname)s から削除されました" -#: cps/shelf.py:179 +#: cps/shelf.py:185 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "申し訳ありませんが、%(sname)s から本を削除することが許可されていません" -#: cps/shelf.py:200 cps/shelf.py:224 +#: cps/shelf.py:206 cps/shelf.py:230 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "'%(title)s'は既に存在します" -#: cps/shelf.py:205 +#: cps/shelf.py:211 #, python-format msgid "Shelf %(title)s created" msgstr "%(title)s を作成しました" -#: cps/shelf.py:207 cps/shelf.py:235 +#: cps/shelf.py:213 cps/shelf.py:241 msgid "There was an error" msgstr "エラーが発生しました" -#: cps/shelf.py:208 cps/shelf.py:210 +#: cps/shelf.py:214 cps/shelf.py:216 msgid "create a shelf" msgstr "本棚を作成する" -#: cps/shelf.py:233 +#: cps/shelf.py:239 #, python-format msgid "Shelf %(title)s changed" msgstr "%(title)s を変更しました" -#: cps/shelf.py:236 cps/shelf.py:238 +#: cps/shelf.py:242 cps/shelf.py:244 msgid "Edit a shelf" msgstr "本棚を編集する" -#: cps/shelf.py:259 -#, python-format -msgid "successfully deleted shelf %(name)s" -msgstr "%(name)s を削除しました" - -#: cps/shelf.py:289 +#: cps/shelf.py:295 #, python-format msgid "Shelf: '%(name)s'" msgstr "本棚: '%(name)s'" -#: cps/shelf.py:292 +#: cps/shelf.py:298 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "本棚を開けません。この本棚は存在しないかアクセスできません" -#: cps/shelf.py:324 +#: cps/shelf.py:330 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "'%(name)s' 内の本の順番を変更する" -#: cps/ub.py:111 +#: cps/ub.py:68 msgid "Recently Added" msgstr "最近追加した本" -#: cps/ub.py:113 +#: cps/ub.py:70 msgid "Show recent books" msgstr "最近追加された本を表示" -#: cps/templates/index.xml:17 cps/ub.py:114 +#: cps/templates/index.xml:17 cps/ub.py:71 msgid "Hot Books" msgstr "人気の本" -#: cps/ub.py:115 +#: cps/ub.py:72 msgid "Show hot books" msgstr "人気な本を表示" -#: cps/templates/index.xml:24 cps/ub.py:118 +#: cps/templates/index.xml:24 cps/ub.py:75 msgid "Best rated Books" msgstr "高評価の本" -#: cps/ub.py:120 +#: cps/ub.py:77 msgid "Show best rated books" msgstr "評価が高い本を表示" -#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:121 -#: cps/web.py:965 +#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:78 +#: cps/web.py:958 msgid "Read Books" msgstr "読んだ本" -#: cps/ub.py:123 +#: cps/ub.py:80 msgid "Show read and unread" msgstr "既読の本と未読の本を表示" -#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:125 -#: cps/web.py:969 +#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:82 +#: cps/web.py:962 msgid "Unread Books" msgstr "未読の本" -#: cps/ub.py:127 +#: cps/ub.py:84 msgid "Show unread" msgstr "" -#: cps/ub.py:128 +#: cps/ub.py:85 msgid "Discover" msgstr "見つける" -#: cps/ub.py:130 +#: cps/ub.py:87 msgid "Show random books" msgstr "ランダムで本を表示" -#: cps/ub.py:131 +#: cps/ub.py:88 msgid "Categories" msgstr "カテゴリ" -#: cps/ub.py:133 +#: cps/ub.py:90 msgid "Show category selection" msgstr "カテゴリ選択を表示" #: cps/templates/book_edit.html:71 cps/templates/search_form.html:53 -#: cps/ub.py:134 +#: cps/ub.py:91 msgid "Series" msgstr "シリーズ" -#: cps/ub.py:136 +#: cps/ub.py:93 msgid "Show series selection" msgstr "シリーズ選択を表示" -#: cps/templates/index.xml:61 cps/ub.py:137 +#: cps/templates/index.xml:61 cps/ub.py:94 msgid "Authors" msgstr "著者" -#: cps/ub.py:139 +#: cps/ub.py:96 msgid "Show author selection" msgstr "著者選択を表示" -#: cps/templates/index.xml:68 cps/ub.py:141 +#: cps/templates/index.xml:68 cps/ub.py:98 msgid "Publishers" msgstr "出版社" -#: cps/ub.py:143 +#: cps/ub.py:100 msgid "Show publisher selection" msgstr "出版社選択を表示" -#: cps/templates/search_form.html:74 cps/ub.py:144 +#: cps/templates/search_form.html:74 cps/ub.py:101 msgid "Languages" msgstr "言語" -#: cps/ub.py:147 +#: cps/ub.py:104 msgid "Show language selection" msgstr "言語選択を表示" -#: cps/ub.py:148 +#: cps/ub.py:105 msgid "Ratings" msgstr "" -#: cps/ub.py:150 +#: cps/ub.py:107 msgid "Show ratings selection" msgstr "" -#: cps/ub.py:151 +#: cps/ub.py:108 msgid "File formats" msgstr "" -#: cps/ub.py:153 +#: cps/ub.py:110 msgid "Show file formats selection" msgstr "" -#: cps/updater.py:257 cps/updater.py:364 cps/updater.py:377 +#: cps/updater.py:253 cps/updater.py:360 cps/updater.py:373 msgid "Unexpected data while reading update information" msgstr "アップデート情報を読み込み中に予期しないデータが見つかりました" -#: cps/updater.py:264 cps/updater.py:370 +#: cps/updater.py:260 cps/updater.py:366 msgid "No update available. You already have the latest version installed" msgstr "アップデートはありません。すでに最新バージョンがインストールされています" -#: cps/updater.py:290 cps/updater.py:422 +#: cps/updater.py:286 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "アップデートが利用可能です。下のボタンをクリックして最新バージョンにアップデートしてください。" -#: cps/updater.py:343 +#: cps/updater.py:339 msgid "Could not fetch update information" msgstr "アップデート情報を取得できません" -#: cps/updater.py:357 +#: cps/updater.py:353 msgid "No release information available" msgstr "リリース情報がありません" -#: cps/updater.py:403 cps/updater.py:412 +#: cps/updater.py:406 cps/updater.py:415 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "アップデートが利用可能です。下のボタンをクリックしてバージョン: %(version)s にアップデートしてください。" -#: cps/web.py:457 +#: cps/updater.py:425 +msgid "Click on the button below to update to the latest stable version." +msgstr "" + +#: cps/web.py:445 msgid "Recently Added Books" msgstr "最近追加された本" -#: cps/web.py:484 +#: cps/web.py:473 msgid "Best rated books" msgstr "高評価" -#: cps/templates/index.xml:38 cps/web.py:492 +#: cps/templates/index.xml:38 cps/web.py:481 msgid "Random Books" msgstr "ランダム" -#: cps/web.py:516 +#: cps/web.py:505 msgid "Books" msgstr "" -#: cps/web.py:543 +#: cps/web.py:532 msgid "Hot Books (most downloaded)" msgstr "話題(ダウンロード数順)" -#: cps/web.py:553 cps/web.py:1294 cps/web.py:1383 +#: cps/web.py:542 cps/web.py:1298 cps/web.py:1386 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "電子書籍を開けません。ファイルが存在しないかアクセスできません:" -#: cps/web.py:580 +#: cps/web.py:559 +#, python-format +msgid "Author: %(name)s" +msgstr "" + +#: cps/web.py:571 #, python-format msgid "Publisher: %(name)s" msgstr "出版社: %(name)s" -#: cps/web.py:591 +#: cps/web.py:582 #, python-format msgid "Series: %(serie)s" msgstr "シリーズ: %(serie)s" -#: cps/web.py:602 +#: cps/web.py:593 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:613 +#: cps/web.py:604 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:625 +#: cps/web.py:616 #, python-format msgid "Category: %(name)s" msgstr "カテゴリ: %(name)s" -#: cps/web.py:659 +#: cps/web.py:650 msgid "Publisher list" msgstr "出版社一覧" -#: cps/templates/index.xml:82 cps/web.py:675 +#: cps/templates/index.xml:82 cps/web.py:666 msgid "Series list" msgstr "シリーズ一覧" -#: cps/web.py:689 +#: cps/web.py:680 msgid "Ratings list" msgstr "" -#: cps/web.py:702 +#: cps/web.py:693 msgid "File formats list" msgstr "" -#: cps/web.py:730 +#: cps/web.py:721 msgid "Available languages" msgstr "言語" -#: cps/web.py:750 +#: cps/web.py:741 #, python-format msgid "Language: %(name)s" msgstr "言語: %(name)s" -#: cps/templates/index.xml:75 cps/web.py:764 +#: cps/templates/index.xml:75 cps/web.py:755 msgid "Category list" msgstr "カテゴリ一覧" -#: cps/templates/layout.html:73 cps/web.py:777 +#: cps/templates/layout.html:73 cps/web.py:769 msgid "Tasks" msgstr "タスク" -#: cps/web.py:841 +#: cps/web.py:834 msgid "Published after " msgstr "これ以降に出版 " -#: cps/web.py:848 +#: cps/web.py:841 msgid "Published before " msgstr "これ以前に出版 " -#: cps/web.py:862 +#: cps/web.py:855 #, python-format msgid "Rating <= %(rating)s" msgstr "評価 <= %(rating)s" -#: cps/web.py:864 +#: cps/web.py:857 #, python-format msgid "Rating >= %(rating)s" msgstr "評価 >= %(rating)s" -#: cps/web.py:924 cps/web.py:933 +#: cps/web.py:917 cps/web.py:926 msgid "search" msgstr "検索" -#: cps/web.py:1018 +#: cps/web.py:1012 msgid "Please configure the SMTP mail settings first..." msgstr "初めにSMTPメールの設定をしてください" -#: cps/web.py:1023 +#: cps/web.py:1017 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "本の %(kindlemail)s への送信がキューに追加されました" -#: cps/web.py:1027 +#: cps/web.py:1021 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "%(res)s を送信中にエラーが発生しました" -#: cps/web.py:1046 cps/web.py:1071 cps/web.py:1076 cps/web.py:1081 -#: cps/web.py:1085 +#: cps/web.py:1041 cps/web.py:1066 cps/web.py:1070 cps/web.py:1075 +#: cps/web.py:1079 msgid "register" msgstr "登録" -#: cps/web.py:1073 +#: cps/web.py:1068 msgid "Your e-mail is not allowed to register" msgstr "このメールアドレスは登録が許可されていません" -#: cps/web.py:1077 +#: cps/web.py:1071 msgid "Confirmation e-mail was send to your e-mail account." msgstr "確認メールがこのメールアドレスに送信されました。" -#: cps/web.py:1080 +#: cps/web.py:1074 msgid "This username or e-mail address is already in use." msgstr "このユーザ名またはメールアドレスはすでに使われています。" -#: cps/web.py:1103 cps/web.py:1115 -#, python-format -msgid "You are now logged in as: '%(nickname)s'" +#: cps/web.py:1089 +msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1108 cps/web.py:1120 +#: cps/web.py:1098 cps/web.py:1212 +#, python-format +msgid "you are now logged in as: '%(nickname)s'" +msgstr "%(nickname)s としてログイン中" + +#: cps/web.py:1105 cps/web.py:1122 msgid "Wrong Username or Password" msgstr "ユーザ名またはパスワードが違います" -#: cps/web.py:1111 +#: cps/web.py:1108 msgid "Could not login. LDAP server down, please contact your administrator" msgstr "" -#: cps/web.py:1124 cps/web.py:1146 +#: cps/web.py:1117 +#, python-format +msgid "You are now logged in as: '%(nickname)s'" +msgstr "" + +#: cps/web.py:1126 cps/web.py:1148 msgid "login" msgstr "ログイン" -#: cps/web.py:1158 cps/web.py:1189 +#: cps/web.py:1160 cps/web.py:1191 msgid "Token not found" msgstr "トークンが見つかりません" -#: cps/web.py:1166 cps/web.py:1197 +#: cps/web.py:1168 cps/web.py:1199 msgid "Token has expired" msgstr "トークンが無効です" -#: cps/web.py:1174 +#: cps/web.py:1176 msgid "Success! Please return to your device" msgstr "成功です!端末に戻ってください" -#: cps/web.py:1210 -#, python-format -msgid "you are now logged in as: '%(nickname)s'" -msgstr "%(nickname)s としてログイン中" - -#: cps/web.py:1250 cps/web.py:1277 cps/web.py:1281 +#: cps/web.py:1253 cps/web.py:1280 cps/web.py:1284 #, python-format msgid "%(name)s's profile" msgstr "%(name)s のプロフィール" -#: cps/web.py:1274 +#: cps/web.py:1277 msgid "Found an existing account for this e-mail address." msgstr "このメールアドレスで登録されたアカウントがあります" -#: cps/web.py:1279 +#: cps/web.py:1282 msgid "Profile updated" msgstr "プロフィールを更新しました" -#: cps/web.py:1304 cps/web.py:1306 cps/web.py:1308 cps/web.py:1314 -#: cps/web.py:1318 +#: cps/web.py:1308 cps/web.py:1310 cps/web.py:1312 cps/web.py:1318 +#: cps/web.py:1322 msgid "Read a Book" msgstr "本を読む" -#: cps/web.py:1328 +#: cps/web.py:1332 msgid "Error opening eBook. File does not exist or file is not accessible." msgstr "" -#: cps/worker.py:308 +#: cps/worker.py:311 #, python-format msgid "Ebook-converter failed: %(error)s" msgstr "Ebook-converter が失敗しました: %(error)s" -#: cps/worker.py:319 +#: cps/worker.py:322 #, python-format msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "Kindlegen が失敗しました。エラー: %(error)s, メッセージ: %(message)s" @@ -1056,53 +1066,57 @@ msgid "Administration" msgstr "管理" #: cps/templates/admin.html:109 +msgid "View Logfiles" +msgstr "" + +#: cps/templates/admin.html:110 msgid "Reconnect to Calibre DB" msgstr "Calibreデータベースに再接続" -#: cps/templates/admin.html:110 +#: cps/templates/admin.html:111 msgid "Restart Calibre-Web" msgstr "Calibre-Webを再起動" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:112 msgid "Stop Calibre-Web" msgstr "Calibre-Webを停止" -#: cps/templates/admin.html:117 +#: cps/templates/admin.html:118 msgid "Update" msgstr "アップデート" -#: cps/templates/admin.html:121 +#: cps/templates/admin.html:122 msgid "Version" msgstr "バージョン" -#: cps/templates/admin.html:122 +#: cps/templates/admin.html:123 msgid "Details" msgstr "詳細" -#: cps/templates/admin.html:128 +#: cps/templates/admin.html:129 msgid "Current version" msgstr "現在のバージョン" -#: cps/templates/admin.html:134 +#: cps/templates/admin.html:135 msgid "Check for update" msgstr "更新を確認" -#: cps/templates/admin.html:135 +#: cps/templates/admin.html:136 msgid "Perform Update" msgstr "更新を実行" -#: cps/templates/admin.html:147 +#: cps/templates/admin.html:148 msgid "Do you really want to restart Calibre-Web?" msgstr "Calibre-Webを再起動します。よろしいですか?" -#: cps/templates/admin.html:152 cps/templates/admin.html:166 -#: cps/templates/admin.html:186 cps/templates/shelf.html:72 +#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:187 cps/templates/shelf.html:72 msgid "Ok" msgstr "はい" -#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:154 cps/templates/admin.html:168 #: cps/templates/book_edit.html:174 cps/templates/book_edit.html:196 -#: cps/templates/config_edit.html:281 cps/templates/config_view_edit.html:147 +#: cps/templates/config_edit.html:331 cps/templates/config_view_edit.html:147 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 @@ -1110,11 +1124,11 @@ msgstr "はい" msgid "Back" msgstr "戻る" -#: cps/templates/admin.html:165 +#: cps/templates/admin.html:166 msgid "Do you really want to stop Calibre-Web?" msgstr "Calibre-Webを停止します。よろしいですか?" -#: cps/templates/admin.html:177 +#: cps/templates/admin.html:178 msgid "Updating, please do not reload page" msgstr "更新中です。ページ再読み込みしないでください" @@ -1243,7 +1257,7 @@ msgstr "編集後に本を表示" msgid "Get metadata" msgstr "メタデータを取得" -#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:279 +#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329 #: cps/templates/config_view_edit.html:146 cps/templates/login.html:20 #: cps/templates/search_form.html:150 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:130 @@ -1387,123 +1401,171 @@ msgstr "ログレベル" msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "ログファイル名 (空欄の場合はcalibre-web.log)" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:134 +msgid "Enable Access Log" +msgstr "" + +#: cps/templates/config_edit.html:137 +msgid "Location and name of access logfile (access.log for no entry)" +msgstr "" + +#: cps/templates/config_edit.html:148 msgid "Feature Configuration" msgstr "機能設定" -#: cps/templates/config_edit.html:148 +#: cps/templates/config_edit.html:156 msgid "Enable uploading" msgstr "アップロードを有効にする" -#: cps/templates/config_edit.html:152 +#: cps/templates/config_edit.html:160 msgid "Enable anonymous browsing" msgstr "匿名での閲覧を有効にする" -#: cps/templates/config_edit.html:156 +#: cps/templates/config_edit.html:164 msgid "Enable public registration" msgstr "誰でも新規登録を可能にする" -#: cps/templates/config_edit.html:160 +#: cps/templates/config_edit.html:168 msgid "Enable remote login (\"magic link\")" msgstr "リモートログインを有効する (\"マジックリンク\")" -#: cps/templates/config_edit.html:165 +#: cps/templates/config_edit.html:173 msgid "Use" msgstr "使う" -#: cps/templates/config_edit.html:166 +#: cps/templates/config_edit.html:174 msgid "Obtain an API Key" msgstr "APIキーを取得" -#: cps/templates/config_edit.html:170 +#: cps/templates/config_edit.html:178 msgid "Goodreads API Key" msgstr "GoodreadsのAPIキー" -#: cps/templates/config_edit.html:174 +#: cps/templates/config_edit.html:182 msgid "Goodreads API Secret" msgstr "GoodreadsのAPIシークレット" -#: cps/templates/config_edit.html:181 +#: cps/templates/config_edit.html:189 msgid "Login type" msgstr "" -#: cps/templates/config_edit.html:183 +#: cps/templates/config_edit.html:191 msgid "Use standard Authentication" msgstr "" -#: cps/templates/config_edit.html:185 +#: cps/templates/config_edit.html:193 msgid "Use LDAP Authentication" msgstr "" -#: cps/templates/config_edit.html:188 +#: cps/templates/config_edit.html:196 msgid "Use GitHub OAuth" msgstr "" -#: cps/templates/config_edit.html:189 +#: cps/templates/config_edit.html:197 msgid "Use Google OAuth" msgstr "" -#: cps/templates/config_edit.html:196 -msgid "LDAP Provider URL" +#: cps/templates/config_edit.html:204 +msgid "LDAP Server Host Name or IP Address" +msgstr "" + +#: cps/templates/config_edit.html:208 +msgid "LDAP Server Port" +msgstr "" + +#: cps/templates/config_edit.html:212 +msgid "LDAP schema (ldap or ldaps)" +msgstr "" + +#: cps/templates/config_edit.html:216 +msgid "LDAP Admin username" +msgstr "" + +#: cps/templates/config_edit.html:220 +msgid "LDAP Admin password" +msgstr "" + +#: cps/templates/config_edit.html:225 +msgid "LDAP Server use SSL" msgstr "" -#: cps/templates/config_edit.html:200 +#: cps/templates/config_edit.html:229 +msgid "LDAP Server use TLS" +msgstr "" + +#: cps/templates/config_edit.html:233 +msgid "LDAP Server Certificate" +msgstr "" + +#: cps/templates/config_edit.html:237 +msgid "LDAP SSL Certificate Path" +msgstr "" + +#: cps/templates/config_edit.html:242 msgid "LDAP Distinguished Name (DN)" msgstr "" -#: cps/templates/config_edit.html:208 +#: cps/templates/config_edit.html:246 +msgid "LDAP User object filter" +msgstr "" + +#: cps/templates/config_edit.html:251 +msgid "LDAP Server is OpenLDAP?" +msgstr "" + +#: cps/templates/config_edit.html:258 msgid "Obtain GitHub OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:211 +#: cps/templates/config_edit.html:261 msgid "GitHub OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:215 +#: cps/templates/config_edit.html:265 msgid "GitHub OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:221 +#: cps/templates/config_edit.html:271 msgid "Obtain Google OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:224 +#: cps/templates/config_edit.html:274 msgid "Google OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:228 +#: cps/templates/config_edit.html:278 msgid "Google OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:242 +#: cps/templates/config_edit.html:292 msgid "External binaries" msgstr "外部バイナリ" -#: cps/templates/config_edit.html:250 +#: cps/templates/config_edit.html:300 msgid "No converter" msgstr "変換ソフトなし" -#: cps/templates/config_edit.html:252 +#: cps/templates/config_edit.html:302 msgid "Use Kindlegen" msgstr "Kindlegenを使う" -#: cps/templates/config_edit.html:254 +#: cps/templates/config_edit.html:304 msgid "Use calibre's ebook converter" msgstr "calibreのebook converterを使う" -#: cps/templates/config_edit.html:258 +#: cps/templates/config_edit.html:308 msgid "E-Book converter settings" msgstr "E-Book converterの設定" -#: cps/templates/config_edit.html:262 +#: cps/templates/config_edit.html:312 msgid "Path to convertertool" msgstr "convertertoolのパス" -#: cps/templates/config_edit.html:268 +#: cps/templates/config_edit.html:318 msgid "Location of Unrar binary" msgstr "Unrarバイナリのパス" -#: cps/templates/config_edit.html:284 cps/templates/layout.html:84 +#: cps/templates/config_edit.html:334 cps/templates/layout.html:84 #: cps/templates/login.html:4 msgid "Login" msgstr "ログイン" @@ -1717,7 +1779,7 @@ msgstr "ホームに戻る" msgid "Discover (Random Books)" msgstr "本を見つける (ランダムで表示)" -#: cps/templates/index.html:65 +#: cps/templates/index.html:64 msgid "Group by series" msgstr "" @@ -1860,6 +1922,14 @@ msgstr "記憶する" msgid "Log in with magic link" msgstr "マジックリンクでログイン" +#: cps/templates/logviewer.html:5 +msgid "Show Calibre-Web log" +msgstr "" + +#: cps/templates/logviewer.html:8 +msgid "Show access log" +msgstr "" + #: cps/templates/osd.xml:5 msgid "Calibre-Web ebook catalog" msgstr "Calibre-Web 電子書籍カタログ" @@ -2173,13 +2243,13 @@ msgid "Recent Downloads" msgstr "最近のダウンロード" #~ msgid "Failed to create path for cover %(path)s (Permission denied)." -#~ msgstr "カバー画像 %(path)s の作成に失敗しました (Permission denied)。" +#~ msgstr "" #~ msgid "Failed to store cover-file %(cover)s." -#~ msgstr "カバー画像 %(cover)s の保存に失敗しました。" +#~ msgstr "" #~ msgid "Cover-file is not a valid image file" -#~ msgstr "カバー画像が無効な画像ファイルです" +#~ msgstr "" #~ msgid "Cover is not a jpg file, can't save" #~ msgstr "カバー画像がjpgファイルでないため、保存できません" @@ -2238,3 +2308,15 @@ msgstr "最近のダウンロード" #~ msgid "PDF.js viewer" #~ msgstr "PDF.js ビューア" +#~ msgid "Please enter a LDAP provider and a DN" +#~ msgstr "" + +#~ msgid "successfully deleted shelf %(name)s" +#~ msgstr "%(name)s を削除しました" + +#~ msgid "LDAP Provider URL" +#~ msgstr "" + +#~ msgid "Register with %s, " +#~ msgstr "" + diff --git a/cps/translations/km/LC_MESSAGES/messages.mo b/cps/translations/km/LC_MESSAGES/messages.mo index 9e077ba0..64b17b2b 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 97607b03..077a6c66 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: 2019-05-31 11:20+0200\n" +"POT-Creation-Date: 2019-06-22 19:54+0200\n" "PO-Revision-Date: 2018-08-27 17:06+0700\n" "Last-Translator: \n" "Language: km_KH\n" @@ -17,13 +17,13 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" -#: cps/about.py:76 +#: cps/about.py:78 msgid "Statistics" msgstr "ស្ថិតិ" -#: cps/admin.py:97 +#: cps/admin.py:98 msgid "Server restarted, please reload page" msgstr "ម៉ាស៊ីន server បានដំណើរការម្តងទៀត សូមបើកទំព័រជាថ្មី" @@ -31,186 +31,202 @@ msgstr "ម៉ាស៊ីន server បានដំណើរការម្ត msgid "Performing shutdown of server, please close window" msgstr "កំពុងបិទម៉ាស៊ីន server សូមបិទផ្ទាំងនេះ" -#: cps/admin.py:120 cps/updater.py:445 +#: cps/admin.py:119 cps/updater.py:448 msgid "Unknown" msgstr "មិនដឹង" -#: cps/admin.py:139 +#: cps/admin.py:138 msgid "Admin page" msgstr "ទំព័ររដ្ឋបាល" -#: cps/admin.py:208 cps/admin.py:486 +#: cps/admin.py:207 cps/admin.py:532 msgid "Calibre-Web configuration updated" msgstr "" -#: cps/admin.py:222 cps/templates/admin.html:102 +#: cps/admin.py:220 cps/templates/admin.html:102 msgid "UI Configuration" msgstr "ការកំណត់ផ្ទាំងប្រើប្រាស់" -#: cps/admin.py:295 +#: cps/admin.py:293 msgid "Import of optional Google Drive requirements missing" msgstr "ខ្វះការនាំចូលតម្រូវការបន្ថែមរបស់ Google Drive" -#: cps/admin.py:298 +#: cps/admin.py:296 msgid "client_secrets.json is missing or not readable" msgstr "មិនមានឯកសារ client_secrets.json ឬមិនអាចបើកបាន" -#: cps/admin.py:303 cps/admin.py:332 +#: cps/admin.py:301 cps/admin.py:330 msgid "client_secrets.json is not configured for web application" msgstr "ឯកសារ client_secrets.json មិនទាន់បានកំណត់សម្រាប់កម្មវិធីវែប" -#: cps/admin.py:335 cps/admin.py:361 cps/admin.py:373 cps/admin.py:398 -#: cps/admin.py:426 cps/admin.py:440 cps/admin.py:463 cps/admin.py:476 -#: cps/admin.py:494 cps/admin.py:501 cps/admin.py:516 -#: cps/templates/admin.html:101 +#: cps/admin.py:333 cps/admin.py:359 cps/admin.py:371 cps/admin.py:396 +#: cps/admin.py:403 cps/admin.py:436 cps/admin.py:460 cps/admin.py:474 +#: cps/admin.py:493 cps/admin.py:510 cps/admin.py:522 cps/admin.py:538 +#: cps/admin.py:545 cps/admin.py:559 cps/templates/admin.html:101 msgid "Basic Configuration" msgstr "ការកំណត់សាមញ្ញ" -#: cps/admin.py:358 +#: cps/admin.py:356 msgid "Keyfile location is not valid, please enter correct path" msgstr "ទីតាំងរបស់ keyfile មិនត្រឹមត្រូវ សូមបញ្ចូលទីតាំងត្រឹមត្រូវ" -#: cps/admin.py:370 +#: cps/admin.py:368 cps/admin.py:433 msgid "Certfile location is not valid, please enter correct path" msgstr "ទីតាំងរបស់ certfile មិនត្រឹមត្រូវ សូមបញ្ចូលទីតាំងត្រឹមត្រូវ" -#: cps/admin.py:395 -msgid "Please enter a LDAP provider and a DN" +#: cps/admin.py:393 +msgid "Please enter a LDAP provider, port, DN and user object identifier" msgstr "" -#: cps/admin.py:423 +#: cps/admin.py:400 +msgid "Please enter a LDAP service account and password" +msgstr "" + +#: cps/admin.py:457 msgid "Please enter Github oauth credentials" msgstr "" -#: cps/admin.py:437 +#: cps/admin.py:471 msgid "Please enter Google oauth credentials" msgstr "" -#: cps/admin.py:460 +#: cps/admin.py:490 msgid "Logfile location is not valid, please enter correct path" msgstr "ទីតាំងរបស់ logfile មិនត្រឹមត្រូវ សូមបញ្ចូលទីតាំងត្រឹមត្រូវ" -#: cps/admin.py:498 +#: cps/admin.py:507 +msgid "Access Logfile location is not valid, please enter correct path" +msgstr "" + +#: cps/admin.py:542 msgid "DB location is not valid, please enter correct path" msgstr "ទីតាំងរបស់ database មិនត្រឹមត្រូវ សូមបញ្ចូលទីតាំងត្រឹមត្រូវ" -#: cps/admin.py:558 cps/web.py:1045 +#: cps/admin.py:602 cps/web.py:1040 msgid "Please fill out all fields!" msgstr "សូមបំពេញចន្លោះទាំងអស់!" -#: cps/admin.py:560 cps/admin.py:566 cps/admin.py:582 +#: cps/admin.py:604 cps/admin.py:610 cps/admin.py:626 #: cps/templates/admin.html:35 msgid "Add new user" msgstr "បន្ថែមអ្នកប្រើប្រាស់ថ្មី" -#: cps/admin.py:564 cps/web.py:1248 +#: cps/admin.py:608 cps/web.py:1251 msgid "E-mail is not from valid domain" msgstr "" -#: cps/admin.py:572 +#: cps/admin.py:616 #, python-format msgid "User '%(user)s' created" msgstr "បានបង្កើតអ្នកប្រើប្រាស់ ‘%(user)s’" -#: cps/admin.py:576 +#: cps/admin.py:620 msgid "Found an existing account for this e-mail address or nickname." msgstr "" -#: cps/admin.py:607 +#: cps/admin.py:651 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "" -#: cps/admin.py:610 +#: cps/admin.py:654 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "" -#: cps/admin.py:612 cps/web.py:1029 +#: cps/admin.py:656 cps/web.py:1023 msgid "Please configure your kindle e-mail address first..." msgstr "" -#: cps/admin.py:614 +#: cps/admin.py:658 msgid "E-mail server settings updated" msgstr "" -#: cps/admin.py:615 +#: cps/admin.py:659 msgid "Edit e-mail server settings" msgstr "" -#: cps/admin.py:640 +#: cps/admin.py:687 #, python-format msgid "User '%(nick)s' deleted" msgstr "អ្នកប្រើប្រាស់ ‘%(nick)s’ ត្រូវបានលុប" -#: cps/admin.py:711 +#: cps/admin.py:690 +msgid "No admin user remaining, can't delete user" +msgstr "" + +#: cps/admin.py:761 #, python-format msgid "User '%(nick)s' updated" msgstr "អ្នកប្រើប្រាស់ ‘%(nick)s’ ត្រូវបានកែប្រែ" -#: cps/admin.py:714 +#: cps/admin.py:764 msgid "An unknown error occured." msgstr "បញ្ហាដែលមិនដឹងបានកើតឡើង។" -#: cps/admin.py:717 +#: cps/admin.py:767 #, python-format msgid "Edit User %(nick)s" msgstr "កែប្រែអ្នកប្រើប្រាស់ %(nick)s" -#: cps/admin.py:733 +#: cps/admin.py:783 #, python-format msgid "Password for user %(user)s reset" msgstr "" -#: cps/admin.py:736 cps/web.py:1070 +#: cps/admin.py:786 cps/web.py:1065 msgid "An unknown error occurred. Please try again later." msgstr "" -#: cps/admin.py:755 +#: cps/admin.py:797 +msgid "Logfile viewer" +msgstr "" + +#: cps/admin.py:832 msgid "Requesting update package" msgstr "កំពុងស្នើសុំឯកសារបច្ចុប្បន្នភាព" -#: cps/admin.py:756 +#: cps/admin.py:833 msgid "Downloading update package" msgstr "កំពុងទាញយកឯកសារបច្ចុប្បន្នភាព" -#: cps/admin.py:757 +#: cps/admin.py:834 msgid "Unzipping update package" msgstr "កំពុងពន្លាឯកសារបច្ចុប្បន្នភាព" -#: cps/admin.py:758 +#: cps/admin.py:835 msgid "Replacing files" msgstr "" -#: cps/admin.py:759 +#: cps/admin.py:836 msgid "Database connections are closed" msgstr "ទំនាក់ទំនងទៅមូលដ្ឋានទិន្នន័យត្រូវបានផ្តាច់" -#: cps/admin.py:760 +#: cps/admin.py:837 msgid "Stopping server" msgstr "" -#: cps/admin.py:761 +#: cps/admin.py:838 msgid "Update finished, please press okay and reload page" msgstr "ការធ្វើបច្ចុប្បន្នភាពបានបញ្ចប់ សូមចុច okay រួចបើកទំព័រជាថ្មី" -#: cps/admin.py:762 cps/admin.py:763 cps/admin.py:764 cps/admin.py:765 +#: cps/admin.py:839 cps/admin.py:840 cps/admin.py:841 cps/admin.py:842 msgid "Update failed:" msgstr "" -#: cps/admin.py:762 cps/updater.py:277 cps/updater.py:456 cps/updater.py:458 +#: cps/admin.py:839 cps/updater.py:273 cps/updater.py:459 cps/updater.py:461 msgid "HTTP Error" msgstr "" -#: cps/admin.py:763 cps/updater.py:279 cps/updater.py:460 +#: cps/admin.py:840 cps/updater.py:275 cps/updater.py:463 msgid "Connection error" msgstr "" -#: cps/admin.py:764 cps/updater.py:281 cps/updater.py:462 +#: cps/admin.py:841 cps/updater.py:277 cps/updater.py:465 msgid "Timeout while establishing connection" msgstr "" -#: cps/admin.py:765 cps/updater.py:283 cps/updater.py:464 +#: cps/admin.py:842 cps/updater.py:279 cps/updater.py:467 msgid "General error" msgstr "" @@ -228,720 +244,714 @@ msgstr "ខ្វះសិទ្ធិប្រតិបត្តិការ" msgid "not configured" msgstr "" -#: cps/editbooks.py:218 cps/editbooks.py:432 +#: cps/editbooks.py:215 cps/editbooks.py:394 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "មានបញ្ហាពេលបើកឯកសារ eBook ។ ពុំមានឯកសារ ឬឯកសារនេះមិនអាចបើកបាន" -#: cps/editbooks.py:246 +#: cps/editbooks.py:243 msgid "edit metadata" msgstr "កែប្រែទិន្នន័យមេតា" -#: cps/editbooks.py:325 cps/editbooks.py:595 +#: cps/editbooks.py:322 cps/editbooks.py:557 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "ឯកសារប្រភេទ '%(ext)s' មិនត្រូវបានអនុញ្ញាតឲអាប់ឡូដទៅម៉ាស៊ីន server នេះទេ" -#: cps/editbooks.py:329 cps/editbooks.py:599 +#: cps/editbooks.py:326 cps/editbooks.py:561 msgid "File to be uploaded must have an extension" msgstr "ឯកសារដែលត្រូវអាប់ឡូដត្រូវមានកន្ទុយឯកសារ" -#: cps/editbooks.py:341 cps/editbooks.py:619 +#: cps/editbooks.py:338 cps/editbooks.py:581 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "មិនអាចបង្កើតទីតាំង %(path)s (ពុំមានសិទ្ធិ)។" -#: cps/editbooks.py:346 +#: cps/editbooks.py:343 #, python-format msgid "Failed to store file %(file)s." msgstr "មិនអាចរក្សាទុកឯកសារ %(file)s ។" -#: cps/editbooks.py:363 +#: cps/editbooks.py:360 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "ឯកសារទម្រង់ %(ext)s ត្រូវបានបន្ថែមទៅ %(book)s" -#: cps/editbooks.py:382 -#, python-format -msgid "Failed to create path for cover %(path)s (Permission denied)." -msgstr "" - -#: cps/editbooks.py:390 -#, python-format -msgid "Failed to store cover-file %(cover)s." -msgstr "" - -#: cps/editbooks.py:393 -msgid "Cover-file is not a valid image file" -msgstr "" - -#: cps/editbooks.py:399 cps/editbooks.py:413 +#: cps/editbooks.py:374 msgid "Cover is not a supported imageformat (jpg/png/webp), can't save" msgstr "" -#: cps/editbooks.py:445 cps/editbooks.py:454 +#: cps/editbooks.py:407 cps/editbooks.py:416 msgid "unknown" msgstr "មិនដឹង" -#: cps/editbooks.py:486 +#: cps/editbooks.py:448 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/editbooks.py:534 +#: cps/editbooks.py:496 #, python-format msgid "%(langname)s is not a valid language" msgstr "" -#: cps/editbooks.py:565 +#: cps/editbooks.py:527 msgid "Metadata successfully updated" msgstr "" -#: cps/editbooks.py:574 +#: cps/editbooks.py:536 msgid "Error editing book, please check logfile for details" msgstr "មានបញ្ហាពេលកែប្រែសៀវភៅ សូមពិនិត្យមើល logfile សម្រាប់ព័ត៌មានបន្ថែម" -#: cps/editbooks.py:624 +#: cps/editbooks.py:586 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "មិនអាចរក្សាទុកឯកសារ %(file)s (មិនមានសិទ្ធិ)។" -#: cps/editbooks.py:629 +#: cps/editbooks.py:591 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "មិនអាចលុបឯកសារ %(file)s (មិនមានសិទ្ធិ)។" -#: cps/editbooks.py:712 +#: cps/editbooks.py:674 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:741 +#: cps/editbooks.py:703 msgid "Source or destination format for conversion missing" msgstr "" -#: cps/editbooks.py:751 +#: cps/editbooks.py:711 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "" -#: cps/editbooks.py:755 +#: cps/editbooks.py:715 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "" -#: cps/gdrive.py:56 +#: cps/gdrive.py:61 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "" -#: cps/gdrive.py:101 +#: cps/gdrive.py:106 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "Callback domain មិនទាន់បានផ្ទៀងផ្ទាត់ឲប្រើទេ សូមធ្វើតាមជំហានដើម្បីផ្ទៀងផ្ទាត់ domain នៅក្នុង Google Developer Console" -#: cps/helper.py:97 +#: cps/helper.py:94 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "" -#: cps/helper.py:109 +#: cps/helper.py:106 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "" -#: cps/helper.py:116 cps/helper.py:223 cps/templates/detail.html:41 +#: cps/helper.py:113 cps/helper.py:220 cps/templates/detail.html:41 #: cps/templates/detail.html:45 msgid "Send to Kindle" msgstr "ផ្ញើទៅ Kindle" -#: cps/helper.py:117 cps/helper.py:135 cps/helper.py:225 +#: cps/helper.py:114 cps/helper.py:132 cps/helper.py:222 msgid "This e-mail has been sent via Calibre-Web." msgstr "" -#: cps/helper.py:128 +#: cps/helper.py:125 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "" -#: cps/helper.py:133 +#: cps/helper.py:130 msgid "Calibre-Web test e-mail" msgstr "" -#: cps/helper.py:134 +#: cps/helper.py:131 msgid "Test e-mail" msgstr "" -#: cps/helper.py:150 +#: cps/helper.py:147 msgid "Get Started with Calibre-Web" msgstr "" -#: cps/helper.py:151 +#: cps/helper.py:148 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "" -#: cps/helper.py:165 cps/helper.py:167 cps/helper.py:169 cps/helper.py:177 -#: cps/helper.py:179 cps/helper.py:181 +#: cps/helper.py:162 cps/helper.py:164 cps/helper.py:166 cps/helper.py:174 +#: cps/helper.py:176 cps/helper.py:178 #, python-format msgid "Send %(format)s to Kindle" msgstr "" -#: cps/helper.py:185 +#: cps/helper.py:182 #, python-format msgid "Convert %(orig)s to %(format)s and send to Kindle" msgstr "" -#: cps/helper.py:224 +#: cps/helper.py:221 #, python-format msgid "E-mail: %(book)s" msgstr "អ៊ីមែល៖ %(book)s" -#: cps/helper.py:227 +#: cps/helper.py:224 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "ឯកសារដែលបានស្នើសុំមិនអាចបើកបានទេ។ អាចនឹងខុសសិទ្ធិប្រើប្រាស់ទេដឹង?" -#: cps/helper.py:335 +#: cps/helper.py:331 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "ប្តូរចំណងជើងពី “%(src)s” ទៅជា “%(dest)s” បរាជ័យដោយបញ្ហា: %(error)s" -#: cps/helper.py:345 +#: cps/helper.py:341 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "ប្តូរអ្នកនិពន្ធពី “%(src)s” ទៅជា “%(dest)s” បរាជ័យដោយបញ្ហា: %(error)s" -#: cps/helper.py:359 +#: cps/helper.py:355 #, python-format msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:385 cps/helper.py:395 cps/helper.py:403 +#: cps/helper.py:381 cps/helper.py:391 cps/helper.py:399 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "ឯកសារ %(file)s រកមិនឃើញក្នុង Google Drive" -#: cps/helper.py:424 +#: cps/helper.py:420 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "ទីតាំងសៀវភៅ %(path)s រកមិនឃើញក្នុង Google Drive" -#: cps/helper.py:584 +#: cps/helper.py:579 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:586 +#: cps/helper.py:581 msgid "Unrar binary file not found" msgstr "" -#: cps/helper.py:614 +#: cps/helper.py:609 msgid "Waiting" msgstr "កំពុងរង់ចាំ" -#: cps/helper.py:616 +#: cps/helper.py:611 msgid "Failed" msgstr "បានបរាជ័យ" -#: cps/helper.py:618 +#: cps/helper.py:613 msgid "Started" msgstr "បានចាប់ផ្តើម" -#: cps/helper.py:620 +#: cps/helper.py:615 msgid "Finished" msgstr "បានបញ្ចប់" -#: cps/helper.py:622 +#: cps/helper.py:617 msgid "Unknown Status" msgstr "" -#: cps/helper.py:627 +#: cps/helper.py:622 msgid "E-mail: " msgstr "" -#: cps/helper.py:629 cps/helper.py:633 +#: cps/helper.py:624 cps/helper.py:628 msgid "Convert: " msgstr "" -#: cps/helper.py:631 +#: cps/helper.py:626 msgid "Upload: " msgstr "" -#: cps/helper.py:635 +#: cps/helper.py:630 msgid "Unknown Task: " msgstr "" -#: cps/oauth_bb.py:87 +#: cps/oauth_bb.py:91 #, python-format -msgid "Register with %s, " +msgid "Register with %(provider)s" msgstr "" -#: cps/oauth_bb.py:145 +#: cps/oauth_bb.py:149 msgid "Failed to log in with GitHub." msgstr "" -#: cps/oauth_bb.py:150 +#: cps/oauth_bb.py:154 msgid "Failed to fetch user info from GitHub." msgstr "" -#: cps/oauth_bb.py:161 +#: cps/oauth_bb.py:165 msgid "Failed to log in with Google." msgstr "" -#: cps/oauth_bb.py:166 +#: cps/oauth_bb.py:170 msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:265 +#: cps/oauth_bb.py:269 #, python-format msgid "Unlink to %(oauth)s success." msgstr "" -#: cps/oauth_bb.py:269 +#: cps/oauth_bb.py:273 #, python-format msgid "Unlink to %(oauth)s failed." msgstr "" -#: cps/oauth_bb.py:272 +#: cps/oauth_bb.py:276 #, python-format msgid "Not linked to %(oauth)s." msgstr "" -#: cps/oauth_bb.py:300 +#: cps/oauth_bb.py:304 msgid "GitHub Oauth error, please retry later." msgstr "" -#: cps/oauth_bb.py:319 +#: cps/oauth_bb.py:323 msgid "Google Oauth error, please retry later." msgstr "" -#: cps/shelf.py:40 cps/shelf.py:92 +#: cps/shelf.py:46 cps/shelf.py:98 msgid "Invalid shelf specified" msgstr "" -#: cps/shelf.py:47 +#: cps/shelf.py:53 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" msgstr "" -#: cps/shelf.py:55 +#: cps/shelf.py:61 msgid "You are not allowed to edit public shelves" msgstr "" -#: cps/shelf.py:64 +#: cps/shelf.py:70 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" msgstr "" -#: cps/shelf.py:78 +#: cps/shelf.py:84 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "សៀវភៅត្រូវបានបន្ថែមទៅធ្នើ៖ %(sname)s" -#: cps/shelf.py:97 +#: cps/shelf.py:103 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "" -#: cps/shelf.py:102 +#: cps/shelf.py:108 msgid "User is not allowed to edit public shelves" msgstr "" -#: cps/shelf.py:120 +#: cps/shelf.py:126 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "" -#: cps/shelf.py:134 +#: cps/shelf.py:140 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "" -#: cps/shelf.py:136 +#: cps/shelf.py:142 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "" -#: cps/shelf.py:173 +#: cps/shelf.py:179 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "សៀវភៅត្រូវបានដកចេញពីធ្នើ៖ %(sname)s" -#: cps/shelf.py:179 +#: cps/shelf.py:185 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "សូមអភ័យទោស អ្នកមិនមានសិទ្ធិដកសៀវភៅចេញពីធ្នើនេះទេ៖ %(sname)s" -#: cps/shelf.py:200 cps/shelf.py:224 +#: cps/shelf.py:206 cps/shelf.py:230 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "មានធ្នើដែលមានឈ្មោះ ‘%(title)s’ រួចហើយ។" -#: cps/shelf.py:205 +#: cps/shelf.py:211 #, python-format msgid "Shelf %(title)s created" msgstr "ធ្នើឈ្មោះ %(title)s ត្រូវបានបង្កើត" -#: cps/shelf.py:207 cps/shelf.py:235 +#: cps/shelf.py:213 cps/shelf.py:241 msgid "There was an error" msgstr "មានបញ្ហា" -#: cps/shelf.py:208 cps/shelf.py:210 +#: cps/shelf.py:214 cps/shelf.py:216 msgid "create a shelf" msgstr "បង្កើតធ្នើ" -#: cps/shelf.py:233 +#: cps/shelf.py:239 #, python-format msgid "Shelf %(title)s changed" msgstr "ធ្នើឈ្មោះ %(title)s ត្រូវបានប្តូរ" -#: cps/shelf.py:236 cps/shelf.py:238 +#: cps/shelf.py:242 cps/shelf.py:244 msgid "Edit a shelf" msgstr "កែប្រែធ្នើ" -#: cps/shelf.py:259 -#, python-format -msgid "successfully deleted shelf %(name)s" -msgstr "បានបង្កើតធ្នើឈ្មោះ %(name)s ដោយជោគជ័យ" - -#: cps/shelf.py:289 +#: cps/shelf.py:295 #, python-format msgid "Shelf: '%(name)s'" msgstr "ធ្នើ៖ ‘%(name)s’" -#: cps/shelf.py:292 +#: cps/shelf.py:298 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "មានបញ្ហាពេលបើកធ្នើ។ ពុំមានធ្នើ ឬមិនអាចបើកបាន" -#: cps/shelf.py:324 +#: cps/shelf.py:330 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "ប្តូរលំដាប់ធ្នើ៖ ‘%(name)s’" -#: cps/ub.py:111 +#: cps/ub.py:68 msgid "Recently Added" msgstr "ទើបបន្ថែមថ្មីៗ" -#: cps/ub.py:113 +#: cps/ub.py:70 msgid "Show recent books" msgstr "បង្ហាញសៀវភៅមកថ្មី" -#: cps/templates/index.xml:17 cps/ub.py:114 +#: cps/templates/index.xml:17 cps/ub.py:71 msgid "Hot Books" msgstr "សៀវភៅដែលមានប្រជាប្រិយភាព" -#: cps/ub.py:115 +#: cps/ub.py:72 msgid "Show hot books" msgstr "បង្ហាញសៀវភៅដែលមានប្រជាប្រិយភាព" -#: cps/templates/index.xml:24 cps/ub.py:118 +#: cps/templates/index.xml:24 cps/ub.py:75 msgid "Best rated Books" msgstr "សៀវភៅដែលមានការវាយតម្លៃល្អជាងគេ" -#: cps/ub.py:120 +#: cps/ub.py:77 msgid "Show best rated books" msgstr "បង្ហាញសៀវភៅដែលមានការវាយតម្លៃល្អជាងគេ" -#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:121 -#: cps/web.py:965 +#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:78 +#: cps/web.py:958 msgid "Read Books" msgstr "សៀវភៅដែលបានអានរួច" -#: cps/ub.py:123 +#: cps/ub.py:80 msgid "Show read and unread" msgstr "បង្ហាញអានរួច និងមិនទាន់អាន" -#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:125 -#: cps/web.py:969 +#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:82 +#: cps/web.py:962 msgid "Unread Books" msgstr "សៀវភៅដែលមិនទាន់បានអាន" -#: cps/ub.py:127 +#: cps/ub.py:84 msgid "Show unread" msgstr "" -#: cps/ub.py:128 +#: cps/ub.py:85 msgid "Discover" msgstr "ស្រាវជ្រាវ" -#: cps/ub.py:130 +#: cps/ub.py:87 msgid "Show random books" msgstr "បង្ហាញសៀវភៅចៃដន្យ" -#: cps/ub.py:131 +#: cps/ub.py:88 msgid "Categories" msgstr "ប្រភេទនានា" -#: cps/ub.py:133 +#: cps/ub.py:90 msgid "Show category selection" msgstr "បង្ហាញជម្រើសប្រភេទ" #: cps/templates/book_edit.html:71 cps/templates/search_form.html:53 -#: cps/ub.py:134 +#: cps/ub.py:91 msgid "Series" msgstr "ស៊េរី" -#: cps/ub.py:136 +#: cps/ub.py:93 msgid "Show series selection" msgstr "បង្ហាញជម្រើសស៊េរី" -#: cps/templates/index.xml:61 cps/ub.py:137 +#: cps/templates/index.xml:61 cps/ub.py:94 msgid "Authors" msgstr "អ្នកនិពន្ធ" -#: cps/ub.py:139 +#: cps/ub.py:96 msgid "Show author selection" msgstr "បង្ហាញជម្រើសអ្នកនិពន្ធ" -#: cps/templates/index.xml:68 cps/ub.py:141 +#: cps/templates/index.xml:68 cps/ub.py:98 msgid "Publishers" msgstr "" -#: cps/ub.py:143 +#: cps/ub.py:100 msgid "Show publisher selection" msgstr "" -#: cps/templates/search_form.html:74 cps/ub.py:144 +#: cps/templates/search_form.html:74 cps/ub.py:101 msgid "Languages" msgstr "ភាសានានា" -#: cps/ub.py:147 +#: cps/ub.py:104 msgid "Show language selection" msgstr "បង្ហាញផ្នែកភាសា" -#: cps/ub.py:148 +#: cps/ub.py:105 msgid "Ratings" msgstr "" -#: cps/ub.py:150 +#: cps/ub.py:107 msgid "Show ratings selection" msgstr "" -#: cps/ub.py:151 +#: cps/ub.py:108 msgid "File formats" msgstr "" -#: cps/ub.py:153 +#: cps/ub.py:110 msgid "Show file formats selection" msgstr "" -#: cps/updater.py:257 cps/updater.py:364 cps/updater.py:377 +#: cps/updater.py:253 cps/updater.py:360 cps/updater.py:373 msgid "Unexpected data while reading update information" msgstr "" -#: cps/updater.py:264 cps/updater.py:370 +#: cps/updater.py:260 cps/updater.py:366 msgid "No update available. You already have the latest version installed" msgstr "" -#: cps/updater.py:290 cps/updater.py:422 +#: cps/updater.py:286 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "" -#: cps/updater.py:343 +#: cps/updater.py:339 msgid "Could not fetch update information" msgstr "" -#: cps/updater.py:357 +#: cps/updater.py:353 msgid "No release information available" msgstr "" -#: cps/updater.py:403 cps/updater.py:412 +#: cps/updater.py:406 cps/updater.py:415 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "" -#: cps/web.py:457 +#: cps/updater.py:425 +msgid "Click on the button below to update to the latest stable version." +msgstr "" + +#: cps/web.py:445 msgid "Recently Added Books" msgstr "សៀវភៅដែលទើបបានបន្ថែម" -#: cps/web.py:484 +#: cps/web.py:473 msgid "Best rated books" msgstr "សៀវភៅដែលត្រូវបានវាយតម្លៃល្អជាងគេ" -#: cps/templates/index.xml:38 cps/web.py:492 +#: cps/templates/index.xml:38 cps/web.py:481 msgid "Random Books" msgstr "សៀវភៅចៃដន្យ" -#: cps/web.py:516 +#: cps/web.py:505 msgid "Books" msgstr "" -#: cps/web.py:543 +#: cps/web.py:532 msgid "Hot Books (most downloaded)" msgstr "សៀវភៅដែលត្រូវបានទាញយកច្រើនជាងគេ" -#: cps/web.py:553 cps/web.py:1294 cps/web.py:1383 +#: cps/web.py:542 cps/web.py:1298 cps/web.py:1386 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "មានបញ្ហាពេលបើកឯកសារ eBook ។ មិនមានឯកសារនេះ ឬមិនអាចបើកបាន៖" -#: cps/web.py:580 +#: cps/web.py:559 +#, python-format +msgid "Author: %(name)s" +msgstr "" + +#: cps/web.py:571 #, python-format msgid "Publisher: %(name)s" msgstr "" -#: cps/web.py:591 +#: cps/web.py:582 #, python-format msgid "Series: %(serie)s" msgstr "ស៊េរី៖ %(serie)s" -#: cps/web.py:602 +#: cps/web.py:593 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:613 +#: cps/web.py:604 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:625 +#: cps/web.py:616 #, python-format msgid "Category: %(name)s" msgstr "ប្រភេទ៖ %(name)s" -#: cps/web.py:659 +#: cps/web.py:650 msgid "Publisher list" msgstr "" -#: cps/templates/index.xml:82 cps/web.py:675 +#: cps/templates/index.xml:82 cps/web.py:666 msgid "Series list" msgstr "បញ្ជីស៊េរី" -#: cps/web.py:689 +#: cps/web.py:680 msgid "Ratings list" msgstr "" -#: cps/web.py:702 +#: cps/web.py:693 msgid "File formats list" msgstr "" -#: cps/web.py:730 +#: cps/web.py:721 msgid "Available languages" msgstr "ភាសាដែលមាន" -#: cps/web.py:750 +#: cps/web.py:741 #, python-format msgid "Language: %(name)s" msgstr "ភាសា៖ %(name)s" -#: cps/templates/index.xml:75 cps/web.py:764 +#: cps/templates/index.xml:75 cps/web.py:755 msgid "Category list" msgstr "បញ្ជីប្រភេទ" -#: cps/templates/layout.html:73 cps/web.py:777 +#: cps/templates/layout.html:73 cps/web.py:769 msgid "Tasks" msgstr "កិច្ចការនានា" -#: cps/web.py:841 +#: cps/web.py:834 msgid "Published after " msgstr "បានបោះពុម្ភក្រោយ " -#: cps/web.py:848 +#: cps/web.py:841 msgid "Published before " msgstr "បានបោះពុម្ភមុន " -#: cps/web.py:862 +#: cps/web.py:855 #, python-format msgid "Rating <= %(rating)s" msgstr "ការវាយតម្លៃ <= %(rating)s" -#: cps/web.py:864 +#: cps/web.py:857 #, python-format msgid "Rating >= %(rating)s" msgstr "ការវាយតម្លៃ >= %(rating)s" -#: cps/web.py:924 cps/web.py:933 +#: cps/web.py:917 cps/web.py:926 msgid "search" msgstr "ស្វែងរក" -#: cps/web.py:1018 +#: cps/web.py:1012 msgid "Please configure the SMTP mail settings first..." msgstr "សូមកំណត់អ៊ីមែល SMTP ជាមុនសិន" -#: cps/web.py:1023 +#: cps/web.py:1017 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "សៀវភៅបានចូលជួរសម្រាប់ផ្ញើទៅ %(kindlemail)s ដោយជោគជ័យ" -#: cps/web.py:1027 +#: cps/web.py:1021 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "មានបញ្ហានៅពេលផ្ញើសៀវភៅនេះ៖ %(res)s" -#: cps/web.py:1046 cps/web.py:1071 cps/web.py:1076 cps/web.py:1081 -#: cps/web.py:1085 +#: cps/web.py:1041 cps/web.py:1066 cps/web.py:1070 cps/web.py:1075 +#: cps/web.py:1079 msgid "register" msgstr "ចុះឈ្មោះ" -#: cps/web.py:1073 +#: cps/web.py:1068 msgid "Your e-mail is not allowed to register" msgstr "" -#: cps/web.py:1077 +#: cps/web.py:1071 msgid "Confirmation e-mail was send to your e-mail account." msgstr "" -#: cps/web.py:1080 +#: cps/web.py:1074 msgid "This username or e-mail address is already in use." msgstr "" -#: cps/web.py:1103 cps/web.py:1115 -#, python-format -msgid "You are now logged in as: '%(nickname)s'" +#: cps/web.py:1089 +msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1108 cps/web.py:1120 +#: cps/web.py:1098 cps/web.py:1212 +#, python-format +msgid "you are now logged in as: '%(nickname)s'" +msgstr "ឥឡូវអ្នកបានចូលដោយមានឈ្មោះថា៖ ‘%(nickname)s’" + +#: cps/web.py:1105 cps/web.py:1122 msgid "Wrong Username or Password" msgstr "ខុសឈ្មោះអ្នកប្រើប្រាស់ ឬលេខសម្ងាត់" -#: cps/web.py:1111 +#: cps/web.py:1108 msgid "Could not login. LDAP server down, please contact your administrator" msgstr "" -#: cps/web.py:1124 cps/web.py:1146 +#: cps/web.py:1117 +#, python-format +msgid "You are now logged in as: '%(nickname)s'" +msgstr "" + +#: cps/web.py:1126 cps/web.py:1148 msgid "login" msgstr "ចូលប្រើ" -#: cps/web.py:1158 cps/web.py:1189 +#: cps/web.py:1160 cps/web.py:1191 msgid "Token not found" msgstr "រកមិនឃើញវត្ថុតាង" -#: cps/web.py:1166 cps/web.py:1197 +#: cps/web.py:1168 cps/web.py:1199 msgid "Token has expired" msgstr "វត្ថុតាងហួសពេលកំណត់" -#: cps/web.py:1174 +#: cps/web.py:1176 msgid "Success! Please return to your device" msgstr "ជោគជ័យ! សូមវិលមកឧបករណ៍អ្នកវិញ" -#: cps/web.py:1210 -#, python-format -msgid "you are now logged in as: '%(nickname)s'" -msgstr "ឥឡូវអ្នកបានចូលដោយមានឈ្មោះថា៖ ‘%(nickname)s’" - -#: cps/web.py:1250 cps/web.py:1277 cps/web.py:1281 +#: cps/web.py:1253 cps/web.py:1280 cps/web.py:1284 #, python-format msgid "%(name)s's profile" msgstr "ព័ត៌មានសង្ខេបរបស់ %(name)s" -#: cps/web.py:1274 +#: cps/web.py:1277 msgid "Found an existing account for this e-mail address." msgstr "" -#: cps/web.py:1279 +#: cps/web.py:1282 msgid "Profile updated" msgstr "ព័ត៌មានសង្ខេបបានកែប្រែ" -#: cps/web.py:1304 cps/web.py:1306 cps/web.py:1308 cps/web.py:1314 -#: cps/web.py:1318 +#: cps/web.py:1308 cps/web.py:1310 cps/web.py:1312 cps/web.py:1318 +#: cps/web.py:1322 msgid "Read a Book" msgstr "អានសៀវភៅ" -#: cps/web.py:1328 +#: cps/web.py:1332 msgid "Error opening eBook. File does not exist or file is not accessible." msgstr "" -#: cps/worker.py:308 +#: cps/worker.py:311 #, python-format msgid "Ebook-converter failed: %(error)s" msgstr "Ebook-converter បានបរាជ័យ៖ %(error)s" -#: cps/worker.py:319 +#: cps/worker.py:322 #, python-format msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "Kindlegen បានបរាជ័យដោយមានកំហុស %(error)s. សារ៖ %(message)s" @@ -1057,53 +1067,57 @@ msgid "Administration" msgstr "កិច្ចការរដ្ឋបាល" #: cps/templates/admin.html:109 +msgid "View Logfiles" +msgstr "" + +#: cps/templates/admin.html:110 msgid "Reconnect to Calibre DB" msgstr "ភ្ជាប់ទៅ database Calibre ម្តងទៀត" -#: cps/templates/admin.html:110 +#: cps/templates/admin.html:111 msgid "Restart Calibre-Web" msgstr "" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:112 msgid "Stop Calibre-Web" msgstr "" -#: cps/templates/admin.html:117 +#: cps/templates/admin.html:118 msgid "Update" msgstr "" -#: cps/templates/admin.html:121 +#: cps/templates/admin.html:122 msgid "Version" msgstr "" -#: cps/templates/admin.html:122 +#: cps/templates/admin.html:123 msgid "Details" msgstr "" -#: cps/templates/admin.html:128 +#: cps/templates/admin.html:129 msgid "Current version" msgstr "" -#: cps/templates/admin.html:134 +#: cps/templates/admin.html:135 msgid "Check for update" msgstr "រកមើលបច្ចុប្បន្នភាព" -#: cps/templates/admin.html:135 +#: cps/templates/admin.html:136 msgid "Perform Update" msgstr "ធ្វើបច្ចុប្បន្នភាព" -#: cps/templates/admin.html:147 +#: cps/templates/admin.html:148 msgid "Do you really want to restart Calibre-Web?" msgstr "" -#: cps/templates/admin.html:152 cps/templates/admin.html:166 -#: cps/templates/admin.html:186 cps/templates/shelf.html:72 +#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:187 cps/templates/shelf.html:72 msgid "Ok" msgstr "បាទ/ចាស" -#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:154 cps/templates/admin.html:168 #: cps/templates/book_edit.html:174 cps/templates/book_edit.html:196 -#: cps/templates/config_edit.html:281 cps/templates/config_view_edit.html:147 +#: cps/templates/config_edit.html:331 cps/templates/config_view_edit.html:147 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 @@ -1111,11 +1125,11 @@ msgstr "បាទ/ចាស" msgid "Back" msgstr "មកក្រោយ" -#: cps/templates/admin.html:165 +#: cps/templates/admin.html:166 msgid "Do you really want to stop Calibre-Web?" msgstr "" -#: cps/templates/admin.html:177 +#: cps/templates/admin.html:178 msgid "Updating, please do not reload page" msgstr "កំពុងធ្វើបច្ចុប្បន្នភាព សូមកុំបើកទំព័រជាថ្មី" @@ -1244,7 +1258,7 @@ msgstr "មើលសៀវភៅក្រោយពីកែប្រែ" msgid "Get metadata" msgstr "មើលទិន្នន័យមេតា" -#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:279 +#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329 #: cps/templates/config_view_edit.html:146 cps/templates/login.html:20 #: cps/templates/search_form.html:150 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:130 @@ -1388,123 +1402,171 @@ msgstr "កម្រិត log" msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "ទីតាំង និងឈ្មោះ logfile (calibre-web.log ប្រសិនបើទទេ)" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:134 +msgid "Enable Access Log" +msgstr "" + +#: cps/templates/config_edit.html:137 +msgid "Location and name of access logfile (access.log for no entry)" +msgstr "" + +#: cps/templates/config_edit.html:148 msgid "Feature Configuration" msgstr "ការកំណត់មុខងារ" -#: cps/templates/config_edit.html:148 +#: cps/templates/config_edit.html:156 msgid "Enable uploading" msgstr "អនុញ្ញាតការអាប់ឡូត" -#: cps/templates/config_edit.html:152 +#: cps/templates/config_edit.html:160 msgid "Enable anonymous browsing" msgstr "អនុញ្ញាតការរុករកដោយអនាមិក" -#: cps/templates/config_edit.html:156 +#: cps/templates/config_edit.html:164 msgid "Enable public registration" msgstr "អនុញ្ញាតការចុះឈ្មោះសាធារណៈ" -#: cps/templates/config_edit.html:160 +#: cps/templates/config_edit.html:168 msgid "Enable remote login (\"magic link\")" msgstr "អនុញ្ញាតការ login ពីចម្ងាយ (ឬ “magic link”)" -#: cps/templates/config_edit.html:165 +#: cps/templates/config_edit.html:173 msgid "Use" msgstr "ប្រើប្រាស់" -#: cps/templates/config_edit.html:166 +#: cps/templates/config_edit.html:174 msgid "Obtain an API Key" msgstr "ទាញយក API key" -#: cps/templates/config_edit.html:170 +#: cps/templates/config_edit.html:178 msgid "Goodreads API Key" msgstr "Goodreads API key" -#: cps/templates/config_edit.html:174 +#: cps/templates/config_edit.html:182 msgid "Goodreads API Secret" msgstr "Goodreads API secret" -#: cps/templates/config_edit.html:181 +#: cps/templates/config_edit.html:189 msgid "Login type" msgstr "" -#: cps/templates/config_edit.html:183 +#: cps/templates/config_edit.html:191 msgid "Use standard Authentication" msgstr "" -#: cps/templates/config_edit.html:185 +#: cps/templates/config_edit.html:193 msgid "Use LDAP Authentication" msgstr "" -#: cps/templates/config_edit.html:188 +#: cps/templates/config_edit.html:196 msgid "Use GitHub OAuth" msgstr "" -#: cps/templates/config_edit.html:189 +#: cps/templates/config_edit.html:197 msgid "Use Google OAuth" msgstr "" -#: cps/templates/config_edit.html:196 -msgid "LDAP Provider URL" +#: cps/templates/config_edit.html:204 +msgid "LDAP Server Host Name or IP Address" +msgstr "" + +#: cps/templates/config_edit.html:208 +msgid "LDAP Server Port" +msgstr "" + +#: cps/templates/config_edit.html:212 +msgid "LDAP schema (ldap or ldaps)" +msgstr "" + +#: cps/templates/config_edit.html:216 +msgid "LDAP Admin username" +msgstr "" + +#: cps/templates/config_edit.html:220 +msgid "LDAP Admin password" msgstr "" -#: cps/templates/config_edit.html:200 +#: cps/templates/config_edit.html:225 +msgid "LDAP Server use SSL" +msgstr "" + +#: cps/templates/config_edit.html:229 +msgid "LDAP Server use TLS" +msgstr "" + +#: cps/templates/config_edit.html:233 +msgid "LDAP Server Certificate" +msgstr "" + +#: cps/templates/config_edit.html:237 +msgid "LDAP SSL Certificate Path" +msgstr "" + +#: cps/templates/config_edit.html:242 msgid "LDAP Distinguished Name (DN)" msgstr "" -#: cps/templates/config_edit.html:208 +#: cps/templates/config_edit.html:246 +msgid "LDAP User object filter" +msgstr "" + +#: cps/templates/config_edit.html:251 +msgid "LDAP Server is OpenLDAP?" +msgstr "" + +#: cps/templates/config_edit.html:258 msgid "Obtain GitHub OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:211 +#: cps/templates/config_edit.html:261 msgid "GitHub OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:215 +#: cps/templates/config_edit.html:265 msgid "GitHub OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:221 +#: cps/templates/config_edit.html:271 msgid "Obtain Google OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:224 +#: cps/templates/config_edit.html:274 msgid "Google OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:228 +#: cps/templates/config_edit.html:278 msgid "Google OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:242 +#: cps/templates/config_edit.html:292 msgid "External binaries" msgstr "" -#: cps/templates/config_edit.html:250 +#: cps/templates/config_edit.html:300 msgid "No converter" msgstr "គ្មានកម្មវិធីបម្លែង" -#: cps/templates/config_edit.html:252 +#: cps/templates/config_edit.html:302 msgid "Use Kindlegen" msgstr "ប្រើ Kindlegen" -#: cps/templates/config_edit.html:254 +#: cps/templates/config_edit.html:304 msgid "Use calibre's ebook converter" msgstr "ប្រើកម្មវិធីបម្លែង eBook របស់ Calibre" -#: cps/templates/config_edit.html:258 +#: cps/templates/config_edit.html:308 msgid "E-Book converter settings" msgstr "ការកំណត់របស់កម្មវិធីបម្លែង eBook" -#: cps/templates/config_edit.html:262 +#: cps/templates/config_edit.html:312 msgid "Path to convertertool" msgstr "ទីតាំងរបស់កម្មវិធីបម្លែង" -#: cps/templates/config_edit.html:268 +#: cps/templates/config_edit.html:318 msgid "Location of Unrar binary" msgstr "" -#: cps/templates/config_edit.html:284 cps/templates/layout.html:84 +#: cps/templates/config_edit.html:334 cps/templates/layout.html:84 #: cps/templates/login.html:4 msgid "Login" msgstr "ចូលប្រើប្រាស់" @@ -1718,7 +1780,7 @@ msgstr "" msgid "Discover (Random Books)" msgstr "ស្រាវជ្រាវ (សៀវភៅចៃដន្យ)" -#: cps/templates/index.html:65 +#: cps/templates/index.html:64 msgid "Group by series" msgstr "" @@ -1861,6 +1923,14 @@ msgstr "ចងចាំខ្ញុំ" msgid "Log in with magic link" msgstr "ចូលប្រើប្រាស់ដោយ magic link" +#: cps/templates/logviewer.html:5 +msgid "Show Calibre-Web log" +msgstr "" + +#: cps/templates/logviewer.html:8 +msgid "Show access log" +msgstr "" + #: cps/templates/osd.xml:5 msgid "Calibre-Web ebook catalog" msgstr "" @@ -2320,3 +2390,15 @@ msgstr "ការទាញយកថ្មីៗ" #~ msgid "PDF.js viewer" #~ msgstr "កម្មវិធីមើល PDF.js" +#~ msgid "Please enter a LDAP provider and a DN" +#~ msgstr "" + +#~ msgid "successfully deleted shelf %(name)s" +#~ msgstr "បានបង្កើតធ្នើឈ្មោះ %(name)s ដោយជោគជ័យ" + +#~ msgid "LDAP Provider URL" +#~ msgstr "" + +#~ msgid "Register with %s, " +#~ msgstr "" + diff --git a/cps/translations/nl/LC_MESSAGES/messages.mo b/cps/translations/nl/LC_MESSAGES/messages.mo index 5b4f0125..f6057405 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 c9d71938..74d4367d 100644 --- a/cps/translations/nl/LC_MESSAGES/messages.po +++ b/cps/translations/nl/LC_MESSAGES/messages.po @@ -6,211 +6,227 @@ # FIRST AUTHOR , 2017. msgid "" msgstr "" -"Project-Id-Version: Calibre-Web dutch translation by Ed Driesen (GPL V3)\n" +"Project-Id-Version: Calibre-Web (GPLV3)\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-05-31 11:20+0200\n" -"PO-Revision-Date: 2018-12-09 15:07+0100\n" -"Last-Translator: \n" +"POT-Creation-Date: 2019-06-22 19:54+0200\n" +"PO-Revision-Date: 2019-06-17 22:37+0200\n" +"Last-Translator: Heimen Stoffels \n" "Language: nl\n" "Language-Team: ed.driesen@telenet.be\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" -#: cps/about.py:76 +#: cps/about.py:78 msgid "Statistics" msgstr "Statistieken" -#: cps/admin.py:97 +#: cps/admin.py:98 msgid "Server restarted, please reload page" -msgstr "Server herstart, gelieve de pagina herladen" +msgstr "De server is herstart; vernieuw de pagina" #: cps/admin.py:100 msgid "Performing shutdown of server, please close window" -msgstr "Bezig met het stoppen van de server, gelieve venster te sluiten" +msgstr "Bezig het stoppen van server; sluit het venster" -#: cps/admin.py:120 cps/updater.py:445 +#: cps/admin.py:119 cps/updater.py:448 msgid "Unknown" msgstr "Onbekend" -#: cps/admin.py:139 +#: cps/admin.py:138 msgid "Admin page" -msgstr "Administratie pagina" +msgstr "Administratiepagina" -#: cps/admin.py:208 cps/admin.py:486 +#: cps/admin.py:207 cps/admin.py:532 msgid "Calibre-Web configuration updated" -msgstr "Calibre-Web configuratie aangepast" +msgstr "Calibre-Web-configuratie bijgewerkt" -#: cps/admin.py:222 cps/templates/admin.html:102 +#: cps/admin.py:220 cps/templates/admin.html:102 msgid "UI Configuration" -msgstr "Gebruikersinterface configuratie" +msgstr "Uiterlijke instellingen" -#: cps/admin.py:295 +#: cps/admin.py:293 msgid "Import of optional Google Drive requirements missing" msgstr "De import van optionele Google Drive vereisten ontbreken" -#: cps/admin.py:298 +#: cps/admin.py:296 msgid "client_secrets.json is missing or not readable" msgstr "client_secrets.json ontbreekt of is niet leesbaar" -#: cps/admin.py:303 cps/admin.py:332 +#: cps/admin.py:301 cps/admin.py:330 msgid "client_secrets.json is not configured for web application" msgstr "client_secrets.json is niet geconfigureerd voor web applicaties" -#: cps/admin.py:335 cps/admin.py:361 cps/admin.py:373 cps/admin.py:398 -#: cps/admin.py:426 cps/admin.py:440 cps/admin.py:463 cps/admin.py:476 -#: cps/admin.py:494 cps/admin.py:501 cps/admin.py:516 -#: cps/templates/admin.html:101 +#: cps/admin.py:333 cps/admin.py:359 cps/admin.py:371 cps/admin.py:396 +#: cps/admin.py:403 cps/admin.py:436 cps/admin.py:460 cps/admin.py:474 +#: cps/admin.py:493 cps/admin.py:510 cps/admin.py:522 cps/admin.py:538 +#: cps/admin.py:545 cps/admin.py:559 cps/templates/admin.html:101 msgid "Basic Configuration" msgstr "Basis configuratie" -#: cps/admin.py:358 +#: cps/admin.py:356 msgid "Keyfile location is not valid, please enter correct path" msgstr "Sleutelbestand (\"keyfile\") locatie ongeldig, gelieve het correcte pad in te geven" -#: cps/admin.py:370 +#: cps/admin.py:368 cps/admin.py:433 msgid "Certfile location is not valid, please enter correct path" msgstr "Certificatiebestand (\"certfile\") locatie ongeldig, gelieve het correcte pad in te geven" -#: cps/admin.py:395 -msgid "Please enter a LDAP provider and a DN" +#: cps/admin.py:393 +msgid "Please enter a LDAP provider, port, DN and user object identifier" msgstr "" -#: cps/admin.py:423 +#: cps/admin.py:400 +msgid "Please enter a LDAP service account and password" +msgstr "" + +#: cps/admin.py:457 msgid "Please enter Github oauth credentials" msgstr "" -#: cps/admin.py:437 +#: cps/admin.py:471 msgid "Please enter Google oauth credentials" msgstr "" -#: cps/admin.py:460 +#: cps/admin.py:490 msgid "Logfile location is not valid, please enter correct path" -msgstr "Log bestand (\"logfile\") locatie ongeldig, gelieve het correcte pad in te geven" +msgstr "De locatie met logbestanden is ongeldig; geef het juiste pad op" -#: cps/admin.py:498 +#: cps/admin.py:507 +msgid "Access Logfile location is not valid, please enter correct path" +msgstr "" + +#: cps/admin.py:542 msgid "DB location is not valid, please enter correct path" -msgstr "DB locatie is niet geldig, gelieve het correcte pad in te geven" +msgstr "De DB-locatie is ongeldig; geef het juiste pad op" -#: cps/admin.py:558 cps/web.py:1045 +#: cps/admin.py:602 cps/web.py:1040 msgid "Please fill out all fields!" -msgstr "Gelieve alle velden in te vullen!" +msgstr "Vul alle velden in!" -#: cps/admin.py:560 cps/admin.py:566 cps/admin.py:582 +#: cps/admin.py:604 cps/admin.py:610 cps/admin.py:626 #: cps/templates/admin.html:35 msgid "Add new user" -msgstr "Voeg nieuwe gebruiker toe" +msgstr "Nieuwe gebruiker toevoegen" -#: cps/admin.py:564 cps/web.py:1248 +#: cps/admin.py:608 cps/web.py:1251 msgid "E-mail is not from valid domain" -msgstr "Email is niet van een geldig domein" +msgstr "Het e-mailadres bevat geen geldige domeinnaam" -#: cps/admin.py:572 +#: cps/admin.py:616 #, python-format msgid "User '%(user)s' created" -msgstr "Gebruiker '%(user)s' aangemaakt" +msgstr "Gebruiker '%(user)s' is gecreëerd" -#: cps/admin.py:576 +#: cps/admin.py:620 msgid "Found an existing account for this e-mail address or nickname." -msgstr "Een bestaande account gevonden met dit email adres of gebruikersnaam." +msgstr "Er is een bestaand account met dit e-mailadres of deze gebruikersnaam aangetroffen." -#: cps/admin.py:607 +#: cps/admin.py:651 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" -msgstr "Test email met succes verzonden naar %(kindlemail)s" +msgstr "De test-e-mail is verstuurd naar %(kindlemail)s" -#: cps/admin.py:610 +#: cps/admin.py:654 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" -msgstr "Er was een fout bij het verzenden van test email: %(res)s" +msgstr "Er is een fout opgetreden bij het versturen van de test-e-mail: %(res)s" -#: cps/admin.py:612 cps/web.py:1029 +#: cps/admin.py:656 cps/web.py:1023 msgid "Please configure your kindle e-mail address first..." -msgstr "Gelieve eerst je kindle mailadres te configureren..." +msgstr "Stel eerst je kindle-mailadres in..." -#: cps/admin.py:614 +#: cps/admin.py:658 msgid "E-mail server settings updated" -msgstr "Email server instellingen aangepast" +msgstr "E-mailserverinstellingen bijgewerkt" -#: cps/admin.py:615 +#: cps/admin.py:659 msgid "Edit e-mail server settings" -msgstr "Bewerk email server instellingen" +msgstr "E-mailserverinstellingen bewerken" -#: cps/admin.py:640 +#: cps/admin.py:687 #, python-format msgid "User '%(nick)s' deleted" -msgstr "Gebruiker '%(nick)s' verwijderd" +msgstr "Gebruiker '%(nick)s' is verwijderd" + +#: cps/admin.py:690 +msgid "No admin user remaining, can't delete user" +msgstr "" -#: cps/admin.py:711 +#: cps/admin.py:761 #, python-format msgid "User '%(nick)s' updated" -msgstr "Gebruiker '%(nick)s' aangepast" +msgstr "Gebruiker '%(nick)s' is bijgewerkt" -#: cps/admin.py:714 +#: cps/admin.py:764 msgid "An unknown error occured." -msgstr "Een onbekende fout deed zich voor." +msgstr "Er is een onbekende fout opgetreden." -#: cps/admin.py:717 +#: cps/admin.py:767 #, python-format msgid "Edit User %(nick)s" -msgstr "Bewerk gebruiker '%(nick)s" +msgstr "Gebruiker '%(nick)s' bewerken" -#: cps/admin.py:733 +#: cps/admin.py:783 #, python-format msgid "Password for user %(user)s reset" -msgstr "Wachtwoord voor gebruiker %(user)s gereset" +msgstr "Wachtwoord voor gebruiker %(user)s is hersteld" -#: cps/admin.py:736 cps/web.py:1070 +#: cps/admin.py:786 cps/web.py:1065 msgid "An unknown error occurred. Please try again later." -msgstr "Er was een onbekende fout. Gelieve later nog eens te proberen." +msgstr "Er is een onbekende fout opgetreden. Probeer het later nog eens." -#: cps/admin.py:755 +#: cps/admin.py:797 +msgid "Logfile viewer" +msgstr "" + +#: cps/admin.py:832 msgid "Requesting update package" -msgstr "Update pakket wordt aangevraagd" +msgstr "Bezig met opvragen van updatepakket" -#: cps/admin.py:756 +#: cps/admin.py:833 msgid "Downloading update package" -msgstr "Update pakket wordt gedownload" +msgstr "Bezig met downloaden van updatepakket" -#: cps/admin.py:757 +#: cps/admin.py:834 msgid "Unzipping update package" -msgstr "Update pakket wordt uitgepakt" +msgstr "Bezig met uitpakken van updatepakket" -#: cps/admin.py:758 +#: cps/admin.py:835 msgid "Replacing files" -msgstr "Bestanden aan het vervangen" +msgstr "Bezig met bestandsvervanging" -#: cps/admin.py:759 +#: cps/admin.py:836 msgid "Database connections are closed" -msgstr "Database verbindingen zijn gesloten" +msgstr "Databankverbindingen zijn gesloten" -#: cps/admin.py:760 +#: cps/admin.py:837 msgid "Stopping server" -msgstr "Server aan het stoppen" +msgstr "Bezig met stoppen van server" -#: cps/admin.py:761 +#: cps/admin.py:838 msgid "Update finished, please press okay and reload page" -msgstr "Update voltooid, klik op ok en herlaad de pagina" +msgstr "Update voltooid; klik op 'Oké' en vernieuw de pagina" -#: cps/admin.py:762 cps/admin.py:763 cps/admin.py:764 cps/admin.py:765 +#: cps/admin.py:839 cps/admin.py:840 cps/admin.py:841 cps/admin.py:842 msgid "Update failed:" -msgstr "Update gefaald:" +msgstr "Update mislukt:" -#: cps/admin.py:762 cps/updater.py:277 cps/updater.py:456 cps/updater.py:458 +#: cps/admin.py:839 cps/updater.py:273 cps/updater.py:459 cps/updater.py:461 msgid "HTTP Error" -msgstr "HTTP fout" +msgstr "HTTP-fout" -#: cps/admin.py:763 cps/updater.py:279 cps/updater.py:460 +#: cps/admin.py:840 cps/updater.py:275 cps/updater.py:463 msgid "Connection error" msgstr "Verbindingsfout" -#: cps/admin.py:764 cps/updater.py:281 cps/updater.py:462 +#: cps/admin.py:841 cps/updater.py:277 cps/updater.py:465 msgid "Timeout while establishing connection" -msgstr "Time-out bij het maken van de verbinding" +msgstr "Time-out tijdens maken van verbinding" -#: cps/admin.py:765 cps/updater.py:283 cps/updater.py:464 +#: cps/admin.py:842 cps/updater.py:279 cps/updater.py:467 msgid "General error" msgstr "Algemene fout" @@ -222,729 +238,723 @@ msgstr "niet geïnstalleerd" #: cps/converter.py:43 cps/converter.py:60 msgid "Excecution permissions missing" -msgstr "Rechten om uit te voeren ontbreken" +msgstr "Machtigingen om uit te voeren ontbreken" #: cps/converter.py:70 msgid "not configured" -msgstr "Niet geconfigureerd" +msgstr "niet ingesteld" -#: cps/editbooks.py:218 cps/editbooks.py:432 +#: cps/editbooks.py:215 cps/editbooks.py:394 msgid "Error opening eBook. File does not exist or file is not accessible" -msgstr "Fout bij openen eBook. Het bestand bestaat niet of is niet toegankelijk" +msgstr "Kan e-boek niet openen: het bestand bestaat niet of is ontoegankelijk" -#: cps/editbooks.py:246 +#: cps/editbooks.py:243 msgid "edit metadata" -msgstr "bewerk metadata" +msgstr "metagegevens bewerken" -#: cps/editbooks.py:325 cps/editbooks.py:595 +#: cps/editbooks.py:322 cps/editbooks.py:557 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" -msgstr "Het uploaden van bestandsextensie '%(ext)s' is niet toegestaan op deze server" +msgstr "De bestandsextensie '%(ext)s' is niet toegestaan op deze server" -#: cps/editbooks.py:329 cps/editbooks.py:599 +#: cps/editbooks.py:326 cps/editbooks.py:561 msgid "File to be uploaded must have an extension" -msgstr "Up te loaden bestanden dienen een extensie te hebben" +msgstr "Het te uploaden bestand moet voorzien zijn van een extensie" -#: cps/editbooks.py:341 cps/editbooks.py:619 +#: cps/editbooks.py:338 cps/editbooks.py:581 #, python-format msgid "Failed to create path %(path)s (Permission denied)." -msgstr "Het pad %(path)s aanmaken mislukt (Geen toestemming)." +msgstr "Kan het pad '%(path)s' niet creëren (niet gemachtigd)." -#: cps/editbooks.py:346 +#: cps/editbooks.py:343 #, python-format msgid "Failed to store file %(file)s." -msgstr "Bestand opslaan niet gelukt voor %(file)s." +msgstr "Kan %(file)s niet opslaan." -#: cps/editbooks.py:363 +#: cps/editbooks.py:360 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Bestandsformaat %(ext)s toegevoegd aan %(book)s" -#: cps/editbooks.py:382 -#, python-format -msgid "Failed to create path for cover %(path)s (Permission denied)." -msgstr "" - -#: cps/editbooks.py:390 -#, python-format -msgid "Failed to store cover-file %(cover)s." -msgstr "" - -#: cps/editbooks.py:393 -msgid "Cover-file is not a valid image file" -msgstr "" - -#: cps/editbooks.py:399 cps/editbooks.py:413 +#: cps/editbooks.py:374 msgid "Cover is not a supported imageformat (jpg/png/webp), can't save" -msgstr "" +msgstr "Het omslagbestand is een niet-ondersteund afbeeldingsformaat (jpg/png/webp); kan niet opslaan" -#: cps/editbooks.py:445 cps/editbooks.py:454 +#: cps/editbooks.py:407 cps/editbooks.py:416 msgid "unknown" msgstr "onbekend" -#: cps/editbooks.py:486 +#: cps/editbooks.py:448 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/editbooks.py:534 +#: cps/editbooks.py:496 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s is geen geldige taal" -#: cps/editbooks.py:565 +#: cps/editbooks.py:527 msgid "Metadata successfully updated" -msgstr "Metadata succesvol geüpdatet" +msgstr "De metagegevens zijn bijgewerkt" -#: cps/editbooks.py:574 +#: cps/editbooks.py:536 msgid "Error editing book, please check logfile for details" -msgstr "Fout bij het bewerken van het boek, gelieve logfile controleren" +msgstr "Kan het boek niet bewerken; controleer het logbestand" -#: cps/editbooks.py:624 +#: cps/editbooks.py:586 #, python-format msgid "Failed to store file %(file)s (Permission denied)." -msgstr "Bestand %(file)s opslaan mislukt (Geen toestemming)." +msgstr "Kan %(file)s niet opslaan (niet gemachtigd)." -#: cps/editbooks.py:629 +#: cps/editbooks.py:591 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." -msgstr "Bestand %(file)s wissen mislukt (Geen toestemming)." +msgstr "Kan %(file)s niet verwijderen (niet gemachtigd)." -#: cps/editbooks.py:712 +#: cps/editbooks.py:674 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:741 +#: cps/editbooks.py:703 msgid "Source or destination format for conversion missing" -msgstr "Bron of doel formaat voor conversie ontbreekt" +msgstr "Bron- of doelformaat ontbreekt voor conversie" -#: cps/editbooks.py:751 +#: cps/editbooks.py:711 #, python-format msgid "Book successfully queued for converting to %(book_format)s" -msgstr "Boek succesvol in de wachtrij geplaatst voor conversie naar %(book_format)s" +msgstr "Het boek is in de wachtrij geplaatst voor conversie naar %(book_format)s" -#: cps/editbooks.py:755 +#: cps/editbooks.py:715 #, python-format msgid "There was an error converting this book: %(res)s" -msgstr "Er trad een fout op bij het converteren van dit boek: %(res)s" +msgstr "Er is een fout opgetreden bij het converteren van dit boek: %(res)s" -#: cps/gdrive.py:56 +#: cps/gdrive.py:61 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" -msgstr "" +msgstr "Het instellen van Google Drive is niet afgerond; heractiveer Google Drive" -#: cps/gdrive.py:101 +#: cps/gdrive.py:106 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" -msgstr "Het callback domein is niet geverifieerd, volg de stappen in de google ontwikkelaars console om het domein te verifiëren" +msgstr "Het callback-domein is niet geverifieerd. Volg de stappen in de Google-ontwikkelaarsconsole om het domein te verifiëren." -#: cps/helper.py:97 +#: cps/helper.py:94 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "%(format)s formaat niet gevonden voor boek met id: %(book)d" -#: cps/helper.py:109 +#: cps/helper.py:106 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" -msgstr "%(format)s niet gevonden op Google Drive: %(fn)s" +msgstr "%(format)s niet aangetroffen op Google Drive: %(fn)s" -#: cps/helper.py:116 cps/helper.py:223 cps/templates/detail.html:41 +#: cps/helper.py:113 cps/helper.py:220 cps/templates/detail.html:41 #: cps/templates/detail.html:45 msgid "Send to Kindle" -msgstr "Stuur naar Kindle" +msgstr "Versturen naar Kindle" -#: cps/helper.py:117 cps/helper.py:135 cps/helper.py:225 +#: cps/helper.py:114 cps/helper.py:132 cps/helper.py:222 msgid "This e-mail has been sent via Calibre-Web." -msgstr "Deze email werd verzonden via Calibre-Web." +msgstr "Deze e-mail is verstuurd via Calibre-Web." -#: cps/helper.py:128 +#: cps/helper.py:125 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "%(format)s niet gevonden %(fn)s" -#: cps/helper.py:133 +#: cps/helper.py:130 msgid "Calibre-Web test e-mail" -msgstr "Calibre-Web test email" +msgstr "Calibre-Web - test-e-mail" -#: cps/helper.py:134 +#: cps/helper.py:131 msgid "Test e-mail" -msgstr "Test email" +msgstr "Test-e-mail" -#: cps/helper.py:150 +#: cps/helper.py:147 msgid "Get Started with Calibre-Web" msgstr "Aan de slag met Calibre-Web" -#: cps/helper.py:151 +#: cps/helper.py:148 #, python-format msgid "Registration e-mail for user: %(name)s" -msgstr "Registratie email voor gebruiker: %(name)s" +msgstr "Registratie-e-mailadres van gebruiker: %(name)s" -#: cps/helper.py:165 cps/helper.py:167 cps/helper.py:169 cps/helper.py:177 -#: cps/helper.py:179 cps/helper.py:181 +#: cps/helper.py:162 cps/helper.py:164 cps/helper.py:166 cps/helper.py:174 +#: cps/helper.py:176 cps/helper.py:178 #, python-format msgid "Send %(format)s to Kindle" -msgstr "" +msgstr "%(format)s versturen naar Kindle" -#: cps/helper.py:185 +#: cps/helper.py:182 #, python-format msgid "Convert %(orig)s to %(format)s and send to Kindle" -msgstr "" +msgstr "%(orig)s converteren naar %(format)s en versturen naar Kindle" -#: cps/helper.py:224 +#: cps/helper.py:221 #, python-format msgid "E-mail: %(book)s" -msgstr "Email: %(book)s" +msgstr "E-mail: %(book)s" -#: cps/helper.py:227 +#: cps/helper.py:224 msgid "The requested file could not be read. Maybe wrong permissions?" -msgstr "Het gevraagde bestand kon niet worden gelezen. Misschien niet de juiste permissies?" +msgstr "Het opgevraagde bestand kan niet worden uitgelezen. Ben je hiertoe gemachtigd?" -#: cps/helper.py:335 +#: cps/helper.py:331 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" -msgstr "Hernoemen van titel: '%(src)s' naar '%(dest)s' faade met fout: %(error)s" +msgstr "Kan de naam '%(src)s' niet wijzigen in '%(dest)s': %(error)s" -#: cps/helper.py:345 +#: cps/helper.py:341 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" -msgstr "Hernoemen van de auteur: '%(src)s' naar '%(dest)s' faalde met fout: %(error)s" +msgstr "Kan de auteursnaam '%(src)s' niet wijzigen in '%(dest)s': %(error)s" -#: cps/helper.py:359 +#: cps/helper.py:355 #, python-format msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" -msgstr "" +msgstr "Kan de naam van het bestand in '%(src)s' niet wijzigen in '%(dest)s': %(error)s" -#: cps/helper.py:385 cps/helper.py:395 cps/helper.py:403 +#: cps/helper.py:381 cps/helper.py:391 cps/helper.py:399 #, python-format msgid "File %(file)s not found on Google Drive" -msgstr "Bestand %(file)s niet gevonden op Google Drive" +msgstr "Bestand '%(file)s' niet aangetroffen op Google Drive" -#: cps/helper.py:424 +#: cps/helper.py:420 #, python-format msgid "Book path %(path)s not found on Google Drive" -msgstr "Boek pad %(path)s niet gevonden op Google Drive" +msgstr "Boekpad '%(path)s' niet aangetroffen op Google Drive" -#: cps/helper.py:584 +#: cps/helper.py:579 msgid "Error excecuting UnRar" -msgstr "Fout bij het uitvoeren van UnRar" +msgstr "Kan UnRar niet uitvoeren" -#: cps/helper.py:586 +#: cps/helper.py:581 msgid "Unrar binary file not found" -msgstr "Unrar uitvoeringsbestand niet gevonden" +msgstr "Kan uitvoerbaar bestand van UnRar niet vinden" -#: cps/helper.py:614 +#: cps/helper.py:609 msgid "Waiting" -msgstr "Wachten" +msgstr "Aan het wachten" -#: cps/helper.py:616 +#: cps/helper.py:611 msgid "Failed" msgstr "Mislukt" -#: cps/helper.py:618 +#: cps/helper.py:613 msgid "Started" msgstr "Gestart" -#: cps/helper.py:620 +#: cps/helper.py:615 msgid "Finished" msgstr "Voltooid" -#: cps/helper.py:622 +#: cps/helper.py:617 msgid "Unknown Status" msgstr "Onbekende status" -#: cps/helper.py:627 +#: cps/helper.py:622 msgid "E-mail: " -msgstr "Email:" +msgstr "E-mailadres: " -#: cps/helper.py:629 cps/helper.py:633 +#: cps/helper.py:624 cps/helper.py:628 msgid "Convert: " -msgstr "Converteer:" +msgstr "Converteren: " -#: cps/helper.py:631 +#: cps/helper.py:626 msgid "Upload: " -msgstr "Upload:" +msgstr "Uploaden: " -#: cps/helper.py:635 +#: cps/helper.py:630 msgid "Unknown Task: " -msgstr "Onbekende taak:" +msgstr "Onbekende taak: " -#: cps/oauth_bb.py:87 +#: cps/oauth_bb.py:91 #, python-format -msgid "Register with %s, " +msgid "Register with %(provider)s" msgstr "" -#: cps/oauth_bb.py:145 +#: cps/oauth_bb.py:149 msgid "Failed to log in with GitHub." msgstr "" -#: cps/oauth_bb.py:150 +#: cps/oauth_bb.py:154 msgid "Failed to fetch user info from GitHub." msgstr "" -#: cps/oauth_bb.py:161 +#: cps/oauth_bb.py:165 msgid "Failed to log in with Google." msgstr "" -#: cps/oauth_bb.py:166 +#: cps/oauth_bb.py:170 msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:265 +#: cps/oauth_bb.py:269 #, python-format msgid "Unlink to %(oauth)s success." msgstr "" -#: cps/oauth_bb.py:269 +#: cps/oauth_bb.py:273 #, python-format msgid "Unlink to %(oauth)s failed." msgstr "" -#: cps/oauth_bb.py:272 +#: cps/oauth_bb.py:276 #, python-format msgid "Not linked to %(oauth)s." msgstr "" -#: cps/oauth_bb.py:300 +#: cps/oauth_bb.py:304 msgid "GitHub Oauth error, please retry later." msgstr "" -#: cps/oauth_bb.py:319 +#: cps/oauth_bb.py:323 msgid "Google Oauth error, please retry later." msgstr "" -#: cps/shelf.py:40 cps/shelf.py:92 +#: cps/shelf.py:46 cps/shelf.py:98 msgid "Invalid shelf specified" -msgstr "Ongeldige boekenplank gespecificeerd" +msgstr "Ongeldige boekenplank opgegeven" -#: cps/shelf.py:47 +#: cps/shelf.py:53 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" -msgstr "Sorry, jij mag geen boeken toe voegen aan boekenplank: %(shelfname)s" +msgstr "Sorry, je mag geen boeken toevoegen aan de boekenplank '%(shelfname)s'" -#: cps/shelf.py:55 +#: cps/shelf.py:61 msgid "You are not allowed to edit public shelves" -msgstr "Jij mag geen publieke boekenplanken bewerken" +msgstr "Je mag openbare boekenplanken niet aanpassen" -#: cps/shelf.py:64 +#: cps/shelf.py:70 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" -msgstr "Dit boek maakt al deel uit van boekenplank: %(shelfname)s" +msgstr "Dit boek maakt al deel uit van de boekenplank '%(shelfname)s'" -#: cps/shelf.py:78 +#: cps/shelf.py:84 #, python-format msgid "Book has been added to shelf: %(sname)s" -msgstr "Boek werd toegevoegd aan boekenplank: %(sname)s" +msgstr "Het boek is toegevoegd aan de boekenplank '%(sname)s'" -#: cps/shelf.py:97 +#: cps/shelf.py:103 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" -msgstr "Jij mag geen boeken plaatsen op boekenplank: %(name)s" +msgstr "Je mag geen boeken plaatsen op de boekenplank '%(name)s'" -#: cps/shelf.py:102 +#: cps/shelf.py:108 msgid "User is not allowed to edit public shelves" -msgstr "Gebruiker is niet toegestaan om publieke boekenplanken te bewerken" +msgstr "Gebruiker is niet toegestaan om openbare boekenplanken aan te passen" -#: cps/shelf.py:120 +#: cps/shelf.py:126 #, python-format msgid "Books are already part of the shelf: %(name)s" -msgstr "Deze boeken maken reeds deel uit van boekenplank: %(name)s" +msgstr "Deze boeken maken al deel uit van de boekenplank '%(name)s'" -#: cps/shelf.py:134 +#: cps/shelf.py:140 #, python-format msgid "Books have been added to shelf: %(sname)s" -msgstr "De boeken werden toegevoegd aan boekenplank: %(sname)s" +msgstr "De boeken zijn toegevoegd aan de boekenplank '%(sname)s'" -#: cps/shelf.py:136 +#: cps/shelf.py:142 #, python-format msgid "Could not add books to shelf: %(sname)s" -msgstr "Kon geen boeken toevoegen aan boekenplank: %(sname)s" +msgstr "Kan boeken niet toevoegen aan boekenplank '%(sname)s'" -#: cps/shelf.py:173 +#: cps/shelf.py:179 #, python-format msgid "Book has been removed from shelf: %(sname)s" -msgstr "Boek werd verwijderd van boekenplank: %(sname)s" +msgstr "Het boek werd verwijderd van de boekenplank '%(sname)s'" -#: cps/shelf.py:179 +#: cps/shelf.py:185 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" -msgstr "Sorry, jij mag geen boeken verwijderen van deze boekenplank: %(sname)s" +msgstr "Sorry, je mag geen boeken verwijderen van deze boekenplank: %(sname)s" -#: cps/shelf.py:200 cps/shelf.py:224 +#: cps/shelf.py:206 cps/shelf.py:230 #, python-format msgid "A shelf with the name '%(title)s' already exists." -msgstr "Een boekenplank met de naam '%(title)s' bestaat reeds." +msgstr "Er bestaat al een boekenplank met de naam '%(title)s'." -#: cps/shelf.py:205 +#: cps/shelf.py:211 #, python-format msgid "Shelf %(title)s created" -msgstr "Boekenplank %(title)s aangemaakt" +msgstr "Boekenplank '%(title)s' is gecreëerd" -#: cps/shelf.py:207 cps/shelf.py:235 +#: cps/shelf.py:213 cps/shelf.py:241 msgid "There was an error" -msgstr "Er deed zich een fout voor" +msgstr "Er is een fout opgetreden" -#: cps/shelf.py:208 cps/shelf.py:210 +#: cps/shelf.py:214 cps/shelf.py:216 msgid "create a shelf" -msgstr "maak een boekenplank" +msgstr "creëer een boekenplank" -#: cps/shelf.py:233 +#: cps/shelf.py:239 #, python-format msgid "Shelf %(title)s changed" -msgstr "Boekenplank %(title)s gewijzigd" +msgstr "Boekenplank '%(title)s' is aangepast" -#: cps/shelf.py:236 cps/shelf.py:238 +#: cps/shelf.py:242 cps/shelf.py:244 msgid "Edit a shelf" -msgstr "Bewerk een boekenplank" - -#: cps/shelf.py:259 -#, python-format -msgid "successfully deleted shelf %(name)s" -msgstr "boekenplank %(name)s succesvol gewist" +msgstr "Pas een boekenplank aan" -#: cps/shelf.py:289 +#: cps/shelf.py:295 #, python-format msgid "Shelf: '%(name)s'" msgstr "Boekenplank: '%(name)s'" -#: cps/shelf.py:292 +#: cps/shelf.py:298 msgid "Error opening shelf. Shelf does not exist or is not accessible" -msgstr "Fout bij openen boekenplank. Boekenplank bestaat niet of is niet toegankelijk" +msgstr "Kan boekenplank niet openen: de boekenplank bestaat niet of is ontoegankelijk" -#: cps/shelf.py:324 +#: cps/shelf.py:330 #, python-format msgid "Change order of Shelf: '%(name)s'" -msgstr "Verander volgorde van Boekenplank: '%(name)s'" +msgstr "Volgorde aanpassen van boekenplank '%(name)s'" -#: cps/ub.py:111 +#: cps/ub.py:68 msgid "Recently Added" -msgstr "Recent Toegevoegd" +msgstr "Recent toegevoegd" -#: cps/ub.py:113 +#: cps/ub.py:70 msgid "Show recent books" -msgstr "Toon recente boeken" +msgstr "Recente boeken tonen" -#: cps/templates/index.xml:17 cps/ub.py:114 +#: cps/templates/index.xml:17 cps/ub.py:71 msgid "Hot Books" -msgstr "Populaire Boeken" +msgstr "Populaire boeken" -#: cps/ub.py:115 +#: cps/ub.py:72 msgid "Show hot books" -msgstr "Toon populaire boeken" +msgstr "Populaire boeken tonen" -#: cps/templates/index.xml:24 cps/ub.py:118 +#: cps/templates/index.xml:24 cps/ub.py:75 msgid "Best rated Books" -msgstr "Best beoordeeld" +msgstr "Best beoordeelde boeken" -#: cps/ub.py:120 +#: cps/ub.py:77 msgid "Show best rated books" -msgstr "Toon best beoordeelde boeken" +msgstr "Best beoordeelde boeken tonen" -#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:121 -#: cps/web.py:965 +#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:78 +#: cps/web.py:958 msgid "Read Books" -msgstr "Gelezen Boeken" +msgstr "Gelezen boeken" -#: cps/ub.py:123 +#: cps/ub.py:80 msgid "Show read and unread" -msgstr "Toon gelezen en ongelezen" +msgstr "Gelezen/Ongelezen tonen" -#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:125 -#: cps/web.py:969 +#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:82 +#: cps/web.py:962 msgid "Unread Books" -msgstr "Ongelezen Boeken" +msgstr "Ongelezen boeken" -#: cps/ub.py:127 +#: cps/ub.py:84 msgid "Show unread" msgstr "" -#: cps/ub.py:128 +#: cps/ub.py:85 msgid "Discover" -msgstr "Ontdek" +msgstr "Verkennen" -#: cps/ub.py:130 +#: cps/ub.py:87 msgid "Show random books" -msgstr "Toon willekeurige boeken" +msgstr "Willekeurige boeken tonen" -#: cps/ub.py:131 +#: cps/ub.py:88 msgid "Categories" msgstr "Categorieën" -#: cps/ub.py:133 +#: cps/ub.py:90 msgid "Show category selection" -msgstr "Toon categorie selectie" +msgstr "Categoriekeuze tonen" #: cps/templates/book_edit.html:71 cps/templates/search_form.html:53 -#: cps/ub.py:134 +#: cps/ub.py:91 msgid "Series" -msgstr "Series" +msgstr "Serie" -#: cps/ub.py:136 +#: cps/ub.py:93 msgid "Show series selection" -msgstr "Toon serie selectie" +msgstr "Seriekeuze tonen" -#: cps/templates/index.xml:61 cps/ub.py:137 +#: cps/templates/index.xml:61 cps/ub.py:94 msgid "Authors" msgstr "Auteurs" -#: cps/ub.py:139 +#: cps/ub.py:96 msgid "Show author selection" -msgstr "Toon auteur selectie" +msgstr "Auteurkeuze tonen" -#: cps/templates/index.xml:68 cps/ub.py:141 +#: cps/templates/index.xml:68 cps/ub.py:98 msgid "Publishers" msgstr "Uitgevers" -#: cps/ub.py:143 +#: cps/ub.py:100 msgid "Show publisher selection" -msgstr "Toon uitgevers selectie" +msgstr "Uitgeverskeuze tonen" -#: cps/templates/search_form.html:74 cps/ub.py:144 +#: cps/templates/search_form.html:74 cps/ub.py:101 msgid "Languages" msgstr "Talen" -#: cps/ub.py:147 +#: cps/ub.py:104 msgid "Show language selection" -msgstr "Toon taal selectie" +msgstr "Taalkeuze tonen" -#: cps/ub.py:148 +#: cps/ub.py:105 msgid "Ratings" msgstr "" -#: cps/ub.py:150 +#: cps/ub.py:107 msgid "Show ratings selection" msgstr "" -#: cps/ub.py:151 +#: cps/ub.py:108 msgid "File formats" msgstr "" -#: cps/ub.py:153 +#: cps/ub.py:110 msgid "Show file formats selection" msgstr "" -#: cps/updater.py:257 cps/updater.py:364 cps/updater.py:377 +#: cps/updater.py:253 cps/updater.py:360 cps/updater.py:373 msgid "Unexpected data while reading update information" -msgstr "Onverwachte data tijdens het lezen van de update informatie" +msgstr "Onverwachte gegevens tijdens het uitlezen van de update-informatie" -#: cps/updater.py:264 cps/updater.py:370 +#: cps/updater.py:260 cps/updater.py:366 msgid "No update available. You already have the latest version installed" -msgstr "Geen update beschikbaar. Je hebt reeds de laatste versie geïnstalleerd" +msgstr "Geen update beschikbaar; je beschikt al over de nieuwste versie" -#: cps/updater.py:290 cps/updater.py:422 +#: cps/updater.py:286 msgid "A new update is available. Click on the button below to update to the latest version." -msgstr "Een nieuwe update is beschikbaar. Click op de knop hier onder op te updaten naar de laatste versie." +msgstr "Er is een update beschikbaar. Klik op de knop hieronder om te updaten naar de nieuwste versie." -#: cps/updater.py:343 +#: cps/updater.py:339 msgid "Could not fetch update information" -msgstr "De update informatie kon niet gelezen worden" +msgstr "De update-informatie kan niet worden opgehaald" -#: cps/updater.py:357 +#: cps/updater.py:353 msgid "No release information available" -msgstr "" +msgstr "Geen wijzigingslog beschikbaar" -#: cps/updater.py:403 cps/updater.py:412 +#: cps/updater.py:406 cps/updater.py:415 #, 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 de nieuwste versie: %(version)s" + +#: cps/updater.py:425 +msgid "Click on the button below to update to the latest stable version." msgstr "" -#: cps/web.py:457 +#: cps/web.py:445 msgid "Recently Added Books" msgstr "Recent toegevoegde boeken" -#: cps/web.py:484 +#: cps/web.py:473 msgid "Best rated books" msgstr "Best beoordeelde boeken" -#: cps/templates/index.xml:38 cps/web.py:492 +#: cps/templates/index.xml:38 cps/web.py:481 msgid "Random Books" msgstr "Willekeurige boeken" -#: cps/web.py:516 +#: cps/web.py:505 msgid "Books" msgstr "" -#: cps/web.py:543 +#: cps/web.py:532 msgid "Hot Books (most downloaded)" -msgstr "Populaire boeken (meeste downloads)" +msgstr "Populaire boeken (vaakst gedownload)" -#: cps/web.py:553 cps/web.py:1294 cps/web.py:1383 +#: cps/web.py:542 cps/web.py:1298 cps/web.py:1386 msgid "Error opening eBook. File does not exist or file is not accessible:" -msgstr "Fout bij openen van het boek. Bestand bestaat niet of is niet toegankelijk:" +msgstr "Kan e-boek niet openen. Het bestand bestaat niet of is niet toegankelijk:" -#: cps/web.py:580 +#: cps/web.py:559 +#, python-format +msgid "Author: %(name)s" +msgstr "" + +#: cps/web.py:571 #, python-format msgid "Publisher: %(name)s" msgstr "Uitgever: %(name)s" -#: cps/web.py:591 +#: cps/web.py:582 #, python-format msgid "Series: %(serie)s" msgstr "Serie: %(serie)s" -#: cps/web.py:602 +#: cps/web.py:593 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:613 +#: cps/web.py:604 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:625 +#: cps/web.py:616 #, python-format msgid "Category: %(name)s" msgstr "Categorie: %(name)s" -#: cps/web.py:659 +#: cps/web.py:650 msgid "Publisher list" msgstr "Uitgeverslijst" -#: cps/templates/index.xml:82 cps/web.py:675 +#: cps/templates/index.xml:82 cps/web.py:666 msgid "Series list" -msgstr "Serie lijst" +msgstr "Serielijst" -#: cps/web.py:689 +#: cps/web.py:680 msgid "Ratings list" msgstr "" -#: cps/web.py:702 +#: cps/web.py:693 msgid "File formats list" msgstr "" -#: cps/web.py:730 +#: cps/web.py:721 msgid "Available languages" msgstr "Beschikbare talen" -#: cps/web.py:750 +#: cps/web.py:741 #, python-format msgid "Language: %(name)s" msgstr "Taal: %(name)s" -#: cps/templates/index.xml:75 cps/web.py:764 +#: cps/templates/index.xml:75 cps/web.py:755 msgid "Category list" -msgstr "Categorie lijst" +msgstr "Categorielijst" -#: cps/templates/layout.html:73 cps/web.py:777 +#: cps/templates/layout.html:73 cps/web.py:769 msgid "Tasks" msgstr "Taken" -#: cps/web.py:841 +#: cps/web.py:834 msgid "Published after " msgstr "Gepubliceerd na " -#: cps/web.py:848 +#: cps/web.py:841 msgid "Published before " -msgstr "Gepubliceerd voor " +msgstr "Gepubliceerd vóór " -#: cps/web.py:862 +#: cps/web.py:855 #, python-format msgid "Rating <= %(rating)s" -msgstr "Waardering <= %(rating)s" +msgstr "Beoordeling <= %(rating)s" -#: cps/web.py:864 +#: cps/web.py:857 #, python-format msgid "Rating >= %(rating)s" -msgstr "Waardering >= %(rating)s" +msgstr "Beoordeling >= %(rating)s" -#: cps/web.py:924 cps/web.py:933 +#: cps/web.py:917 cps/web.py:926 msgid "search" -msgstr "zoek" +msgstr "zoeken" -#: cps/web.py:1018 +#: cps/web.py:1012 msgid "Please configure the SMTP mail settings first..." -msgstr "Gelieve de SMTP mail instellingen eerst te configureren..." +msgstr "Stel eerst SMTP-mail in..." -#: cps/web.py:1023 +#: cps/web.py:1017 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" -msgstr "Boek met succes in de wachtrij geplaatst om te verzenden naar %(kindlemail)s" +msgstr "Het boek is in de wachtrij geplaatst om te worden verstuurd aan %(kindlemail)s" -#: cps/web.py:1027 +#: cps/web.py:1021 #, python-format msgid "There was an error sending this book: %(res)s" -msgstr "Er trad een fout op bij het versturen van dit boek: %(res)s" +msgstr "Er is een fout opgetreden bij het versturen van dit boek: %(res)s" -#: cps/web.py:1046 cps/web.py:1071 cps/web.py:1076 cps/web.py:1081 -#: cps/web.py:1085 +#: cps/web.py:1041 cps/web.py:1066 cps/web.py:1070 cps/web.py:1075 +#: cps/web.py:1079 msgid "register" -msgstr "registreer" +msgstr "registreren" -#: cps/web.py:1073 +#: cps/web.py:1068 msgid "Your e-mail is not allowed to register" -msgstr "Het is niet toegestaan om te registreren met jou email" +msgstr "Dit e-mailadres mag niet worden gebruikt voor registratie" -#: cps/web.py:1077 +#: cps/web.py:1071 msgid "Confirmation e-mail was send to your e-mail account." -msgstr "Bevestigings email werd verzonden naar jou email account." +msgstr "Er is een bevestigingse-mail verstuurd naar je e-mailadres." -#: cps/web.py:1080 +#: cps/web.py:1074 msgid "This username or e-mail address is already in use." -msgstr "Deze gebruikersnaam of email adres is reeds in gebruik." +msgstr "Deze gebruikersnaam of e-mailadres is al in gebruik." -#: cps/web.py:1103 cps/web.py:1115 -#, python-format -msgid "You are now logged in as: '%(nickname)s'" +#: cps/web.py:1089 +msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1108 cps/web.py:1120 +#: cps/web.py:1098 cps/web.py:1212 +#, python-format +msgid "you are now logged in as: '%(nickname)s'" +msgstr "je bent nu ingelogd als: '%(nickname)s'" + +#: cps/web.py:1105 cps/web.py:1122 msgid "Wrong Username or Password" -msgstr "Verkeerde gebruikersnaam of Wachtwoord" +msgstr "Verkeerde gebruikersnaam of wachtwoord" -#: cps/web.py:1111 +#: cps/web.py:1108 msgid "Could not login. LDAP server down, please contact your administrator" msgstr "" -#: cps/web.py:1124 cps/web.py:1146 +#: cps/web.py:1117 +#, python-format +msgid "You are now logged in as: '%(nickname)s'" +msgstr "" + +#: cps/web.py:1126 cps/web.py:1148 msgid "login" -msgstr "login" +msgstr "inloggen" -#: cps/web.py:1158 cps/web.py:1189 +#: cps/web.py:1160 cps/web.py:1191 msgid "Token not found" -msgstr "Token niet gevonden" +msgstr "Toegangssleutel niet gevonden" -#: cps/web.py:1166 cps/web.py:1197 +#: cps/web.py:1168 cps/web.py:1199 msgid "Token has expired" -msgstr "Token is verlopen" +msgstr "Toegangssleutel is verlopen" -#: cps/web.py:1174 +#: cps/web.py:1176 msgid "Success! Please return to your device" msgstr "Gelukt! Ga terug naar je apparaat" -#: cps/web.py:1210 -#, python-format -msgid "you are now logged in as: '%(nickname)s'" -msgstr "je bent nu ingelogd als: '%(nickname)s'" - -#: cps/web.py:1250 cps/web.py:1277 cps/web.py:1281 +#: cps/web.py:1253 cps/web.py:1280 cps/web.py:1284 #, python-format msgid "%(name)s's profile" msgstr "%(name)s's profiel" -#: cps/web.py:1274 +#: cps/web.py:1277 msgid "Found an existing account for this e-mail address." -msgstr "Een bestaand account met dit email adres werd gevonden." +msgstr "Er is een bestaand account met dit e-mailadres aangetroffen." -#: cps/web.py:1279 +#: cps/web.py:1282 msgid "Profile updated" -msgstr "Profiel aangepast" +msgstr "Profiel bijgewerkt" -#: cps/web.py:1304 cps/web.py:1306 cps/web.py:1308 cps/web.py:1314 -#: cps/web.py:1318 +#: cps/web.py:1308 cps/web.py:1310 cps/web.py:1312 cps/web.py:1318 +#: cps/web.py:1322 msgid "Read a Book" msgstr "Lees een boek" -#: cps/web.py:1328 +#: cps/web.py:1332 msgid "Error opening eBook. File does not exist or file is not accessible." msgstr "" -#: cps/worker.py:308 +#: cps/worker.py:311 #, python-format msgid "Ebook-converter failed: %(error)s" -msgstr "Ebook conversie mislukt: %(error)s" +msgstr "E-boek-conversie mislukt: %(error)s" -#: cps/worker.py:319 +#: cps/worker.py:322 #, python-format msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" -msgstr "Kindlegen gefaald met Error %(error)s. Bericht: %(message)s" +msgstr "Kindlegen mislukt; fout: %(error)s. Bericht: %(message)s" #: cps/templates/admin.html:6 msgid "User list" @@ -956,7 +966,7 @@ msgstr "Gebruikersnaam" #: cps/templates/admin.html:10 msgid "E-mail" -msgstr "Email" +msgstr "E-mailadres" #: cps/templates/admin.html:11 msgid "Kindle" @@ -974,7 +984,7 @@ msgstr "Administratie" #: cps/templates/detail.html:27 cps/templates/shelf.html:6 #: cps/templates/shelfdown.html:62 msgid "Download" -msgstr "Download" +msgstr "Downloaden" #: cps/templates/admin.html:15 msgid "View Ebooks" @@ -982,23 +992,23 @@ msgstr "" #: cps/templates/admin.html:16 cps/templates/layout.html:65 msgid "Upload" -msgstr "Upload" +msgstr "Uploaden" #: cps/templates/admin.html:17 msgid "Edit" -msgstr "Bewerk" +msgstr "Bewerken" #: cps/templates/admin.html:41 msgid "SMTP e-mail server settings" -msgstr "SMTP email server instellingen" +msgstr "SMTP-serverinstellingen" #: cps/templates/admin.html:44 cps/templates/email_edit.html:11 msgid "SMTP hostname" -msgstr "SMTP hostnaam" +msgstr "SMTP-hostnaam" #: cps/templates/admin.html:45 msgid "SMTP port" -msgstr "SMTP poort" +msgstr "SMTP-poort" #: cps/templates/admin.html:46 msgid "SSL" @@ -1006,27 +1016,27 @@ msgstr "SSL" #: cps/templates/admin.html:47 cps/templates/email_edit.html:27 msgid "SMTP login" -msgstr "SMTP login" +msgstr "SMTP-gebruikersnaam" #: cps/templates/admin.html:48 msgid "From mail" -msgstr "Van mail" +msgstr "Van e-mail" #: cps/templates/admin.html:58 msgid "Change SMTP settings" -msgstr "Bewerk SMTP instellingen" +msgstr "SMTP-instellingen bewerken" #: cps/templates/admin.html:64 msgid "Configuration" -msgstr "Configuratie" +msgstr "Instellingen" #: cps/templates/admin.html:67 msgid "Calibre DB dir" -msgstr "Calibre DB map" +msgstr "Calibre DB-map" #: cps/templates/admin.html:71 msgid "Log level" -msgstr "Log niveau" +msgstr "Logniveau" #: cps/templates/admin.html:75 msgid "Port" @@ -1034,11 +1044,11 @@ msgstr "Poort" #: cps/templates/admin.html:81 cps/templates/config_view_edit.html:23 msgid "Books per page" -msgstr "Boeken per pagina" +msgstr "Aantal boeken per pagina" #: cps/templates/admin.html:85 msgid "Uploading" -msgstr "Aan het uploaden" +msgstr "Bezig met uploaden" #: cps/templates/admin.html:89 msgid "Anonymous browsing" @@ -1046,64 +1056,68 @@ msgstr "Anoniem verkennen" #: cps/templates/admin.html:93 msgid "Public registration" -msgstr "Publieke registratie" +msgstr "Openbare registratie" #: cps/templates/admin.html:97 cps/templates/remote_login.html:4 msgid "Remote login" -msgstr "Login op afstand" +msgstr "Inloggen op afstand" #: cps/templates/admin.html:108 msgid "Administration" msgstr "Administratie" #: cps/templates/admin.html:109 -msgid "Reconnect to Calibre DB" -msgstr "Herverbinden met calibre DB" +msgid "View Logfiles" +msgstr "" #: cps/templates/admin.html:110 -msgid "Restart Calibre-Web" -msgstr "Herstart Calibre-Web" +msgid "Reconnect to Calibre DB" +msgstr "Opnieuw verbinden met Calibre DB" #: cps/templates/admin.html:111 +msgid "Restart Calibre-Web" +msgstr "Calibre-Web herstarten" + +#: cps/templates/admin.html:112 msgid "Stop Calibre-Web" -msgstr "Stop Calibre-Web" +msgstr "Calibre-Web stoppen" -#: cps/templates/admin.html:117 +#: cps/templates/admin.html:118 msgid "Update" -msgstr "Update" +msgstr "Bijwerken" -#: cps/templates/admin.html:121 +#: cps/templates/admin.html:122 msgid "Version" msgstr "Versie" -#: cps/templates/admin.html:122 +#: cps/templates/admin.html:123 msgid "Details" msgstr "Details" -#: cps/templates/admin.html:128 +#: cps/templates/admin.html:129 msgid "Current version" msgstr "Huidige versie" -#: cps/templates/admin.html:134 +#: cps/templates/admin.html:135 msgid "Check for update" -msgstr "Controleer voor update" +msgstr "Controleren op updates" -#: cps/templates/admin.html:135 +#: cps/templates/admin.html:136 msgid "Perform Update" -msgstr "Voer update uit" +msgstr "Update uitvoeren" -#: cps/templates/admin.html:147 +#: cps/templates/admin.html:148 msgid "Do you really want to restart Calibre-Web?" -msgstr "Wil je Calibre-Web echt herstarten?" +msgstr "Weet je zeker dat je Calibre-Web wilt herstarten?" -#: cps/templates/admin.html:152 cps/templates/admin.html:166 -#: cps/templates/admin.html:186 cps/templates/shelf.html:72 +#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:187 cps/templates/shelf.html:72 msgid "Ok" -msgstr "Ok" +msgstr "Oké" -#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:154 cps/templates/admin.html:168 #: cps/templates/book_edit.html:174 cps/templates/book_edit.html:196 -#: cps/templates/config_edit.html:281 cps/templates/config_view_edit.html:147 +#: cps/templates/config_edit.html:331 cps/templates/config_view_edit.html:147 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 @@ -1111,13 +1125,13 @@ msgstr "Ok" msgid "Back" msgstr "Terug" -#: cps/templates/admin.html:165 +#: cps/templates/admin.html:166 msgid "Do you really want to stop Calibre-Web?" -msgstr "Wil je Calibre-Web echt stoppen?" +msgstr "Weet je zeker dat je Calibre-Web wilt stoppen?" -#: cps/templates/admin.html:177 +#: cps/templates/admin.html:178 msgid "Updating, please do not reload page" -msgstr "Aan het updaten, gelieve de pagina niet te herladen" +msgstr "Bezig met bijwerken; vernieuw de pagina niet" #: cps/templates/author.html:15 msgid "via" @@ -1125,7 +1139,7 @@ msgstr "via" #: cps/templates/author.html:23 msgid "In Library" -msgstr "In Bibliotheek" +msgstr "In bibliotheek" #: cps/templates/author.html:34 cps/templates/list.html:14 #: cps/templates/search.html:41 @@ -1137,7 +1151,7 @@ msgstr "" #: cps/templates/index.html:89 cps/templates/search.html:67 #: cps/templates/shelf.html:36 msgid "reduce" -msgstr "" +msgstr "beperken" #: cps/templates/author.html:89 msgid "More by" @@ -1145,40 +1159,40 @@ msgstr "Meer van" #: cps/templates/book_edit.html:12 msgid "Delete Book" -msgstr "Wis boek" +msgstr "Boek verwijderen" #: cps/templates/book_edit.html:15 msgid "Delete formats:" -msgstr "Wis formaten:" +msgstr "Formaten verwijderen:" #: cps/templates/book_edit.html:18 cps/templates/book_edit.html:195 #: cps/templates/email_edit.html:73 msgid "Delete" -msgstr "Wis" +msgstr "Verwijderen" #: cps/templates/book_edit.html:26 msgid "Convert book format:" -msgstr "Converteer boek formaat:" +msgstr "Boekformaat converteren:" #: cps/templates/book_edit.html:30 msgid "Convert from:" -msgstr "Converteer van:" +msgstr "Converteren van:" #: cps/templates/book_edit.html:32 cps/templates/book_edit.html:39 msgid "select an option" -msgstr "selecteer een optie" +msgstr "kies een optie" #: cps/templates/book_edit.html:37 msgid "Convert to:" -msgstr "Converteer naar:" +msgstr "Converteren naar:" #: cps/templates/book_edit.html:46 msgid "Convert book" -msgstr "Converteer boek" +msgstr "Boek converteren" #: cps/templates/book_edit.html:55 cps/templates/search_form.html:6 msgid "Book Title" -msgstr "Boek titel" +msgstr "Boektitel" #: cps/templates/book_edit.html:59 cps/templates/book_edit.html:255 #: cps/templates/book_edit.html:273 cps/templates/search_form.html:10 @@ -1192,11 +1206,11 @@ msgstr "Omschrijving" #: cps/templates/book_edit.html:67 cps/templates/search_form.html:33 msgid "Tags" -msgstr "Tags" +msgstr "Labels" #: cps/templates/book_edit.html:75 msgid "Series id" -msgstr "Series id" +msgstr "Serie-id" #: cps/templates/book_edit.html:79 msgid "Rating" @@ -1204,15 +1218,15 @@ msgstr "Beoordeling" #: cps/templates/book_edit.html:83 msgid "Cover URL (jpg, cover is downloaded and stored in database, field is afterwards empty again)" -msgstr "Boekomslag URL (jpg, omslag wordt gedownload en opgeslagen in database, invulveld is nadien terug leeg)" +msgstr "Boekomslag-url (jpg - de omslag wordt gedownload en opgeslagen in de databank; het invoerveld is nadien leeg)" #: cps/templates/book_edit.html:87 msgid "Upload Cover from local drive" -msgstr "Upload cover van lokale schijf" +msgstr "Omslag uploaden vanaf computer" #: cps/templates/book_edit.html:92 cps/templates/detail.html:168 msgid "Publishing date" -msgstr "Publicatie datum" +msgstr "Publicatiedatum" #: cps/templates/book_edit.html:99 cps/templates/book_edit.html:257 #: cps/templates/book_edit.html:274 cps/templates/detail.html:159 @@ -1234,17 +1248,17 @@ msgstr "Nee" #: cps/templates/book_edit.html:160 msgid "Upload format" -msgstr "Upload type" +msgstr "Uploadformaat" #: cps/templates/book_edit.html:169 msgid "view book after edit" -msgstr "bekijk boek na bewerking" +msgstr "boek inkijken na bewerking" #: cps/templates/book_edit.html:172 cps/templates/book_edit.html:208 msgid "Get metadata" -msgstr "Verkrijg metadata" +msgstr "Metagegevens ophalen" -#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:279 +#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329 #: cps/templates/config_view_edit.html:146 cps/templates/login.html:20 #: cps/templates/search_form.html:150 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:130 @@ -1253,11 +1267,11 @@ msgstr "Opslaan" #: cps/templates/book_edit.html:187 msgid "Are you really sure?" -msgstr "Ben je zeker?" +msgstr "Weet je het zeker?" #: cps/templates/book_edit.html:190 msgid "Book will be deleted from Calibre database" -msgstr "Boek wordt nu gewist uit de Calibre database" +msgstr "Het boek wordt verwijderd uit de Calibre-databank" #: cps/templates/book_edit.html:191 msgid "and from hard disk" @@ -1265,28 +1279,28 @@ msgstr "en van de harde schijf" #: cps/templates/book_edit.html:211 msgid "Keyword" -msgstr "Zoekwoord" +msgstr "Trefwoord" #: cps/templates/book_edit.html:212 msgid " Search keyword " -msgstr " Zoek sleutelwoord " +msgstr " Trefwoord zoeken " #: cps/templates/book_edit.html:214 cps/templates/layout.html:47 msgid "Go!" -msgstr "Start!" +msgstr "Ga!" #: cps/templates/book_edit.html:218 msgid "Click the cover to load metadata to the form" -msgstr "Klik op de omslag om de metatadata in het formulier te laden" +msgstr "Klik op de omslag om de metagegevens in het formulier te laden" #: cps/templates/book_edit.html:230 cps/templates/book_edit.html:270 msgid "Loading..." -msgstr "Aan het laden..." +msgstr "Bezig met laden..." #: cps/templates/book_edit.html:235 cps/templates/layout.html:187 #: cps/templates/layout.html:219 msgid "Close" -msgstr "Sluit" +msgstr "Sluiten" #: cps/templates/book_edit.html:262 cps/templates/book_edit.html:276 msgid "Source" @@ -1294,19 +1308,19 @@ msgstr "Bron" #: cps/templates/book_edit.html:271 msgid "Search error!" -msgstr "Zoek fout!" +msgstr "Zoekfout!" #: cps/templates/book_edit.html:272 msgid "No Result(s) found! Please try aonther keyword." -msgstr "Geen resultaten gevonden! Gebruik alsjeblieft een ander sleutelwoord." +msgstr "Geen resultaten gevonden! Gebruik een ander trefwoord." #: cps/templates/config_edit.html:12 msgid "Library Configuration" -msgstr "Bibliotheek configuratie" +msgstr "Bibliotheekinstellingen" #: cps/templates/config_edit.html:19 msgid "Location of Calibre database" -msgstr "Locatie van de Calibre database" +msgstr "Locatie van de Calibre-databank" #: cps/templates/config_edit.html:24 msgid "Use Google Drive?" @@ -1314,204 +1328,252 @@ msgstr "Google Drive gebruiken?" #: cps/templates/config_edit.html:30 msgid "Google Drive config problem" -msgstr "Google Drive configuratie probleem" +msgstr "Google Drive-instelprobleem" #: cps/templates/config_edit.html:36 msgid "Authenticate Google Drive" -msgstr "Verifieer Google Drive" +msgstr "Google Drive goedkeuren" #: cps/templates/config_edit.html:40 msgid "Please hit submit to continue with setup" -msgstr "" +msgstr "Druk op 'Opslaan' om door te gaan met instellen" #: cps/templates/config_edit.html:43 msgid "Please finish Google Drive setup after login" -msgstr "Gelieve Google Drive setup te voltooien na login" +msgstr "Voltooi na het inloggen de Google Drive-instelwizard" #: cps/templates/config_edit.html:48 msgid "Google Drive Calibre folder" -msgstr "Google Drive Calibre folder" +msgstr "Google Drive Calibre-map" #: cps/templates/config_edit.html:56 msgid "Metadata Watch Channel ID" -msgstr "Metadata Watch Channel ID" +msgstr "Metagegevens Watch Channel ID" #: cps/templates/config_edit.html:59 msgid "Revoke" -msgstr "Terugtrekken" +msgstr "Intrekken" #: cps/templates/config_edit.html:78 msgid "Server Configuration" -msgstr "Server configuratie" +msgstr "Serverinstellingen" #: cps/templates/config_edit.html:85 msgid "Server Port" -msgstr "Server poort" +msgstr "Serverpoort" #: cps/templates/config_edit.html:89 msgid "SSL certfile location (leave it empty for non-SSL Servers)" -msgstr "SSL certificaat (\"certfile\") bestand locatie (laat leeg voor niet-SSL servers)" +msgstr "SSL-certificaatlocatie ('certfile' - laat leeg voor niet-SSL-servers)" #: cps/templates/config_edit.html:93 msgid "SSL Keyfile location (leave it empty for non-SSL Servers)" -msgstr "SSL sleutel (\"keyfile\") bestand (laat leeg voor niet-SSL servers)" +msgstr "SSL-sleutellocatie ('keyfile' - laat leeg voor niet-SSL-servers)" #: cps/templates/config_edit.html:97 msgid "Update channel" -msgstr "" +msgstr "Updatekanaal" #: cps/templates/config_edit.html:99 msgid "Stable" -msgstr "" +msgstr "Stabiel" #: cps/templates/config_edit.html:100 msgid "Stable (Automatic)" -msgstr "" +msgstr "Stabiel (automatisch)" #: cps/templates/config_edit.html:101 msgid "Nightly" -msgstr "" +msgstr "Bèta" #: cps/templates/config_edit.html:102 msgid "Nightly (Automatic)" -msgstr "" +msgstr "Bèta (automatisch)" #: cps/templates/config_edit.html:113 msgid "Logfile Configuration" -msgstr "Logbestand configuratie" +msgstr "Logbestand-instellingen" #: cps/templates/config_edit.html:120 msgid "Log Level" -msgstr "Log niveau" +msgstr "Logniveau" #: cps/templates/config_edit.html:129 msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "Locatie en naam van logbestand (calibre-web.log indien leeg)" -#: cps/templates/config_edit.html:140 -msgid "Feature Configuration" -msgstr "Voorzieningen configuratie" +#: cps/templates/config_edit.html:134 +msgid "Enable Access Log" +msgstr "" + +#: cps/templates/config_edit.html:137 +msgid "Location and name of access logfile (access.log for no entry)" +msgstr "" #: cps/templates/config_edit.html:148 +msgid "Feature Configuration" +msgstr "Mogelijkheden" + +#: cps/templates/config_edit.html:156 msgid "Enable uploading" -msgstr "Uploaden aanzetten" +msgstr "Uploaden inschakelen" -#: cps/templates/config_edit.html:152 +#: cps/templates/config_edit.html:160 msgid "Enable anonymous browsing" -msgstr "Anoniem verkennen aanzetten" +msgstr "Anoniem verkennen inschakelen" -#: cps/templates/config_edit.html:156 +#: cps/templates/config_edit.html:164 msgid "Enable public registration" -msgstr "Publieke registratie aanzetten" +msgstr "Openbare registratie inschakelen" -#: cps/templates/config_edit.html:160 +#: cps/templates/config_edit.html:168 msgid "Enable remote login (\"magic link\")" -msgstr "Maak op afstand ionloggen mogelijk (\"magic link\")" +msgstr "Inloggen op afstand inschakelen ('magic link')" -#: cps/templates/config_edit.html:165 +#: cps/templates/config_edit.html:173 msgid "Use" -msgstr "Gebruik" +msgstr "Gebruiken" -#: cps/templates/config_edit.html:166 +#: cps/templates/config_edit.html:174 msgid "Obtain an API Key" -msgstr "Verkrijg een API sleutel" +msgstr "API-sleutel verkrijgen" -#: cps/templates/config_edit.html:170 +#: cps/templates/config_edit.html:178 msgid "Goodreads API Key" -msgstr "Goodreads API sleutel" +msgstr "Goodreads API-sleutel" -#: cps/templates/config_edit.html:174 +#: cps/templates/config_edit.html:182 msgid "Goodreads API Secret" -msgstr "Goodreads API geheim" +msgstr "Goodreads API-geheim" -#: cps/templates/config_edit.html:181 +#: cps/templates/config_edit.html:189 msgid "Login type" msgstr "" -#: cps/templates/config_edit.html:183 +#: cps/templates/config_edit.html:191 msgid "Use standard Authentication" msgstr "" -#: cps/templates/config_edit.html:185 +#: cps/templates/config_edit.html:193 msgid "Use LDAP Authentication" msgstr "" -#: cps/templates/config_edit.html:188 +#: cps/templates/config_edit.html:196 msgid "Use GitHub OAuth" msgstr "" -#: cps/templates/config_edit.html:189 +#: cps/templates/config_edit.html:197 msgid "Use Google OAuth" msgstr "" -#: cps/templates/config_edit.html:196 -msgid "LDAP Provider URL" +#: cps/templates/config_edit.html:204 +msgid "LDAP Server Host Name or IP Address" msgstr "" -#: cps/templates/config_edit.html:200 +#: cps/templates/config_edit.html:208 +msgid "LDAP Server Port" +msgstr "" + +#: cps/templates/config_edit.html:212 +msgid "LDAP schema (ldap or ldaps)" +msgstr "" + +#: cps/templates/config_edit.html:216 +msgid "LDAP Admin username" +msgstr "" + +#: cps/templates/config_edit.html:220 +msgid "LDAP Admin password" +msgstr "" + +#: cps/templates/config_edit.html:225 +msgid "LDAP Server use SSL" +msgstr "" + +#: cps/templates/config_edit.html:229 +msgid "LDAP Server use TLS" +msgstr "" + +#: cps/templates/config_edit.html:233 +msgid "LDAP Server Certificate" +msgstr "" + +#: cps/templates/config_edit.html:237 +msgid "LDAP SSL Certificate Path" +msgstr "" + +#: cps/templates/config_edit.html:242 msgid "LDAP Distinguished Name (DN)" msgstr "" -#: cps/templates/config_edit.html:208 +#: cps/templates/config_edit.html:246 +msgid "LDAP User object filter" +msgstr "" + +#: cps/templates/config_edit.html:251 +msgid "LDAP Server is OpenLDAP?" +msgstr "" + +#: cps/templates/config_edit.html:258 msgid "Obtain GitHub OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:211 +#: cps/templates/config_edit.html:261 msgid "GitHub OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:215 +#: cps/templates/config_edit.html:265 msgid "GitHub OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:221 +#: cps/templates/config_edit.html:271 msgid "Obtain Google OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:224 +#: cps/templates/config_edit.html:274 msgid "Google OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:228 +#: cps/templates/config_edit.html:278 msgid "Google OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:242 +#: cps/templates/config_edit.html:292 msgid "External binaries" msgstr "Externe bibliotheken" -#: cps/templates/config_edit.html:250 +#: cps/templates/config_edit.html:300 msgid "No converter" -msgstr "Geen conversie programma" +msgstr "Geen conversieprogramma" -#: cps/templates/config_edit.html:252 +#: cps/templates/config_edit.html:302 msgid "Use Kindlegen" -msgstr "Gebruik Kindlegen" +msgstr "Kindlegen gebruiken" -#: cps/templates/config_edit.html:254 +#: cps/templates/config_edit.html:304 msgid "Use calibre's ebook converter" -msgstr "Gebruik calibre's ebook converter" +msgstr "Calibre's e-boekconversie gebruiken" -#: cps/templates/config_edit.html:258 +#: cps/templates/config_edit.html:308 msgid "E-Book converter settings" -msgstr "E-book conversie instellingen" +msgstr "Conversie-instellingen" -#: cps/templates/config_edit.html:262 +#: cps/templates/config_edit.html:312 msgid "Path to convertertool" -msgstr "Pad naar conversietool" +msgstr "Pad naar conversieprogramma" -#: cps/templates/config_edit.html:268 +#: cps/templates/config_edit.html:318 msgid "Location of Unrar binary" -msgstr "Locatie van Unrar programma" +msgstr "Locatie van Unrar-programma" -#: cps/templates/config_edit.html:284 cps/templates/layout.html:84 +#: cps/templates/config_edit.html:334 cps/templates/layout.html:84 #: cps/templates/login.html:4 msgid "Login" -msgstr "Login" +msgstr "Inloggen" #: cps/templates/config_view_edit.html:12 msgid "View Configuration" -msgstr "Bekijk Configuratie" +msgstr "Instellingen bekijken" #: cps/templates/config_view_edit.html:19 cps/templates/shelf_edit.html:7 msgid "Title" @@ -1519,11 +1581,11 @@ msgstr "Titel" #: cps/templates/config_view_edit.html:27 msgid "No. of random books to show" -msgstr "Aantal boeken te tonen" +msgstr "Aantal te tonen willekeurige boeken" #: cps/templates/config_view_edit.html:31 msgid "No. of authors to show before hiding (0=disable hiding)" -msgstr "" +msgstr "Aantal te tonen auteurs alvorens te verbergen (0=nooit verbergen)" #: cps/templates/config_view_edit.html:35 cps/templates/readcbr.html:112 msgid "Theme" @@ -1535,7 +1597,7 @@ msgstr "Standaard thema" #: cps/templates/config_view_edit.html:38 msgid "caliBlur! Dark Theme" -msgstr "caliBlur! Donker Thema" +msgstr "caliBlur! donker thema" #: cps/templates/config_view_edit.html:42 msgid "Regular expression for ignoring columns" @@ -1543,23 +1605,23 @@ msgstr "Reguliere expressie om kolommen te negeren" #: cps/templates/config_view_edit.html:46 msgid "Link read/unread status to Calibre column" -msgstr "Koppel gelezen/ongelezen status aan Calibre kolom" +msgstr "Gelezen/Ongelezen-status koppelen aan Calibre-kolom" #: cps/templates/config_view_edit.html:55 msgid "Regular expression for title sorting" -msgstr "Rguliere expressie op titels te sorteren" +msgstr "Reguliere expressie voor het sorteren op titel" #: cps/templates/config_view_edit.html:59 msgid "Tags for Mature Content" -msgstr "Tags voor Volwassen Inhoud" +msgstr "Labels voor 18+-inhoud" #: cps/templates/config_view_edit.html:73 msgid "Default settings for new users" -msgstr "Standaard instellingen voor nieuwe gebruikers" +msgstr "Standaardinstellingen voor nieuwe gebruikers" #: cps/templates/config_view_edit.html:81 cps/templates/user_edit.html:83 msgid "Admin user" -msgstr "Administratie gebruiker" +msgstr "Admin-gebruiker" #: cps/templates/config_view_edit.html:85 cps/templates/user_edit.html:92 msgid "Allow Downloads" @@ -1579,7 +1641,7 @@ msgstr "Bewerken toestaan" #: cps/templates/config_view_edit.html:101 cps/templates/user_edit.html:108 msgid "Allow Delete books" -msgstr "Het wissen van boeken toestaan" +msgstr "Verwijderen van boeken toestaan" #: cps/templates/config_view_edit.html:105 cps/templates/user_edit.html:113 msgid "Allow Changing Password" @@ -1587,7 +1649,7 @@ msgstr "Wachtwoord wijzigen toestaan" #: cps/templates/config_view_edit.html:109 cps/templates/user_edit.html:117 msgid "Allow Editing Public Shelfs" -msgstr "Publieke boekenplanken bewerken toestaan" +msgstr "Bewerken van openbare boekenplanken toestaan" #: cps/templates/config_view_edit.html:119 msgid "Default visibilities for new users" @@ -1595,15 +1657,15 @@ msgstr "Standaard zichtbaar voor nieuwe gebruikers" #: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:75 msgid "Show random books in detail view" -msgstr "Toon willekeurige boeken in gedetailleerd zicht" +msgstr "Willekeurige boeken tonen in gedetailleerde weergave" #: cps/templates/config_view_edit.html:139 cps/templates/user_edit.html:88 msgid "Show mature content" -msgstr "Toon Volwassen Inhoud" +msgstr "18+-inhoud tonen" #: cps/templates/detail.html:59 msgid "Read in browser" -msgstr "Lees in browser" +msgstr "Lezen in webbrowser" #: cps/templates/detail.html:73 msgid "Listen in browser" @@ -1623,15 +1685,15 @@ msgstr "taal" #: cps/templates/detail.html:203 msgid "Mark As Unread" -msgstr "" +msgstr "Markeren als ongelezen" #: cps/templates/detail.html:203 msgid "Mark As Read" -msgstr "" +msgstr "Markeren als gelezen" #: cps/templates/detail.html:204 msgid "Read" -msgstr "Lees" +msgstr "Lezen" #: cps/templates/detail.html:214 cps/templates/listenmp3.html:54 msgid "Description:" @@ -1639,19 +1701,19 @@ msgstr "Omschrijving:" #: cps/templates/detail.html:227 cps/templates/search.html:14 msgid "Add to shelf" -msgstr "Voeg toe aan boekenplank" +msgstr "Toevoegen aan boekenplank" #: cps/templates/detail.html:289 msgid "Edit metadata" -msgstr "Bewerk metadata" +msgstr "Metagegevens bewerken" #: cps/templates/email_edit.html:15 msgid "SMTP port (usually 25 for plain SMTP and 465 for SSL and 587 for STARTTLS)" -msgstr "SMTP poort (meestal 25 voor normale SMTP en 465 voor SSL en 587 voor STARTTLS)" +msgstr "SMTP-poort (meestal 25 voor normale SMTP, 465 voor SSL en 587 voor STARTTLS)" #: cps/templates/email_edit.html:19 msgid "Encryption" -msgstr "Encryptie" +msgstr "Versleuteling" #: cps/templates/email_edit.html:21 msgid "None" @@ -1667,19 +1729,19 @@ msgstr "SSL/TLS" #: cps/templates/email_edit.html:31 msgid "SMTP password" -msgstr "SMTP wachtwoord" +msgstr "SMTP-wachtwoord" #: cps/templates/email_edit.html:35 msgid "From e-mail" -msgstr "Van email" +msgstr "Van e-mailadres" #: cps/templates/email_edit.html:38 msgid "Save settings" -msgstr "Bewaar instelling" +msgstr "Instellingen opslaan" #: cps/templates/email_edit.html:39 msgid "Save settings and send Test E-Mail" -msgstr "Bewaar instellingen en stuur test email" +msgstr "Instellingen opslaan en test-e-mail versturen" #: cps/templates/email_edit.html:43 msgid "Allowed domains for registering" @@ -1691,15 +1753,15 @@ msgstr "Voer domeinnaam in" #: cps/templates/email_edit.html:55 msgid "Add Domain" -msgstr "Voeg Domein toe" +msgstr "Domein toevoegen" #: cps/templates/email_edit.html:58 msgid "Add" -msgstr "Voeg toe" +msgstr "Toevoegen" #: cps/templates/email_edit.html:72 msgid "Do you really want to delete this domain rule?" -msgstr "Wil je werkelijk deze domein regel verwijderen?" +msgstr "Weet je zeker dat je deze domeinregel wilt verwijderen?" #: cps/templates/feed.xml:21 cps/templates/layout.html:171 msgid "Next" @@ -1708,35 +1770,35 @@ msgstr "Volgende" #: cps/templates/feed.xml:33 cps/templates/layout.html:44 #: cps/templates/layout.html:45 msgid "Search" -msgstr "Zoek" +msgstr "Zoeken" #: cps/templates/http_error.html:23 msgid "Back to home" -msgstr "" +msgstr "Terug naar startpagina" #: cps/templates/index.html:5 msgid "Discover (Random Books)" -msgstr "Ontdek (Willekeurige Boeken)" +msgstr "Verkennen (willekeurige boeken)" -#: cps/templates/index.html:65 +#: cps/templates/index.html:64 msgid "Group by series" msgstr "" #: cps/templates/index.xml:6 msgid "Start" -msgstr "Start" +msgstr "Starten" #: cps/templates/index.xml:21 msgid "Popular publications from this catalog based on Downloads." -msgstr "Populaire publicaties van deze cataloog gebaseerd op Downloads." +msgstr "Populaire publicaties uit deze catalogus, gebaseerd op Downloads." #: cps/templates/index.xml:28 msgid "Popular publications from this catalog based on Rating." -msgstr "Populaire publicaties van deze cataloog gebaseerd op Beoordeling." +msgstr "Populaire publicaties uit deze catalogus, gebaseerd op Beoordeling." #: cps/templates/index.xml:31 msgid "New Books" -msgstr "Nieuwe Boeken" +msgstr "Nieuwe boeken" #: cps/templates/index.xml:35 msgid "The latest Books" @@ -1744,11 +1806,11 @@ msgstr "Recentste boeken" #: cps/templates/index.xml:42 msgid "Show Random Books" -msgstr "Toon Willekeurige Boeken" +msgstr "Willekeurige boeken tonen" #: cps/templates/index.xml:65 msgid "Books ordered by Author" -msgstr "Boeken gesorteerd op Auteur" +msgstr "Boeken gesorteerd op auteur" #: cps/templates/index.xml:72 msgid "Books ordered by publisher" @@ -1756,35 +1818,35 @@ msgstr "Boeken gesorteerd op uitgever" #: cps/templates/index.xml:79 msgid "Books ordered by category" -msgstr "Boeken gesorteerd op Categorie" +msgstr "Boeken gesorteerd op categorie" #: cps/templates/index.xml:86 msgid "Books ordered by series" -msgstr "Boeken gesorteerd op Serie" +msgstr "Boeken gesorteerd op serie" #: cps/templates/index.xml:89 cps/templates/layout.html:132 msgid "Public Shelves" -msgstr "Publieke Boekenplanken" +msgstr "Openbare boekenplanken" #: cps/templates/index.xml:93 msgid "Books organized in public shelfs, visible to everyone" -msgstr "Boeken georganiseerd in publieke boekenplanken, zichtbaar voor iedereen" +msgstr "Boeken georganiseerd op openbare boekenplanken, zichtbaar voor iedereen" #: cps/templates/index.xml:97 cps/templates/layout.html:136 msgid "Your Shelves" -msgstr "Jou Boekenplanken" +msgstr "Jouw boekenplanken" #: cps/templates/index.xml:101 msgid "User's own shelfs, only visible to the current user himself" -msgstr "Eigen boekenplanken, enkel zichtbaar voor de huidige gebruiker zelf" +msgstr "Eigen boekenplanken, enkel zichtbaar voor de huidige gebruiker" #: cps/templates/layout.html:28 msgid "Home" -msgstr "" +msgstr "Startpagina" #: cps/templates/layout.html:34 msgid "Toggle navigation" -msgstr "Kies navigatie" +msgstr "Navigatie aanpassen" #: cps/templates/layout.html:55 msgid "Advanced Search" @@ -1797,23 +1859,23 @@ msgstr "Instellingen" #: cps/templates/layout.html:78 msgid "Account" -msgstr "" +msgstr "Account" #: cps/templates/layout.html:80 msgid "Logout" -msgstr "Log uit" +msgstr "Uitloggen" #: cps/templates/layout.html:85 cps/templates/register.html:14 msgid "Register" -msgstr "Registreer" +msgstr "Registreren" #: cps/templates/layout.html:111 cps/templates/layout.html:218 msgid "Uploading..." -msgstr "Aan het uploaden..." +msgstr "Bezig met uploaden..." #: cps/templates/layout.html:112 msgid "please don't refresh the page" -msgstr "gelieve de pagina niet te herladen" +msgstr "vernieuw de pagina niet" #: cps/templates/layout.html:122 msgid "Browse" @@ -1821,7 +1883,7 @@ msgstr "Verkennen" #: cps/templates/layout.html:141 msgid "Create a Shelf" -msgstr "Maak een boekenplank" +msgstr "Creëer een boekenplank" #: cps/templates/layout.html:142 cps/templates/stats.html:3 msgid "About" @@ -1833,15 +1895,15 @@ msgstr "Vorige" #: cps/templates/layout.html:183 msgid "Book Details" -msgstr "Boek Details" +msgstr "Boekgegevens" #: cps/templates/layout.html:217 msgid "Upload done, processing, please wait..." -msgstr "" +msgstr "Uploaden voltooid; bezig met verwerken..." #: cps/templates/layout.html:220 msgid "Error" -msgstr "" +msgstr "Fout" #: cps/templates/login.html:8 cps/templates/login.html:9 #: cps/templates/register.html:7 cps/templates/user_edit.html:8 @@ -1855,19 +1917,27 @@ msgstr "Wachtwoord" #: cps/templates/login.html:17 msgid "Remember me" -msgstr "Onthoumij" +msgstr "Onthouden" #: cps/templates/login.html:22 msgid "Log in with magic link" msgstr "Inloggen met magische koppeling" +#: cps/templates/logviewer.html:5 +msgid "Show Calibre-Web log" +msgstr "" + +#: cps/templates/logviewer.html:8 +msgid "Show access log" +msgstr "" + #: cps/templates/osd.xml:5 msgid "Calibre-Web ebook catalog" -msgstr "Calibre-Web ebook cataloog" +msgstr "Calibre-Web - e-boekcatalogus" #: cps/templates/read.html:74 msgid "Reflow text when sidebars are open." -msgstr "Herschuif tekst waneer het zijpaneel open staat." +msgstr "Tekstindeling automatisch aanpassen als het zijpaneel geopend is." #: cps/templates/readcbr.html:88 msgid "Keyboard Shortcuts" @@ -1875,39 +1945,39 @@ msgstr "Sneltoetsen" #: cps/templates/readcbr.html:91 msgid "Previous Page" -msgstr "Vorige Pagina" +msgstr "Vorige pagina" #: cps/templates/readcbr.html:92 msgid "Next Page" -msgstr "Volgende Pagina" +msgstr "Volgende pagina" #: cps/templates/readcbr.html:93 msgid "Scale to Best" -msgstr "Optimaal schalen" +msgstr "Optimaal inpassen" #: cps/templates/readcbr.html:94 msgid "Scale to Width" -msgstr "Schalen naar breedte" +msgstr "Aanpassen aan breedte" #: cps/templates/readcbr.html:95 msgid "Scale to Height" -msgstr "Schalen naar hoogte" +msgstr "Aanpassen aan hoogte" #: cps/templates/readcbr.html:96 msgid "Scale to Native" -msgstr "Schalen op ware grootte" +msgstr "Ware grootte" #: cps/templates/readcbr.html:97 msgid "Rotate Right" -msgstr "Draai rechtsom" +msgstr "Naar rechts draaien" #: cps/templates/readcbr.html:98 msgid "Rotate Left" -msgstr "Draai linksom" +msgstr "Naar links draaien" #: cps/templates/readcbr.html:99 msgid "Flip Image" -msgstr "Keer beeld om" +msgstr "Afbeelding omdraaien" #: cps/templates/readcbr.html:115 msgid "Light" @@ -1939,11 +2009,11 @@ msgstr "Ware grootte" #: cps/templates/readcbr.html:132 msgid "Rotate" -msgstr "Draai" +msgstr "Draaien" #: cps/templates/readcbr.html:143 msgid "Flip" -msgstr "Keer" +msgstr "Omdraaien" #: cps/templates/readcbr.html:146 msgid "Horizontal" @@ -1955,15 +2025,15 @@ msgstr "Verticaal" #: cps/templates/readcbr.html:152 msgid "Direction" -msgstr "" +msgstr "Richting" #: cps/templates/readcbr.html:155 msgid "Left to Right" -msgstr "" +msgstr "Links-naar-rechts" #: cps/templates/readcbr.html:156 msgid "Right to Left" -msgstr "" +msgstr "Rechts-naar-links" #: cps/templates/readpdf.html:29 msgid "PDF reader" @@ -1971,11 +2041,11 @@ msgstr "" #: cps/templates/readtxt.html:6 msgid "Basic txt Reader" -msgstr "Basis txt Lezer" +msgstr "Basis tekstlezer" #: cps/templates/register.html:4 msgid "Register a new account" -msgstr "Registreer een nieuwe gebruiker" +msgstr "Nieuw account registreren" #: cps/templates/register.html:8 msgid "Choose a username" @@ -1983,31 +2053,31 @@ msgstr "Kies een gebruikersnaam" #: cps/templates/register.html:11 cps/templates/user_edit.html:13 msgid "E-mail address" -msgstr "Email adres" +msgstr "E-mailadres" #: cps/templates/register.html:12 msgid "Your email address" -msgstr "Jou email adres" +msgstr "Je e-mailadres" #: cps/templates/remote_login.html:6 msgid "Use your other device, login and visit " -msgstr "" +msgstr "Pak je andere apparaat, log in en ga naar " #: cps/templates/remote_login.html:9 msgid "Once you do so, you will automatically get logged in on this device." -msgstr "Eenmaal gedaan wordt je automagisch op dit apparaat ingelogd." +msgstr "Daarna wordt je automatisch op dit apparaat ingelogd." #: cps/templates/remote_login.html:12 msgid "The link will expire after 10 minutes." -msgstr "" +msgstr "De link vervalt na 10 minuten." #: cps/templates/search.html:5 msgid "No Results for:" -msgstr "Geen resultaat voor:" +msgstr "Geen resultaten voor:" #: cps/templates/search.html:6 msgid "Please try a different search" -msgstr "Gelieve een ander zoekwoord proberen" +msgstr "Probeer andere zoektermen" #: cps/templates/search.html:8 msgid "Results for:" @@ -2015,87 +2085,87 @@ msgstr "Resultaten voor:" #: cps/templates/search_form.html:19 msgid "Publishing date from" -msgstr "Publicatie datum van" +msgstr "Publicatiedatum van" #: cps/templates/search_form.html:26 msgid "Publishing date to" -msgstr "Publicatie datum tot" +msgstr "Publicatiedatum tot" #: cps/templates/search_form.html:43 msgid "Exclude Tags" -msgstr "Sluit Tags uit" +msgstr "Labels uitsluiten" #: cps/templates/search_form.html:63 msgid "Exclude Series" -msgstr "Sluit Series uit" +msgstr "Series uitsluiten" #: cps/templates/search_form.html:84 msgid "Exclude Languages" -msgstr "Sluit Talen uit" +msgstr "Talen uitsluiten" #: cps/templates/search_form.html:97 msgid "Rating bigger than" -msgstr "Waardering meer dan" +msgstr "Met beoordeling hoger dan" #: cps/templates/search_form.html:101 msgid "Rating less than" -msgstr "Waardering minder dan" +msgstr "Met beoordeling lager dan" #: cps/templates/shelf.html:10 msgid "Delete this Shelf" -msgstr "Wis deze boekenplank" +msgstr "Deze boekenplank verwijderen" #: cps/templates/shelf.html:11 msgid "Edit Shelf" -msgstr "Bewerk Boekenplank" +msgstr "Boekenplank aanpassen" #: cps/templates/shelf.html:12 cps/templates/shelf_order.html:11 msgid "Change order" -msgstr "Verander volgorde" +msgstr "Volgorde veranderen" #: cps/templates/shelf.html:67 msgid "Do you really want to delete the shelf?" -msgstr "Wil je echt deze boekenplank verwijderen?" +msgstr "Weet je zeker dat je deze boekenplank wilt verwijderen?" #: cps/templates/shelf.html:70 msgid "Shelf will be lost for everybody and forever!" -msgstr "Boekenplank zal verdwijnen voor iedereen en altijd!" +msgstr "De boekenplank wordt permanent verwijderd voor iedereen!" #: cps/templates/shelf_edit.html:13 msgid "should the shelf be public?" -msgstr "mag deze boekenplank publiek zijn?" +msgstr "moet de boekenplank openbaar zijn?" #: cps/templates/shelf_order.html:5 msgid "Drag 'n drop to rearrange order" -msgstr "Sleep en laat vallen om de volgorde te veranderen" +msgstr "Verander de volgorde middels slepen-en-neerzetten" #: cps/templates/stats.html:7 msgid "Calibre library statistics" -msgstr "Calibre bibliotheek statistieken" +msgstr "Calibre-bibliotheekstatistieken" #: cps/templates/stats.html:12 msgid "Books in this Library" -msgstr "Boeken in deze Bibliotheek" +msgstr "Boeken in deze bibliotheek" #: cps/templates/stats.html:16 msgid "Authors in this Library" -msgstr "Auteurs in deze Bibliotheek" +msgstr "Auteurs in deze bibliotheek" #: cps/templates/stats.html:20 msgid "Categories in this Library" -msgstr "Categorieën in deze Bibliotheek" +msgstr "Categorieën in deze bibliotheek" #: cps/templates/stats.html:24 msgid "Series in this Library" -msgstr "Series in deze Bibliotheek" +msgstr "Series in deze bibliotheek" #: cps/templates/stats.html:28 msgid "Linked libraries" -msgstr "Gelinkte bibliotheken" +msgstr "Gekoppelde bibliotheken" #: cps/templates/stats.html:32 msgid "Program library" -msgstr "Programma bibliotheek" +msgstr "Programmabibliotheek" #: cps/templates/stats.html:33 msgid "Installed Version" @@ -2103,7 +2173,7 @@ msgstr "Geïnstalleerde versie" #: cps/templates/tasks.html:7 msgid "Tasks list" -msgstr "Taaklijst" +msgstr "Takenlijst" #: cps/templates/tasks.html:12 msgid "User" @@ -2119,7 +2189,7 @@ msgstr "Status" #: cps/templates/tasks.html:16 msgid "Progress" -msgstr "Vooruitgang" +msgstr "Voortgang" #: cps/templates/tasks.html:17 msgid "Runtime" @@ -2127,31 +2197,31 @@ msgstr "Looptijd" #: cps/templates/tasks.html:18 msgid "Starttime" -msgstr "Start tijd" +msgstr "Begintijd" #: cps/templates/tasks.html:24 msgid "Delete finished tasks" -msgstr "Verwijder voltooide taken" +msgstr "Afgeronde taken verwijderen" #: cps/templates/tasks.html:25 msgid "Hide all tasks" -msgstr "Verberg alle taken" +msgstr "Alle taken verbergen" #: cps/templates/user_edit.html:18 msgid "Reset user Password" -msgstr "Reset gebruikers wachtwoord" +msgstr "Gebruikerswachtwoord herstellen" #: cps/templates/user_edit.html:27 msgid "Kindle E-Mail" -msgstr "Kindle email" +msgstr "Kindle-e-mailadres" #: cps/templates/user_edit.html:40 msgid "Show books with language" -msgstr "Toon boeken met taal" +msgstr "Boeken tonen met taal" #: cps/templates/user_edit.html:42 msgid "Show all" -msgstr "Toon alles" +msgstr "Alle tonen" #: cps/templates/user_edit.html:52 msgid "OAuth Settings" @@ -2167,11 +2237,11 @@ msgstr "" #: cps/templates/user_edit.html:124 msgid "Delete this user" -msgstr "Wis deze gebruiker" +msgstr "Deze gebruiker verwijderen" #: cps/templates/user_edit.html:139 msgid "Recent Downloads" -msgstr "Recente Downloads" +msgstr "Recente downloads" #~ msgid "Afar" #~ msgstr "Afar; Hamitisch" @@ -3439,18 +3509,12 @@ msgstr "Recente Downloads" #~ msgid "Cover is not a jpg file, can't save" #~ msgstr "Boekomslag is geen jpg bestand, opslaan niet mogelijk" -#~ msgid "Preparing document for printing..." -#~ msgstr "" - #~ msgid "Using your another device, visit" #~ msgstr "Bezoek met je andere apparaat" #~ msgid "and log in" #~ msgstr "en log in" -#~ msgid "Using your another device, login and visit " -#~ msgstr "" - #~ msgid "Newest Books" #~ msgstr "Nieuwste boeken" @@ -3461,19 +3525,22 @@ msgstr "Recente Downloads" #~ msgstr "Boeken (A-Z)" #~ msgid "Books (Z-A)" -#~ msgstr "Boeken (A-Z)" +#~ msgstr "Boeken (Z-A)" #~ msgid "Error opening eBook. Fileformat is not supported." -#~ msgstr "" +#~ msgstr "Kan boek niet openen: het bestandsformaat wordt niet ondersteund." + +#~ msgid "successfully deleted shelf %(name)s" +#~ msgstr "boekenplank '%(name)s' is verwijderd" #~ msgid "File %(title)s" -#~ msgstr "" +#~ msgstr "Bestand %(title)s" #~ msgid "Show sorted books" -#~ msgstr "Toon gesorteerde boeken" +#~ msgstr "Gesorteerde boeken tonen" #~ msgid "Sorted Books" -#~ msgstr "Gesorteerde Boeken" +#~ msgstr "Gesorteerde boeken" #~ msgid "Sort By" #~ msgstr "Sorteren op" @@ -3491,5 +3558,8 @@ msgstr "Recente Downloads" #~ msgstr "Aflopend" #~ msgid "PDF.js viewer" -#~ msgstr "PDF.js viewer" +#~ msgstr "PDF.js-weergave" + +#~ msgid "Register with %s, " +#~ msgstr "" diff --git a/cps/translations/pl/LC_MESSAGES/messages.mo b/cps/translations/pl/LC_MESSAGES/messages.mo index 3e193cb2..779428ae 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 035bf38b..ebce1d32 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: 2017-04-11 22:51)\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-05-31 11:20+0200\n" +"POT-Creation-Date: 2019-06-22 19:54+0200\n" "PO-Revision-Date: 2017-04-11 22:51+0200\n" "Last-Translator: Radosław Kierznowski \n" "Language: pl\n" @@ -17,13 +17,13 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" -#: cps/about.py:76 +#: cps/about.py:78 msgid "Statistics" msgstr "Statystyki" -#: cps/admin.py:97 +#: cps/admin.py:98 msgid "Server restarted, please reload page" msgstr "Serwer uruchomiony ponownie, proszę odświeżyć stronę" @@ -31,186 +31,202 @@ msgstr "Serwer uruchomiony ponownie, proszę odświeżyć stronę" msgid "Performing shutdown of server, please close window" msgstr "Wykonano wyłączenie serwera, proszę zamknąć okno" -#: cps/admin.py:120 cps/updater.py:445 +#: cps/admin.py:119 cps/updater.py:448 msgid "Unknown" msgstr "" -#: cps/admin.py:139 +#: cps/admin.py:138 msgid "Admin page" msgstr "Portal administracyjny" -#: cps/admin.py:208 cps/admin.py:486 +#: cps/admin.py:207 cps/admin.py:532 msgid "Calibre-Web configuration updated" msgstr "Konfiguracja Calibre-Web została zaktualizowana" -#: cps/admin.py:222 cps/templates/admin.html:102 +#: cps/admin.py:220 cps/templates/admin.html:102 msgid "UI Configuration" msgstr "" -#: cps/admin.py:295 +#: cps/admin.py:293 msgid "Import of optional Google Drive requirements missing" msgstr "" -#: cps/admin.py:298 +#: cps/admin.py:296 msgid "client_secrets.json is missing or not readable" msgstr "" -#: cps/admin.py:303 cps/admin.py:332 +#: cps/admin.py:301 cps/admin.py:330 msgid "client_secrets.json is not configured for web application" msgstr "" -#: cps/admin.py:335 cps/admin.py:361 cps/admin.py:373 cps/admin.py:398 -#: cps/admin.py:426 cps/admin.py:440 cps/admin.py:463 cps/admin.py:476 -#: cps/admin.py:494 cps/admin.py:501 cps/admin.py:516 -#: cps/templates/admin.html:101 +#: cps/admin.py:333 cps/admin.py:359 cps/admin.py:371 cps/admin.py:396 +#: cps/admin.py:403 cps/admin.py:436 cps/admin.py:460 cps/admin.py:474 +#: cps/admin.py:493 cps/admin.py:510 cps/admin.py:522 cps/admin.py:538 +#: cps/admin.py:545 cps/admin.py:559 cps/templates/admin.html:101 msgid "Basic Configuration" msgstr "Podstawowa konfiguracja" -#: cps/admin.py:358 +#: cps/admin.py:356 msgid "Keyfile location is not valid, please enter correct path" msgstr "" -#: cps/admin.py:370 +#: cps/admin.py:368 cps/admin.py:433 msgid "Certfile location is not valid, please enter correct path" msgstr "" -#: cps/admin.py:395 -msgid "Please enter a LDAP provider and a DN" +#: cps/admin.py:393 +msgid "Please enter a LDAP provider, port, DN and user object identifier" msgstr "" -#: cps/admin.py:423 +#: cps/admin.py:400 +msgid "Please enter a LDAP service account and password" +msgstr "" + +#: cps/admin.py:457 msgid "Please enter Github oauth credentials" msgstr "" -#: cps/admin.py:437 +#: cps/admin.py:471 msgid "Please enter Google oauth credentials" msgstr "" -#: cps/admin.py:460 +#: cps/admin.py:490 msgid "Logfile location is not valid, please enter correct path" msgstr "" -#: cps/admin.py:498 +#: cps/admin.py:507 +msgid "Access Logfile location is not valid, please enter correct path" +msgstr "" + +#: cps/admin.py:542 msgid "DB location is not valid, please enter correct path" msgstr "Lokalizacja bazy danych jest nieprawidłowa, wpisz poprawną ścieżkę" -#: cps/admin.py:558 cps/web.py:1045 +#: cps/admin.py:602 cps/web.py:1040 msgid "Please fill out all fields!" msgstr "Proszę wypełnić wszystkie pola!" -#: cps/admin.py:560 cps/admin.py:566 cps/admin.py:582 +#: cps/admin.py:604 cps/admin.py:610 cps/admin.py:626 #: cps/templates/admin.html:35 msgid "Add new user" msgstr "Dodaj nowego użytkownika" -#: cps/admin.py:564 cps/web.py:1248 +#: cps/admin.py:608 cps/web.py:1251 msgid "E-mail is not from valid domain" msgstr "" -#: cps/admin.py:572 +#: cps/admin.py:616 #, python-format msgid "User '%(user)s' created" msgstr "Użytkownik '%(user)s' został utworzony" -#: cps/admin.py:576 +#: cps/admin.py:620 msgid "Found an existing account for this e-mail address or nickname." msgstr "" -#: cps/admin.py:607 +#: cps/admin.py:651 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "" -#: cps/admin.py:610 +#: cps/admin.py:654 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "" -#: cps/admin.py:612 cps/web.py:1029 +#: cps/admin.py:656 cps/web.py:1023 msgid "Please configure your kindle e-mail address first..." msgstr "" -#: cps/admin.py:614 +#: cps/admin.py:658 msgid "E-mail server settings updated" msgstr "" -#: cps/admin.py:615 +#: cps/admin.py:659 msgid "Edit e-mail server settings" msgstr "" -#: cps/admin.py:640 +#: cps/admin.py:687 #, python-format msgid "User '%(nick)s' deleted" msgstr "Użytkownik '%(nick)s' został usunięty" -#: cps/admin.py:711 +#: cps/admin.py:690 +msgid "No admin user remaining, can't delete user" +msgstr "" + +#: cps/admin.py:761 #, python-format msgid "User '%(nick)s' updated" msgstr "Użytkownik '%(nick)s' został zaktualizowany" -#: cps/admin.py:714 +#: cps/admin.py:764 msgid "An unknown error occured." msgstr "Wystąpił nieznany błąd." -#: cps/admin.py:717 +#: cps/admin.py:767 #, python-format msgid "Edit User %(nick)s" msgstr "Edytuj użytkownika %(nick)s" -#: cps/admin.py:733 +#: cps/admin.py:783 #, python-format msgid "Password for user %(user)s reset" msgstr "" -#: cps/admin.py:736 cps/web.py:1070 +#: cps/admin.py:786 cps/web.py:1065 msgid "An unknown error occurred. Please try again later." msgstr "" -#: cps/admin.py:755 +#: cps/admin.py:797 +msgid "Logfile viewer" +msgstr "" + +#: cps/admin.py:832 msgid "Requesting update package" msgstr "Żądanie o pakiet aktualizacji" -#: cps/admin.py:756 +#: cps/admin.py:833 msgid "Downloading update package" msgstr "Pobieranie pakietu aktualizacji" -#: cps/admin.py:757 +#: cps/admin.py:834 msgid "Unzipping update package" msgstr "Rozpakowywanie pakietu aktualizacji" -#: cps/admin.py:758 +#: cps/admin.py:835 msgid "Replacing files" msgstr "" -#: cps/admin.py:759 +#: cps/admin.py:836 msgid "Database connections are closed" msgstr "Połączenia z bazą danych zostały zakończone" -#: cps/admin.py:760 +#: cps/admin.py:837 msgid "Stopping server" msgstr "" -#: cps/admin.py:761 +#: cps/admin.py:838 msgid "Update finished, please press okay and reload page" msgstr "Aktualizacja zakończona, proszę nacisnąć OK i odświeżyć stronę" -#: cps/admin.py:762 cps/admin.py:763 cps/admin.py:764 cps/admin.py:765 +#: cps/admin.py:839 cps/admin.py:840 cps/admin.py:841 cps/admin.py:842 msgid "Update failed:" msgstr "" -#: cps/admin.py:762 cps/updater.py:277 cps/updater.py:456 cps/updater.py:458 +#: cps/admin.py:839 cps/updater.py:273 cps/updater.py:459 cps/updater.py:461 msgid "HTTP Error" msgstr "" -#: cps/admin.py:763 cps/updater.py:279 cps/updater.py:460 +#: cps/admin.py:840 cps/updater.py:275 cps/updater.py:463 msgid "Connection error" msgstr "" -#: cps/admin.py:764 cps/updater.py:281 cps/updater.py:462 +#: cps/admin.py:841 cps/updater.py:277 cps/updater.py:465 msgid "Timeout while establishing connection" msgstr "" -#: cps/admin.py:765 cps/updater.py:283 cps/updater.py:464 +#: cps/admin.py:842 cps/updater.py:279 cps/updater.py:467 msgid "General error" msgstr "" @@ -228,720 +244,714 @@ msgstr "" msgid "not configured" msgstr "" -#: cps/editbooks.py:218 cps/editbooks.py:432 +#: cps/editbooks.py:215 cps/editbooks.py:394 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "" -#: cps/editbooks.py:246 +#: cps/editbooks.py:243 msgid "edit metadata" msgstr "edytuj metadane" -#: cps/editbooks.py:325 cps/editbooks.py:595 +#: cps/editbooks.py:322 cps/editbooks.py:557 #, 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 przesłania na ten serwer" -#: cps/editbooks.py:329 cps/editbooks.py:599 +#: cps/editbooks.py:326 cps/editbooks.py:561 msgid "File to be uploaded must have an extension" msgstr "Plik do przesłania musi mieć rozszerzenie" -#: cps/editbooks.py:341 cps/editbooks.py:619 +#: cps/editbooks.py:338 cps/editbooks.py:581 #, 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:346 +#: cps/editbooks.py:343 #, python-format msgid "Failed to store file %(file)s." msgstr "" -#: cps/editbooks.py:363 +#: cps/editbooks.py:360 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "" -#: cps/editbooks.py:382 -#, python-format -msgid "Failed to create path for cover %(path)s (Permission denied)." -msgstr "" - -#: cps/editbooks.py:390 -#, python-format -msgid "Failed to store cover-file %(cover)s." -msgstr "" - -#: cps/editbooks.py:393 -msgid "Cover-file is not a valid image file" -msgstr "" - -#: cps/editbooks.py:399 cps/editbooks.py:413 +#: cps/editbooks.py:374 msgid "Cover is not a supported imageformat (jpg/png/webp), can't save" msgstr "" -#: cps/editbooks.py:445 cps/editbooks.py:454 +#: cps/editbooks.py:407 cps/editbooks.py:416 msgid "unknown" msgstr "" -#: cps/editbooks.py:486 +#: cps/editbooks.py:448 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/editbooks.py:534 +#: cps/editbooks.py:496 #, python-format msgid "%(langname)s is not a valid language" msgstr "" -#: cps/editbooks.py:565 +#: cps/editbooks.py:527 msgid "Metadata successfully updated" msgstr "" -#: cps/editbooks.py:574 +#: cps/editbooks.py:536 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/editbooks.py:624 +#: cps/editbooks.py:586 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "Nie można przechowywać pliku %(file)s (Odmowa dostępu)." -#: cps/editbooks.py:629 +#: cps/editbooks.py:591 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "Nie udało się usunąć pliku %(file)s (Odmowa dostępu)." -#: cps/editbooks.py:712 +#: cps/editbooks.py:674 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:741 +#: cps/editbooks.py:703 msgid "Source or destination format for conversion missing" msgstr "" -#: cps/editbooks.py:751 +#: cps/editbooks.py:711 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "" -#: cps/editbooks.py:755 +#: cps/editbooks.py:715 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "" -#: cps/gdrive.py:56 +#: cps/gdrive.py:61 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "" -#: cps/gdrive.py:101 +#: cps/gdrive.py:106 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "" -#: cps/helper.py:97 +#: cps/helper.py:94 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "" -#: cps/helper.py:109 +#: cps/helper.py:106 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "" -#: cps/helper.py:116 cps/helper.py:223 cps/templates/detail.html:41 +#: cps/helper.py:113 cps/helper.py:220 cps/templates/detail.html:41 #: cps/templates/detail.html:45 msgid "Send to Kindle" msgstr "Wyślij do Kindle" -#: cps/helper.py:117 cps/helper.py:135 cps/helper.py:225 +#: cps/helper.py:114 cps/helper.py:132 cps/helper.py:222 msgid "This e-mail has been sent via Calibre-Web." msgstr "" -#: cps/helper.py:128 +#: cps/helper.py:125 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "" -#: cps/helper.py:133 +#: cps/helper.py:130 msgid "Calibre-Web test e-mail" msgstr "" -#: cps/helper.py:134 +#: cps/helper.py:131 msgid "Test e-mail" msgstr "" -#: cps/helper.py:150 +#: cps/helper.py:147 msgid "Get Started with Calibre-Web" msgstr "" -#: cps/helper.py:151 +#: cps/helper.py:148 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "" -#: cps/helper.py:165 cps/helper.py:167 cps/helper.py:169 cps/helper.py:177 -#: cps/helper.py:179 cps/helper.py:181 +#: cps/helper.py:162 cps/helper.py:164 cps/helper.py:166 cps/helper.py:174 +#: cps/helper.py:176 cps/helper.py:178 #, python-format msgid "Send %(format)s to Kindle" msgstr "" -#: cps/helper.py:185 +#: cps/helper.py:182 #, python-format msgid "Convert %(orig)s to %(format)s and send to Kindle" msgstr "" -#: cps/helper.py:224 +#: cps/helper.py:221 #, python-format msgid "E-mail: %(book)s" msgstr "" -#: cps/helper.py:227 +#: cps/helper.py:224 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "" -#: cps/helper.py:335 +#: cps/helper.py:331 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:345 +#: cps/helper.py:341 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:359 +#: cps/helper.py:355 #, python-format msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:385 cps/helper.py:395 cps/helper.py:403 +#: cps/helper.py:381 cps/helper.py:391 cps/helper.py:399 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "" -#: cps/helper.py:424 +#: cps/helper.py:420 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "" -#: cps/helper.py:584 +#: cps/helper.py:579 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:586 +#: cps/helper.py:581 msgid "Unrar binary file not found" msgstr "" -#: cps/helper.py:614 +#: cps/helper.py:609 msgid "Waiting" msgstr "" -#: cps/helper.py:616 +#: cps/helper.py:611 msgid "Failed" msgstr "" -#: cps/helper.py:618 +#: cps/helper.py:613 msgid "Started" msgstr "" -#: cps/helper.py:620 +#: cps/helper.py:615 msgid "Finished" msgstr "" -#: cps/helper.py:622 +#: cps/helper.py:617 msgid "Unknown Status" msgstr "" -#: cps/helper.py:627 +#: cps/helper.py:622 msgid "E-mail: " msgstr "" -#: cps/helper.py:629 cps/helper.py:633 +#: cps/helper.py:624 cps/helper.py:628 msgid "Convert: " msgstr "" -#: cps/helper.py:631 +#: cps/helper.py:626 msgid "Upload: " msgstr "" -#: cps/helper.py:635 +#: cps/helper.py:630 msgid "Unknown Task: " msgstr "" -#: cps/oauth_bb.py:87 +#: cps/oauth_bb.py:91 #, python-format -msgid "Register with %s, " +msgid "Register with %(provider)s" msgstr "" -#: cps/oauth_bb.py:145 +#: cps/oauth_bb.py:149 msgid "Failed to log in with GitHub." msgstr "" -#: cps/oauth_bb.py:150 +#: cps/oauth_bb.py:154 msgid "Failed to fetch user info from GitHub." msgstr "" -#: cps/oauth_bb.py:161 +#: cps/oauth_bb.py:165 msgid "Failed to log in with Google." msgstr "" -#: cps/oauth_bb.py:166 +#: cps/oauth_bb.py:170 msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:265 +#: cps/oauth_bb.py:269 #, python-format msgid "Unlink to %(oauth)s success." msgstr "" -#: cps/oauth_bb.py:269 +#: cps/oauth_bb.py:273 #, python-format msgid "Unlink to %(oauth)s failed." msgstr "" -#: cps/oauth_bb.py:272 +#: cps/oauth_bb.py:276 #, python-format msgid "Not linked to %(oauth)s." msgstr "" -#: cps/oauth_bb.py:300 +#: cps/oauth_bb.py:304 msgid "GitHub Oauth error, please retry later." msgstr "" -#: cps/oauth_bb.py:319 +#: cps/oauth_bb.py:323 msgid "Google Oauth error, please retry later." msgstr "" -#: cps/shelf.py:40 cps/shelf.py:92 +#: cps/shelf.py:46 cps/shelf.py:98 msgid "Invalid shelf specified" msgstr "" -#: cps/shelf.py:47 +#: cps/shelf.py:53 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" msgstr "" -#: cps/shelf.py:55 +#: cps/shelf.py:61 msgid "You are not allowed to edit public shelves" msgstr "" -#: cps/shelf.py:64 +#: cps/shelf.py:70 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" msgstr "" -#: cps/shelf.py:78 +#: cps/shelf.py:84 #, 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:97 +#: cps/shelf.py:103 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "" -#: cps/shelf.py:102 +#: cps/shelf.py:108 msgid "User is not allowed to edit public shelves" msgstr "" -#: cps/shelf.py:120 +#: cps/shelf.py:126 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "" -#: cps/shelf.py:134 +#: cps/shelf.py:140 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "" -#: cps/shelf.py:136 +#: cps/shelf.py:142 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "" -#: cps/shelf.py:173 +#: cps/shelf.py:179 #, 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:179 +#: cps/shelf.py:185 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" -#: cps/shelf.py:200 cps/shelf.py:224 +#: cps/shelf.py:206 cps/shelf.py:230 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Półka o nazwie '%(title)s' już istnieje." -#: cps/shelf.py:205 +#: cps/shelf.py:211 #, python-format msgid "Shelf %(title)s created" msgstr "Półka %(title)s została utworzona" -#: cps/shelf.py:207 cps/shelf.py:235 +#: cps/shelf.py:213 cps/shelf.py:241 msgid "There was an error" msgstr "Wystąpił błąd" -#: cps/shelf.py:208 cps/shelf.py:210 +#: cps/shelf.py:214 cps/shelf.py:216 msgid "create a shelf" msgstr "utwórz półkę" -#: cps/shelf.py:233 +#: cps/shelf.py:239 #, python-format msgid "Shelf %(title)s changed" msgstr "Półka %(title)s została zmieniona" -#: cps/shelf.py:236 cps/shelf.py:238 +#: cps/shelf.py:242 cps/shelf.py:244 msgid "Edit a shelf" msgstr "Edytuj półkę" -#: cps/shelf.py:259 -#, python-format -msgid "successfully deleted shelf %(name)s" -msgstr "pomyślnie usunięto półkę %(name)s" - -#: cps/shelf.py:289 +#: cps/shelf.py:295 #, python-format msgid "Shelf: '%(name)s'" msgstr "Półka: '%(name)s'" -#: cps/shelf.py:292 +#: cps/shelf.py:298 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "" -#: cps/shelf.py:324 +#: cps/shelf.py:330 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Zmieniono kolejność półki: '%(name)s'" -#: cps/ub.py:111 +#: cps/ub.py:68 msgid "Recently Added" msgstr "" -#: cps/ub.py:113 +#: cps/ub.py:70 msgid "Show recent books" msgstr "" -#: cps/templates/index.xml:17 cps/ub.py:114 +#: cps/templates/index.xml:17 cps/ub.py:71 msgid "Hot Books" msgstr "Najpopularniejsze książki" -#: cps/ub.py:115 +#: cps/ub.py:72 msgid "Show hot books" msgstr "Pokaż najpopularniejsze książki" -#: cps/templates/index.xml:24 cps/ub.py:118 +#: cps/templates/index.xml:24 cps/ub.py:75 msgid "Best rated Books" msgstr "Najlepiej ocenione książki" -#: cps/ub.py:120 +#: cps/ub.py:77 msgid "Show best rated books" msgstr "Pokaż najlepiej ocenione książki" -#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:121 -#: cps/web.py:965 +#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:78 +#: cps/web.py:958 msgid "Read Books" msgstr "Przeczytane książki" -#: cps/ub.py:123 +#: cps/ub.py:80 msgid "Show read and unread" msgstr "Pokaż przeczytane i nieprzeczytane" -#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:125 -#: cps/web.py:969 +#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:82 +#: cps/web.py:962 msgid "Unread Books" msgstr "Nieprzeczytane książki" -#: cps/ub.py:127 +#: cps/ub.py:84 msgid "Show unread" msgstr "" -#: cps/ub.py:128 +#: cps/ub.py:85 msgid "Discover" msgstr "Odkrywaj" -#: cps/ub.py:130 +#: cps/ub.py:87 msgid "Show random books" msgstr "Pokaż losowe książki" -#: cps/ub.py:131 +#: cps/ub.py:88 msgid "Categories" msgstr "Kategorie" -#: cps/ub.py:133 +#: cps/ub.py:90 msgid "Show category selection" msgstr "Pokaż wybór kategorii" #: cps/templates/book_edit.html:71 cps/templates/search_form.html:53 -#: cps/ub.py:134 +#: cps/ub.py:91 msgid "Series" msgstr "Seria" -#: cps/ub.py:136 +#: cps/ub.py:93 msgid "Show series selection" msgstr "Pokaż wybór serii" -#: cps/templates/index.xml:61 cps/ub.py:137 +#: cps/templates/index.xml:61 cps/ub.py:94 msgid "Authors" msgstr "Autorzy" -#: cps/ub.py:139 +#: cps/ub.py:96 msgid "Show author selection" msgstr "Pokaż wybór autora" -#: cps/templates/index.xml:68 cps/ub.py:141 +#: cps/templates/index.xml:68 cps/ub.py:98 msgid "Publishers" msgstr "" -#: cps/ub.py:143 +#: cps/ub.py:100 msgid "Show publisher selection" msgstr "" -#: cps/templates/search_form.html:74 cps/ub.py:144 +#: cps/templates/search_form.html:74 cps/ub.py:101 msgid "Languages" msgstr "Języki" -#: cps/ub.py:147 +#: cps/ub.py:104 msgid "Show language selection" msgstr "Pokaż wybór języka" -#: cps/ub.py:148 +#: cps/ub.py:105 msgid "Ratings" msgstr "" -#: cps/ub.py:150 +#: cps/ub.py:107 msgid "Show ratings selection" msgstr "" -#: cps/ub.py:151 +#: cps/ub.py:108 msgid "File formats" msgstr "" -#: cps/ub.py:153 +#: cps/ub.py:110 msgid "Show file formats selection" msgstr "" -#: cps/updater.py:257 cps/updater.py:364 cps/updater.py:377 +#: cps/updater.py:253 cps/updater.py:360 cps/updater.py:373 msgid "Unexpected data while reading update information" msgstr "" -#: cps/updater.py:264 cps/updater.py:370 +#: cps/updater.py:260 cps/updater.py:366 msgid "No update available. You already have the latest version installed" msgstr "" -#: cps/updater.py:290 cps/updater.py:422 +#: cps/updater.py:286 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "" -#: cps/updater.py:343 +#: cps/updater.py:339 msgid "Could not fetch update information" msgstr "" -#: cps/updater.py:357 +#: cps/updater.py:353 msgid "No release information available" msgstr "" -#: cps/updater.py:403 cps/updater.py:412 +#: cps/updater.py:406 cps/updater.py:415 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "" -#: cps/web.py:457 +#: cps/updater.py:425 +msgid "Click on the button below to update to the latest stable version." +msgstr "" + +#: cps/web.py:445 msgid "Recently Added Books" msgstr "" -#: cps/web.py:484 +#: cps/web.py:473 msgid "Best rated books" msgstr "Najlepiej oceniane książki" -#: cps/templates/index.xml:38 cps/web.py:492 +#: cps/templates/index.xml:38 cps/web.py:481 msgid "Random Books" msgstr "Losowe książki" -#: cps/web.py:516 +#: cps/web.py:505 msgid "Books" msgstr "" -#: cps/web.py:543 +#: cps/web.py:532 msgid "Hot Books (most downloaded)" msgstr "Najpopularniejsze książki (najczęściej pobierane)" -#: cps/web.py:553 cps/web.py:1294 cps/web.py:1383 +#: cps/web.py:542 cps/web.py:1298 cps/web.py:1386 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "Błąd otwierania e-booka. Plik nie istnieje lub plik nie jest dostępny:" -#: cps/web.py:580 +#: cps/web.py:559 +#, python-format +msgid "Author: %(name)s" +msgstr "" + +#: cps/web.py:571 #, python-format msgid "Publisher: %(name)s" msgstr "" -#: cps/web.py:591 +#: cps/web.py:582 #, python-format msgid "Series: %(serie)s" msgstr "Seria: %(serie)s" -#: cps/web.py:602 +#: cps/web.py:593 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:613 +#: cps/web.py:604 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:625 +#: cps/web.py:616 #, python-format msgid "Category: %(name)s" msgstr "Kategoria: %(name)s" -#: cps/web.py:659 +#: cps/web.py:650 msgid "Publisher list" msgstr "" -#: cps/templates/index.xml:82 cps/web.py:675 +#: cps/templates/index.xml:82 cps/web.py:666 msgid "Series list" msgstr "Lista serii" -#: cps/web.py:689 +#: cps/web.py:680 msgid "Ratings list" msgstr "" -#: cps/web.py:702 +#: cps/web.py:693 msgid "File formats list" msgstr "" -#: cps/web.py:730 +#: cps/web.py:721 msgid "Available languages" msgstr "Dostępne języki" -#: cps/web.py:750 +#: cps/web.py:741 #, python-format msgid "Language: %(name)s" msgstr "Język: %(name)s" -#: cps/templates/index.xml:75 cps/web.py:764 +#: cps/templates/index.xml:75 cps/web.py:755 msgid "Category list" msgstr "Lista kategorii" -#: cps/templates/layout.html:73 cps/web.py:777 +#: cps/templates/layout.html:73 cps/web.py:769 msgid "Tasks" msgstr "" -#: cps/web.py:841 +#: cps/web.py:834 msgid "Published after " msgstr "" -#: cps/web.py:848 +#: cps/web.py:841 msgid "Published before " msgstr "" -#: cps/web.py:862 +#: cps/web.py:855 #, python-format msgid "Rating <= %(rating)s" msgstr "" -#: cps/web.py:864 +#: cps/web.py:857 #, python-format msgid "Rating >= %(rating)s" msgstr "" -#: cps/web.py:924 cps/web.py:933 +#: cps/web.py:917 cps/web.py:926 msgid "search" msgstr "szukaj" -#: cps/web.py:1018 +#: cps/web.py:1012 msgid "Please configure the SMTP mail settings first..." msgstr "Proszę najpierw skonfigurować ustawienia SMTP poczty e-mail..." -#: cps/web.py:1023 +#: cps/web.py:1017 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "" -#: cps/web.py:1027 +#: cps/web.py:1021 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Wystąpił błąd podczas wysyłania tej książki: %(res)s" -#: cps/web.py:1046 cps/web.py:1071 cps/web.py:1076 cps/web.py:1081 -#: cps/web.py:1085 +#: cps/web.py:1041 cps/web.py:1066 cps/web.py:1070 cps/web.py:1075 +#: cps/web.py:1079 msgid "register" msgstr "rejestracja" -#: cps/web.py:1073 +#: cps/web.py:1068 msgid "Your e-mail is not allowed to register" msgstr "" -#: cps/web.py:1077 +#: cps/web.py:1071 msgid "Confirmation e-mail was send to your e-mail account." msgstr "" -#: cps/web.py:1080 +#: cps/web.py:1074 msgid "This username or e-mail address is already in use." msgstr "" -#: cps/web.py:1103 cps/web.py:1115 -#, python-format -msgid "You are now logged in as: '%(nickname)s'" +#: cps/web.py:1089 +msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1108 cps/web.py:1120 +#: cps/web.py:1098 cps/web.py:1212 +#, python-format +msgid "you are now logged in as: '%(nickname)s'" +msgstr "Zalogowałeś się jako: '%(nickname)s'" + +#: cps/web.py:1105 cps/web.py:1122 msgid "Wrong Username or Password" msgstr "Błędna nazwa użytkownika lub hasło" -#: cps/web.py:1111 +#: cps/web.py:1108 msgid "Could not login. LDAP server down, please contact your administrator" msgstr "" -#: cps/web.py:1124 cps/web.py:1146 +#: cps/web.py:1117 +#, python-format +msgid "You are now logged in as: '%(nickname)s'" +msgstr "" + +#: cps/web.py:1126 cps/web.py:1148 msgid "login" msgstr "logowanie" -#: cps/web.py:1158 cps/web.py:1189 +#: cps/web.py:1160 cps/web.py:1191 msgid "Token not found" msgstr "" -#: cps/web.py:1166 cps/web.py:1197 +#: cps/web.py:1168 cps/web.py:1199 msgid "Token has expired" msgstr "" -#: cps/web.py:1174 +#: cps/web.py:1176 msgid "Success! Please return to your device" msgstr "" -#: cps/web.py:1210 -#, python-format -msgid "you are now logged in as: '%(nickname)s'" -msgstr "Zalogowałeś się jako: '%(nickname)s'" - -#: cps/web.py:1250 cps/web.py:1277 cps/web.py:1281 +#: cps/web.py:1253 cps/web.py:1280 cps/web.py:1284 #, python-format msgid "%(name)s's profile" msgstr "Profil użytkownika %(name)s" -#: cps/web.py:1274 +#: cps/web.py:1277 msgid "Found an existing account for this e-mail address." msgstr "" -#: cps/web.py:1279 +#: cps/web.py:1282 msgid "Profile updated" msgstr "Zaktualizowano profil" -#: cps/web.py:1304 cps/web.py:1306 cps/web.py:1308 cps/web.py:1314 -#: cps/web.py:1318 +#: cps/web.py:1308 cps/web.py:1310 cps/web.py:1312 cps/web.py:1318 +#: cps/web.py:1322 msgid "Read a Book" msgstr "Czytaj książkę" -#: cps/web.py:1328 +#: cps/web.py:1332 msgid "Error opening eBook. File does not exist or file is not accessible." msgstr "" -#: cps/worker.py:308 +#: cps/worker.py:311 #, python-format msgid "Ebook-converter failed: %(error)s" msgstr "" -#: cps/worker.py:319 +#: cps/worker.py:322 #, python-format msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "" @@ -1057,53 +1067,57 @@ msgid "Administration" msgstr "Zarządzanie" #: cps/templates/admin.html:109 +msgid "View Logfiles" +msgstr "" + +#: cps/templates/admin.html:110 msgid "Reconnect to Calibre DB" msgstr "Połącz ponownie z bazą danych Calibre" -#: cps/templates/admin.html:110 +#: cps/templates/admin.html:111 msgid "Restart Calibre-Web" msgstr "Uruchom ponownie Calibre Web" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:112 msgid "Stop Calibre-Web" msgstr "Zatrzymaj Calibre Web" -#: cps/templates/admin.html:117 +#: cps/templates/admin.html:118 msgid "Update" msgstr "" -#: cps/templates/admin.html:121 +#: cps/templates/admin.html:122 msgid "Version" msgstr "" -#: cps/templates/admin.html:122 +#: cps/templates/admin.html:123 msgid "Details" msgstr "" -#: cps/templates/admin.html:128 +#: cps/templates/admin.html:129 msgid "Current version" msgstr "" -#: cps/templates/admin.html:134 +#: cps/templates/admin.html:135 msgid "Check for update" msgstr "Sprawdź aktualizacje" -#: cps/templates/admin.html:135 +#: cps/templates/admin.html:136 msgid "Perform Update" msgstr "Wykonaj aktualizację" -#: cps/templates/admin.html:147 +#: cps/templates/admin.html:148 msgid "Do you really want to restart Calibre-Web?" msgstr "Na pewno chcesz uruchomić ponownie Calibre Web?" -#: cps/templates/admin.html:152 cps/templates/admin.html:166 -#: cps/templates/admin.html:186 cps/templates/shelf.html:72 +#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:187 cps/templates/shelf.html:72 msgid "Ok" msgstr "OK" -#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:154 cps/templates/admin.html:168 #: cps/templates/book_edit.html:174 cps/templates/book_edit.html:196 -#: cps/templates/config_edit.html:281 cps/templates/config_view_edit.html:147 +#: cps/templates/config_edit.html:331 cps/templates/config_view_edit.html:147 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 @@ -1111,11 +1125,11 @@ msgstr "OK" msgid "Back" msgstr "Wróć" -#: cps/templates/admin.html:165 +#: cps/templates/admin.html:166 msgid "Do you really want to stop Calibre-Web?" msgstr "Na pewno chcesz zatrzymać Calibre Web?" -#: cps/templates/admin.html:177 +#: cps/templates/admin.html:178 msgid "Updating, please do not reload page" msgstr "Aktualizowanie, proszę nie odświeżać strony" @@ -1244,7 +1258,7 @@ msgstr "wyświetl książkę po edycji" msgid "Get metadata" msgstr "Uzyskaj metadane" -#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:279 +#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329 #: cps/templates/config_view_edit.html:146 cps/templates/login.html:20 #: cps/templates/search_form.html:150 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:130 @@ -1389,123 +1403,171 @@ msgstr "Poziom logów" msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "" -#: cps/templates/config_edit.html:140 -msgid "Feature Configuration" +#: cps/templates/config_edit.html:134 +msgid "Enable Access Log" +msgstr "" + +#: cps/templates/config_edit.html:137 +msgid "Location and name of access logfile (access.log for no entry)" msgstr "" #: cps/templates/config_edit.html:148 +msgid "Feature Configuration" +msgstr "" + +#: cps/templates/config_edit.html:156 msgid "Enable uploading" msgstr "Włącz wysyłanie" -#: cps/templates/config_edit.html:152 +#: cps/templates/config_edit.html:160 msgid "Enable anonymous browsing" msgstr "Włącz anonimowe przeglądanie" -#: cps/templates/config_edit.html:156 +#: cps/templates/config_edit.html:164 msgid "Enable public registration" msgstr "Włącz publiczną rejestrację" -#: cps/templates/config_edit.html:160 +#: cps/templates/config_edit.html:168 msgid "Enable remote login (\"magic link\")" msgstr "" -#: cps/templates/config_edit.html:165 +#: cps/templates/config_edit.html:173 msgid "Use" msgstr "" -#: cps/templates/config_edit.html:166 +#: cps/templates/config_edit.html:174 msgid "Obtain an API Key" msgstr "" -#: cps/templates/config_edit.html:170 +#: cps/templates/config_edit.html:178 msgid "Goodreads API Key" msgstr "" -#: cps/templates/config_edit.html:174 +#: cps/templates/config_edit.html:182 msgid "Goodreads API Secret" msgstr "" -#: cps/templates/config_edit.html:181 +#: cps/templates/config_edit.html:189 msgid "Login type" msgstr "" -#: cps/templates/config_edit.html:183 +#: cps/templates/config_edit.html:191 msgid "Use standard Authentication" msgstr "" -#: cps/templates/config_edit.html:185 +#: cps/templates/config_edit.html:193 msgid "Use LDAP Authentication" msgstr "" -#: cps/templates/config_edit.html:188 +#: cps/templates/config_edit.html:196 msgid "Use GitHub OAuth" msgstr "" -#: cps/templates/config_edit.html:189 +#: cps/templates/config_edit.html:197 msgid "Use Google OAuth" msgstr "" -#: cps/templates/config_edit.html:196 -msgid "LDAP Provider URL" +#: cps/templates/config_edit.html:204 +msgid "LDAP Server Host Name or IP Address" +msgstr "" + +#: cps/templates/config_edit.html:208 +msgid "LDAP Server Port" +msgstr "" + +#: cps/templates/config_edit.html:212 +msgid "LDAP schema (ldap or ldaps)" +msgstr "" + +#: cps/templates/config_edit.html:216 +msgid "LDAP Admin username" +msgstr "" + +#: cps/templates/config_edit.html:220 +msgid "LDAP Admin password" msgstr "" -#: cps/templates/config_edit.html:200 +#: cps/templates/config_edit.html:225 +msgid "LDAP Server use SSL" +msgstr "" + +#: cps/templates/config_edit.html:229 +msgid "LDAP Server use TLS" +msgstr "" + +#: cps/templates/config_edit.html:233 +msgid "LDAP Server Certificate" +msgstr "" + +#: cps/templates/config_edit.html:237 +msgid "LDAP SSL Certificate Path" +msgstr "" + +#: cps/templates/config_edit.html:242 msgid "LDAP Distinguished Name (DN)" msgstr "" -#: cps/templates/config_edit.html:208 +#: cps/templates/config_edit.html:246 +msgid "LDAP User object filter" +msgstr "" + +#: cps/templates/config_edit.html:251 +msgid "LDAP Server is OpenLDAP?" +msgstr "" + +#: cps/templates/config_edit.html:258 msgid "Obtain GitHub OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:211 +#: cps/templates/config_edit.html:261 msgid "GitHub OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:215 +#: cps/templates/config_edit.html:265 msgid "GitHub OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:221 +#: cps/templates/config_edit.html:271 msgid "Obtain Google OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:224 +#: cps/templates/config_edit.html:274 msgid "Google OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:228 +#: cps/templates/config_edit.html:278 msgid "Google OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:242 +#: cps/templates/config_edit.html:292 msgid "External binaries" msgstr "" -#: cps/templates/config_edit.html:250 +#: cps/templates/config_edit.html:300 msgid "No converter" msgstr "" -#: cps/templates/config_edit.html:252 +#: cps/templates/config_edit.html:302 msgid "Use Kindlegen" msgstr "" -#: cps/templates/config_edit.html:254 +#: cps/templates/config_edit.html:304 msgid "Use calibre's ebook converter" msgstr "" -#: cps/templates/config_edit.html:258 +#: cps/templates/config_edit.html:308 msgid "E-Book converter settings" msgstr "" -#: cps/templates/config_edit.html:262 +#: cps/templates/config_edit.html:312 msgid "Path to convertertool" msgstr "" -#: cps/templates/config_edit.html:268 +#: cps/templates/config_edit.html:318 msgid "Location of Unrar binary" msgstr "" -#: cps/templates/config_edit.html:284 cps/templates/layout.html:84 +#: cps/templates/config_edit.html:334 cps/templates/layout.html:84 #: cps/templates/login.html:4 msgid "Login" msgstr "Zaloguj się" @@ -1719,7 +1781,7 @@ msgstr "" msgid "Discover (Random Books)" msgstr "Odkrywaj (losowe książki)" -#: cps/templates/index.html:65 +#: cps/templates/index.html:64 msgid "Group by series" msgstr "" @@ -1862,6 +1924,14 @@ msgstr "Zapamiętaj mnie" msgid "Log in with magic link" msgstr "" +#: cps/templates/logviewer.html:5 +msgid "Show Calibre-Web log" +msgstr "" + +#: cps/templates/logviewer.html:8 +msgid "Show access log" +msgstr "" + #: cps/templates/osd.xml:5 msgid "Calibre-Web ebook catalog" msgstr "" @@ -3495,3 +3565,15 @@ msgstr "Ostatnio pobierane" #~ msgid "PDF.js viewer" #~ msgstr "PDF.js viewer" +#~ msgid "Please enter a LDAP provider and a DN" +#~ msgstr "" + +#~ msgid "successfully deleted shelf %(name)s" +#~ msgstr "pomyślnie usunięto półkę %(name)s" + +#~ msgid "LDAP Provider URL" +#~ msgstr "" + +#~ msgid "Register with %s, " +#~ msgstr "" + diff --git a/cps/translations/ru/LC_MESSAGES/messages.mo b/cps/translations/ru/LC_MESSAGES/messages.mo index 0ee14ae4..f36bc84c 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 aa8b8691..6d1645de 100644 --- a/cps/translations/ru/LC_MESSAGES/messages.po +++ b/cps/translations/ru/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: 2019-05-31 11:20+0200\n" +"POT-Creation-Date: 2019-06-22 19:54+0200\n" "PO-Revision-Date: 2018-12-14 16:26+0300\n" "Last-Translator: Pavel Korovin \n" "Language: ru\n" @@ -16,13 +16,13 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" -#: cps/about.py:76 +#: cps/about.py:78 msgid "Statistics" msgstr "Статистика" -#: cps/admin.py:97 +#: cps/admin.py:98 msgid "Server restarted, please reload page" msgstr "Сервер перезагружен, пожалуйста, перезагрузите страницу" @@ -30,186 +30,202 @@ msgstr "Сервер перезагружен, пожалуйста, перез msgid "Performing shutdown of server, please close window" msgstr "Производится остановка сервера, пожалуйста, закройте окно" -#: cps/admin.py:120 cps/updater.py:445 +#: cps/admin.py:119 cps/updater.py:448 msgid "Unknown" msgstr "Неизвестно" -#: cps/admin.py:139 +#: cps/admin.py:138 msgid "Admin page" msgstr "Администрирование" -#: cps/admin.py:208 cps/admin.py:486 +#: cps/admin.py:207 cps/admin.py:532 msgid "Calibre-Web configuration updated" msgstr "Конфигурация Calibre-Web обновлена" -#: cps/admin.py:222 cps/templates/admin.html:102 +#: cps/admin.py:220 cps/templates/admin.html:102 msgid "UI Configuration" msgstr "Настройка интерфейса" -#: cps/admin.py:295 +#: cps/admin.py:293 msgid "Import of optional Google Drive requirements missing" msgstr "Импорт дополнительных требований к Google Диску отсутствует" -#: cps/admin.py:298 +#: cps/admin.py:296 msgid "client_secrets.json is missing or not readable" msgstr "client_secrets.json отсутствует или его невозможно прочесть" -#: cps/admin.py:303 cps/admin.py:332 +#: cps/admin.py:301 cps/admin.py:330 msgid "client_secrets.json is not configured for web application" msgstr "client_secrets.json не настроен для веб-приложения" -#: cps/admin.py:335 cps/admin.py:361 cps/admin.py:373 cps/admin.py:398 -#: cps/admin.py:426 cps/admin.py:440 cps/admin.py:463 cps/admin.py:476 -#: cps/admin.py:494 cps/admin.py:501 cps/admin.py:516 -#: cps/templates/admin.html:101 +#: cps/admin.py:333 cps/admin.py:359 cps/admin.py:371 cps/admin.py:396 +#: cps/admin.py:403 cps/admin.py:436 cps/admin.py:460 cps/admin.py:474 +#: cps/admin.py:493 cps/admin.py:510 cps/admin.py:522 cps/admin.py:538 +#: cps/admin.py:545 cps/admin.py:559 cps/templates/admin.html:101 msgid "Basic Configuration" msgstr "Настройки сервера" -#: cps/admin.py:358 +#: cps/admin.py:356 msgid "Keyfile location is not valid, please enter correct path" msgstr "Неверное расположение файла-ключа, введите правильный путь" -#: cps/admin.py:370 +#: cps/admin.py:368 cps/admin.py:433 msgid "Certfile location is not valid, please enter correct path" msgstr "Неверное расположение сертификата, введите правильный путь" -#: cps/admin.py:395 -msgid "Please enter a LDAP provider and a DN" +#: cps/admin.py:393 +msgid "Please enter a LDAP provider, port, DN and user object identifier" msgstr "" -#: cps/admin.py:423 +#: cps/admin.py:400 +msgid "Please enter a LDAP service account and password" +msgstr "" + +#: cps/admin.py:457 msgid "Please enter Github oauth credentials" msgstr "" -#: cps/admin.py:437 +#: cps/admin.py:471 msgid "Please enter Google oauth credentials" msgstr "" -#: cps/admin.py:460 +#: cps/admin.py:490 msgid "Logfile location is not valid, please enter correct path" msgstr "Неверное расположение лог-файла, введите правильный путь" -#: cps/admin.py:498 +#: cps/admin.py:507 +msgid "Access Logfile location is not valid, please enter correct path" +msgstr "" + +#: cps/admin.py:542 msgid "DB location is not valid, please enter correct path" msgstr "Неверное расположение базы данных, введите правильный путь" -#: cps/admin.py:558 cps/web.py:1045 +#: cps/admin.py:602 cps/web.py:1040 msgid "Please fill out all fields!" msgstr "Пожалуйста, заполните все поля!" -#: cps/admin.py:560 cps/admin.py:566 cps/admin.py:582 +#: cps/admin.py:604 cps/admin.py:610 cps/admin.py:626 #: cps/templates/admin.html:35 msgid "Add new user" msgstr "Добавить пользователя" -#: cps/admin.py:564 cps/web.py:1248 +#: cps/admin.py:608 cps/web.py:1251 msgid "E-mail is not from valid domain" msgstr "E-mail не из существующей доменной зоны" -#: cps/admin.py:572 +#: cps/admin.py:616 #, python-format msgid "User '%(user)s' created" msgstr "Пользователь '%(user)s' добавлен" -#: cps/admin.py:576 +#: cps/admin.py:620 msgid "Found an existing account for this e-mail address or nickname." msgstr "Для этого адреса электронной почты или логина уже есть аккаунт." -#: cps/admin.py:607 +#: cps/admin.py:651 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "Тестовое письмо успешно отправлено на %(kindlemail)s" -#: cps/admin.py:610 +#: cps/admin.py:654 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Произошла ошибка при отправке тестового письма на: %(res)s" -#: cps/admin.py:612 cps/web.py:1029 +#: cps/admin.py:656 cps/web.py:1023 msgid "Please configure your kindle e-mail address first..." msgstr "Пожалуйста, сначала настройте e-mail на вашем kindle..." -#: cps/admin.py:614 +#: cps/admin.py:658 msgid "E-mail server settings updated" msgstr "Настройки E-mail сервера обновлены" -#: cps/admin.py:615 +#: cps/admin.py:659 msgid "Edit e-mail server settings" msgstr "Изменить настройки e-mail сервера" -#: cps/admin.py:640 +#: cps/admin.py:687 #, python-format msgid "User '%(nick)s' deleted" msgstr "Пользователь '%(nick)s' удалён" -#: cps/admin.py:711 +#: cps/admin.py:690 +msgid "No admin user remaining, can't delete user" +msgstr "" + +#: cps/admin.py:761 #, python-format msgid "User '%(nick)s' updated" msgstr "Пользователь '%(nick)s' обновлён" -#: cps/admin.py:714 +#: cps/admin.py:764 msgid "An unknown error occured." msgstr "Произошла неизвестная ошибка." -#: cps/admin.py:717 +#: cps/admin.py:767 #, python-format msgid "Edit User %(nick)s" msgstr "Изменить пользователя %(nick)s" -#: cps/admin.py:733 +#: cps/admin.py:783 #, python-format msgid "Password for user %(user)s reset" msgstr "Пароль для пользователя %(user)s сброшен" -#: cps/admin.py:736 cps/web.py:1070 +#: cps/admin.py:786 cps/web.py:1065 msgid "An unknown error occurred. Please try again later." msgstr "Неизвестная ошибка. Попробуйте позже." -#: cps/admin.py:755 +#: cps/admin.py:797 +msgid "Logfile viewer" +msgstr "" + +#: cps/admin.py:832 msgid "Requesting update package" msgstr "Проверка обновлений" -#: cps/admin.py:756 +#: cps/admin.py:833 msgid "Downloading update package" msgstr "Загрузка обновлений" -#: cps/admin.py:757 +#: cps/admin.py:834 msgid "Unzipping update package" msgstr "Распаковка обновлений" -#: cps/admin.py:758 +#: cps/admin.py:835 msgid "Replacing files" msgstr "Замена файлов" -#: cps/admin.py:759 +#: cps/admin.py:836 msgid "Database connections are closed" msgstr "Соеднинения с базой данных закрыты" -#: cps/admin.py:760 +#: cps/admin.py:837 msgid "Stopping server" msgstr "Остановка сервера" -#: cps/admin.py:761 +#: cps/admin.py:838 msgid "Update finished, please press okay and reload page" msgstr "Обновления установлены, нажмите okay и перезагрузите страницу" -#: cps/admin.py:762 cps/admin.py:763 cps/admin.py:764 cps/admin.py:765 +#: cps/admin.py:839 cps/admin.py:840 cps/admin.py:841 cps/admin.py:842 msgid "Update failed:" msgstr "Ошибка обновления:" -#: cps/admin.py:762 cps/updater.py:277 cps/updater.py:456 cps/updater.py:458 +#: cps/admin.py:839 cps/updater.py:273 cps/updater.py:459 cps/updater.py:461 msgid "HTTP Error" msgstr "Ошибка HTTP" -#: cps/admin.py:763 cps/updater.py:279 cps/updater.py:460 +#: cps/admin.py:840 cps/updater.py:275 cps/updater.py:463 msgid "Connection error" msgstr "Ошибка соединения" -#: cps/admin.py:764 cps/updater.py:281 cps/updater.py:462 +#: cps/admin.py:841 cps/updater.py:277 cps/updater.py:465 msgid "Timeout while establishing connection" msgstr "Таймаут при установлении соединения" -#: cps/admin.py:765 cps/updater.py:283 cps/updater.py:464 +#: cps/admin.py:842 cps/updater.py:279 cps/updater.py:467 msgid "General error" msgstr "Общая ошибка" @@ -227,720 +243,714 @@ msgstr "Отсутствуют разрешения на выполнение" msgid "not configured" msgstr "не настроен" -#: cps/editbooks.py:218 cps/editbooks.py:432 +#: cps/editbooks.py:215 cps/editbooks.py:394 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Ошибка при открытии eBook. Файл не существует или файл недоступен" -#: cps/editbooks.py:246 +#: cps/editbooks.py:243 msgid "edit metadata" msgstr "изменить метаданные" -#: cps/editbooks.py:325 cps/editbooks.py:595 +#: cps/editbooks.py:322 cps/editbooks.py:557 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Запрещена загрузка файлов с расширением '%(ext)s'" -#: cps/editbooks.py:329 cps/editbooks.py:599 +#: cps/editbooks.py:326 cps/editbooks.py:561 msgid "File to be uploaded must have an extension" msgstr "Загружаемый файл должен иметь расширение" -#: cps/editbooks.py:341 cps/editbooks.py:619 +#: cps/editbooks.py:338 cps/editbooks.py:581 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Ошибка при создании пути %(path)s (Доступ запрещён)." -#: cps/editbooks.py:346 +#: cps/editbooks.py:343 #, python-format msgid "Failed to store file %(file)s." msgstr "Не удалось сохранить файл %(file)s." -#: cps/editbooks.py:363 +#: cps/editbooks.py:360 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Формат файла %(ext)s добавлен в %(book)s" -#: cps/editbooks.py:382 -#, python-format -msgid "Failed to create path for cover %(path)s (Permission denied)." -msgstr "" - -#: cps/editbooks.py:390 -#, python-format -msgid "Failed to store cover-file %(cover)s." -msgstr "" - -#: cps/editbooks.py:393 -msgid "Cover-file is not a valid image file" -msgstr "" - -#: cps/editbooks.py:399 cps/editbooks.py:413 +#: cps/editbooks.py:374 msgid "Cover is not a supported imageformat (jpg/png/webp), can't save" msgstr "" -#: cps/editbooks.py:445 cps/editbooks.py:454 +#: cps/editbooks.py:407 cps/editbooks.py:416 msgid "unknown" msgstr "неизвестно" -#: cps/editbooks.py:486 +#: cps/editbooks.py:448 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/editbooks.py:534 +#: cps/editbooks.py:496 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s не допустимый язык" -#: cps/editbooks.py:565 +#: cps/editbooks.py:527 msgid "Metadata successfully updated" msgstr "Метаданные обновлены" -#: cps/editbooks.py:574 +#: cps/editbooks.py:536 msgid "Error editing book, please check logfile for details" msgstr "Ошибка редактирования книги. Пожалуйста, проверьте лог-файл для дополнительной информации" -#: cps/editbooks.py:624 +#: cps/editbooks.py:586 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "Ошибка записи файла %(file)s (Доступ запрещён)." -#: cps/editbooks.py:629 +#: cps/editbooks.py:591 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "Ошибка удаления файла %(file)s (Доступ запрещён)." -#: cps/editbooks.py:712 +#: cps/editbooks.py:674 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:741 +#: cps/editbooks.py:703 msgid "Source or destination format for conversion missing" msgstr "Исходный или целевой формат для конвертирования отсутствует" -#: cps/editbooks.py:751 +#: cps/editbooks.py:711 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Книга успешно поставлена в очередь для конвертирования в %(book_format)s" -#: cps/editbooks.py:755 +#: cps/editbooks.py:715 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Произошла ошибка при конвертирования этой книги: %(res)s" -#: cps/gdrive.py:56 +#: cps/gdrive.py:61 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "" -#: cps/gdrive.py:101 +#: cps/gdrive.py:106 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "Не удалось проверить домен обратного вызова, пожалуйста, выполните шаги для проверки домена в консоли разработчика Google." -#: cps/helper.py:97 +#: cps/helper.py:94 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "%(format)s форма не найден для книги с id: %(book)d" -#: cps/helper.py:109 +#: cps/helper.py:106 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "%(format)s не найден на Google Drive: %(fn)s" -#: cps/helper.py:116 cps/helper.py:223 cps/templates/detail.html:41 +#: cps/helper.py:113 cps/helper.py:220 cps/templates/detail.html:41 #: cps/templates/detail.html:45 msgid "Send to Kindle" msgstr "Отправить на Kindle" -#: cps/helper.py:117 cps/helper.py:135 cps/helper.py:225 +#: cps/helper.py:114 cps/helper.py:132 cps/helper.py:222 msgid "This e-mail has been sent via Calibre-Web." msgstr "Это электронное письмо было отправлено через Caliber-Web." -#: cps/helper.py:128 +#: cps/helper.py:125 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "%(format)s не найден: %(fn)s" -#: cps/helper.py:133 +#: cps/helper.py:130 msgid "Calibre-Web test e-mail" msgstr "Тестовый e-mail для Calibre-Web" -#: cps/helper.py:134 +#: cps/helper.py:131 msgid "Test e-mail" msgstr "Тестовый e-mail" -#: cps/helper.py:150 +#: cps/helper.py:147 msgid "Get Started with Calibre-Web" msgstr "Начать работать с Calibre-Web" -#: cps/helper.py:151 +#: cps/helper.py:148 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "Регистрационный e-mail для пользователя: %(name)s" -#: cps/helper.py:165 cps/helper.py:167 cps/helper.py:169 cps/helper.py:177 -#: cps/helper.py:179 cps/helper.py:181 +#: cps/helper.py:162 cps/helper.py:164 cps/helper.py:166 cps/helper.py:174 +#: cps/helper.py:176 cps/helper.py:178 #, python-format msgid "Send %(format)s to Kindle" msgstr "" -#: cps/helper.py:185 +#: cps/helper.py:182 #, python-format msgid "Convert %(orig)s to %(format)s and send to Kindle" msgstr "" -#: cps/helper.py:224 +#: cps/helper.py:221 #, python-format msgid "E-mail: %(book)s" msgstr "Эл. почта: %(book)s" -#: cps/helper.py:227 +#: cps/helper.py:224 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "Запрашиваемый файл не может быть прочитан. Возможно не верные разрешения?" -#: cps/helper.py:335 +#: cps/helper.py:331 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "Переименовывание заголовка с: '%(src)s' на '%(dest)s' не удалось из-за ошибки: %(error)s" -#: cps/helper.py:345 +#: cps/helper.py:341 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "Переименовывание автора с: '%(src)s' на '%(dest)s' не удалось из-за ошибки: %(error)s" -#: cps/helper.py:359 +#: cps/helper.py:355 #, python-format msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:385 cps/helper.py:395 cps/helper.py:403 +#: cps/helper.py:381 cps/helper.py:391 cps/helper.py:399 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "Файл %(file)s не найден на Google Drive" -#: cps/helper.py:424 +#: cps/helper.py:420 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "Путь книги %(path)s не найден на Google Drive" -#: cps/helper.py:584 +#: cps/helper.py:579 msgid "Error excecuting UnRar" msgstr "Ошибка извлечения UnRar" -#: cps/helper.py:586 +#: cps/helper.py:581 msgid "Unrar binary file not found" msgstr "Unrar двочиный файл не найден" -#: cps/helper.py:614 +#: cps/helper.py:609 msgid "Waiting" msgstr "Ожидание" -#: cps/helper.py:616 +#: cps/helper.py:611 msgid "Failed" msgstr "Неудачно" -#: cps/helper.py:618 +#: cps/helper.py:613 msgid "Started" msgstr "Начало" -#: cps/helper.py:620 +#: cps/helper.py:615 msgid "Finished" msgstr "Закончено" -#: cps/helper.py:622 +#: cps/helper.py:617 msgid "Unknown Status" msgstr "Неизвестный статус" -#: cps/helper.py:627 +#: cps/helper.py:622 msgid "E-mail: " msgstr "E-mail: " -#: cps/helper.py:629 cps/helper.py:633 +#: cps/helper.py:624 cps/helper.py:628 msgid "Convert: " msgstr "Конвертировать:" -#: cps/helper.py:631 +#: cps/helper.py:626 msgid "Upload: " msgstr "Загрузить:" -#: cps/helper.py:635 +#: cps/helper.py:630 msgid "Unknown Task: " msgstr "Неизвестная задача:" -#: cps/oauth_bb.py:87 +#: cps/oauth_bb.py:91 #, python-format -msgid "Register with %s, " +msgid "Register with %(provider)s" msgstr "" -#: cps/oauth_bb.py:145 +#: cps/oauth_bb.py:149 msgid "Failed to log in with GitHub." msgstr "" -#: cps/oauth_bb.py:150 +#: cps/oauth_bb.py:154 msgid "Failed to fetch user info from GitHub." msgstr "" -#: cps/oauth_bb.py:161 +#: cps/oauth_bb.py:165 msgid "Failed to log in with Google." msgstr "" -#: cps/oauth_bb.py:166 +#: cps/oauth_bb.py:170 msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:265 +#: cps/oauth_bb.py:269 #, python-format msgid "Unlink to %(oauth)s success." msgstr "" -#: cps/oauth_bb.py:269 +#: cps/oauth_bb.py:273 #, python-format msgid "Unlink to %(oauth)s failed." msgstr "" -#: cps/oauth_bb.py:272 +#: cps/oauth_bb.py:276 #, python-format msgid "Not linked to %(oauth)s." msgstr "" -#: cps/oauth_bb.py:300 +#: cps/oauth_bb.py:304 msgid "GitHub Oauth error, please retry later." msgstr "" -#: cps/oauth_bb.py:319 +#: cps/oauth_bb.py:323 msgid "Google Oauth error, please retry later." msgstr "" -#: cps/shelf.py:40 cps/shelf.py:92 +#: cps/shelf.py:46 cps/shelf.py:98 msgid "Invalid shelf specified" msgstr "Указана неверная полка" -#: cps/shelf.py:47 +#: cps/shelf.py:53 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" msgstr "Извините, но вам не разрешено добавлять книгу на полку: %(shelfname)s" -#: cps/shelf.py:55 +#: cps/shelf.py:61 msgid "You are not allowed to edit public shelves" msgstr "Вы не можете редактировать общедоступные полки" -#: cps/shelf.py:64 +#: cps/shelf.py:70 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" msgstr "Книги уже размещены на полке: %(shelfname)s" -#: cps/shelf.py:78 +#: cps/shelf.py:84 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Книга добавлена на книжную полку: %(sname)s" -#: cps/shelf.py:97 +#: cps/shelf.py:103 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Вам не разрешено добавлять книгу на полку: %(name)s" -#: cps/shelf.py:102 +#: cps/shelf.py:108 msgid "User is not allowed to edit public shelves" msgstr "Пользователь не может редактировать общедоступные полки" -#: cps/shelf.py:120 +#: cps/shelf.py:126 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "Книги уже размещены на полке: %(name)s" -#: cps/shelf.py:134 +#: cps/shelf.py:140 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "Книги добавлены в полку: %(sname)s" -#: cps/shelf.py:136 +#: cps/shelf.py:142 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "Не удалось добавить книги на полку: %(sname)s" -#: cps/shelf.py:173 +#: cps/shelf.py:179 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Книга удалена с полки: %(sname)s" -#: cps/shelf.py:179 +#: cps/shelf.py:185 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Извините, вы не можете удалить книгу с полки: %(sname)s" -#: cps/shelf.py:200 cps/shelf.py:224 +#: cps/shelf.py:206 cps/shelf.py:230 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Полка с названием '%(title)s' уже существует." -#: cps/shelf.py:205 +#: cps/shelf.py:211 #, python-format msgid "Shelf %(title)s created" msgstr "Создана полка %(title)s" -#: cps/shelf.py:207 cps/shelf.py:235 +#: cps/shelf.py:213 cps/shelf.py:241 msgid "There was an error" msgstr "Произошла ошибка" -#: cps/shelf.py:208 cps/shelf.py:210 +#: cps/shelf.py:214 cps/shelf.py:216 msgid "create a shelf" msgstr "создать полку" -#: cps/shelf.py:233 +#: cps/shelf.py:239 #, python-format msgid "Shelf %(title)s changed" msgstr "Колка %(title)s изменена" -#: cps/shelf.py:236 cps/shelf.py:238 +#: cps/shelf.py:242 cps/shelf.py:244 msgid "Edit a shelf" msgstr "Изменить полку" -#: cps/shelf.py:259 -#, python-format -msgid "successfully deleted shelf %(name)s" -msgstr "удачно удалена полка %(name)s" - -#: cps/shelf.py:289 +#: cps/shelf.py:295 #, python-format msgid "Shelf: '%(name)s'" msgstr "Полка: '%(name)s'" -#: cps/shelf.py:292 +#: cps/shelf.py:298 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Ошибка открытия Полки. Полка не существует или недоступна" -#: cps/shelf.py:324 +#: cps/shelf.py:330 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Изменить расположение полки '%(name)s'" -#: cps/ub.py:111 +#: cps/ub.py:68 msgid "Recently Added" msgstr "Недавно Добавленные" -#: cps/ub.py:113 +#: cps/ub.py:70 msgid "Show recent books" msgstr "Показывать недавние книги" -#: cps/templates/index.xml:17 cps/ub.py:114 +#: cps/templates/index.xml:17 cps/ub.py:71 msgid "Hot Books" msgstr "Популярные Книги" -#: cps/ub.py:115 +#: cps/ub.py:72 msgid "Show hot books" msgstr "Показывать популярные книги" -#: cps/templates/index.xml:24 cps/ub.py:118 +#: cps/templates/index.xml:24 cps/ub.py:75 msgid "Best rated Books" msgstr "Книги с наилучшим рейтингом" -#: cps/ub.py:120 +#: cps/ub.py:77 msgid "Show best rated books" msgstr "Показывать книги с наивысшим рейтингом" -#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:121 -#: cps/web.py:965 +#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:78 +#: cps/web.py:958 msgid "Read Books" msgstr "Прочитанные Книги" -#: cps/ub.py:123 +#: cps/ub.py:80 msgid "Show read and unread" msgstr "Показывать прочитанные и непрочитанные" -#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:125 -#: cps/web.py:969 +#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:82 +#: cps/web.py:962 msgid "Unread Books" msgstr "Непрочитанные Книги" -#: cps/ub.py:127 +#: cps/ub.py:84 msgid "Show unread" msgstr "" -#: cps/ub.py:128 +#: cps/ub.py:85 msgid "Discover" msgstr "Обзор" -#: cps/ub.py:130 +#: cps/ub.py:87 msgid "Show random books" msgstr "Показывать случайные книги" -#: cps/ub.py:131 +#: cps/ub.py:88 msgid "Categories" msgstr "Категории" -#: cps/ub.py:133 +#: cps/ub.py:90 msgid "Show category selection" msgstr "Показывать выбор категории" #: cps/templates/book_edit.html:71 cps/templates/search_form.html:53 -#: cps/ub.py:134 +#: cps/ub.py:91 msgid "Series" msgstr "Серии" -#: cps/ub.py:136 +#: cps/ub.py:93 msgid "Show series selection" msgstr "Показывать выбор серии" -#: cps/templates/index.xml:61 cps/ub.py:137 +#: cps/templates/index.xml:61 cps/ub.py:94 msgid "Authors" msgstr "Авторы" -#: cps/ub.py:139 +#: cps/ub.py:96 msgid "Show author selection" msgstr "Показывать выбор автора" -#: cps/templates/index.xml:68 cps/ub.py:141 +#: cps/templates/index.xml:68 cps/ub.py:98 msgid "Publishers" msgstr "Издатели" -#: cps/ub.py:143 +#: cps/ub.py:100 msgid "Show publisher selection" msgstr "Показать выбор издателя" -#: cps/templates/search_form.html:74 cps/ub.py:144 +#: cps/templates/search_form.html:74 cps/ub.py:101 msgid "Languages" msgstr "Языки" -#: cps/ub.py:147 +#: cps/ub.py:104 msgid "Show language selection" msgstr "Показывать выбор языка" -#: cps/ub.py:148 +#: cps/ub.py:105 msgid "Ratings" msgstr "" -#: cps/ub.py:150 +#: cps/ub.py:107 msgid "Show ratings selection" msgstr "" -#: cps/ub.py:151 +#: cps/ub.py:108 msgid "File formats" msgstr "" -#: cps/ub.py:153 +#: cps/ub.py:110 msgid "Show file formats selection" msgstr "" -#: cps/updater.py:257 cps/updater.py:364 cps/updater.py:377 +#: cps/updater.py:253 cps/updater.py:360 cps/updater.py:373 msgid "Unexpected data while reading update information" msgstr "Некорректные данные при чтении информации об обновлении" -#: cps/updater.py:264 cps/updater.py:370 +#: cps/updater.py:260 cps/updater.py:366 msgid "No update available. You already have the latest version installed" msgstr "Обновление недоступно. Вы используете самую последнюю версию" -#: cps/updater.py:290 cps/updater.py:422 +#: cps/updater.py:286 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "Доступно обновление. Нажмите на кнопку, что бы обновиться до последней версии." -#: cps/updater.py:343 +#: cps/updater.py:339 msgid "Could not fetch update information" msgstr "Не удалось получить информацию об обновлении" -#: cps/updater.py:357 +#: cps/updater.py:353 msgid "No release information available" msgstr "" -#: cps/updater.py:403 cps/updater.py:412 +#: cps/updater.py:406 cps/updater.py:415 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "" -#: cps/web.py:457 +#: cps/updater.py:425 +msgid "Click on the button below to update to the latest stable version." +msgstr "" + +#: cps/web.py:445 msgid "Recently Added Books" msgstr "Недавно Добавленные Книги" -#: cps/web.py:484 +#: cps/web.py:473 msgid "Best rated books" msgstr "Книги с наивысшим рейтингом" -#: cps/templates/index.xml:38 cps/web.py:492 +#: cps/templates/index.xml:38 cps/web.py:481 msgid "Random Books" msgstr "Случайный выбор" -#: cps/web.py:516 +#: cps/web.py:505 msgid "Books" msgstr "" -#: cps/web.py:543 +#: cps/web.py:532 msgid "Hot Books (most downloaded)" msgstr "Популярные книги (часто загружаемые)" -#: cps/web.py:553 cps/web.py:1294 cps/web.py:1383 +#: cps/web.py:542 cps/web.py:1298 cps/web.py:1386 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "Невозможно открыть книгу. Файл не существует или недоступен." -#: cps/web.py:580 +#: cps/web.py:559 +#, python-format +msgid "Author: %(name)s" +msgstr "" + +#: cps/web.py:571 #, python-format msgid "Publisher: %(name)s" msgstr "Издатель: %(name)s" -#: cps/web.py:591 +#: cps/web.py:582 #, python-format msgid "Series: %(serie)s" msgstr "Серии: %(serie)s" -#: cps/web.py:602 +#: cps/web.py:593 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:613 +#: cps/web.py:604 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:625 +#: cps/web.py:616 #, python-format msgid "Category: %(name)s" msgstr "Категория: %(name)s" -#: cps/web.py:659 +#: cps/web.py:650 msgid "Publisher list" msgstr "Список издателей" -#: cps/templates/index.xml:82 cps/web.py:675 +#: cps/templates/index.xml:82 cps/web.py:666 msgid "Series list" msgstr "Серии" -#: cps/web.py:689 +#: cps/web.py:680 msgid "Ratings list" msgstr "" -#: cps/web.py:702 +#: cps/web.py:693 msgid "File formats list" msgstr "" -#: cps/web.py:730 +#: cps/web.py:721 msgid "Available languages" msgstr "Доступные языки" -#: cps/web.py:750 +#: cps/web.py:741 #, python-format msgid "Language: %(name)s" msgstr "Язык: %(name)s" -#: cps/templates/index.xml:75 cps/web.py:764 +#: cps/templates/index.xml:75 cps/web.py:755 msgid "Category list" msgstr "Категории" -#: cps/templates/layout.html:73 cps/web.py:777 +#: cps/templates/layout.html:73 cps/web.py:769 msgid "Tasks" msgstr "Задания" -#: cps/web.py:841 +#: cps/web.py:834 msgid "Published after " msgstr "Опубликовано до " -#: cps/web.py:848 +#: cps/web.py:841 msgid "Published before " msgstr "Опубликовано после " -#: cps/web.py:862 +#: cps/web.py:855 #, python-format msgid "Rating <= %(rating)s" msgstr "Рейтинг <= %(rating)s" -#: cps/web.py:864 +#: cps/web.py:857 #, python-format msgid "Rating >= %(rating)s" msgstr "Рейтинг >= %(rating)s" -#: cps/web.py:924 cps/web.py:933 +#: cps/web.py:917 cps/web.py:926 msgid "search" msgstr "поиск" -#: cps/web.py:1018 +#: cps/web.py:1012 msgid "Please configure the SMTP mail settings first..." msgstr "Пожалуйста, сначала сконфигурируйте параметры SMTP" -#: cps/web.py:1023 +#: cps/web.py:1017 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Книга успешно поставлена в очередь для отправки на %(kindlemail)s" -#: cps/web.py:1027 +#: cps/web.py:1021 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Ошибка при отправке книги: %(res)s" -#: cps/web.py:1046 cps/web.py:1071 cps/web.py:1076 cps/web.py:1081 -#: cps/web.py:1085 +#: cps/web.py:1041 cps/web.py:1066 cps/web.py:1070 cps/web.py:1075 +#: cps/web.py:1079 msgid "register" msgstr "регистрация" -#: cps/web.py:1073 +#: cps/web.py:1068 msgid "Your e-mail is not allowed to register" msgstr "Ваш e-mail не подходит для регистрации" -#: cps/web.py:1077 +#: cps/web.py:1071 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Письмо с подтверждением отправлено вам на e-mail" -#: cps/web.py:1080 +#: cps/web.py:1074 msgid "This username or e-mail address is already in use." msgstr "Этот никнейм или e-mail уже используются" -#: cps/web.py:1103 cps/web.py:1115 -#, python-format -msgid "You are now logged in as: '%(nickname)s'" +#: cps/web.py:1089 +msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1108 cps/web.py:1120 +#: cps/web.py:1098 cps/web.py:1212 +#, python-format +msgid "you are now logged in as: '%(nickname)s'" +msgstr "Вы вошли как пользователь '%(nickname)s'" + +#: cps/web.py:1105 cps/web.py:1122 msgid "Wrong Username or Password" msgstr "Ошибка в имени пользователя или пароле" -#: cps/web.py:1111 +#: cps/web.py:1108 msgid "Could not login. LDAP server down, please contact your administrator" msgstr "" -#: cps/web.py:1124 cps/web.py:1146 +#: cps/web.py:1117 +#, python-format +msgid "You are now logged in as: '%(nickname)s'" +msgstr "" + +#: cps/web.py:1126 cps/web.py:1148 msgid "login" msgstr "войти" -#: cps/web.py:1158 cps/web.py:1189 +#: cps/web.py:1160 cps/web.py:1191 msgid "Token not found" msgstr "Ключ не найден" -#: cps/web.py:1166 cps/web.py:1197 +#: cps/web.py:1168 cps/web.py:1199 msgid "Token has expired" msgstr "Ключ просрочен" -#: cps/web.py:1174 +#: cps/web.py:1176 msgid "Success! Please return to your device" msgstr "Успешно! Пожалуйста, проверьте свое устройство" -#: cps/web.py:1210 -#, python-format -msgid "you are now logged in as: '%(nickname)s'" -msgstr "Вы вошли как пользователь '%(nickname)s'" - -#: cps/web.py:1250 cps/web.py:1277 cps/web.py:1281 +#: cps/web.py:1253 cps/web.py:1280 cps/web.py:1284 #, python-format msgid "%(name)s's profile" msgstr "Профиль %(name)s" -#: cps/web.py:1274 +#: cps/web.py:1277 msgid "Found an existing account for this e-mail address." msgstr "Этот адрес электронной почты уже зарегистрирован." -#: cps/web.py:1279 +#: cps/web.py:1282 msgid "Profile updated" msgstr "Профиль обновлён" -#: cps/web.py:1304 cps/web.py:1306 cps/web.py:1308 cps/web.py:1314 -#: cps/web.py:1318 +#: cps/web.py:1308 cps/web.py:1310 cps/web.py:1312 cps/web.py:1318 +#: cps/web.py:1322 msgid "Read a Book" msgstr "Читать Книгу" -#: cps/web.py:1328 +#: cps/web.py:1332 msgid "Error opening eBook. File does not exist or file is not accessible." msgstr "" -#: cps/worker.py:308 +#: cps/worker.py:311 #, python-format msgid "Ebook-converter failed: %(error)s" msgstr "Ошибка Ebook-конвертора: %(error)s" -#: cps/worker.py:319 +#: cps/worker.py:322 #, python-format msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "Kindlegen - неудачно, с Ошибкой %(error)s. Сообщение: %(message)s" @@ -1056,53 +1066,57 @@ msgid "Administration" msgstr "Управление" #: cps/templates/admin.html:109 +msgid "View Logfiles" +msgstr "" + +#: cps/templates/admin.html:110 msgid "Reconnect to Calibre DB" msgstr "Переподключиться к БД Calibre" -#: cps/templates/admin.html:110 +#: cps/templates/admin.html:111 msgid "Restart Calibre-Web" msgstr "Перезагрузить Calibre-Web" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:112 msgid "Stop Calibre-Web" msgstr "Остановить Calibre-Web" -#: cps/templates/admin.html:117 +#: cps/templates/admin.html:118 msgid "Update" msgstr "Обновление" -#: cps/templates/admin.html:121 +#: cps/templates/admin.html:122 msgid "Version" msgstr "Версия" -#: cps/templates/admin.html:122 +#: cps/templates/admin.html:123 msgid "Details" msgstr "Подробности" -#: cps/templates/admin.html:128 +#: cps/templates/admin.html:129 msgid "Current version" msgstr "Текущая версия" -#: cps/templates/admin.html:134 +#: cps/templates/admin.html:135 msgid "Check for update" msgstr "Проверка обновлений" -#: cps/templates/admin.html:135 +#: cps/templates/admin.html:136 msgid "Perform Update" msgstr "Установить обновления" -#: cps/templates/admin.html:147 +#: cps/templates/admin.html:148 msgid "Do you really want to restart Calibre-Web?" msgstr "Вы действительно хотите перезагрузить Calibre-Web?" -#: cps/templates/admin.html:152 cps/templates/admin.html:166 -#: cps/templates/admin.html:186 cps/templates/shelf.html:72 +#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:187 cps/templates/shelf.html:72 msgid "Ok" msgstr "Ok" -#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:154 cps/templates/admin.html:168 #: cps/templates/book_edit.html:174 cps/templates/book_edit.html:196 -#: cps/templates/config_edit.html:281 cps/templates/config_view_edit.html:147 +#: cps/templates/config_edit.html:331 cps/templates/config_view_edit.html:147 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 @@ -1110,11 +1124,11 @@ msgstr "Ok" msgid "Back" msgstr "Назад" -#: cps/templates/admin.html:165 +#: cps/templates/admin.html:166 msgid "Do you really want to stop Calibre-Web?" msgstr "Вы действительно хотите остановить Calibre-Web?" -#: cps/templates/admin.html:177 +#: cps/templates/admin.html:178 msgid "Updating, please do not reload page" msgstr "Установка обновлений, пожалуйста, не обновляйте страницу." @@ -1243,7 +1257,7 @@ msgstr "смотреть книгу после редактирования" msgid "Get metadata" msgstr "Получить метаданные" -#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:279 +#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329 #: cps/templates/config_view_edit.html:146 cps/templates/login.html:20 #: cps/templates/search_form.html:150 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:130 @@ -1387,123 +1401,171 @@ msgstr "Уровень Логирования" msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "Расположение и имя лог-файла (не вводите calibre-web.log)" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:134 +msgid "Enable Access Log" +msgstr "" + +#: cps/templates/config_edit.html:137 +msgid "Location and name of access logfile (access.log for no entry)" +msgstr "" + +#: cps/templates/config_edit.html:148 msgid "Feature Configuration" msgstr "Дополнительный Настройки" -#: cps/templates/config_edit.html:148 +#: cps/templates/config_edit.html:156 msgid "Enable uploading" msgstr "Разрешить загрузку на сервер" -#: cps/templates/config_edit.html:152 +#: cps/templates/config_edit.html:160 msgid "Enable anonymous browsing" msgstr "Разрешить анонимный просмотр" -#: cps/templates/config_edit.html:156 +#: cps/templates/config_edit.html:164 msgid "Enable public registration" msgstr "Разрешить публичную регистрацию" -#: cps/templates/config_edit.html:160 +#: cps/templates/config_edit.html:168 msgid "Enable remote login (\"magic link\")" msgstr "Включить удаленный логин (\"magic link\")" -#: cps/templates/config_edit.html:165 +#: cps/templates/config_edit.html:173 msgid "Use" msgstr "Использовать" -#: cps/templates/config_edit.html:166 +#: cps/templates/config_edit.html:174 msgid "Obtain an API Key" msgstr "Получить ключ API" -#: cps/templates/config_edit.html:170 +#: cps/templates/config_edit.html:178 msgid "Goodreads API Key" msgstr "Ключ API Goodreads" -#: cps/templates/config_edit.html:174 +#: cps/templates/config_edit.html:182 msgid "Goodreads API Secret" msgstr "Goodreads API Секрет" -#: cps/templates/config_edit.html:181 +#: cps/templates/config_edit.html:189 msgid "Login type" msgstr "" -#: cps/templates/config_edit.html:183 +#: cps/templates/config_edit.html:191 msgid "Use standard Authentication" msgstr "" -#: cps/templates/config_edit.html:185 +#: cps/templates/config_edit.html:193 msgid "Use LDAP Authentication" msgstr "" -#: cps/templates/config_edit.html:188 +#: cps/templates/config_edit.html:196 msgid "Use GitHub OAuth" msgstr "" -#: cps/templates/config_edit.html:189 +#: cps/templates/config_edit.html:197 msgid "Use Google OAuth" msgstr "" -#: cps/templates/config_edit.html:196 -msgid "LDAP Provider URL" +#: cps/templates/config_edit.html:204 +msgid "LDAP Server Host Name or IP Address" +msgstr "" + +#: cps/templates/config_edit.html:208 +msgid "LDAP Server Port" +msgstr "" + +#: cps/templates/config_edit.html:212 +msgid "LDAP schema (ldap or ldaps)" +msgstr "" + +#: cps/templates/config_edit.html:216 +msgid "LDAP Admin username" +msgstr "" + +#: cps/templates/config_edit.html:220 +msgid "LDAP Admin password" +msgstr "" + +#: cps/templates/config_edit.html:225 +msgid "LDAP Server use SSL" msgstr "" -#: cps/templates/config_edit.html:200 +#: cps/templates/config_edit.html:229 +msgid "LDAP Server use TLS" +msgstr "" + +#: cps/templates/config_edit.html:233 +msgid "LDAP Server Certificate" +msgstr "" + +#: cps/templates/config_edit.html:237 +msgid "LDAP SSL Certificate Path" +msgstr "" + +#: cps/templates/config_edit.html:242 msgid "LDAP Distinguished Name (DN)" msgstr "" -#: cps/templates/config_edit.html:208 +#: cps/templates/config_edit.html:246 +msgid "LDAP User object filter" +msgstr "" + +#: cps/templates/config_edit.html:251 +msgid "LDAP Server is OpenLDAP?" +msgstr "" + +#: cps/templates/config_edit.html:258 msgid "Obtain GitHub OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:211 +#: cps/templates/config_edit.html:261 msgid "GitHub OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:215 +#: cps/templates/config_edit.html:265 msgid "GitHub OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:221 +#: cps/templates/config_edit.html:271 msgid "Obtain Google OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:224 +#: cps/templates/config_edit.html:274 msgid "Google OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:228 +#: cps/templates/config_edit.html:278 msgid "Google OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:242 +#: cps/templates/config_edit.html:292 msgid "External binaries" msgstr "Внешние двоичные файлы" -#: cps/templates/config_edit.html:250 +#: cps/templates/config_edit.html:300 msgid "No converter" msgstr "Нет конвертера" -#: cps/templates/config_edit.html:252 +#: cps/templates/config_edit.html:302 msgid "Use Kindlegen" msgstr "Использовать Kindlegen" -#: cps/templates/config_edit.html:254 +#: cps/templates/config_edit.html:304 msgid "Use calibre's ebook converter" msgstr "Использовать конвертер calibre's ebook" -#: cps/templates/config_edit.html:258 +#: cps/templates/config_edit.html:308 msgid "E-Book converter settings" msgstr "Настройки конвертера E-Book" -#: cps/templates/config_edit.html:262 +#: cps/templates/config_edit.html:312 msgid "Path to convertertool" msgstr "Путь к конвертеру" -#: cps/templates/config_edit.html:268 +#: cps/templates/config_edit.html:318 msgid "Location of Unrar binary" msgstr "Расположение двоичного файла Unrar" -#: cps/templates/config_edit.html:284 cps/templates/layout.html:84 +#: cps/templates/config_edit.html:334 cps/templates/layout.html:84 #: cps/templates/login.html:4 msgid "Login" msgstr "Логин" @@ -1717,7 +1779,7 @@ msgstr "" msgid "Discover (Random Books)" msgstr "Обзор (Случайные Книги)" -#: cps/templates/index.html:65 +#: cps/templates/index.html:64 msgid "Group by series" msgstr "" @@ -1860,6 +1922,14 @@ msgstr "Запомнить меня" msgid "Log in with magic link" msgstr "Войти через магическую ссылку" +#: cps/templates/logviewer.html:5 +msgid "Show Calibre-Web log" +msgstr "" + +#: cps/templates/logviewer.html:8 +msgid "Show access log" +msgstr "" + #: cps/templates/osd.xml:5 msgid "Calibre-Web ebook catalog" msgstr "Каталог электронных книг Caliber-Web" @@ -3427,13 +3497,13 @@ msgstr "Недавние скачивания" #~ msgstr "Зазаки" #~ msgid "Failed to create path for cover %(path)s (Permission denied)." -#~ msgstr "Не удалось создать путь для обложки %(path)s (Доступ запрещён)." +#~ msgstr "" #~ msgid "Failed to store cover-file %(cover)s." -#~ msgstr "Не удалось сохранить файл обложки %(cover)s." +#~ msgstr "" #~ msgid "Cover-file is not a valid image file" -#~ msgstr "Файл обложки не соответствует изображению" +#~ msgstr "" #~ msgid "Cover is not a jpg file, can't save" #~ msgstr "Обложка не jpg файл, невозможно сохранить" @@ -3492,3 +3562,15 @@ msgstr "Недавние скачивания" #~ msgid "PDF.js viewer" #~ msgstr "Просмотровщик PDF.js" +#~ msgid "Please enter a LDAP provider and a DN" +#~ msgstr "" + +#~ msgid "successfully deleted shelf %(name)s" +#~ msgstr "удачно удалена полка %(name)s" + +#~ msgid "LDAP Provider URL" +#~ msgstr "" + +#~ msgid "Register with %s, " +#~ msgstr "" + diff --git a/cps/translations/sv/LC_MESSAGES/messages.mo b/cps/translations/sv/LC_MESSAGES/messages.mo index 68378090..beecf9ca 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 7d190a51..cc56d328 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: 2019-05-31 11:20+0200\n" +"POT-Creation-Date: 2019-06-22 19:54+0200\n" "PO-Revision-Date: 2018-11-23 02:57+0100\n" "Last-Translator: Jonatan Nyberg \n" "Language: sv\n" @@ -16,13 +16,13 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" -#: cps/about.py:76 +#: cps/about.py:78 msgid "Statistics" msgstr "Statistik" -#: cps/admin.py:97 +#: cps/admin.py:98 msgid "Server restarted, please reload page" msgstr "Server startas om, vänligen uppdatera sidan" @@ -30,186 +30,202 @@ msgstr "Server startas om, vänligen uppdatera sidan" msgid "Performing shutdown of server, please close window" msgstr "Stänger servern, vänligen stäng fönstret" -#: cps/admin.py:120 cps/updater.py:445 +#: cps/admin.py:119 cps/updater.py:448 msgid "Unknown" msgstr "Okänd" -#: cps/admin.py:139 +#: cps/admin.py:138 msgid "Admin page" msgstr "Administrationssida" -#: cps/admin.py:208 cps/admin.py:486 +#: cps/admin.py:207 cps/admin.py:532 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web konfiguration uppdaterad" -#: cps/admin.py:222 cps/templates/admin.html:102 +#: cps/admin.py:220 cps/templates/admin.html:102 msgid "UI Configuration" msgstr "Användargränssnitt konfiguration" -#: cps/admin.py:295 +#: cps/admin.py:293 msgid "Import of optional Google Drive requirements missing" msgstr "Import av valfri Google Drive krav saknas" -#: cps/admin.py:298 +#: cps/admin.py:296 msgid "client_secrets.json is missing or not readable" msgstr "client_secrets.json saknas eller inte kan läsas" -#: cps/admin.py:303 cps/admin.py:332 +#: cps/admin.py:301 cps/admin.py:330 msgid "client_secrets.json is not configured for web application" msgstr "client_secrets.json är inte konfigurerad för webbapplikation" -#: cps/admin.py:335 cps/admin.py:361 cps/admin.py:373 cps/admin.py:398 -#: cps/admin.py:426 cps/admin.py:440 cps/admin.py:463 cps/admin.py:476 -#: cps/admin.py:494 cps/admin.py:501 cps/admin.py:516 -#: cps/templates/admin.html:101 +#: cps/admin.py:333 cps/admin.py:359 cps/admin.py:371 cps/admin.py:396 +#: cps/admin.py:403 cps/admin.py:436 cps/admin.py:460 cps/admin.py:474 +#: cps/admin.py:493 cps/admin.py:510 cps/admin.py:522 cps/admin.py:538 +#: cps/admin.py:545 cps/admin.py:559 cps/templates/admin.html:101 msgid "Basic Configuration" msgstr "Grundläggande konfiguration" -#: cps/admin.py:358 +#: cps/admin.py:356 msgid "Keyfile location is not valid, please enter correct path" msgstr "Platsen för Keyfile är inte giltig, ange rätt sökväg" -#: cps/admin.py:370 +#: cps/admin.py:368 cps/admin.py:433 msgid "Certfile location is not valid, please enter correct path" msgstr "Platsen för Certfile är inte giltig, ange rätt sökväg" -#: cps/admin.py:395 -msgid "Please enter a LDAP provider and a DN" +#: cps/admin.py:393 +msgid "Please enter a LDAP provider, port, DN and user object identifier" msgstr "" -#: cps/admin.py:423 +#: cps/admin.py:400 +msgid "Please enter a LDAP service account and password" +msgstr "" + +#: cps/admin.py:457 msgid "Please enter Github oauth credentials" msgstr "" -#: cps/admin.py:437 +#: cps/admin.py:471 msgid "Please enter Google oauth credentials" msgstr "" -#: cps/admin.py:460 +#: cps/admin.py:490 msgid "Logfile location is not valid, please enter correct path" msgstr "Platsen för Logfile platsen är inte giltig, ange rätt sökväg" -#: cps/admin.py:498 +#: cps/admin.py:507 +msgid "Access Logfile location is not valid, please enter correct path" +msgstr "" + +#: cps/admin.py:542 msgid "DB location is not valid, please enter correct path" msgstr "Platsen för DB är inte giltig, ange rätt sökväg" -#: cps/admin.py:558 cps/web.py:1045 +#: cps/admin.py:602 cps/web.py:1040 msgid "Please fill out all fields!" msgstr "Fyll i alla fält!" -#: cps/admin.py:560 cps/admin.py:566 cps/admin.py:582 +#: cps/admin.py:604 cps/admin.py:610 cps/admin.py:626 #: cps/templates/admin.html:35 msgid "Add new user" msgstr "Lägg till ny användare" -#: cps/admin.py:564 cps/web.py:1248 +#: cps/admin.py:608 cps/web.py:1251 msgid "E-mail is not from valid domain" msgstr "E-posten är inte från giltig domän" -#: cps/admin.py:572 +#: cps/admin.py:616 #, python-format msgid "User '%(user)s' created" msgstr "Användaren '%(user)s' skapad" -#: cps/admin.py:576 +#: cps/admin.py:620 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:607 +#: cps/admin.py:651 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "Test-e-post skicka till %(kindlemail)s" -#: cps/admin.py:610 +#: cps/admin.py:654 #, 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:612 cps/web.py:1029 +#: cps/admin.py:656 cps/web.py:1023 msgid "Please configure your kindle e-mail address first..." msgstr "Konfigurera din kindle-e-postadress först..." -#: cps/admin.py:614 +#: cps/admin.py:658 msgid "E-mail server settings updated" msgstr "E-postserverinställningar uppdaterade" -#: cps/admin.py:615 +#: cps/admin.py:659 msgid "Edit e-mail server settings" msgstr "Redigera inställningar för e-postserver" -#: cps/admin.py:640 +#: cps/admin.py:687 #, python-format msgid "User '%(nick)s' deleted" msgstr "Användaren '%(nick)s' borttagen" -#: cps/admin.py:711 +#: cps/admin.py:690 +msgid "No admin user remaining, can't delete user" +msgstr "" + +#: cps/admin.py:761 #, python-format msgid "User '%(nick)s' updated" msgstr "Användaren '%(nick)s' uppdaterad" -#: cps/admin.py:714 +#: cps/admin.py:764 msgid "An unknown error occured." msgstr "Ett okänt fel uppstod." -#: cps/admin.py:717 +#: cps/admin.py:767 #, python-format msgid "Edit User %(nick)s" msgstr "Redigera användaren %(nick)s" -#: cps/admin.py:733 +#: cps/admin.py:783 #, python-format msgid "Password for user %(user)s reset" msgstr "Lösenord för användaren %(user)s återställd" -#: cps/admin.py:736 cps/web.py:1070 +#: cps/admin.py:786 cps/web.py:1065 msgid "An unknown error occurred. Please try again later." msgstr "Ett okänt fel uppstod. Försök igen senare." -#: cps/admin.py:755 +#: cps/admin.py:797 +msgid "Logfile viewer" +msgstr "" + +#: cps/admin.py:832 msgid "Requesting update package" msgstr "Begär uppdateringspaketet" -#: cps/admin.py:756 +#: cps/admin.py:833 msgid "Downloading update package" msgstr "Hämtar uppdateringspaketet" -#: cps/admin.py:757 +#: cps/admin.py:834 msgid "Unzipping update package" msgstr "Packar upp uppdateringspaketet" -#: cps/admin.py:758 +#: cps/admin.py:835 msgid "Replacing files" msgstr "Ersätta filer" -#: cps/admin.py:759 +#: cps/admin.py:836 msgid "Database connections are closed" msgstr "Databasanslutningarna är stängda" -#: cps/admin.py:760 +#: cps/admin.py:837 msgid "Stopping server" msgstr "Stoppar server" -#: cps/admin.py:761 +#: cps/admin.py:838 msgid "Update finished, please press okay and reload page" msgstr "Uppdatering klar, tryck på okej och uppdatera sidan" -#: cps/admin.py:762 cps/admin.py:763 cps/admin.py:764 cps/admin.py:765 +#: cps/admin.py:839 cps/admin.py:840 cps/admin.py:841 cps/admin.py:842 msgid "Update failed:" msgstr "Uppdateringen misslyckades:" -#: cps/admin.py:762 cps/updater.py:277 cps/updater.py:456 cps/updater.py:458 +#: cps/admin.py:839 cps/updater.py:273 cps/updater.py:459 cps/updater.py:461 msgid "HTTP Error" msgstr "HTTP-fel" -#: cps/admin.py:763 cps/updater.py:279 cps/updater.py:460 +#: cps/admin.py:840 cps/updater.py:275 cps/updater.py:463 msgid "Connection error" msgstr "Anslutningsfel" -#: cps/admin.py:764 cps/updater.py:281 cps/updater.py:462 +#: cps/admin.py:841 cps/updater.py:277 cps/updater.py:465 msgid "Timeout while establishing connection" msgstr "Tiden ute när du etablerade anslutning" -#: cps/admin.py:765 cps/updater.py:283 cps/updater.py:464 +#: cps/admin.py:842 cps/updater.py:279 cps/updater.py:467 msgid "General error" msgstr "Allmänt fel" @@ -227,720 +243,714 @@ msgstr "Utförande behörighet saknas" msgid "not configured" msgstr "inte konfigurerad" -#: cps/editbooks.py:218 cps/editbooks.py:432 +#: cps/editbooks.py:215 cps/editbooks.py:394 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:246 +#: cps/editbooks.py:243 msgid "edit metadata" msgstr "redigera metadata" -#: cps/editbooks.py:325 cps/editbooks.py:595 +#: cps/editbooks.py:322 cps/editbooks.py:557 #, 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:329 cps/editbooks.py:599 +#: cps/editbooks.py:326 cps/editbooks.py:561 msgid "File to be uploaded must have an extension" msgstr "Filen som ska laddas upp måste ha en ändelse" -#: cps/editbooks.py:341 cps/editbooks.py:619 +#: cps/editbooks.py:338 cps/editbooks.py:581 #, 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:346 +#: cps/editbooks.py:343 #, python-format msgid "Failed to store file %(file)s." msgstr "Det gick inte att lagra filen %(file)s." -#: cps/editbooks.py:363 +#: cps/editbooks.py:360 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Filformatet %(ext)s lades till %(book)s" -#: cps/editbooks.py:382 -#, python-format -msgid "Failed to create path for cover %(path)s (Permission denied)." -msgstr "" - -#: cps/editbooks.py:390 -#, python-format -msgid "Failed to store cover-file %(cover)s." -msgstr "" - -#: cps/editbooks.py:393 -msgid "Cover-file is not a valid image file" -msgstr "" - -#: cps/editbooks.py:399 cps/editbooks.py:413 +#: cps/editbooks.py:374 msgid "Cover is not a supported imageformat (jpg/png/webp), can't save" msgstr "" -#: cps/editbooks.py:445 cps/editbooks.py:454 +#: cps/editbooks.py:407 cps/editbooks.py:416 msgid "unknown" msgstr "okänd" -#: cps/editbooks.py:486 +#: cps/editbooks.py:448 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/editbooks.py:534 +#: cps/editbooks.py:496 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s är inte ett giltigt språk" -#: cps/editbooks.py:565 +#: cps/editbooks.py:527 msgid "Metadata successfully updated" msgstr "Metadata uppdaterades" -#: cps/editbooks.py:574 +#: cps/editbooks.py:536 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:624 +#: cps/editbooks.py:586 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "Det gick inte att lagra filen %(file)s (behörighet nekad)." -#: cps/editbooks.py:629 +#: cps/editbooks.py:591 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "Det gick inte att ta bort filen %(file)s (behörighet nekad)." -#: cps/editbooks.py:712 +#: cps/editbooks.py:674 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:741 +#: cps/editbooks.py:703 msgid "Source or destination format for conversion missing" msgstr "Källa eller målformat för konvertering saknas" -#: cps/editbooks.py:751 +#: cps/editbooks.py:711 #, 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:755 +#: cps/editbooks.py:715 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Det gick inte att konvertera den här boken: %(res)s" -#: cps/gdrive.py:56 +#: cps/gdrive.py:61 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "" -#: cps/gdrive.py:101 +#: cps/gdrive.py:106 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "Återuppringningsdomänen är inte verifierad, följ stegen för att verifiera domänen i Google utvecklarkonsol" -#: cps/helper.py:97 +#: cps/helper.py:94 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "%(format)s formatet hittades inte för bok-id: %(book)d" -#: cps/helper.py:109 +#: cps/helper.py:106 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "%(format)s hittades inte på Google Drive: %(fn)s" -#: cps/helper.py:116 cps/helper.py:223 cps/templates/detail.html:41 +#: cps/helper.py:113 cps/helper.py:220 cps/templates/detail.html:41 #: cps/templates/detail.html:45 msgid "Send to Kindle" msgstr "Skicka till Kindle" -#: cps/helper.py:117 cps/helper.py:135 cps/helper.py:225 +#: cps/helper.py:114 cps/helper.py:132 cps/helper.py:222 msgid "This e-mail has been sent via Calibre-Web." msgstr "Detta e-postmeddelande har skickats via Calibre-Web." -#: cps/helper.py:128 +#: cps/helper.py:125 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "%(format)s hittades inte: %(fn)s" -#: cps/helper.py:133 +#: cps/helper.py:130 msgid "Calibre-Web test e-mail" msgstr "Calibre-Web test e-post" -#: cps/helper.py:134 +#: cps/helper.py:131 msgid "Test e-mail" msgstr "Test e-post" -#: cps/helper.py:150 +#: cps/helper.py:147 msgid "Get Started with Calibre-Web" msgstr "Kom igång med Calibre-Web" -#: cps/helper.py:151 +#: cps/helper.py:148 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "Registrera e-post för användare: %(name)s" -#: cps/helper.py:165 cps/helper.py:167 cps/helper.py:169 cps/helper.py:177 -#: cps/helper.py:179 cps/helper.py:181 +#: cps/helper.py:162 cps/helper.py:164 cps/helper.py:166 cps/helper.py:174 +#: cps/helper.py:176 cps/helper.py:178 #, python-format msgid "Send %(format)s to Kindle" msgstr "" -#: cps/helper.py:185 +#: cps/helper.py:182 #, python-format msgid "Convert %(orig)s to %(format)s and send to Kindle" msgstr "" -#: cps/helper.py:224 +#: cps/helper.py:221 #, python-format msgid "E-mail: %(book)s" msgstr "E-post: %(book)s" -#: cps/helper.py:227 +#: cps/helper.py:224 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "Den begärda filen kunde inte läsas. Kanske fel behörigheter?" -#: cps/helper.py:335 +#: cps/helper.py:331 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "Byt namn på titel från: \"%(src)s\" till \"%(dest)s\" misslyckades med fel: %(error)s" -#: cps/helper.py:345 +#: cps/helper.py:341 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "Byt namn på författare från: \"%(src)s\" till \"%(dest)s\" misslyckades med fel: %(error)s" -#: cps/helper.py:359 +#: cps/helper.py:355 #, python-format msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:385 cps/helper.py:395 cps/helper.py:403 +#: cps/helper.py:381 cps/helper.py:391 cps/helper.py:399 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "Filen %(file)s hittades inte på Google Drive" -#: cps/helper.py:424 +#: cps/helper.py:420 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "Boksökvägen %(path)s hittades inte på Google Drive" -#: cps/helper.py:584 +#: cps/helper.py:579 msgid "Error excecuting UnRar" msgstr "Fel vid körning av UnRar" -#: cps/helper.py:586 +#: cps/helper.py:581 msgid "Unrar binary file not found" msgstr "Unrar binärfil hittades inte" -#: cps/helper.py:614 +#: cps/helper.py:609 msgid "Waiting" msgstr "Väntar" -#: cps/helper.py:616 +#: cps/helper.py:611 msgid "Failed" msgstr "Misslyckades" -#: cps/helper.py:618 +#: cps/helper.py:613 msgid "Started" msgstr "Startad" -#: cps/helper.py:620 +#: cps/helper.py:615 msgid "Finished" msgstr "Klar" -#: cps/helper.py:622 +#: cps/helper.py:617 msgid "Unknown Status" msgstr "Okänd status" -#: cps/helper.py:627 +#: cps/helper.py:622 msgid "E-mail: " msgstr "E-post: " -#: cps/helper.py:629 cps/helper.py:633 +#: cps/helper.py:624 cps/helper.py:628 msgid "Convert: " msgstr "Konvertera: " -#: cps/helper.py:631 +#: cps/helper.py:626 msgid "Upload: " msgstr "Överför: " -#: cps/helper.py:635 +#: cps/helper.py:630 msgid "Unknown Task: " msgstr "Okänd uppgift: " -#: cps/oauth_bb.py:87 +#: cps/oauth_bb.py:91 #, python-format -msgid "Register with %s, " +msgid "Register with %(provider)s" msgstr "" -#: cps/oauth_bb.py:145 +#: cps/oauth_bb.py:149 msgid "Failed to log in with GitHub." msgstr "" -#: cps/oauth_bb.py:150 +#: cps/oauth_bb.py:154 msgid "Failed to fetch user info from GitHub." msgstr "" -#: cps/oauth_bb.py:161 +#: cps/oauth_bb.py:165 msgid "Failed to log in with Google." msgstr "" -#: cps/oauth_bb.py:166 +#: cps/oauth_bb.py:170 msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:265 +#: cps/oauth_bb.py:269 #, python-format msgid "Unlink to %(oauth)s success." msgstr "" -#: cps/oauth_bb.py:269 +#: cps/oauth_bb.py:273 #, python-format msgid "Unlink to %(oauth)s failed." msgstr "" -#: cps/oauth_bb.py:272 +#: cps/oauth_bb.py:276 #, python-format msgid "Not linked to %(oauth)s." msgstr "" -#: cps/oauth_bb.py:300 +#: cps/oauth_bb.py:304 msgid "GitHub Oauth error, please retry later." msgstr "" -#: cps/oauth_bb.py:319 +#: cps/oauth_bb.py:323 msgid "Google Oauth error, please retry later." msgstr "" -#: cps/shelf.py:40 cps/shelf.py:92 +#: cps/shelf.py:46 cps/shelf.py:98 msgid "Invalid shelf specified" msgstr "Ogiltig hylla specificerad" -#: cps/shelf.py:47 +#: cps/shelf.py:53 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" msgstr "" -#: cps/shelf.py:55 +#: cps/shelf.py:61 msgid "You are not allowed to edit public shelves" msgstr "Du får inte redigera offentliga hyllor" -#: cps/shelf.py:64 +#: cps/shelf.py:70 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" msgstr "Boken är redan en del av hyllan: %(shelfname)s" -#: cps/shelf.py:78 +#: cps/shelf.py:84 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Boken har lagts till i hyllan: %(sname)s" -#: cps/shelf.py:97 +#: cps/shelf.py:103 #, 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:102 +#: cps/shelf.py:108 msgid "User is not allowed to edit public shelves" msgstr "Användaren får inte redigera publika hyllor" -#: cps/shelf.py:120 +#: cps/shelf.py:126 #, 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:134 +#: cps/shelf.py:140 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "Böcker har lagts till hyllan: %(sname)s" -#: cps/shelf.py:136 +#: cps/shelf.py:142 #, 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:173 +#: cps/shelf.py:179 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Boken har tagits bort från hyllan: %(sname)s" -#: cps/shelf.py:179 +#: cps/shelf.py:185 #, 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:200 cps/shelf.py:224 +#: cps/shelf.py:206 cps/shelf.py:230 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "En hylla med namnet '%(title)s' finns redan." -#: cps/shelf.py:205 +#: cps/shelf.py:211 #, python-format msgid "Shelf %(title)s created" msgstr "Hyllan %(title)s skapad" -#: cps/shelf.py:207 cps/shelf.py:235 +#: cps/shelf.py:213 cps/shelf.py:241 msgid "There was an error" msgstr "Det fanns ett fel" -#: cps/shelf.py:208 cps/shelf.py:210 +#: cps/shelf.py:214 cps/shelf.py:216 msgid "create a shelf" msgstr "skapa en hylla" -#: cps/shelf.py:233 +#: cps/shelf.py:239 #, python-format msgid "Shelf %(title)s changed" msgstr "Hyllan %(title)s ändrad" -#: cps/shelf.py:236 cps/shelf.py:238 +#: cps/shelf.py:242 cps/shelf.py:244 msgid "Edit a shelf" msgstr "Redigera en hylla" -#: cps/shelf.py:259 -#, python-format -msgid "successfully deleted shelf %(name)s" -msgstr "tog bort hyllan %(name)s" - -#: cps/shelf.py:289 +#: cps/shelf.py:295 #, python-format msgid "Shelf: '%(name)s'" msgstr "Hylla: '%(name)s'" -#: cps/shelf.py:292 +#: cps/shelf.py:298 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/shelf.py:324 +#: cps/shelf.py:330 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Ändra ordning på hyllan: '%(name)s'" -#: cps/ub.py:111 +#: cps/ub.py:68 msgid "Recently Added" msgstr "Nyligen tillagda" -#: cps/ub.py:113 +#: cps/ub.py:70 msgid "Show recent books" msgstr "Visa senaste böcker" -#: cps/templates/index.xml:17 cps/ub.py:114 +#: cps/templates/index.xml:17 cps/ub.py:71 msgid "Hot Books" msgstr "Heta böcker" -#: cps/ub.py:115 +#: cps/ub.py:72 msgid "Show hot books" msgstr "Visa heta böcker" -#: cps/templates/index.xml:24 cps/ub.py:118 +#: cps/templates/index.xml:24 cps/ub.py:75 msgid "Best rated Books" msgstr "Bäst rankade böcker" -#: cps/ub.py:120 +#: cps/ub.py:77 msgid "Show best rated books" msgstr "Visa böcker med bästa betyg" -#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:121 -#: cps/web.py:965 +#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:78 +#: cps/web.py:958 msgid "Read Books" msgstr "Lästa böcker" -#: cps/ub.py:123 +#: cps/ub.py:80 msgid "Show read and unread" msgstr "Visa lästa och olästa" -#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:125 -#: cps/web.py:969 +#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:82 +#: cps/web.py:962 msgid "Unread Books" msgstr "Olästa böcker" -#: cps/ub.py:127 +#: cps/ub.py:84 msgid "Show unread" msgstr "" -#: cps/ub.py:128 +#: cps/ub.py:85 msgid "Discover" msgstr "Upptäck" -#: cps/ub.py:130 +#: cps/ub.py:87 msgid "Show random books" msgstr "Visa slumpmässiga böcker" -#: cps/ub.py:131 +#: cps/ub.py:88 msgid "Categories" msgstr "Kategorier" -#: cps/ub.py:133 +#: cps/ub.py:90 msgid "Show category selection" msgstr "Visa kategorival" #: cps/templates/book_edit.html:71 cps/templates/search_form.html:53 -#: cps/ub.py:134 +#: cps/ub.py:91 msgid "Series" msgstr "Serier" -#: cps/ub.py:136 +#: cps/ub.py:93 msgid "Show series selection" msgstr "Visa serieval" -#: cps/templates/index.xml:61 cps/ub.py:137 +#: cps/templates/index.xml:61 cps/ub.py:94 msgid "Authors" msgstr "Författare" -#: cps/ub.py:139 +#: cps/ub.py:96 msgid "Show author selection" msgstr "Visa författarval" -#: cps/templates/index.xml:68 cps/ub.py:141 +#: cps/templates/index.xml:68 cps/ub.py:98 msgid "Publishers" msgstr "Förlag" -#: cps/ub.py:143 +#: cps/ub.py:100 msgid "Show publisher selection" msgstr "Visa urval av förlag" -#: cps/templates/search_form.html:74 cps/ub.py:144 +#: cps/templates/search_form.html:74 cps/ub.py:101 msgid "Languages" msgstr "Språk" -#: cps/ub.py:147 +#: cps/ub.py:104 msgid "Show language selection" msgstr "Visa språkval" -#: cps/ub.py:148 +#: cps/ub.py:105 msgid "Ratings" msgstr "" -#: cps/ub.py:150 +#: cps/ub.py:107 msgid "Show ratings selection" msgstr "" -#: cps/ub.py:151 +#: cps/ub.py:108 msgid "File formats" msgstr "" -#: cps/ub.py:153 +#: cps/ub.py:110 msgid "Show file formats selection" msgstr "" -#: cps/updater.py:257 cps/updater.py:364 cps/updater.py:377 +#: cps/updater.py:253 cps/updater.py:360 cps/updater.py:373 msgid "Unexpected data while reading update information" msgstr "Oväntade data vid läsning av uppdateringsinformation" -#: cps/updater.py:264 cps/updater.py:370 +#: cps/updater.py:260 cps/updater.py:366 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:290 cps/updater.py:422 +#: cps/updater.py:286 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:343 +#: cps/updater.py:339 msgid "Could not fetch update information" msgstr "Kunde inte hämta uppdateringsinformation" -#: cps/updater.py:357 +#: cps/updater.py:353 msgid "No release information available" msgstr "" -#: cps/updater.py:403 cps/updater.py:412 +#: cps/updater.py:406 cps/updater.py:415 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "" -#: cps/web.py:457 +#: cps/updater.py:425 +msgid "Click on the button below to update to the latest stable version." +msgstr "" + +#: cps/web.py:445 msgid "Recently Added Books" msgstr "Nyligen tillagda böcker" -#: cps/web.py:484 +#: cps/web.py:473 msgid "Best rated books" msgstr "Bäst rankade böcker" -#: cps/templates/index.xml:38 cps/web.py:492 +#: cps/templates/index.xml:38 cps/web.py:481 msgid "Random Books" msgstr "Slumpmässiga böcker" -#: cps/web.py:516 +#: cps/web.py:505 msgid "Books" msgstr "" -#: cps/web.py:543 +#: cps/web.py:532 msgid "Hot Books (most downloaded)" msgstr "Heta böcker (mest hämtade)" -#: cps/web.py:553 cps/web.py:1294 cps/web.py:1383 +#: cps/web.py:542 cps/web.py:1298 cps/web.py:1386 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "Fel vid öppnande av e-bok. Filen finns inte eller filen är inte tillgänglig:" -#: cps/web.py:580 +#: cps/web.py:559 +#, python-format +msgid "Author: %(name)s" +msgstr "" + +#: cps/web.py:571 #, python-format msgid "Publisher: %(name)s" msgstr "Förlag: %(name)s" -#: cps/web.py:591 +#: cps/web.py:582 #, python-format msgid "Series: %(serie)s" msgstr "Serier: %(serie)s" -#: cps/web.py:602 +#: cps/web.py:593 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:613 +#: cps/web.py:604 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:625 +#: cps/web.py:616 #, python-format msgid "Category: %(name)s" msgstr "Kategori: %(name)s" -#: cps/web.py:659 +#: cps/web.py:650 msgid "Publisher list" msgstr "Lista över förlag" -#: cps/templates/index.xml:82 cps/web.py:675 +#: cps/templates/index.xml:82 cps/web.py:666 msgid "Series list" msgstr "Serielista" -#: cps/web.py:689 +#: cps/web.py:680 msgid "Ratings list" msgstr "" -#: cps/web.py:702 +#: cps/web.py:693 msgid "File formats list" msgstr "" -#: cps/web.py:730 +#: cps/web.py:721 msgid "Available languages" msgstr "Tillgängliga språk" -#: cps/web.py:750 +#: cps/web.py:741 #, python-format msgid "Language: %(name)s" msgstr "Språk: %(name)s" -#: cps/templates/index.xml:75 cps/web.py:764 +#: cps/templates/index.xml:75 cps/web.py:755 msgid "Category list" msgstr "Kategorilista" -#: cps/templates/layout.html:73 cps/web.py:777 +#: cps/templates/layout.html:73 cps/web.py:769 msgid "Tasks" msgstr "Uppgifter" -#: cps/web.py:841 +#: cps/web.py:834 msgid "Published after " msgstr "Publicerad efter " -#: cps/web.py:848 +#: cps/web.py:841 msgid "Published before " msgstr "Publicerad före " -#: cps/web.py:862 +#: cps/web.py:855 #, python-format msgid "Rating <= %(rating)s" msgstr "Betyg <= %(rating)s" -#: cps/web.py:864 +#: cps/web.py:857 #, python-format msgid "Rating >= %(rating)s" msgstr "Betyg >= %(rating)s" -#: cps/web.py:924 cps/web.py:933 +#: cps/web.py:917 cps/web.py:926 msgid "search" msgstr "sök" -#: cps/web.py:1018 +#: cps/web.py:1012 msgid "Please configure the SMTP mail settings first..." msgstr "Konfigurera SMTP-postinställningarna först..." -#: cps/web.py:1023 +#: cps/web.py:1017 #, 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:1027 +#: cps/web.py:1021 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Det gick inte att skicka den här boken: %(res)s" -#: cps/web.py:1046 cps/web.py:1071 cps/web.py:1076 cps/web.py:1081 -#: cps/web.py:1085 +#: cps/web.py:1041 cps/web.py:1066 cps/web.py:1070 cps/web.py:1075 +#: cps/web.py:1079 msgid "register" msgstr "registrera" -#: cps/web.py:1073 +#: cps/web.py:1068 msgid "Your e-mail is not allowed to register" msgstr "Din e-post är inte tillåten att registrera" -#: cps/web.py:1077 +#: cps/web.py:1071 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Bekräftelsemail skickades till ditt e-postkonto." -#: cps/web.py:1080 +#: cps/web.py:1074 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:1103 cps/web.py:1115 -#, python-format -msgid "You are now logged in as: '%(nickname)s'" +#: cps/web.py:1089 +msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1108 cps/web.py:1120 +#: cps/web.py:1098 cps/web.py:1212 +#, python-format +msgid "you are now logged in as: '%(nickname)s'" +msgstr "du är nu inloggad som: \"%(nickname)s\"" + +#: cps/web.py:1105 cps/web.py:1122 msgid "Wrong Username or Password" msgstr "Fel användarnamn eller lösenord" -#: cps/web.py:1111 +#: cps/web.py:1108 msgid "Could not login. LDAP server down, please contact your administrator" msgstr "" -#: cps/web.py:1124 cps/web.py:1146 +#: cps/web.py:1117 +#, python-format +msgid "You are now logged in as: '%(nickname)s'" +msgstr "" + +#: cps/web.py:1126 cps/web.py:1148 msgid "login" msgstr "logga in" -#: cps/web.py:1158 cps/web.py:1189 +#: cps/web.py:1160 cps/web.py:1191 msgid "Token not found" msgstr "Token hittades inte" -#: cps/web.py:1166 cps/web.py:1197 +#: cps/web.py:1168 cps/web.py:1199 msgid "Token has expired" msgstr "Token har löpt ut" -#: cps/web.py:1174 +#: cps/web.py:1176 msgid "Success! Please return to your device" msgstr "Lyckades! Vänligen återvänd till din enhet" -#: cps/web.py:1210 -#, python-format -msgid "you are now logged in as: '%(nickname)s'" -msgstr "du är nu inloggad som: \"%(nickname)s\"" - -#: cps/web.py:1250 cps/web.py:1277 cps/web.py:1281 +#: cps/web.py:1253 cps/web.py:1280 cps/web.py:1284 #, python-format msgid "%(name)s's profile" msgstr "%(name)ss profil" -#: cps/web.py:1274 +#: cps/web.py:1277 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:1279 +#: cps/web.py:1282 msgid "Profile updated" msgstr "Profilen uppdaterad" -#: cps/web.py:1304 cps/web.py:1306 cps/web.py:1308 cps/web.py:1314 -#: cps/web.py:1318 +#: cps/web.py:1308 cps/web.py:1310 cps/web.py:1312 cps/web.py:1318 +#: cps/web.py:1322 msgid "Read a Book" msgstr "Läs en bok" -#: cps/web.py:1328 +#: cps/web.py:1332 msgid "Error opening eBook. File does not exist or file is not accessible." msgstr "" -#: cps/worker.py:308 +#: cps/worker.py:311 #, python-format msgid "Ebook-converter failed: %(error)s" msgstr "E-bokkonverteraren misslyckades: %(error)s" -#: cps/worker.py:319 +#: cps/worker.py:322 #, python-format msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "Kindlegen misslyckades med fel %(error)s. Meddelande: %(message)s" @@ -1056,53 +1066,57 @@ msgid "Administration" msgstr "Administration" #: cps/templates/admin.html:109 +msgid "View Logfiles" +msgstr "" + +#: cps/templates/admin.html:110 msgid "Reconnect to Calibre DB" msgstr "Anslut till Calibre DB igen" -#: cps/templates/admin.html:110 +#: cps/templates/admin.html:111 msgid "Restart Calibre-Web" msgstr "Starta om Calibre-Web" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:112 msgid "Stop Calibre-Web" msgstr "Stoppa Calibre-Web" -#: cps/templates/admin.html:117 +#: cps/templates/admin.html:118 msgid "Update" msgstr "Uppdatera" -#: cps/templates/admin.html:121 +#: cps/templates/admin.html:122 msgid "Version" msgstr "Version" -#: cps/templates/admin.html:122 +#: cps/templates/admin.html:123 msgid "Details" msgstr "Detaljer" -#: cps/templates/admin.html:128 +#: cps/templates/admin.html:129 msgid "Current version" msgstr "Aktuell version" -#: cps/templates/admin.html:134 +#: cps/templates/admin.html:135 msgid "Check for update" msgstr "Sök efter uppdatering" -#: cps/templates/admin.html:135 +#: cps/templates/admin.html:136 msgid "Perform Update" msgstr "Utför uppdatering" -#: cps/templates/admin.html:147 +#: cps/templates/admin.html:148 msgid "Do you really want to restart Calibre-Web?" msgstr "Är du säker på att du vill starta om Calibre-Web?" -#: cps/templates/admin.html:152 cps/templates/admin.html:166 -#: cps/templates/admin.html:186 cps/templates/shelf.html:72 +#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:187 cps/templates/shelf.html:72 msgid "Ok" msgstr "Ok" -#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:154 cps/templates/admin.html:168 #: cps/templates/book_edit.html:174 cps/templates/book_edit.html:196 -#: cps/templates/config_edit.html:281 cps/templates/config_view_edit.html:147 +#: cps/templates/config_edit.html:331 cps/templates/config_view_edit.html:147 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 @@ -1110,11 +1124,11 @@ msgstr "Ok" msgid "Back" msgstr "Tillbaka" -#: cps/templates/admin.html:165 +#: cps/templates/admin.html:166 msgid "Do you really want to stop Calibre-Web?" msgstr "Är du säker på att du vill stoppa Calibre-Web?" -#: cps/templates/admin.html:177 +#: cps/templates/admin.html:178 msgid "Updating, please do not reload page" msgstr "Uppdaterar, vänligen uppdatera inte sidan" @@ -1243,7 +1257,7 @@ msgstr "visa bok efter redigering" msgid "Get metadata" msgstr "Hämta metadata" -#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:279 +#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329 #: cps/templates/config_view_edit.html:146 cps/templates/login.html:20 #: cps/templates/search_form.html:150 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:130 @@ -1387,123 +1401,171 @@ msgstr "Loggnivå" msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "Plats och namn på loggfilen (calibre-web.log för ingen post)" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:134 +msgid "Enable Access Log" +msgstr "" + +#: cps/templates/config_edit.html:137 +msgid "Location and name of access logfile (access.log for no entry)" +msgstr "" + +#: cps/templates/config_edit.html:148 msgid "Feature Configuration" msgstr "Funktion konfiguration" -#: cps/templates/config_edit.html:148 +#: cps/templates/config_edit.html:156 msgid "Enable uploading" msgstr "Aktivera uppladdning" -#: cps/templates/config_edit.html:152 +#: cps/templates/config_edit.html:160 msgid "Enable anonymous browsing" msgstr "Aktivera anonym surfning" -#: cps/templates/config_edit.html:156 +#: cps/templates/config_edit.html:164 msgid "Enable public registration" msgstr "Aktivera offentlig registrering" -#: cps/templates/config_edit.html:160 +#: cps/templates/config_edit.html:168 msgid "Enable remote login (\"magic link\")" msgstr "Aktivera fjärrinloggning (\"magic link\")" -#: cps/templates/config_edit.html:165 +#: cps/templates/config_edit.html:173 msgid "Use" msgstr "Använd" -#: cps/templates/config_edit.html:166 +#: cps/templates/config_edit.html:174 msgid "Obtain an API Key" msgstr "Hämta en API-nyckel" -#: cps/templates/config_edit.html:170 +#: cps/templates/config_edit.html:178 msgid "Goodreads API Key" msgstr "Goodreads API-nyckel" -#: cps/templates/config_edit.html:174 +#: cps/templates/config_edit.html:182 msgid "Goodreads API Secret" msgstr "Goodreads API-hemlighet" -#: cps/templates/config_edit.html:181 +#: cps/templates/config_edit.html:189 msgid "Login type" msgstr "" -#: cps/templates/config_edit.html:183 +#: cps/templates/config_edit.html:191 msgid "Use standard Authentication" msgstr "" -#: cps/templates/config_edit.html:185 +#: cps/templates/config_edit.html:193 msgid "Use LDAP Authentication" msgstr "" -#: cps/templates/config_edit.html:188 +#: cps/templates/config_edit.html:196 msgid "Use GitHub OAuth" msgstr "" -#: cps/templates/config_edit.html:189 +#: cps/templates/config_edit.html:197 msgid "Use Google OAuth" msgstr "" -#: cps/templates/config_edit.html:196 -msgid "LDAP Provider URL" +#: cps/templates/config_edit.html:204 +msgid "LDAP Server Host Name or IP Address" +msgstr "" + +#: cps/templates/config_edit.html:208 +msgid "LDAP Server Port" +msgstr "" + +#: cps/templates/config_edit.html:212 +msgid "LDAP schema (ldap or ldaps)" +msgstr "" + +#: cps/templates/config_edit.html:216 +msgid "LDAP Admin username" +msgstr "" + +#: cps/templates/config_edit.html:220 +msgid "LDAP Admin password" +msgstr "" + +#: cps/templates/config_edit.html:225 +msgid "LDAP Server use SSL" msgstr "" -#: cps/templates/config_edit.html:200 +#: cps/templates/config_edit.html:229 +msgid "LDAP Server use TLS" +msgstr "" + +#: cps/templates/config_edit.html:233 +msgid "LDAP Server Certificate" +msgstr "" + +#: cps/templates/config_edit.html:237 +msgid "LDAP SSL Certificate Path" +msgstr "" + +#: cps/templates/config_edit.html:242 msgid "LDAP Distinguished Name (DN)" msgstr "" -#: cps/templates/config_edit.html:208 +#: cps/templates/config_edit.html:246 +msgid "LDAP User object filter" +msgstr "" + +#: cps/templates/config_edit.html:251 +msgid "LDAP Server is OpenLDAP?" +msgstr "" + +#: cps/templates/config_edit.html:258 msgid "Obtain GitHub OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:211 +#: cps/templates/config_edit.html:261 msgid "GitHub OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:215 +#: cps/templates/config_edit.html:265 msgid "GitHub OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:221 +#: cps/templates/config_edit.html:271 msgid "Obtain Google OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:224 +#: cps/templates/config_edit.html:274 msgid "Google OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:228 +#: cps/templates/config_edit.html:278 msgid "Google OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:242 +#: cps/templates/config_edit.html:292 msgid "External binaries" msgstr "Externa binärer" -#: cps/templates/config_edit.html:250 +#: cps/templates/config_edit.html:300 msgid "No converter" msgstr "Ingen konverterare" -#: cps/templates/config_edit.html:252 +#: cps/templates/config_edit.html:302 msgid "Use Kindlegen" msgstr "Använd Kindlegen" -#: cps/templates/config_edit.html:254 +#: cps/templates/config_edit.html:304 msgid "Use calibre's ebook converter" msgstr "Använd calibres e-bokkonverterare" -#: cps/templates/config_edit.html:258 +#: cps/templates/config_edit.html:308 msgid "E-Book converter settings" msgstr "Inställningar för e-bokkonverteraren" -#: cps/templates/config_edit.html:262 +#: cps/templates/config_edit.html:312 msgid "Path to convertertool" msgstr "Sökväg till convertertool" -#: cps/templates/config_edit.html:268 +#: cps/templates/config_edit.html:318 msgid "Location of Unrar binary" msgstr "Plats för Unrar-binär" -#: cps/templates/config_edit.html:284 cps/templates/layout.html:84 +#: cps/templates/config_edit.html:334 cps/templates/layout.html:84 #: cps/templates/login.html:4 msgid "Login" msgstr "Logga in" @@ -1717,7 +1779,7 @@ msgstr "Tillbaka till hemmet" msgid "Discover (Random Books)" msgstr "Upptäck (slumpmässiga böcker)" -#: cps/templates/index.html:65 +#: cps/templates/index.html:64 msgid "Group by series" msgstr "" @@ -1860,6 +1922,14 @@ msgstr "Kom ihåg mig" msgid "Log in with magic link" msgstr "Logga in med magic link" +#: cps/templates/logviewer.html:5 +msgid "Show Calibre-Web log" +msgstr "" + +#: cps/templates/logviewer.html:8 +msgid "Show access log" +msgstr "" + #: cps/templates/osd.xml:5 msgid "Calibre-Web ebook catalog" msgstr "Calibre-Web e-bokkatalog" @@ -2227,13 +2297,13 @@ msgstr "Senaste hämtningar" #~ msgstr "" #~ msgid "Failed to create path for cover %(path)s (Permission denied)." -#~ msgstr "Det gick inte att skapa sökväg för omslag %(path)s (behörighet nekad)." +#~ msgstr "" #~ msgid "Failed to store cover-file %(cover)s." -#~ msgstr "Det gick inte att lagra omslagsfilen %(cover)s." +#~ msgstr "" #~ msgid "Cover-file is not a valid image file" -#~ msgstr "Omslagsfilen är inte en giltig bildfil" +#~ msgstr "" #~ msgid "Cover is not a jpg file, can't save" #~ msgstr "Omslag är inte en jpg-fil, kan inte spara" @@ -2292,3 +2362,15 @@ msgstr "Senaste hämtningar" #~ msgid "PDF.js viewer" #~ msgstr "PDF.js visare" +#~ msgid "Please enter a LDAP provider and a DN" +#~ msgstr "" + +#~ msgid "successfully deleted shelf %(name)s" +#~ msgstr "tog bort hyllan %(name)s" + +#~ msgid "LDAP Provider URL" +#~ msgstr "" + +#~ msgid "Register with %s, " +#~ msgstr "" + diff --git a/cps/translations/uk/LC_MESSAGES/messages.mo b/cps/translations/uk/LC_MESSAGES/messages.mo index 2104efe9..46176c45 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 07114412..d0163bd6 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: 2019-05-31 11:20+0200\n" +"POT-Creation-Date: 2019-06-22 19:54+0200\n" "PO-Revision-Date: 2017-04-30 00:47+0300\n" "Last-Translator: ABIS Team \n" "Language: uk\n" @@ -15,13 +15,13 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" -#: cps/about.py:76 +#: cps/about.py:78 msgid "Statistics" msgstr "Статистика" -#: cps/admin.py:97 +#: cps/admin.py:98 msgid "Server restarted, please reload page" msgstr "Сервер перезавантажено, будь-ласка, перезавантажте сторінку" @@ -29,186 +29,202 @@ msgstr "Сервер перезавантажено, будь-ласка, пер msgid "Performing shutdown of server, please close window" msgstr "Виконується зупинка серверу, будь-ласка, закрийте вікно" -#: cps/admin.py:120 cps/updater.py:445 +#: cps/admin.py:119 cps/updater.py:448 msgid "Unknown" msgstr "Невідомий" -#: cps/admin.py:139 +#: cps/admin.py:138 msgid "Admin page" msgstr "Сторінка адміністратора" -#: cps/admin.py:208 cps/admin.py:486 +#: cps/admin.py:207 cps/admin.py:532 msgid "Calibre-Web configuration updated" msgstr "" -#: cps/admin.py:222 cps/templates/admin.html:102 +#: cps/admin.py:220 cps/templates/admin.html:102 msgid "UI Configuration" msgstr "Конфігурація інтерфейсу" -#: cps/admin.py:295 +#: cps/admin.py:293 msgid "Import of optional Google Drive requirements missing" msgstr "Імпорт додаткових вимог Google Drive відсутній" -#: cps/admin.py:298 +#: cps/admin.py:296 msgid "client_secrets.json is missing or not readable" msgstr "Неможливо зчитати client_secrets.json або він відсутній" -#: cps/admin.py:303 cps/admin.py:332 +#: cps/admin.py:301 cps/admin.py:330 msgid "client_secrets.json is not configured for web application" msgstr "Неможливо зконфігурувати client_secrets.json для веб-додатку" -#: cps/admin.py:335 cps/admin.py:361 cps/admin.py:373 cps/admin.py:398 -#: cps/admin.py:426 cps/admin.py:440 cps/admin.py:463 cps/admin.py:476 -#: cps/admin.py:494 cps/admin.py:501 cps/admin.py:516 -#: cps/templates/admin.html:101 +#: cps/admin.py:333 cps/admin.py:359 cps/admin.py:371 cps/admin.py:396 +#: cps/admin.py:403 cps/admin.py:436 cps/admin.py:460 cps/admin.py:474 +#: cps/admin.py:493 cps/admin.py:510 cps/admin.py:522 cps/admin.py:538 +#: cps/admin.py:545 cps/admin.py:559 cps/templates/admin.html:101 msgid "Basic Configuration" msgstr "Настройки сервера" -#: cps/admin.py:358 +#: cps/admin.py:356 msgid "Keyfile location is not valid, please enter correct path" msgstr "Невідомий шлях до Keyfile. Будь-ласка введіть коректний" -#: cps/admin.py:370 +#: cps/admin.py:368 cps/admin.py:433 msgid "Certfile location is not valid, please enter correct path" msgstr "Невідомий шлях до Certfile. Будь-ласка введіть коректний" -#: cps/admin.py:395 -msgid "Please enter a LDAP provider and a DN" +#: cps/admin.py:393 +msgid "Please enter a LDAP provider, port, DN and user object identifier" msgstr "" -#: cps/admin.py:423 +#: cps/admin.py:400 +msgid "Please enter a LDAP service account and password" +msgstr "" + +#: cps/admin.py:457 msgid "Please enter Github oauth credentials" msgstr "" -#: cps/admin.py:437 +#: cps/admin.py:471 msgid "Please enter Google oauth credentials" msgstr "" -#: cps/admin.py:460 +#: cps/admin.py:490 msgid "Logfile location is not valid, please enter correct path" msgstr "Невідомий шлях до Logfile. Будь-ласка введіть коректний" -#: cps/admin.py:498 +#: cps/admin.py:507 +msgid "Access Logfile location is not valid, please enter correct path" +msgstr "" + +#: cps/admin.py:542 msgid "DB location is not valid, please enter correct path" msgstr "Невідомий шлях до БД. Будь-ласка введіть коректний" -#: cps/admin.py:558 cps/web.py:1045 +#: cps/admin.py:602 cps/web.py:1040 msgid "Please fill out all fields!" msgstr "Будь-ласка, заповніть всі поля!" -#: cps/admin.py:560 cps/admin.py:566 cps/admin.py:582 +#: cps/admin.py:604 cps/admin.py:610 cps/admin.py:626 #: cps/templates/admin.html:35 msgid "Add new user" msgstr "Додати користувача" -#: cps/admin.py:564 cps/web.py:1248 +#: cps/admin.py:608 cps/web.py:1251 msgid "E-mail is not from valid domain" msgstr "" -#: cps/admin.py:572 +#: cps/admin.py:616 #, python-format msgid "User '%(user)s' created" msgstr "Користувач '%(user)s' додан" -#: cps/admin.py:576 +#: cps/admin.py:620 msgid "Found an existing account for this e-mail address or nickname." msgstr "" -#: cps/admin.py:607 +#: cps/admin.py:651 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "" -#: cps/admin.py:610 +#: cps/admin.py:654 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "" -#: cps/admin.py:612 cps/web.py:1029 +#: cps/admin.py:656 cps/web.py:1023 msgid "Please configure your kindle e-mail address first..." msgstr "" -#: cps/admin.py:614 +#: cps/admin.py:658 msgid "E-mail server settings updated" msgstr "" -#: cps/admin.py:615 +#: cps/admin.py:659 msgid "Edit e-mail server settings" msgstr "" -#: cps/admin.py:640 +#: cps/admin.py:687 #, python-format msgid "User '%(nick)s' deleted" msgstr "Користувача '%(nick)s' видалено" -#: cps/admin.py:711 +#: cps/admin.py:690 +msgid "No admin user remaining, can't delete user" +msgstr "" + +#: cps/admin.py:761 #, python-format msgid "User '%(nick)s' updated" msgstr "Користувача '%(nick)s' оновлено" -#: cps/admin.py:714 +#: cps/admin.py:764 msgid "An unknown error occured." msgstr "Сталась невідома помилка" -#: cps/admin.py:717 +#: cps/admin.py:767 #, python-format msgid "Edit User %(nick)s" msgstr "Змінити користувача %(nick)s" -#: cps/admin.py:733 +#: cps/admin.py:783 #, python-format msgid "Password for user %(user)s reset" msgstr "" -#: cps/admin.py:736 cps/web.py:1070 +#: cps/admin.py:786 cps/web.py:1065 msgid "An unknown error occurred. Please try again later." msgstr "" -#: cps/admin.py:755 +#: cps/admin.py:797 +msgid "Logfile viewer" +msgstr "" + +#: cps/admin.py:832 msgid "Requesting update package" msgstr "Перевірка оновлень" -#: cps/admin.py:756 +#: cps/admin.py:833 msgid "Downloading update package" msgstr "Завантаження оновлень" -#: cps/admin.py:757 +#: cps/admin.py:834 msgid "Unzipping update package" msgstr "Розпакування оновлення" -#: cps/admin.py:758 +#: cps/admin.py:835 msgid "Replacing files" msgstr "" -#: cps/admin.py:759 +#: cps/admin.py:836 msgid "Database connections are closed" msgstr "З'єднання з базою даних закрите" -#: cps/admin.py:760 +#: cps/admin.py:837 msgid "Stopping server" msgstr "" -#: cps/admin.py:761 +#: cps/admin.py:838 msgid "Update finished, please press okay and reload page" msgstr "Оновлення встановлені, натисніть ok і перезавантажте сторінку" -#: cps/admin.py:762 cps/admin.py:763 cps/admin.py:764 cps/admin.py:765 +#: cps/admin.py:839 cps/admin.py:840 cps/admin.py:841 cps/admin.py:842 msgid "Update failed:" msgstr "" -#: cps/admin.py:762 cps/updater.py:277 cps/updater.py:456 cps/updater.py:458 +#: cps/admin.py:839 cps/updater.py:273 cps/updater.py:459 cps/updater.py:461 msgid "HTTP Error" msgstr "" -#: cps/admin.py:763 cps/updater.py:279 cps/updater.py:460 +#: cps/admin.py:840 cps/updater.py:275 cps/updater.py:463 msgid "Connection error" msgstr "" -#: cps/admin.py:764 cps/updater.py:281 cps/updater.py:462 +#: cps/admin.py:841 cps/updater.py:277 cps/updater.py:465 msgid "Timeout while establishing connection" msgstr "" -#: cps/admin.py:765 cps/updater.py:283 cps/updater.py:464 +#: cps/admin.py:842 cps/updater.py:279 cps/updater.py:467 msgid "General error" msgstr "" @@ -226,720 +242,714 @@ msgstr "Відсутній дозвіл на виконання" msgid "not configured" msgstr "" -#: cps/editbooks.py:218 cps/editbooks.py:432 +#: cps/editbooks.py:215 cps/editbooks.py:394 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Сталась помилка при відкриванні eBook. Файл не існує або відсутній доступ до нього" -#: cps/editbooks.py:246 +#: cps/editbooks.py:243 msgid "edit metadata" msgstr "змінити метадані" -#: cps/editbooks.py:325 cps/editbooks.py:595 +#: cps/editbooks.py:322 cps/editbooks.py:557 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "" -#: cps/editbooks.py:329 cps/editbooks.py:599 +#: cps/editbooks.py:326 cps/editbooks.py:561 msgid "File to be uploaded must have an extension" msgstr "Завантажувальний файл повинен мати розширення" -#: cps/editbooks.py:341 cps/editbooks.py:619 +#: cps/editbooks.py:338 cps/editbooks.py:581 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "" -#: cps/editbooks.py:346 +#: cps/editbooks.py:343 #, python-format msgid "Failed to store file %(file)s." msgstr "" -#: cps/editbooks.py:363 +#: cps/editbooks.py:360 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "" -#: cps/editbooks.py:382 -#, python-format -msgid "Failed to create path for cover %(path)s (Permission denied)." -msgstr "" - -#: cps/editbooks.py:390 -#, python-format -msgid "Failed to store cover-file %(cover)s." -msgstr "" - -#: cps/editbooks.py:393 -msgid "Cover-file is not a valid image file" -msgstr "" - -#: cps/editbooks.py:399 cps/editbooks.py:413 +#: cps/editbooks.py:374 msgid "Cover is not a supported imageformat (jpg/png/webp), can't save" msgstr "" -#: cps/editbooks.py:445 cps/editbooks.py:454 +#: cps/editbooks.py:407 cps/editbooks.py:416 msgid "unknown" msgstr "невідомий" -#: cps/editbooks.py:486 +#: cps/editbooks.py:448 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/editbooks.py:534 +#: cps/editbooks.py:496 #, python-format msgid "%(langname)s is not a valid language" msgstr "" -#: cps/editbooks.py:565 +#: cps/editbooks.py:527 msgid "Metadata successfully updated" msgstr "" -#: cps/editbooks.py:574 +#: cps/editbooks.py:536 msgid "Error editing book, please check logfile for details" msgstr "Сталась помилка при редагуванні книги. Будь-ласка, перевірте лог-файл для деталей" -#: cps/editbooks.py:624 +#: cps/editbooks.py:586 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "" -#: cps/editbooks.py:629 +#: cps/editbooks.py:591 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "" -#: cps/editbooks.py:712 +#: cps/editbooks.py:674 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:741 +#: cps/editbooks.py:703 msgid "Source or destination format for conversion missing" msgstr "" -#: cps/editbooks.py:751 +#: cps/editbooks.py:711 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "" -#: cps/editbooks.py:755 +#: cps/editbooks.py:715 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "" -#: cps/gdrive.py:56 +#: cps/gdrive.py:61 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "" -#: cps/gdrive.py:101 +#: cps/gdrive.py:106 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "Домен зворотнього зв'язку не підтверджено. Виконайте дії для підтвердження домену, будь-ласка" -#: cps/helper.py:97 +#: cps/helper.py:94 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "" -#: cps/helper.py:109 +#: cps/helper.py:106 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "" -#: cps/helper.py:116 cps/helper.py:223 cps/templates/detail.html:41 +#: cps/helper.py:113 cps/helper.py:220 cps/templates/detail.html:41 #: cps/templates/detail.html:45 msgid "Send to Kindle" msgstr "Відправити на Kindle" -#: cps/helper.py:117 cps/helper.py:135 cps/helper.py:225 +#: cps/helper.py:114 cps/helper.py:132 cps/helper.py:222 msgid "This e-mail has been sent via Calibre-Web." msgstr "" -#: cps/helper.py:128 +#: cps/helper.py:125 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "" -#: cps/helper.py:133 +#: cps/helper.py:130 msgid "Calibre-Web test e-mail" msgstr "" -#: cps/helper.py:134 +#: cps/helper.py:131 msgid "Test e-mail" msgstr "" -#: cps/helper.py:150 +#: cps/helper.py:147 msgid "Get Started with Calibre-Web" msgstr "" -#: cps/helper.py:151 +#: cps/helper.py:148 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "" -#: cps/helper.py:165 cps/helper.py:167 cps/helper.py:169 cps/helper.py:177 -#: cps/helper.py:179 cps/helper.py:181 +#: cps/helper.py:162 cps/helper.py:164 cps/helper.py:166 cps/helper.py:174 +#: cps/helper.py:176 cps/helper.py:178 #, python-format msgid "Send %(format)s to Kindle" msgstr "" -#: cps/helper.py:185 +#: cps/helper.py:182 #, python-format msgid "Convert %(orig)s to %(format)s and send to Kindle" msgstr "" -#: cps/helper.py:224 +#: cps/helper.py:221 #, python-format msgid "E-mail: %(book)s" msgstr "" -#: cps/helper.py:227 +#: cps/helper.py:224 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "" -#: cps/helper.py:335 +#: cps/helper.py:331 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:345 +#: cps/helper.py:341 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:359 +#: cps/helper.py:355 #, python-format msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:385 cps/helper.py:395 cps/helper.py:403 +#: cps/helper.py:381 cps/helper.py:391 cps/helper.py:399 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "" -#: cps/helper.py:424 +#: cps/helper.py:420 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "" -#: cps/helper.py:584 +#: cps/helper.py:579 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:586 +#: cps/helper.py:581 msgid "Unrar binary file not found" msgstr "" -#: cps/helper.py:614 +#: cps/helper.py:609 msgid "Waiting" msgstr "" -#: cps/helper.py:616 +#: cps/helper.py:611 msgid "Failed" msgstr "" -#: cps/helper.py:618 +#: cps/helper.py:613 msgid "Started" msgstr "" -#: cps/helper.py:620 +#: cps/helper.py:615 msgid "Finished" msgstr "" -#: cps/helper.py:622 +#: cps/helper.py:617 msgid "Unknown Status" msgstr "" -#: cps/helper.py:627 +#: cps/helper.py:622 msgid "E-mail: " msgstr "" -#: cps/helper.py:629 cps/helper.py:633 +#: cps/helper.py:624 cps/helper.py:628 msgid "Convert: " msgstr "" -#: cps/helper.py:631 +#: cps/helper.py:626 msgid "Upload: " msgstr "" -#: cps/helper.py:635 +#: cps/helper.py:630 msgid "Unknown Task: " msgstr "" -#: cps/oauth_bb.py:87 +#: cps/oauth_bb.py:91 #, python-format -msgid "Register with %s, " +msgid "Register with %(provider)s" msgstr "" -#: cps/oauth_bb.py:145 +#: cps/oauth_bb.py:149 msgid "Failed to log in with GitHub." msgstr "" -#: cps/oauth_bb.py:150 +#: cps/oauth_bb.py:154 msgid "Failed to fetch user info from GitHub." msgstr "" -#: cps/oauth_bb.py:161 +#: cps/oauth_bb.py:165 msgid "Failed to log in with Google." msgstr "" -#: cps/oauth_bb.py:166 +#: cps/oauth_bb.py:170 msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:265 +#: cps/oauth_bb.py:269 #, python-format msgid "Unlink to %(oauth)s success." msgstr "" -#: cps/oauth_bb.py:269 +#: cps/oauth_bb.py:273 #, python-format msgid "Unlink to %(oauth)s failed." msgstr "" -#: cps/oauth_bb.py:272 +#: cps/oauth_bb.py:276 #, python-format msgid "Not linked to %(oauth)s." msgstr "" -#: cps/oauth_bb.py:300 +#: cps/oauth_bb.py:304 msgid "GitHub Oauth error, please retry later." msgstr "" -#: cps/oauth_bb.py:319 +#: cps/oauth_bb.py:323 msgid "Google Oauth error, please retry later." msgstr "" -#: cps/shelf.py:40 cps/shelf.py:92 +#: cps/shelf.py:46 cps/shelf.py:98 msgid "Invalid shelf specified" msgstr "" -#: cps/shelf.py:47 +#: cps/shelf.py:53 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" msgstr "" -#: cps/shelf.py:55 +#: cps/shelf.py:61 msgid "You are not allowed to edit public shelves" msgstr "" -#: cps/shelf.py:64 +#: cps/shelf.py:70 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" msgstr "" -#: cps/shelf.py:78 +#: cps/shelf.py:84 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Книга додана на книжкову полицю: %(sname)s" -#: cps/shelf.py:97 +#: cps/shelf.py:103 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "" -#: cps/shelf.py:102 +#: cps/shelf.py:108 msgid "User is not allowed to edit public shelves" msgstr "" -#: cps/shelf.py:120 +#: cps/shelf.py:126 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "" -#: cps/shelf.py:134 +#: cps/shelf.py:140 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "" -#: cps/shelf.py:136 +#: cps/shelf.py:142 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "" -#: cps/shelf.py:173 +#: cps/shelf.py:179 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Книга видалена з книжкової полиці: %(sname)s" -#: cps/shelf.py:179 +#: cps/shelf.py:185 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Вибачте, але у вас немає дозволу для видалення книги з цієї полиці" -#: cps/shelf.py:200 cps/shelf.py:224 +#: cps/shelf.py:206 cps/shelf.py:230 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Книжкова полиця з назвою '%(title)s' уже существует." -#: cps/shelf.py:205 +#: cps/shelf.py:211 #, python-format msgid "Shelf %(title)s created" msgstr "Створена книжкова полиця %(title)s" -#: cps/shelf.py:207 cps/shelf.py:235 +#: cps/shelf.py:213 cps/shelf.py:241 msgid "There was an error" msgstr "Сталась помилка" -#: cps/shelf.py:208 cps/shelf.py:210 +#: cps/shelf.py:214 cps/shelf.py:216 msgid "create a shelf" msgstr "створити книжкову полицю" -#: cps/shelf.py:233 +#: cps/shelf.py:239 #, python-format msgid "Shelf %(title)s changed" msgstr "Книжкова полиця %(title)s змінена" -#: cps/shelf.py:236 cps/shelf.py:238 +#: cps/shelf.py:242 cps/shelf.py:244 msgid "Edit a shelf" msgstr "Змінити книжкову полицю" -#: cps/shelf.py:259 -#, python-format -msgid "successfully deleted shelf %(name)s" -msgstr "Книжкова полиця %(name)s видалена" - -#: cps/shelf.py:289 +#: cps/shelf.py:295 #, python-format msgid "Shelf: '%(name)s'" msgstr "Книжкова полиця: '%(name)s'" -#: cps/shelf.py:292 +#: cps/shelf.py:298 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Помилка при відкриванні полиці. Полиця не існує або до неї відсутній доступ" -#: cps/shelf.py:324 +#: cps/shelf.py:330 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Змінити розташування книжкової полиці '%(name)s'" -#: cps/ub.py:111 +#: cps/ub.py:68 msgid "Recently Added" msgstr "Останні додані" -#: cps/ub.py:113 +#: cps/ub.py:70 msgid "Show recent books" msgstr "Показувати останні книги" -#: cps/templates/index.xml:17 cps/ub.py:114 +#: cps/templates/index.xml:17 cps/ub.py:71 msgid "Hot Books" msgstr "Популярні книги" -#: cps/ub.py:115 +#: cps/ub.py:72 msgid "Show hot books" msgstr "Показувати популярні книги" -#: cps/templates/index.xml:24 cps/ub.py:118 +#: cps/templates/index.xml:24 cps/ub.py:75 msgid "Best rated Books" msgstr "Книги з найкращим рейтингом" -#: cps/ub.py:120 +#: cps/ub.py:77 msgid "Show best rated books" msgstr "Показувати книги з найвищим рейтингом" -#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:121 -#: cps/web.py:965 +#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:78 +#: cps/web.py:958 msgid "Read Books" msgstr "Прочитані книги" -#: cps/ub.py:123 +#: cps/ub.py:80 msgid "Show read and unread" msgstr "Показувати прочитані та непрочитані книги" -#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:125 -#: cps/web.py:969 +#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:82 +#: cps/web.py:962 msgid "Unread Books" msgstr "Непрочитані книги" -#: cps/ub.py:127 +#: cps/ub.py:84 msgid "Show unread" msgstr "" -#: cps/ub.py:128 +#: cps/ub.py:85 msgid "Discover" msgstr "Огляд" -#: cps/ub.py:130 +#: cps/ub.py:87 msgid "Show random books" msgstr "Показувати випадкові книги" -#: cps/ub.py:131 +#: cps/ub.py:88 msgid "Categories" msgstr "Категорії" -#: cps/ub.py:133 +#: cps/ub.py:90 msgid "Show category selection" msgstr "Показувати вибір категорії" #: cps/templates/book_edit.html:71 cps/templates/search_form.html:53 -#: cps/ub.py:134 +#: cps/ub.py:91 msgid "Series" msgstr "Серії" -#: cps/ub.py:136 +#: cps/ub.py:93 msgid "Show series selection" msgstr "Показувати вибір серії" -#: cps/templates/index.xml:61 cps/ub.py:137 +#: cps/templates/index.xml:61 cps/ub.py:94 msgid "Authors" msgstr "Автори" -#: cps/ub.py:139 +#: cps/ub.py:96 msgid "Show author selection" msgstr "Показувати вибір автора" -#: cps/templates/index.xml:68 cps/ub.py:141 +#: cps/templates/index.xml:68 cps/ub.py:98 msgid "Publishers" msgstr "" -#: cps/ub.py:143 +#: cps/ub.py:100 msgid "Show publisher selection" msgstr "" -#: cps/templates/search_form.html:74 cps/ub.py:144 +#: cps/templates/search_form.html:74 cps/ub.py:101 msgid "Languages" msgstr "Мови" -#: cps/ub.py:147 +#: cps/ub.py:104 msgid "Show language selection" msgstr "Показувати вибір мови" -#: cps/ub.py:148 +#: cps/ub.py:105 msgid "Ratings" msgstr "" -#: cps/ub.py:150 +#: cps/ub.py:107 msgid "Show ratings selection" msgstr "" -#: cps/ub.py:151 +#: cps/ub.py:108 msgid "File formats" msgstr "" -#: cps/ub.py:153 +#: cps/ub.py:110 msgid "Show file formats selection" msgstr "" -#: cps/updater.py:257 cps/updater.py:364 cps/updater.py:377 +#: cps/updater.py:253 cps/updater.py:360 cps/updater.py:373 msgid "Unexpected data while reading update information" msgstr "" -#: cps/updater.py:264 cps/updater.py:370 +#: cps/updater.py:260 cps/updater.py:366 msgid "No update available. You already have the latest version installed" msgstr "" -#: cps/updater.py:290 cps/updater.py:422 +#: cps/updater.py:286 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "" -#: cps/updater.py:343 +#: cps/updater.py:339 msgid "Could not fetch update information" msgstr "" -#: cps/updater.py:357 +#: cps/updater.py:353 msgid "No release information available" msgstr "" -#: cps/updater.py:403 cps/updater.py:412 +#: cps/updater.py:406 cps/updater.py:415 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "" -#: cps/web.py:457 +#: cps/updater.py:425 +msgid "Click on the button below to update to the latest stable version." +msgstr "" + +#: cps/web.py:445 msgid "Recently Added Books" msgstr "Нещодавно додані книги" -#: cps/web.py:484 +#: cps/web.py:473 msgid "Best rated books" msgstr "Книги з найкращим рейтингом" -#: cps/templates/index.xml:38 cps/web.py:492 +#: cps/templates/index.xml:38 cps/web.py:481 msgid "Random Books" msgstr "Випадковий список книг" -#: cps/web.py:516 +#: cps/web.py:505 msgid "Books" msgstr "" -#: cps/web.py:543 +#: cps/web.py:532 msgid "Hot Books (most downloaded)" msgstr "Популярні книги (найбільш завантажувані)" -#: cps/web.py:553 cps/web.py:1294 cps/web.py:1383 +#: cps/web.py:542 cps/web.py:1298 cps/web.py:1386 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "Неможливо відкрити книгу. Файл не існує або немає доступу." -#: cps/web.py:580 +#: cps/web.py:559 +#, python-format +msgid "Author: %(name)s" +msgstr "" + +#: cps/web.py:571 #, python-format msgid "Publisher: %(name)s" msgstr "" -#: cps/web.py:591 +#: cps/web.py:582 #, python-format msgid "Series: %(serie)s" msgstr "Серії: %(serie)s" -#: cps/web.py:602 +#: cps/web.py:593 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:613 +#: cps/web.py:604 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:625 +#: cps/web.py:616 #, python-format msgid "Category: %(name)s" msgstr "Категорія: %(name)s" -#: cps/web.py:659 +#: cps/web.py:650 msgid "Publisher list" msgstr "" -#: cps/templates/index.xml:82 cps/web.py:675 +#: cps/templates/index.xml:82 cps/web.py:666 msgid "Series list" msgstr "Список серій" -#: cps/web.py:689 +#: cps/web.py:680 msgid "Ratings list" msgstr "" -#: cps/web.py:702 +#: cps/web.py:693 msgid "File formats list" msgstr "" -#: cps/web.py:730 +#: cps/web.py:721 msgid "Available languages" msgstr "Доступні мови" -#: cps/web.py:750 +#: cps/web.py:741 #, python-format msgid "Language: %(name)s" msgstr "Мова: %(name)s" -#: cps/templates/index.xml:75 cps/web.py:764 +#: cps/templates/index.xml:75 cps/web.py:755 msgid "Category list" msgstr "Список категорій" -#: cps/templates/layout.html:73 cps/web.py:777 +#: cps/templates/layout.html:73 cps/web.py:769 msgid "Tasks" msgstr "" -#: cps/web.py:841 +#: cps/web.py:834 msgid "Published after " msgstr "" -#: cps/web.py:848 +#: cps/web.py:841 msgid "Published before " msgstr "Опубліковано до" -#: cps/web.py:862 +#: cps/web.py:855 #, python-format msgid "Rating <= %(rating)s" msgstr "" -#: cps/web.py:864 +#: cps/web.py:857 #, python-format msgid "Rating >= %(rating)s" msgstr "" -#: cps/web.py:924 cps/web.py:933 +#: cps/web.py:917 cps/web.py:926 msgid "search" msgstr "пошук" -#: cps/web.py:1018 +#: cps/web.py:1012 msgid "Please configure the SMTP mail settings first..." msgstr "Будь-ласка, спочатку сконфігуруйте параметри SMTP" -#: cps/web.py:1023 +#: cps/web.py:1017 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "" -#: cps/web.py:1027 +#: cps/web.py:1021 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Помилка при відправці книги: %(res)s" -#: cps/web.py:1046 cps/web.py:1071 cps/web.py:1076 cps/web.py:1081 -#: cps/web.py:1085 +#: cps/web.py:1041 cps/web.py:1066 cps/web.py:1070 cps/web.py:1075 +#: cps/web.py:1079 msgid "register" msgstr "зареєструватись" -#: cps/web.py:1073 +#: cps/web.py:1068 msgid "Your e-mail is not allowed to register" msgstr "" -#: cps/web.py:1077 +#: cps/web.py:1071 msgid "Confirmation e-mail was send to your e-mail account." msgstr "" -#: cps/web.py:1080 +#: cps/web.py:1074 msgid "This username or e-mail address is already in use." msgstr "" -#: cps/web.py:1103 cps/web.py:1115 -#, python-format -msgid "You are now logged in as: '%(nickname)s'" +#: cps/web.py:1089 +msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1108 cps/web.py:1120 +#: cps/web.py:1098 cps/web.py:1212 +#, python-format +msgid "you are now logged in as: '%(nickname)s'" +msgstr "Ви увійшли як користувач: '%(nickname)s'" + +#: cps/web.py:1105 cps/web.py:1122 msgid "Wrong Username or Password" msgstr "Помилка в імені користувача або паролі" -#: cps/web.py:1111 +#: cps/web.py:1108 msgid "Could not login. LDAP server down, please contact your administrator" msgstr "" -#: cps/web.py:1124 cps/web.py:1146 +#: cps/web.py:1117 +#, python-format +msgid "You are now logged in as: '%(nickname)s'" +msgstr "" + +#: cps/web.py:1126 cps/web.py:1148 msgid "login" msgstr "увійти" -#: cps/web.py:1158 cps/web.py:1189 +#: cps/web.py:1160 cps/web.py:1191 msgid "Token not found" msgstr "Токен не знайдено" -#: cps/web.py:1166 cps/web.py:1197 +#: cps/web.py:1168 cps/web.py:1199 msgid "Token has expired" msgstr "Час дії токено вичерпано" -#: cps/web.py:1174 +#: cps/web.py:1176 msgid "Success! Please return to your device" msgstr "Вдалося! Будь-ласка, поверніться до вашого пристрою" -#: cps/web.py:1210 -#, python-format -msgid "you are now logged in as: '%(nickname)s'" -msgstr "Ви увійшли як користувач: '%(nickname)s'" - -#: cps/web.py:1250 cps/web.py:1277 cps/web.py:1281 +#: cps/web.py:1253 cps/web.py:1280 cps/web.py:1284 #, python-format msgid "%(name)s's profile" msgstr "Профіль %(name)s" -#: cps/web.py:1274 +#: cps/web.py:1277 msgid "Found an existing account for this e-mail address." msgstr "" -#: cps/web.py:1279 +#: cps/web.py:1282 msgid "Profile updated" msgstr "Профіль оновлено" -#: cps/web.py:1304 cps/web.py:1306 cps/web.py:1308 cps/web.py:1314 -#: cps/web.py:1318 +#: cps/web.py:1308 cps/web.py:1310 cps/web.py:1312 cps/web.py:1318 +#: cps/web.py:1322 msgid "Read a Book" msgstr "Читати книгу" -#: cps/web.py:1328 +#: cps/web.py:1332 msgid "Error opening eBook. File does not exist or file is not accessible." msgstr "" -#: cps/worker.py:308 +#: cps/worker.py:311 #, python-format msgid "Ebook-converter failed: %(error)s" msgstr "" -#: cps/worker.py:319 +#: cps/worker.py:322 #, python-format msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "Kindlegen відхилено з помилкою %(error)s. Повідомлення: %(message)s " @@ -1055,53 +1065,57 @@ msgid "Administration" msgstr "Адміністрування" #: cps/templates/admin.html:109 +msgid "View Logfiles" +msgstr "" + +#: cps/templates/admin.html:110 msgid "Reconnect to Calibre DB" msgstr "Повторне підключення до БД Calibre" -#: cps/templates/admin.html:110 +#: cps/templates/admin.html:111 msgid "Restart Calibre-Web" msgstr "" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:112 msgid "Stop Calibre-Web" msgstr "" -#: cps/templates/admin.html:117 +#: cps/templates/admin.html:118 msgid "Update" msgstr "" -#: cps/templates/admin.html:121 +#: cps/templates/admin.html:122 msgid "Version" msgstr "" -#: cps/templates/admin.html:122 +#: cps/templates/admin.html:123 msgid "Details" msgstr "" -#: cps/templates/admin.html:128 +#: cps/templates/admin.html:129 msgid "Current version" msgstr "" -#: cps/templates/admin.html:134 +#: cps/templates/admin.html:135 msgid "Check for update" msgstr "Перевірка оновлень" -#: cps/templates/admin.html:135 +#: cps/templates/admin.html:136 msgid "Perform Update" msgstr "Встановити оновлення" -#: cps/templates/admin.html:147 +#: cps/templates/admin.html:148 msgid "Do you really want to restart Calibre-Web?" msgstr "" -#: cps/templates/admin.html:152 cps/templates/admin.html:166 -#: cps/templates/admin.html:186 cps/templates/shelf.html:72 +#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:187 cps/templates/shelf.html:72 msgid "Ok" msgstr "Ok" -#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:154 cps/templates/admin.html:168 #: cps/templates/book_edit.html:174 cps/templates/book_edit.html:196 -#: cps/templates/config_edit.html:281 cps/templates/config_view_edit.html:147 +#: cps/templates/config_edit.html:331 cps/templates/config_view_edit.html:147 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 @@ -1109,11 +1123,11 @@ msgstr "Ok" msgid "Back" msgstr "Назад" -#: cps/templates/admin.html:165 +#: cps/templates/admin.html:166 msgid "Do you really want to stop Calibre-Web?" msgstr "" -#: cps/templates/admin.html:177 +#: cps/templates/admin.html:178 msgid "Updating, please do not reload page" msgstr "Встановлення оновлень, будь-ласка, не оновлюйте сторінку" @@ -1242,7 +1256,7 @@ msgstr "переглянути книгу після редагування" msgid "Get metadata" msgstr "Отримати метадані" -#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:279 +#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329 #: cps/templates/config_view_edit.html:146 cps/templates/login.html:20 #: cps/templates/search_form.html:150 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:130 @@ -1386,123 +1400,171 @@ msgstr "Рівень логовання" msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "Розташування і назва логфайлу (calibre-web.log for no entry)" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:134 +msgid "Enable Access Log" +msgstr "" + +#: cps/templates/config_edit.html:137 +msgid "Location and name of access logfile (access.log for no entry)" +msgstr "" + +#: cps/templates/config_edit.html:148 msgid "Feature Configuration" msgstr "Особливі налаштування" -#: cps/templates/config_edit.html:148 +#: cps/templates/config_edit.html:156 msgid "Enable uploading" msgstr "Дозволити завантаження книг на сервер" -#: cps/templates/config_edit.html:152 +#: cps/templates/config_edit.html:160 msgid "Enable anonymous browsing" msgstr "Дозволити анонімний перегляд" -#: cps/templates/config_edit.html:156 +#: cps/templates/config_edit.html:164 msgid "Enable public registration" msgstr "Дозволити публічну реєстрацію" -#: cps/templates/config_edit.html:160 +#: cps/templates/config_edit.html:168 msgid "Enable remote login (\"magic link\")" msgstr "Включити віддалений логін (\"magic link\")" -#: cps/templates/config_edit.html:165 +#: cps/templates/config_edit.html:173 msgid "Use" msgstr "Використовувати" -#: cps/templates/config_edit.html:166 +#: cps/templates/config_edit.html:174 msgid "Obtain an API Key" msgstr "Отримати ключ API" -#: cps/templates/config_edit.html:170 +#: cps/templates/config_edit.html:178 msgid "Goodreads API Key" msgstr "" -#: cps/templates/config_edit.html:174 +#: cps/templates/config_edit.html:182 msgid "Goodreads API Secret" msgstr "" -#: cps/templates/config_edit.html:181 +#: cps/templates/config_edit.html:189 msgid "Login type" msgstr "" -#: cps/templates/config_edit.html:183 +#: cps/templates/config_edit.html:191 msgid "Use standard Authentication" msgstr "" -#: cps/templates/config_edit.html:185 +#: cps/templates/config_edit.html:193 msgid "Use LDAP Authentication" msgstr "" -#: cps/templates/config_edit.html:188 +#: cps/templates/config_edit.html:196 msgid "Use GitHub OAuth" msgstr "" -#: cps/templates/config_edit.html:189 +#: cps/templates/config_edit.html:197 msgid "Use Google OAuth" msgstr "" -#: cps/templates/config_edit.html:196 -msgid "LDAP Provider URL" +#: cps/templates/config_edit.html:204 +msgid "LDAP Server Host Name or IP Address" +msgstr "" + +#: cps/templates/config_edit.html:208 +msgid "LDAP Server Port" +msgstr "" + +#: cps/templates/config_edit.html:212 +msgid "LDAP schema (ldap or ldaps)" +msgstr "" + +#: cps/templates/config_edit.html:216 +msgid "LDAP Admin username" +msgstr "" + +#: cps/templates/config_edit.html:220 +msgid "LDAP Admin password" msgstr "" -#: cps/templates/config_edit.html:200 +#: cps/templates/config_edit.html:225 +msgid "LDAP Server use SSL" +msgstr "" + +#: cps/templates/config_edit.html:229 +msgid "LDAP Server use TLS" +msgstr "" + +#: cps/templates/config_edit.html:233 +msgid "LDAP Server Certificate" +msgstr "" + +#: cps/templates/config_edit.html:237 +msgid "LDAP SSL Certificate Path" +msgstr "" + +#: cps/templates/config_edit.html:242 msgid "LDAP Distinguished Name (DN)" msgstr "" -#: cps/templates/config_edit.html:208 +#: cps/templates/config_edit.html:246 +msgid "LDAP User object filter" +msgstr "" + +#: cps/templates/config_edit.html:251 +msgid "LDAP Server is OpenLDAP?" +msgstr "" + +#: cps/templates/config_edit.html:258 msgid "Obtain GitHub OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:211 +#: cps/templates/config_edit.html:261 msgid "GitHub OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:215 +#: cps/templates/config_edit.html:265 msgid "GitHub OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:221 +#: cps/templates/config_edit.html:271 msgid "Obtain Google OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:224 +#: cps/templates/config_edit.html:274 msgid "Google OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:228 +#: cps/templates/config_edit.html:278 msgid "Google OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:242 +#: cps/templates/config_edit.html:292 msgid "External binaries" msgstr "" -#: cps/templates/config_edit.html:250 +#: cps/templates/config_edit.html:300 msgid "No converter" msgstr "" -#: cps/templates/config_edit.html:252 +#: cps/templates/config_edit.html:302 msgid "Use Kindlegen" msgstr "" -#: cps/templates/config_edit.html:254 +#: cps/templates/config_edit.html:304 msgid "Use calibre's ebook converter" msgstr "" -#: cps/templates/config_edit.html:258 +#: cps/templates/config_edit.html:308 msgid "E-Book converter settings" msgstr "" -#: cps/templates/config_edit.html:262 +#: cps/templates/config_edit.html:312 msgid "Path to convertertool" msgstr "" -#: cps/templates/config_edit.html:268 +#: cps/templates/config_edit.html:318 msgid "Location of Unrar binary" msgstr "" -#: cps/templates/config_edit.html:284 cps/templates/layout.html:84 +#: cps/templates/config_edit.html:334 cps/templates/layout.html:84 #: cps/templates/login.html:4 msgid "Login" msgstr "Ім'я користувача" @@ -1716,7 +1778,7 @@ msgstr "" msgid "Discover (Random Books)" msgstr "Огляд (випадкові книги)" -#: cps/templates/index.html:65 +#: cps/templates/index.html:64 msgid "Group by series" msgstr "" @@ -1859,6 +1921,14 @@ msgstr "Запам'ятати мене" msgid "Log in with magic link" msgstr "Увійдіть в систему за допомогою magic link" +#: cps/templates/logviewer.html:5 +msgid "Show Calibre-Web log" +msgstr "" + +#: cps/templates/logviewer.html:8 +msgid "Show access log" +msgstr "" + #: cps/templates/osd.xml:5 msgid "Calibre-Web ebook catalog" msgstr "" @@ -2387,3 +2457,15 @@ msgstr "Нещодавно переглянуті" #~ msgid "PDF.js viewer" #~ msgstr "Переглядач PDF.js" +#~ msgid "Please enter a LDAP provider and a DN" +#~ msgstr "" + +#~ msgid "successfully deleted shelf %(name)s" +#~ msgstr "Книжкова полиця %(name)s видалена" + +#~ msgid "LDAP Provider URL" +#~ msgstr "" + +#~ msgid "Register with %s, " +#~ msgstr "" + diff --git a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.mo b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.mo index 8fa2c6a4..7865836b 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 22fa2ef0..bba3e543 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: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2019-05-31 11:20+0200\n" +"POT-Creation-Date: 2019-06-22 19:54+0200\n" "PO-Revision-Date: 2017-01-06 17:00+0000\n" "Last-Translator: dalin \n" "Language: zh_Hans_CN\n" @@ -16,13 +16,13 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" -#: cps/about.py:76 +#: cps/about.py:78 msgid "Statistics" msgstr "统计" -#: cps/admin.py:97 +#: cps/admin.py:98 msgid "Server restarted, please reload page" msgstr "服务器已重启,请刷新页面" @@ -30,186 +30,202 @@ msgstr "服务器已重启,请刷新页面" msgid "Performing shutdown of server, please close window" msgstr "正在关闭服务器,请关闭窗口" -#: cps/admin.py:120 cps/updater.py:445 +#: cps/admin.py:119 cps/updater.py:448 msgid "Unknown" msgstr "未知" -#: cps/admin.py:139 +#: cps/admin.py:138 msgid "Admin page" msgstr "管理页" -#: cps/admin.py:208 cps/admin.py:486 +#: cps/admin.py:207 cps/admin.py:532 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web配置已更新" -#: cps/admin.py:222 cps/templates/admin.html:102 +#: cps/admin.py:220 cps/templates/admin.html:102 msgid "UI Configuration" msgstr "UI配置" -#: cps/admin.py:295 +#: cps/admin.py:293 msgid "Import of optional Google Drive requirements missing" msgstr "可选的Google Drive依赖导入缺失" -#: cps/admin.py:298 +#: cps/admin.py:296 msgid "client_secrets.json is missing or not readable" msgstr "client_secrets.json文件缺失或不可读" -#: cps/admin.py:303 cps/admin.py:332 +#: cps/admin.py:301 cps/admin.py:330 msgid "client_secrets.json is not configured for web application" msgstr "没有为web应用配置client_secrets.json" -#: cps/admin.py:335 cps/admin.py:361 cps/admin.py:373 cps/admin.py:398 -#: cps/admin.py:426 cps/admin.py:440 cps/admin.py:463 cps/admin.py:476 -#: cps/admin.py:494 cps/admin.py:501 cps/admin.py:516 -#: cps/templates/admin.html:101 +#: cps/admin.py:333 cps/admin.py:359 cps/admin.py:371 cps/admin.py:396 +#: cps/admin.py:403 cps/admin.py:436 cps/admin.py:460 cps/admin.py:474 +#: cps/admin.py:493 cps/admin.py:510 cps/admin.py:522 cps/admin.py:538 +#: cps/admin.py:545 cps/admin.py:559 cps/templates/admin.html:101 msgid "Basic Configuration" msgstr "基本配置" -#: cps/admin.py:358 +#: cps/admin.py:356 msgid "Keyfile location is not valid, please enter correct path" msgstr "key文件位置无效,请输入正确路径" -#: cps/admin.py:370 +#: cps/admin.py:368 cps/admin.py:433 msgid "Certfile location is not valid, please enter correct path" msgstr "证书文件位置无效,请输入正确路径" -#: cps/admin.py:395 -msgid "Please enter a LDAP provider and a DN" +#: cps/admin.py:393 +msgid "Please enter a LDAP provider, port, DN and user object identifier" msgstr "" -#: cps/admin.py:423 +#: cps/admin.py:400 +msgid "Please enter a LDAP service account and password" +msgstr "" + +#: cps/admin.py:457 msgid "Please enter Github oauth credentials" msgstr "" -#: cps/admin.py:437 +#: cps/admin.py:471 msgid "Please enter Google oauth credentials" msgstr "" -#: cps/admin.py:460 +#: cps/admin.py:490 msgid "Logfile location is not valid, please enter correct path" msgstr "日志文件位置无效,请输入正确路径" -#: cps/admin.py:498 +#: cps/admin.py:507 +msgid "Access Logfile location is not valid, please enter correct path" +msgstr "" + +#: cps/admin.py:542 msgid "DB location is not valid, please enter correct path" msgstr "DB位置无效,请输入正确路径" -#: cps/admin.py:558 cps/web.py:1045 +#: cps/admin.py:602 cps/web.py:1040 msgid "Please fill out all fields!" msgstr "请填写所有字段" -#: cps/admin.py:560 cps/admin.py:566 cps/admin.py:582 +#: cps/admin.py:604 cps/admin.py:610 cps/admin.py:626 #: cps/templates/admin.html:35 msgid "Add new user" msgstr "添加新用户" -#: cps/admin.py:564 cps/web.py:1248 +#: cps/admin.py:608 cps/web.py:1251 msgid "E-mail is not from valid domain" msgstr "邮箱不在有效域中'" -#: cps/admin.py:572 +#: cps/admin.py:616 #, python-format msgid "User '%(user)s' created" msgstr "用户 '%(user)s' 已被创建" -#: cps/admin.py:576 +#: cps/admin.py:620 msgid "Found an existing account for this e-mail address or nickname." msgstr "此邮箱或昵称的账号已经存在。" -#: cps/admin.py:607 +#: cps/admin.py:651 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "测试邮件已经被成功发到 %(kindlemail)s" -#: cps/admin.py:610 +#: cps/admin.py:654 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "发送测试邮件出错了: %(res)s" -#: cps/admin.py:612 cps/web.py:1029 +#: cps/admin.py:656 cps/web.py:1023 msgid "Please configure your kindle e-mail address first..." msgstr "请先配置您的kindle邮箱..." -#: cps/admin.py:614 +#: cps/admin.py:658 msgid "E-mail server settings updated" msgstr "已更新邮件服务器设置" -#: cps/admin.py:615 +#: cps/admin.py:659 msgid "Edit e-mail server settings" msgstr "编辑邮箱服务器设置" -#: cps/admin.py:640 +#: cps/admin.py:687 #, python-format msgid "User '%(nick)s' deleted" msgstr "用户 '%(nick)s' 已被删除" -#: cps/admin.py:711 +#: cps/admin.py:690 +msgid "No admin user remaining, can't delete user" +msgstr "" + +#: cps/admin.py:761 #, python-format msgid "User '%(nick)s' updated" msgstr "用户 '%(nick)s' 已被更新" -#: cps/admin.py:714 +#: cps/admin.py:764 msgid "An unknown error occured." msgstr "发生未知错误。" -#: cps/admin.py:717 +#: cps/admin.py:767 #, python-format msgid "Edit User %(nick)s" msgstr "编辑用户 %(nick)s" -#: cps/admin.py:733 +#: cps/admin.py:783 #, python-format msgid "Password for user %(user)s reset" msgstr "用户 %(user)s 的密码已重置" -#: cps/admin.py:736 cps/web.py:1070 +#: cps/admin.py:786 cps/web.py:1065 msgid "An unknown error occurred. Please try again later." msgstr "发生一个未知错误,请稍后再试。" -#: cps/admin.py:755 +#: cps/admin.py:797 +msgid "Logfile viewer" +msgstr "" + +#: cps/admin.py:832 msgid "Requesting update package" msgstr "正在请求更新包" -#: cps/admin.py:756 +#: cps/admin.py:833 msgid "Downloading update package" msgstr "正在下载更新包" -#: cps/admin.py:757 +#: cps/admin.py:834 msgid "Unzipping update package" msgstr "正在解压更新包" -#: cps/admin.py:758 +#: cps/admin.py:835 msgid "Replacing files" msgstr "正在替换文件" -#: cps/admin.py:759 +#: cps/admin.py:836 msgid "Database connections are closed" msgstr "数据库连接已关闭" -#: cps/admin.py:760 +#: cps/admin.py:837 msgid "Stopping server" msgstr "正在停止服务器" -#: cps/admin.py:761 +#: cps/admin.py:838 msgid "Update finished, please press okay and reload page" msgstr "更新完成,请按确定并刷新页面" -#: cps/admin.py:762 cps/admin.py:763 cps/admin.py:764 cps/admin.py:765 +#: cps/admin.py:839 cps/admin.py:840 cps/admin.py:841 cps/admin.py:842 msgid "Update failed:" msgstr "更新失败:" -#: cps/admin.py:762 cps/updater.py:277 cps/updater.py:456 cps/updater.py:458 +#: cps/admin.py:839 cps/updater.py:273 cps/updater.py:459 cps/updater.py:461 msgid "HTTP Error" msgstr "HTTP错误" -#: cps/admin.py:763 cps/updater.py:279 cps/updater.py:460 +#: cps/admin.py:840 cps/updater.py:275 cps/updater.py:463 msgid "Connection error" msgstr "连接错误" -#: cps/admin.py:764 cps/updater.py:281 cps/updater.py:462 +#: cps/admin.py:841 cps/updater.py:277 cps/updater.py:465 msgid "Timeout while establishing connection" msgstr "建立连接超时" -#: cps/admin.py:765 cps/updater.py:283 cps/updater.py:464 +#: cps/admin.py:842 cps/updater.py:279 cps/updater.py:467 msgid "General error" msgstr "一般错误" @@ -227,720 +243,714 @@ msgstr "可执行权限缺失" msgid "not configured" msgstr "未配置" -#: cps/editbooks.py:218 cps/editbooks.py:432 +#: cps/editbooks.py:215 cps/editbooks.py:394 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "打开电子书出错。文件不存在或不可访问" -#: cps/editbooks.py:246 +#: cps/editbooks.py:243 msgid "edit metadata" msgstr "编辑元数据" -#: cps/editbooks.py:325 cps/editbooks.py:595 +#: cps/editbooks.py:322 cps/editbooks.py:557 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "不能上传后缀为 '%(ext)s' 的文件到此服务器" -#: cps/editbooks.py:329 cps/editbooks.py:599 +#: cps/editbooks.py:326 cps/editbooks.py:561 msgid "File to be uploaded must have an extension" msgstr "要上传的文件必须有一个后缀" -#: cps/editbooks.py:341 cps/editbooks.py:619 +#: cps/editbooks.py:338 cps/editbooks.py:581 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "创建路径 %(path)s 失败(权限拒绝)。" -#: cps/editbooks.py:346 +#: cps/editbooks.py:343 #, python-format msgid "Failed to store file %(file)s." msgstr "保存文件 %(file)s 失败。" -#: cps/editbooks.py:363 +#: cps/editbooks.py:360 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "已添加 %(ext)s 格式到 %(book)s" -#: cps/editbooks.py:382 -#, python-format -msgid "Failed to create path for cover %(path)s (Permission denied)." -msgstr "" - -#: cps/editbooks.py:390 -#, python-format -msgid "Failed to store cover-file %(cover)s." -msgstr "" - -#: cps/editbooks.py:393 -msgid "Cover-file is not a valid image file" -msgstr "" - -#: cps/editbooks.py:399 cps/editbooks.py:413 +#: cps/editbooks.py:374 msgid "Cover is not a supported imageformat (jpg/png/webp), can't save" msgstr "" -#: cps/editbooks.py:445 cps/editbooks.py:454 +#: cps/editbooks.py:407 cps/editbooks.py:416 msgid "unknown" msgstr "未知" -#: cps/editbooks.py:486 +#: cps/editbooks.py:448 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/editbooks.py:534 +#: cps/editbooks.py:496 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s 不是一种有效语言" -#: cps/editbooks.py:565 +#: cps/editbooks.py:527 msgid "Metadata successfully updated" msgstr "已成功更新元数据" -#: cps/editbooks.py:574 +#: cps/editbooks.py:536 msgid "Error editing book, please check logfile for details" msgstr "编辑书籍出错,详情请检查日志文件" -#: cps/editbooks.py:624 +#: cps/editbooks.py:586 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "存储文件 %(file)s 失败(权限拒绝)。" -#: cps/editbooks.py:629 +#: cps/editbooks.py:591 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "删除文件 %(file)s 失败(权限拒绝)。" -#: cps/editbooks.py:712 +#: cps/editbooks.py:674 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:741 +#: cps/editbooks.py:703 msgid "Source or destination format for conversion missing" msgstr "转换的源或目的格式缺失" -#: cps/editbooks.py:751 +#: cps/editbooks.py:711 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "书籍已经被成功加入 %(book_format)s 的转换队列" -#: cps/editbooks.py:755 +#: cps/editbooks.py:715 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "转换此书时出现错误: %(res)s" -#: cps/gdrive.py:56 +#: cps/gdrive.py:61 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "" -#: cps/gdrive.py:101 +#: cps/gdrive.py:106 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "回调域名尚未被校验,请在google开发者控制台按步骤校验域名" -#: cps/helper.py:97 +#: cps/helper.py:94 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "找不到id为 %(book)d 的书的 %(format)s 格式" -#: cps/helper.py:109 +#: cps/helper.py:106 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "Google Drive %(fn)s 上找不到 %(format)s" -#: cps/helper.py:116 cps/helper.py:223 cps/templates/detail.html:41 +#: cps/helper.py:113 cps/helper.py:220 cps/templates/detail.html:41 #: cps/templates/detail.html:45 msgid "Send to Kindle" msgstr "发送到Kindle" -#: cps/helper.py:117 cps/helper.py:135 cps/helper.py:225 +#: cps/helper.py:114 cps/helper.py:132 cps/helper.py:222 msgid "This e-mail has been sent via Calibre-Web." msgstr "此邮件已经通过Calibre-Web发送" -#: cps/helper.py:128 +#: cps/helper.py:125 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "找不到 %(format)s: %(fn)s" -#: cps/helper.py:133 +#: cps/helper.py:130 msgid "Calibre-Web test e-mail" msgstr "Calibre-Web测试邮件" -#: cps/helper.py:134 +#: cps/helper.py:131 msgid "Test e-mail" msgstr "测试邮件" -#: cps/helper.py:150 +#: cps/helper.py:147 msgid "Get Started with Calibre-Web" msgstr "开启Calibre-Web之旅" -#: cps/helper.py:151 +#: cps/helper.py:148 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "用户 %(name)s 的注册邮箱" -#: cps/helper.py:165 cps/helper.py:167 cps/helper.py:169 cps/helper.py:177 -#: cps/helper.py:179 cps/helper.py:181 +#: cps/helper.py:162 cps/helper.py:164 cps/helper.py:166 cps/helper.py:174 +#: cps/helper.py:176 cps/helper.py:178 #, python-format msgid "Send %(format)s to Kindle" msgstr "" -#: cps/helper.py:185 +#: cps/helper.py:182 #, python-format msgid "Convert %(orig)s to %(format)s and send to Kindle" msgstr "" -#: cps/helper.py:224 +#: cps/helper.py:221 #, python-format msgid "E-mail: %(book)s" msgstr "" -#: cps/helper.py:227 +#: cps/helper.py:224 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "无法读取请求的文件。 可能有错误的权限设置?" -#: cps/helper.py:335 +#: cps/helper.py:331 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "将标题从'%(src)s'改为'%(dest)s'时失败,出错信息: %(error)s" -#: cps/helper.py:345 +#: cps/helper.py:341 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "将作者从'%(src)s'改为'%(dest)s'时失败,出错信息: %(error)s" -#: cps/helper.py:359 +#: cps/helper.py:355 #, python-format msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:385 cps/helper.py:395 cps/helper.py:403 +#: cps/helper.py:381 cps/helper.py:391 cps/helper.py:399 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "Google Drive上找不到文件 %(file)s" -#: cps/helper.py:424 +#: cps/helper.py:420 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "Google Drive上找不到书籍路径 %(path)s" -#: cps/helper.py:584 +#: cps/helper.py:579 msgid "Error excecuting UnRar" msgstr "执行UnRar时出错" -#: cps/helper.py:586 +#: cps/helper.py:581 msgid "Unrar binary file not found" msgstr "找不到Unrar二进制文件" -#: cps/helper.py:614 +#: cps/helper.py:609 msgid "Waiting" msgstr "等待中" -#: cps/helper.py:616 +#: cps/helper.py:611 msgid "Failed" msgstr "失败" -#: cps/helper.py:618 +#: cps/helper.py:613 msgid "Started" msgstr "已开始" -#: cps/helper.py:620 +#: cps/helper.py:615 msgid "Finished" msgstr "已完成" -#: cps/helper.py:622 +#: cps/helper.py:617 msgid "Unknown Status" msgstr "未知状态" -#: cps/helper.py:627 +#: cps/helper.py:622 msgid "E-mail: " msgstr "" -#: cps/helper.py:629 cps/helper.py:633 +#: cps/helper.py:624 cps/helper.py:628 msgid "Convert: " msgstr "转换:" -#: cps/helper.py:631 +#: cps/helper.py:626 msgid "Upload: " msgstr "上传:" -#: cps/helper.py:635 +#: cps/helper.py:630 msgid "Unknown Task: " msgstr "未知任务:" -#: cps/oauth_bb.py:87 +#: cps/oauth_bb.py:91 #, python-format -msgid "Register with %s, " +msgid "Register with %(provider)s" msgstr "" -#: cps/oauth_bb.py:145 +#: cps/oauth_bb.py:149 msgid "Failed to log in with GitHub." msgstr "" -#: cps/oauth_bb.py:150 +#: cps/oauth_bb.py:154 msgid "Failed to fetch user info from GitHub." msgstr "" -#: cps/oauth_bb.py:161 +#: cps/oauth_bb.py:165 msgid "Failed to log in with Google." msgstr "" -#: cps/oauth_bb.py:166 +#: cps/oauth_bb.py:170 msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:265 +#: cps/oauth_bb.py:269 #, python-format msgid "Unlink to %(oauth)s success." msgstr "" -#: cps/oauth_bb.py:269 +#: cps/oauth_bb.py:273 #, python-format msgid "Unlink to %(oauth)s failed." msgstr "" -#: cps/oauth_bb.py:272 +#: cps/oauth_bb.py:276 #, python-format msgid "Not linked to %(oauth)s." msgstr "" -#: cps/oauth_bb.py:300 +#: cps/oauth_bb.py:304 msgid "GitHub Oauth error, please retry later." msgstr "" -#: cps/oauth_bb.py:319 +#: cps/oauth_bb.py:323 msgid "Google Oauth error, please retry later." msgstr "" -#: cps/shelf.py:40 cps/shelf.py:92 +#: cps/shelf.py:46 cps/shelf.py:98 msgid "Invalid shelf specified" msgstr "指定的书架无效" -#: cps/shelf.py:47 +#: cps/shelf.py:53 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" msgstr "对不起,您没有添加书籍到书架 %(shelfname)s 的权限" -#: cps/shelf.py:55 +#: cps/shelf.py:61 msgid "You are not allowed to edit public shelves" msgstr "您没有编辑书架的权限" -#: cps/shelf.py:64 +#: cps/shelf.py:70 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" msgstr "此书已经是书架 %(shelfname)s 的一部分" -#: cps/shelf.py:78 +#: cps/shelf.py:84 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "此书已被添加到书架: %(sname)s" -#: cps/shelf.py:97 +#: cps/shelf.py:103 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "您没有添加书籍到书架 %(name)s 的权限" -#: cps/shelf.py:102 +#: cps/shelf.py:108 msgid "User is not allowed to edit public shelves" msgstr "用户没有编辑公开书架的权限" -#: cps/shelf.py:120 +#: cps/shelf.py:126 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "书籍已经在书架 %(name)s 中了" -#: cps/shelf.py:134 +#: cps/shelf.py:140 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "书籍已经被添加到书架 %(sname)s 中'" -#: cps/shelf.py:136 +#: cps/shelf.py:142 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "无法添加书籍到书架: %(sname)s" -#: cps/shelf.py:173 +#: cps/shelf.py:179 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "此书已从书架 %(sname)s 中删除" -#: cps/shelf.py:179 +#: cps/shelf.py:185 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "对不起,您没有从书架 %(sname)s 中删除书籍的权限" -#: cps/shelf.py:200 cps/shelf.py:224 +#: cps/shelf.py:206 cps/shelf.py:230 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "已存在书架 '%(title)s'。" -#: cps/shelf.py:205 +#: cps/shelf.py:211 #, python-format msgid "Shelf %(title)s created" msgstr "书架 %(title)s 已被创建" -#: cps/shelf.py:207 cps/shelf.py:235 +#: cps/shelf.py:213 cps/shelf.py:241 msgid "There was an error" msgstr "发生错误" -#: cps/shelf.py:208 cps/shelf.py:210 +#: cps/shelf.py:214 cps/shelf.py:216 msgid "create a shelf" msgstr "创建书架" -#: cps/shelf.py:233 +#: cps/shelf.py:239 #, python-format msgid "Shelf %(title)s changed" msgstr "书架 %(title)s 已被修改" -#: cps/shelf.py:236 cps/shelf.py:238 +#: cps/shelf.py:242 cps/shelf.py:244 msgid "Edit a shelf" msgstr "编辑书架" -#: cps/shelf.py:259 -#, python-format -msgid "successfully deleted shelf %(name)s" -msgstr "成功删除书架 %(name)s" - -#: cps/shelf.py:289 +#: cps/shelf.py:295 #, python-format msgid "Shelf: '%(name)s'" msgstr "书架: '%(name)s'" -#: cps/shelf.py:292 +#: cps/shelf.py:298 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "打开书架出错。书架不存在或不可访问" -#: cps/shelf.py:324 +#: cps/shelf.py:330 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "修改书架 '%(name)s' 顺序" -#: cps/ub.py:111 +#: cps/ub.py:68 msgid "Recently Added" msgstr "最近添加" -#: cps/ub.py:113 +#: cps/ub.py:70 msgid "Show recent books" msgstr "显示最近书籍" -#: cps/templates/index.xml:17 cps/ub.py:114 +#: cps/templates/index.xml:17 cps/ub.py:71 msgid "Hot Books" msgstr "热门书籍" -#: cps/ub.py:115 +#: cps/ub.py:72 msgid "Show hot books" msgstr "显示热门书籍" -#: cps/templates/index.xml:24 cps/ub.py:118 +#: cps/templates/index.xml:24 cps/ub.py:75 msgid "Best rated Books" msgstr "最高评分书籍" -#: cps/ub.py:120 +#: cps/ub.py:77 msgid "Show best rated books" msgstr "显示最高评分书籍" -#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:121 -#: cps/web.py:965 +#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:78 +#: cps/web.py:958 msgid "Read Books" msgstr "已读书籍" -#: cps/ub.py:123 +#: cps/ub.py:80 msgid "Show read and unread" msgstr "显示已读和未读" -#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:125 -#: cps/web.py:969 +#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:82 +#: cps/web.py:962 msgid "Unread Books" msgstr "未读书籍" -#: cps/ub.py:127 +#: cps/ub.py:84 msgid "Show unread" msgstr "" -#: cps/ub.py:128 +#: cps/ub.py:85 msgid "Discover" msgstr "发现" -#: cps/ub.py:130 +#: cps/ub.py:87 msgid "Show random books" msgstr "显示随机书籍" -#: cps/ub.py:131 +#: cps/ub.py:88 msgid "Categories" msgstr "分类" -#: cps/ub.py:133 +#: cps/ub.py:90 msgid "Show category selection" msgstr "显示分类选择" #: cps/templates/book_edit.html:71 cps/templates/search_form.html:53 -#: cps/ub.py:134 +#: cps/ub.py:91 msgid "Series" msgstr "丛书" -#: cps/ub.py:136 +#: cps/ub.py:93 msgid "Show series selection" msgstr "显示丛书选择" -#: cps/templates/index.xml:61 cps/ub.py:137 +#: cps/templates/index.xml:61 cps/ub.py:94 msgid "Authors" msgstr "作者" -#: cps/ub.py:139 +#: cps/ub.py:96 msgid "Show author selection" msgstr "显示作者选择" -#: cps/templates/index.xml:68 cps/ub.py:141 +#: cps/templates/index.xml:68 cps/ub.py:98 msgid "Publishers" msgstr "出版社" -#: cps/ub.py:143 +#: cps/ub.py:100 msgid "Show publisher selection" msgstr "显示出版社选择" -#: cps/templates/search_form.html:74 cps/ub.py:144 +#: cps/templates/search_form.html:74 cps/ub.py:101 msgid "Languages" msgstr "语言" -#: cps/ub.py:147 +#: cps/ub.py:104 msgid "Show language selection" msgstr "显示语言选择" -#: cps/ub.py:148 +#: cps/ub.py:105 msgid "Ratings" msgstr "" -#: cps/ub.py:150 +#: cps/ub.py:107 msgid "Show ratings selection" msgstr "" -#: cps/ub.py:151 +#: cps/ub.py:108 msgid "File formats" msgstr "" -#: cps/ub.py:153 +#: cps/ub.py:110 msgid "Show file formats selection" msgstr "" -#: cps/updater.py:257 cps/updater.py:364 cps/updater.py:377 +#: cps/updater.py:253 cps/updater.py:360 cps/updater.py:373 msgid "Unexpected data while reading update information" msgstr "读取更新信息时出现异常数据" -#: cps/updater.py:264 cps/updater.py:370 +#: cps/updater.py:260 cps/updater.py:366 msgid "No update available. You already have the latest version installed" msgstr "没有可用更新。您已经安装了最新版本" -#: cps/updater.py:290 cps/updater.py:422 +#: cps/updater.py:286 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "有一个更新可用。点击正文按钮更新到最新版本。" -#: cps/updater.py:343 +#: cps/updater.py:339 msgid "Could not fetch update information" msgstr "无法获取更新信息" -#: cps/updater.py:357 +#: cps/updater.py:353 msgid "No release information available" msgstr "" -#: cps/updater.py:403 cps/updater.py:412 +#: cps/updater.py:406 cps/updater.py:415 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "" -#: cps/web.py:457 +#: cps/updater.py:425 +msgid "Click on the button below to update to the latest stable version." +msgstr "" + +#: cps/web.py:445 msgid "Recently Added Books" msgstr "最近添加的书籍" -#: cps/web.py:484 +#: cps/web.py:473 msgid "Best rated books" msgstr "最高评分书籍" -#: cps/templates/index.xml:38 cps/web.py:492 +#: cps/templates/index.xml:38 cps/web.py:481 msgid "Random Books" msgstr "随机书籍" -#: cps/web.py:516 +#: cps/web.py:505 msgid "Books" msgstr "" -#: cps/web.py:543 +#: cps/web.py:532 msgid "Hot Books (most downloaded)" msgstr "热门书籍(最多下载)" -#: cps/web.py:553 cps/web.py:1294 cps/web.py:1383 +#: cps/web.py:542 cps/web.py:1298 cps/web.py:1386 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "无法打开电子书。 文件不存在或者文件不可访问:" -#: cps/web.py:580 +#: cps/web.py:559 +#, python-format +msgid "Author: %(name)s" +msgstr "" + +#: cps/web.py:571 #, python-format msgid "Publisher: %(name)s" msgstr "出版社: %(name)s" -#: cps/web.py:591 +#: cps/web.py:582 #, python-format msgid "Series: %(serie)s" msgstr "丛书: %(serie)s" -#: cps/web.py:602 +#: cps/web.py:593 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:613 +#: cps/web.py:604 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:625 +#: cps/web.py:616 #, python-format msgid "Category: %(name)s" msgstr "分类: %(name)s" -#: cps/web.py:659 +#: cps/web.py:650 msgid "Publisher list" msgstr "出版社列表" -#: cps/templates/index.xml:82 cps/web.py:675 +#: cps/templates/index.xml:82 cps/web.py:666 msgid "Series list" msgstr "丛书列表" -#: cps/web.py:689 +#: cps/web.py:680 msgid "Ratings list" msgstr "" -#: cps/web.py:702 +#: cps/web.py:693 msgid "File formats list" msgstr "" -#: cps/web.py:730 +#: cps/web.py:721 msgid "Available languages" msgstr "可用语言" -#: cps/web.py:750 +#: cps/web.py:741 #, python-format msgid "Language: %(name)s" msgstr "语言: %(name)s" -#: cps/templates/index.xml:75 cps/web.py:764 +#: cps/templates/index.xml:75 cps/web.py:755 msgid "Category list" msgstr "分类列表" -#: cps/templates/layout.html:73 cps/web.py:777 +#: cps/templates/layout.html:73 cps/web.py:769 msgid "Tasks" msgstr "任务" -#: cps/web.py:841 +#: cps/web.py:834 msgid "Published after " msgstr "出版时晚于 " -#: cps/web.py:848 +#: cps/web.py:841 msgid "Published before " msgstr "出版时早于 " -#: cps/web.py:862 +#: cps/web.py:855 #, python-format msgid "Rating <= %(rating)s" msgstr "评分 <= %(rating)s" -#: cps/web.py:864 +#: cps/web.py:857 #, python-format msgid "Rating >= %(rating)s" msgstr "评分 >= %(rating)s" -#: cps/web.py:924 cps/web.py:933 +#: cps/web.py:917 cps/web.py:926 msgid "search" msgstr "搜索" -#: cps/web.py:1018 +#: cps/web.py:1012 msgid "Please configure the SMTP mail settings first..." msgstr "请先配置SMTP邮箱..." -#: cps/web.py:1023 +#: cps/web.py:1017 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "书籍已经被成功加入 %(kindlemail)s 的发送队列" -#: cps/web.py:1027 +#: cps/web.py:1021 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "发送这本书的时候出现错误: %(res)s" -#: cps/web.py:1046 cps/web.py:1071 cps/web.py:1076 cps/web.py:1081 -#: cps/web.py:1085 +#: cps/web.py:1041 cps/web.py:1066 cps/web.py:1070 cps/web.py:1075 +#: cps/web.py:1079 msgid "register" msgstr "注册" -#: cps/web.py:1073 +#: cps/web.py:1068 msgid "Your e-mail is not allowed to register" msgstr "您的邮箱不能用来注册" -#: cps/web.py:1077 +#: cps/web.py:1071 msgid "Confirmation e-mail was send to your e-mail account." msgstr "确认邮件已经发送到您的邮箱。" -#: cps/web.py:1080 +#: cps/web.py:1074 msgid "This username or e-mail address is already in use." msgstr "这个用户名或者邮箱已经被使用。" -#: cps/web.py:1103 cps/web.py:1115 -#, python-format -msgid "You are now logged in as: '%(nickname)s'" +#: cps/web.py:1089 +msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1108 cps/web.py:1120 +#: cps/web.py:1098 cps/web.py:1212 +#, python-format +msgid "you are now logged in as: '%(nickname)s'" +msgstr "您现在已以'%(nickname)s'身份登录" + +#: cps/web.py:1105 cps/web.py:1122 msgid "Wrong Username or Password" msgstr "用户名或密码错误" -#: cps/web.py:1111 +#: cps/web.py:1108 msgid "Could not login. LDAP server down, please contact your administrator" msgstr "" -#: cps/web.py:1124 cps/web.py:1146 +#: cps/web.py:1117 +#, python-format +msgid "You are now logged in as: '%(nickname)s'" +msgstr "" + +#: cps/web.py:1126 cps/web.py:1148 msgid "login" msgstr "登录" -#: cps/web.py:1158 cps/web.py:1189 +#: cps/web.py:1160 cps/web.py:1191 msgid "Token not found" msgstr "找不到Token" -#: cps/web.py:1166 cps/web.py:1197 +#: cps/web.py:1168 cps/web.py:1199 msgid "Token has expired" msgstr "Token已过期" -#: cps/web.py:1174 +#: cps/web.py:1176 msgid "Success! Please return to your device" msgstr "成功!请返回您的设备" -#: cps/web.py:1210 -#, python-format -msgid "you are now logged in as: '%(nickname)s'" -msgstr "您现在已以'%(nickname)s'身份登录" - -#: cps/web.py:1250 cps/web.py:1277 cps/web.py:1281 +#: cps/web.py:1253 cps/web.py:1280 cps/web.py:1284 #, python-format msgid "%(name)s's profile" msgstr "%(name)s 的资料" -#: cps/web.py:1274 +#: cps/web.py:1277 msgid "Found an existing account for this e-mail address." msgstr "找到一个已有账号使用这个邮箱。" -#: cps/web.py:1279 +#: cps/web.py:1282 msgid "Profile updated" msgstr "资料已更新" -#: cps/web.py:1304 cps/web.py:1306 cps/web.py:1308 cps/web.py:1314 -#: cps/web.py:1318 +#: cps/web.py:1308 cps/web.py:1310 cps/web.py:1312 cps/web.py:1318 +#: cps/web.py:1322 msgid "Read a Book" msgstr "阅读一本书" -#: cps/web.py:1328 +#: cps/web.py:1332 msgid "Error opening eBook. File does not exist or file is not accessible." msgstr "" -#: cps/worker.py:308 +#: cps/worker.py:311 #, python-format msgid "Ebook-converter failed: %(error)s" msgstr "电子书转换器失败: %(error)s" -#: cps/worker.py:319 +#: cps/worker.py:322 #, python-format msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "Kindlegen 因为错误 %(error)s 失败。消息: %(message)s" @@ -1056,53 +1066,57 @@ msgid "Administration" msgstr "管理" #: cps/templates/admin.html:109 +msgid "View Logfiles" +msgstr "" + +#: cps/templates/admin.html:110 msgid "Reconnect to Calibre DB" msgstr "重新连接到Calibre数据库" -#: cps/templates/admin.html:110 +#: cps/templates/admin.html:111 msgid "Restart Calibre-Web" msgstr "重启 Calibre-Web" -#: cps/templates/admin.html:111 +#: cps/templates/admin.html:112 msgid "Stop Calibre-Web" msgstr "停止 Calibre-Web" -#: cps/templates/admin.html:117 +#: cps/templates/admin.html:118 msgid "Update" msgstr "更新" -#: cps/templates/admin.html:121 +#: cps/templates/admin.html:122 msgid "Version" msgstr "版本" -#: cps/templates/admin.html:122 +#: cps/templates/admin.html:123 msgid "Details" msgstr "详情" -#: cps/templates/admin.html:128 +#: cps/templates/admin.html:129 msgid "Current version" msgstr "当前版本" -#: cps/templates/admin.html:134 +#: cps/templates/admin.html:135 msgid "Check for update" msgstr "检查更新" -#: cps/templates/admin.html:135 +#: cps/templates/admin.html:136 msgid "Perform Update" msgstr "执行更新" -#: cps/templates/admin.html:147 +#: cps/templates/admin.html:148 msgid "Do you really want to restart Calibre-Web?" msgstr "您确定要重启 Calibre-Web 吗?" -#: cps/templates/admin.html:152 cps/templates/admin.html:166 -#: cps/templates/admin.html:186 cps/templates/shelf.html:72 +#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:187 cps/templates/shelf.html:72 msgid "Ok" msgstr "确定" -#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:154 cps/templates/admin.html:168 #: cps/templates/book_edit.html:174 cps/templates/book_edit.html:196 -#: cps/templates/config_edit.html:281 cps/templates/config_view_edit.html:147 +#: cps/templates/config_edit.html:331 cps/templates/config_view_edit.html:147 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 @@ -1110,11 +1124,11 @@ msgstr "确定" msgid "Back" msgstr "后退" -#: cps/templates/admin.html:165 +#: cps/templates/admin.html:166 msgid "Do you really want to stop Calibre-Web?" msgstr "您确定要关闭 Calibre-Web 吗?" -#: cps/templates/admin.html:177 +#: cps/templates/admin.html:178 msgid "Updating, please do not reload page" msgstr "正在更新,请不要刷新页面" @@ -1243,7 +1257,7 @@ msgstr "编辑后查看书籍" msgid "Get metadata" msgstr "获取元数据" -#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:279 +#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329 #: cps/templates/config_view_edit.html:146 cps/templates/login.html:20 #: cps/templates/search_form.html:150 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:130 @@ -1387,123 +1401,171 @@ msgstr "日志级别" msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "日志文件位置和名称(默认为calibre-web.log)" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:134 +msgid "Enable Access Log" +msgstr "" + +#: cps/templates/config_edit.html:137 +msgid "Location and name of access logfile (access.log for no entry)" +msgstr "" + +#: cps/templates/config_edit.html:148 msgid "Feature Configuration" msgstr "特性配置" -#: cps/templates/config_edit.html:148 +#: cps/templates/config_edit.html:156 msgid "Enable uploading" msgstr "启用上传" -#: cps/templates/config_edit.html:152 +#: cps/templates/config_edit.html:160 msgid "Enable anonymous browsing" msgstr "启用匿名浏览" -#: cps/templates/config_edit.html:156 +#: cps/templates/config_edit.html:164 msgid "Enable public registration" msgstr "启用注册" -#: cps/templates/config_edit.html:160 +#: cps/templates/config_edit.html:168 msgid "Enable remote login (\"magic link\")" msgstr "启用远程登录 ('魔法链接')" -#: cps/templates/config_edit.html:165 +#: cps/templates/config_edit.html:173 msgid "Use" msgstr "使用" -#: cps/templates/config_edit.html:166 +#: cps/templates/config_edit.html:174 msgid "Obtain an API Key" msgstr "获取API Key" -#: cps/templates/config_edit.html:170 +#: cps/templates/config_edit.html:178 msgid "Goodreads API Key" msgstr "" -#: cps/templates/config_edit.html:174 +#: cps/templates/config_edit.html:182 msgid "Goodreads API Secret" msgstr "" -#: cps/templates/config_edit.html:181 +#: cps/templates/config_edit.html:189 msgid "Login type" msgstr "" -#: cps/templates/config_edit.html:183 +#: cps/templates/config_edit.html:191 msgid "Use standard Authentication" msgstr "" -#: cps/templates/config_edit.html:185 +#: cps/templates/config_edit.html:193 msgid "Use LDAP Authentication" msgstr "" -#: cps/templates/config_edit.html:188 +#: cps/templates/config_edit.html:196 msgid "Use GitHub OAuth" msgstr "" -#: cps/templates/config_edit.html:189 +#: cps/templates/config_edit.html:197 msgid "Use Google OAuth" msgstr "" -#: cps/templates/config_edit.html:196 -msgid "LDAP Provider URL" +#: cps/templates/config_edit.html:204 +msgid "LDAP Server Host Name or IP Address" +msgstr "" + +#: cps/templates/config_edit.html:208 +msgid "LDAP Server Port" +msgstr "" + +#: cps/templates/config_edit.html:212 +msgid "LDAP schema (ldap or ldaps)" +msgstr "" + +#: cps/templates/config_edit.html:216 +msgid "LDAP Admin username" +msgstr "" + +#: cps/templates/config_edit.html:220 +msgid "LDAP Admin password" +msgstr "" + +#: cps/templates/config_edit.html:225 +msgid "LDAP Server use SSL" msgstr "" -#: cps/templates/config_edit.html:200 +#: cps/templates/config_edit.html:229 +msgid "LDAP Server use TLS" +msgstr "" + +#: cps/templates/config_edit.html:233 +msgid "LDAP Server Certificate" +msgstr "" + +#: cps/templates/config_edit.html:237 +msgid "LDAP SSL Certificate Path" +msgstr "" + +#: cps/templates/config_edit.html:242 msgid "LDAP Distinguished Name (DN)" msgstr "" -#: cps/templates/config_edit.html:208 +#: cps/templates/config_edit.html:246 +msgid "LDAP User object filter" +msgstr "" + +#: cps/templates/config_edit.html:251 +msgid "LDAP Server is OpenLDAP?" +msgstr "" + +#: cps/templates/config_edit.html:258 msgid "Obtain GitHub OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:211 +#: cps/templates/config_edit.html:261 msgid "GitHub OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:215 +#: cps/templates/config_edit.html:265 msgid "GitHub OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:221 +#: cps/templates/config_edit.html:271 msgid "Obtain Google OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:224 +#: cps/templates/config_edit.html:274 msgid "Google OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:228 +#: cps/templates/config_edit.html:278 msgid "Google OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:242 +#: cps/templates/config_edit.html:292 msgid "External binaries" msgstr "外部二进制" -#: cps/templates/config_edit.html:250 +#: cps/templates/config_edit.html:300 msgid "No converter" msgstr "没有转换器" -#: cps/templates/config_edit.html:252 +#: cps/templates/config_edit.html:302 msgid "Use Kindlegen" msgstr "使用Kindlegen" -#: cps/templates/config_edit.html:254 +#: cps/templates/config_edit.html:304 msgid "Use calibre's ebook converter" msgstr "使用calibre的电子书转换器" -#: cps/templates/config_edit.html:258 +#: cps/templates/config_edit.html:308 msgid "E-Book converter settings" msgstr "电子书转换设置" -#: cps/templates/config_edit.html:262 +#: cps/templates/config_edit.html:312 msgid "Path to convertertool" msgstr "转换工具路径" -#: cps/templates/config_edit.html:268 +#: cps/templates/config_edit.html:318 msgid "Location of Unrar binary" msgstr "Unrar二进制位置" -#: cps/templates/config_edit.html:284 cps/templates/layout.html:84 +#: cps/templates/config_edit.html:334 cps/templates/layout.html:84 #: cps/templates/login.html:4 msgid "Login" msgstr "登录" @@ -1717,7 +1779,7 @@ msgstr "" msgid "Discover (Random Books)" msgstr "发现(随机书籍)" -#: cps/templates/index.html:65 +#: cps/templates/index.html:64 msgid "Group by series" msgstr "" @@ -1860,6 +1922,14 @@ msgstr "记住我" msgid "Log in with magic link" msgstr "通过魔法链接登录" +#: cps/templates/logviewer.html:5 +msgid "Show Calibre-Web log" +msgstr "" + +#: cps/templates/logviewer.html:8 +msgid "Show access log" +msgstr "" + #: cps/templates/osd.xml:5 msgid "Calibre-Web ebook catalog" msgstr "Caliebre-Web电子书目录" @@ -3427,13 +3497,13 @@ msgstr "最近下载" #~ msgstr "扎扎其语" #~ msgid "Failed to create path for cover %(path)s (Permission denied)." -#~ msgstr "为封面 %(path)s 创建路径失败(权限拒绝)。" +#~ msgstr "" #~ msgid "Failed to store cover-file %(cover)s." -#~ msgstr "保存封面文件 %(cover)s 失败。" +#~ msgstr "" #~ msgid "Cover-file is not a valid image file" -#~ msgstr "封面文件不是一个有效的图片文件" +#~ msgstr "" #~ msgid "Cover is not a jpg file, can't save" #~ msgstr "封面不是一个jpg文件,无法保存" @@ -3492,3 +3562,15 @@ msgstr "最近下载" #~ msgid "PDF.js viewer" #~ msgstr "PDF.js 查看器" +#~ msgid "Please enter a LDAP provider and a DN" +#~ msgstr "" + +#~ msgid "successfully deleted shelf %(name)s" +#~ msgstr "成功删除书架 %(name)s" + +#~ msgid "LDAP Provider URL" +#~ msgstr "" + +#~ msgid "Register with %s, " +#~ msgstr "" + diff --git a/cps/ub.py b/cps/ub.py index 70d97a20..02623448 100644 --- a/cps/ub.py +++ b/cps/ub.py @@ -40,18 +40,12 @@ from sqlalchemy.orm import relationship, sessionmaker from sqlalchemy.ext.declarative import declarative_base from werkzeug.security import generate_password_hash -'''try: - import ldap -except ImportError: - pass''' - from . import constants, logger, cli session = None - -engine = create_engine('sqlite:///{0}'.format(cli.settingspath), echo=False) +engine = create_engine(u'sqlite:///{0}'.format(cli.settingspath), echo=False) Base = declarative_base() @@ -171,18 +165,12 @@ class UserBase: def __repr__(self): return '' % self.nickname - # Login via LDAP method - '''@staticmethod - def try_login(username, password,config_dn, ldap_provider_url): - conn = get_ldap_connection(ldap_provider_url) - conn.simple_bind_s( - config_dn.replace("%s", username), - password)''' # Baseclass for Users in Calibre-Web, settings which are depending on certain users are stored here. It is derived from # User Base (all access methods are declared there) class User(UserBase, Base): __tablename__ = 'user' + __table_args__ = {'sqlite_autoincrement': True} id = Column(Integer, primary_key=True) nickname = Column(String(64), unique=True) @@ -476,35 +464,22 @@ class Config: def get_config_certfile(self): if cli.certfilepath: return cli.certfilepath - else: - if cli.certfilepath is "": - return None - else: - return self.config_certfile + if cli.certfilepath is "": + return None + return self.config_certfile def get_config_keyfile(self): if cli.keyfilepath: return cli.keyfilepath - else: - if cli.certfilepath is "": - return None - else: - return self.config_keyfile - - def get_config_ipaddress(self, readable=False): - if not readable: - if cli.ipadress: - return cli.ipadress - else: - return "" - else: - answer="0.0.0.0" - if cli.ipadress: - if cli.ipv6: - answer = "["+cli.ipadress+"]" - else: - answer = cli.ipadress - return answer + if cli.certfilepath is "": + return None + return self.config_keyfile + + def get_config_ipaddress(self): + return cli.ipadress or "" + + def get_ipaddress_type(self): + return cli.ipv6 def _has_role(self, role_flag): return constants.has_flag(self.config_default_role, role_flag) @@ -782,6 +757,34 @@ def migrate_Database(): conn.execute("ALTER TABLE Settings ADD column `config_access_log` INTEGER DEFAULT 0") conn.execute("ALTER TABLE Settings ADD column `config_access_logfile` String DEFAULT ''") session.commit() + try: + # check if one table with autoincrement is existing (should be user table) + conn = engine.connect() + conn.execute("SELECT COUNT(*) FROM sqlite_sequence WHERE name='user'") + except exc.OperationalError: + # Create new table user_id and copy contents of table user into it + conn = engine.connect() + conn.execute("CREATE TABLE user_id (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," + "nickname VARCHAR(64)," + "email VARCHAR(120)," + "role SMALLINT," + "password VARCHAR," + "kindle_mail VARCHAR(120)," + "locale VARCHAR(2)," + "sidebar_view INTEGER," + "default_language VARCHAR(3)," + "mature_content BOOLEAN," + "UNIQUE (nickname)," + "UNIQUE (email)," + "CHECK (mature_content IN (0, 1)))") + conn.execute("INSERT INTO user_id(id, nickname, email, role, password, kindle_mail,locale," + "sidebar_view, default_language, mature_content) " + "SELECT id, nickname, email, role, password, kindle_mail, locale," + "sidebar_view, default_language, mature_content FROM user") + # delete old user table and rename new user_id table to user: + conn.execute("DROP TABLE user") + conn.execute("ALTER TABLE user_id RENAME TO user") + session.commit() # Remove login capability of user Guest conn = engine.connect() @@ -795,13 +798,6 @@ def clean_database(): session.query(RemoteAuthToken).filter(now > RemoteAuthToken.expiration).delete() -'''#get LDAP connection -def get_ldap_connection(ldap_provider_url): - conn = ldap.initialize('ldap://{}'.format(ldap_provider_url)) - return conn''' - - - def create_default_config(): settings = Settings() settings.mail_server = "mail.example.com" diff --git a/cps/updater.py b/cps/updater.py index 28be3b3a..33012db1 100644 --- a/cps/updater.py +++ b/cps/updater.py @@ -33,7 +33,7 @@ from tempfile import gettempdir from babel.dates import format_datetime from flask_babel import gettext as _ -from . import constants, logger, config, get_locale, Server +from . import constants, logger, config, get_locale, web_server log = logger.create() @@ -95,8 +95,7 @@ class Updater(threading.Thread): self.status = 6 log.debug(u'Preparing restart of server') time.sleep(2) - Server.setRestartTyp(True) - Server.stopServer() + web_server.stop(True) self.status = 7 time.sleep(2) except requests.exceptions.HTTPError as ex: diff --git a/cps/web.py b/cps/web.py index 1ae1aa86..c69ca659 100644 --- a/cps/web.py +++ b/cps/web.py @@ -41,7 +41,7 @@ from werkzeug.exceptions import default_exceptions from werkzeug.datastructures import Headers from werkzeug.security import generate_password_hash, check_password_hash -from . import constants, logger, isoLanguages, ldap +from . import constants, logger, isoLanguages, ldap1 from . import global_WorkerThread, searched_ids, lm, babel, db, ub, config, get_locale, app, language_table from .gdriveutils import getFileFromEbooksFolder, do_gdrive_download from .helper import common_filters, get_search_results, fill_indexpage, speaking_language, check_valid_domain, \ @@ -52,7 +52,7 @@ from .pagination import Pagination from .redirect import redirect_back feature_support = dict() -feature_support['ldap'] = ldap.ldap_supported() +feature_support['ldap'] = ldap1.ldap_supported() try: from .oauth_bb import oauth_check, register_user_with_oauth, logout_oauth_user, get_oauth_status @@ -1093,7 +1093,7 @@ def login(): .first() if config.config_login_type == 1 and user and feature_support['ldap']: try: - if ldap.ldap.bind_user(form['username'], form['password']) is not None: + if ldap1.ldap.bind_user(form['username'], form['password']) is not None: login_user(user, remember=True) flash(_(u"you are now logged in as: '%(nickname)s'", nickname=user.nickname), category="success") diff --git a/cps/worker.py b/cps/worker.py index a33ad99d..345d79bb 100644 --- a/cps/worker.py +++ b/cps/worker.py @@ -326,6 +326,8 @@ class WorkerThread(threading.Thread): nextline = p.stdout.readline() if os.name == 'nt' and sys.version_info < (3, 0): nextline = nextline.decode('windows-1252') + elif os.name == 'posix' and sys.version_info < (3, 0): + nextline = nextline.decode('utf-8') log.debug(nextline.strip('\r\n')) # parse progress string from calibre-converter progress = re.search("(\d+)%\s.*", nextline) diff --git a/messages.pot b/messages.pot index 458c614e..61cb08bf 100644 --- a/messages.pot +++ b/messages.pot @@ -8,20 +8,20 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-05-31 11:20+0200\n" +"POT-Creation-Date: 2019-06-22 19:54+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.6.0\n" +"Generated-By: Babel 2.7.0\n" -#: cps/about.py:76 +#: cps/about.py:78 msgid "Statistics" msgstr "" -#: cps/admin.py:97 +#: cps/admin.py:98 msgid "Server restarted, please reload page" msgstr "" @@ -29,186 +29,202 @@ msgstr "" msgid "Performing shutdown of server, please close window" msgstr "" -#: cps/admin.py:120 cps/updater.py:445 +#: cps/admin.py:119 cps/updater.py:448 msgid "Unknown" msgstr "" -#: cps/admin.py:139 +#: cps/admin.py:138 msgid "Admin page" msgstr "" -#: cps/admin.py:208 cps/admin.py:486 +#: cps/admin.py:207 cps/admin.py:532 msgid "Calibre-Web configuration updated" msgstr "" -#: cps/admin.py:222 cps/templates/admin.html:102 +#: cps/admin.py:220 cps/templates/admin.html:102 msgid "UI Configuration" msgstr "" -#: cps/admin.py:295 +#: cps/admin.py:293 msgid "Import of optional Google Drive requirements missing" msgstr "" -#: cps/admin.py:298 +#: cps/admin.py:296 msgid "client_secrets.json is missing or not readable" msgstr "" -#: cps/admin.py:303 cps/admin.py:332 +#: cps/admin.py:301 cps/admin.py:330 msgid "client_secrets.json is not configured for web application" msgstr "" -#: cps/admin.py:335 cps/admin.py:361 cps/admin.py:373 cps/admin.py:398 -#: cps/admin.py:426 cps/admin.py:440 cps/admin.py:463 cps/admin.py:476 -#: cps/admin.py:494 cps/admin.py:501 cps/admin.py:516 -#: cps/templates/admin.html:101 +#: cps/admin.py:333 cps/admin.py:359 cps/admin.py:371 cps/admin.py:396 +#: cps/admin.py:403 cps/admin.py:436 cps/admin.py:460 cps/admin.py:474 +#: cps/admin.py:493 cps/admin.py:510 cps/admin.py:522 cps/admin.py:538 +#: cps/admin.py:545 cps/admin.py:559 cps/templates/admin.html:101 msgid "Basic Configuration" msgstr "" -#: cps/admin.py:358 +#: cps/admin.py:356 msgid "Keyfile location is not valid, please enter correct path" msgstr "" -#: cps/admin.py:370 +#: cps/admin.py:368 cps/admin.py:433 msgid "Certfile location is not valid, please enter correct path" msgstr "" -#: cps/admin.py:395 -msgid "Please enter a LDAP provider and a DN" +#: cps/admin.py:393 +msgid "Please enter a LDAP provider, port, DN and user object identifier" msgstr "" -#: cps/admin.py:423 +#: cps/admin.py:400 +msgid "Please enter a LDAP service account and password" +msgstr "" + +#: cps/admin.py:457 msgid "Please enter Github oauth credentials" msgstr "" -#: cps/admin.py:437 +#: cps/admin.py:471 msgid "Please enter Google oauth credentials" msgstr "" -#: cps/admin.py:460 +#: cps/admin.py:490 msgid "Logfile location is not valid, please enter correct path" msgstr "" -#: cps/admin.py:498 +#: cps/admin.py:507 +msgid "Access Logfile location is not valid, please enter correct path" +msgstr "" + +#: cps/admin.py:542 msgid "DB location is not valid, please enter correct path" msgstr "" -#: cps/admin.py:558 cps/web.py:1045 +#: cps/admin.py:602 cps/web.py:1040 msgid "Please fill out all fields!" msgstr "" -#: cps/admin.py:560 cps/admin.py:566 cps/admin.py:582 +#: cps/admin.py:604 cps/admin.py:610 cps/admin.py:626 #: cps/templates/admin.html:35 msgid "Add new user" msgstr "" -#: cps/admin.py:564 cps/web.py:1248 +#: cps/admin.py:608 cps/web.py:1251 msgid "E-mail is not from valid domain" msgstr "" -#: cps/admin.py:572 +#: cps/admin.py:616 #, python-format msgid "User '%(user)s' created" msgstr "" -#: cps/admin.py:576 +#: cps/admin.py:620 msgid "Found an existing account for this e-mail address or nickname." msgstr "" -#: cps/admin.py:607 +#: cps/admin.py:651 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "" -#: cps/admin.py:610 +#: cps/admin.py:654 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "" -#: cps/admin.py:612 cps/web.py:1029 +#: cps/admin.py:656 cps/web.py:1023 msgid "Please configure your kindle e-mail address first..." msgstr "" -#: cps/admin.py:614 +#: cps/admin.py:658 msgid "E-mail server settings updated" msgstr "" -#: cps/admin.py:615 +#: cps/admin.py:659 msgid "Edit e-mail server settings" msgstr "" -#: cps/admin.py:640 +#: cps/admin.py:687 #, python-format msgid "User '%(nick)s' deleted" msgstr "" -#: cps/admin.py:711 +#: cps/admin.py:690 +msgid "No admin user remaining, can't delete user" +msgstr "" + +#: cps/admin.py:761 #, python-format msgid "User '%(nick)s' updated" msgstr "" -#: cps/admin.py:714 +#: cps/admin.py:764 msgid "An unknown error occured." msgstr "" -#: cps/admin.py:717 +#: cps/admin.py:767 #, python-format msgid "Edit User %(nick)s" msgstr "" -#: cps/admin.py:733 +#: cps/admin.py:783 #, python-format msgid "Password for user %(user)s reset" msgstr "" -#: cps/admin.py:736 cps/web.py:1070 +#: cps/admin.py:786 cps/web.py:1065 msgid "An unknown error occurred. Please try again later." msgstr "" -#: cps/admin.py:755 +#: cps/admin.py:797 +msgid "Logfile viewer" +msgstr "" + +#: cps/admin.py:832 msgid "Requesting update package" msgstr "" -#: cps/admin.py:756 +#: cps/admin.py:833 msgid "Downloading update package" msgstr "" -#: cps/admin.py:757 +#: cps/admin.py:834 msgid "Unzipping update package" msgstr "" -#: cps/admin.py:758 +#: cps/admin.py:835 msgid "Replacing files" msgstr "" -#: cps/admin.py:759 +#: cps/admin.py:836 msgid "Database connections are closed" msgstr "" -#: cps/admin.py:760 +#: cps/admin.py:837 msgid "Stopping server" msgstr "" -#: cps/admin.py:761 +#: cps/admin.py:838 msgid "Update finished, please press okay and reload page" msgstr "" -#: cps/admin.py:762 cps/admin.py:763 cps/admin.py:764 cps/admin.py:765 +#: cps/admin.py:839 cps/admin.py:840 cps/admin.py:841 cps/admin.py:842 msgid "Update failed:" msgstr "" -#: cps/admin.py:762 cps/updater.py:277 cps/updater.py:456 cps/updater.py:458 +#: cps/admin.py:839 cps/updater.py:273 cps/updater.py:459 cps/updater.py:461 msgid "HTTP Error" msgstr "" -#: cps/admin.py:763 cps/updater.py:279 cps/updater.py:460 +#: cps/admin.py:840 cps/updater.py:275 cps/updater.py:463 msgid "Connection error" msgstr "" -#: cps/admin.py:764 cps/updater.py:281 cps/updater.py:462 +#: cps/admin.py:841 cps/updater.py:277 cps/updater.py:465 msgid "Timeout while establishing connection" msgstr "" -#: cps/admin.py:765 cps/updater.py:283 cps/updater.py:464 +#: cps/admin.py:842 cps/updater.py:279 cps/updater.py:467 msgid "General error" msgstr "" @@ -226,720 +242,714 @@ msgstr "" msgid "not configured" msgstr "" -#: cps/editbooks.py:218 cps/editbooks.py:432 +#: cps/editbooks.py:215 cps/editbooks.py:394 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "" -#: cps/editbooks.py:246 +#: cps/editbooks.py:243 msgid "edit metadata" msgstr "" -#: cps/editbooks.py:325 cps/editbooks.py:595 +#: cps/editbooks.py:322 cps/editbooks.py:557 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "" -#: cps/editbooks.py:329 cps/editbooks.py:599 +#: cps/editbooks.py:326 cps/editbooks.py:561 msgid "File to be uploaded must have an extension" msgstr "" -#: cps/editbooks.py:341 cps/editbooks.py:619 +#: cps/editbooks.py:338 cps/editbooks.py:581 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "" -#: cps/editbooks.py:346 +#: cps/editbooks.py:343 #, python-format msgid "Failed to store file %(file)s." msgstr "" -#: cps/editbooks.py:363 +#: cps/editbooks.py:360 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "" -#: cps/editbooks.py:382 -#, python-format -msgid "Failed to create path for cover %(path)s (Permission denied)." -msgstr "" - -#: cps/editbooks.py:390 -#, python-format -msgid "Failed to store cover-file %(cover)s." -msgstr "" - -#: cps/editbooks.py:393 -msgid "Cover-file is not a valid image file" -msgstr "" - -#: cps/editbooks.py:399 cps/editbooks.py:413 +#: cps/editbooks.py:374 msgid "Cover is not a supported imageformat (jpg/png/webp), can't save" msgstr "" -#: cps/editbooks.py:445 cps/editbooks.py:454 +#: cps/editbooks.py:407 cps/editbooks.py:416 msgid "unknown" msgstr "" -#: cps/editbooks.py:486 +#: cps/editbooks.py:448 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/editbooks.py:534 +#: cps/editbooks.py:496 #, python-format msgid "%(langname)s is not a valid language" msgstr "" -#: cps/editbooks.py:565 +#: cps/editbooks.py:527 msgid "Metadata successfully updated" msgstr "" -#: cps/editbooks.py:574 +#: cps/editbooks.py:536 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/editbooks.py:624 +#: cps/editbooks.py:586 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "" -#: cps/editbooks.py:629 +#: cps/editbooks.py:591 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "" -#: cps/editbooks.py:712 +#: cps/editbooks.py:674 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:741 +#: cps/editbooks.py:703 msgid "Source or destination format for conversion missing" msgstr "" -#: cps/editbooks.py:751 +#: cps/editbooks.py:711 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "" -#: cps/editbooks.py:755 +#: cps/editbooks.py:715 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "" -#: cps/gdrive.py:56 +#: cps/gdrive.py:61 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "" -#: cps/gdrive.py:101 +#: cps/gdrive.py:106 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "" -#: cps/helper.py:97 +#: cps/helper.py:94 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "" -#: cps/helper.py:109 +#: cps/helper.py:106 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "" -#: cps/helper.py:116 cps/helper.py:223 cps/templates/detail.html:41 +#: cps/helper.py:113 cps/helper.py:220 cps/templates/detail.html:41 #: cps/templates/detail.html:45 msgid "Send to Kindle" msgstr "" -#: cps/helper.py:117 cps/helper.py:135 cps/helper.py:225 +#: cps/helper.py:114 cps/helper.py:132 cps/helper.py:222 msgid "This e-mail has been sent via Calibre-Web." msgstr "" -#: cps/helper.py:128 +#: cps/helper.py:125 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "" -#: cps/helper.py:133 +#: cps/helper.py:130 msgid "Calibre-Web test e-mail" msgstr "" -#: cps/helper.py:134 +#: cps/helper.py:131 msgid "Test e-mail" msgstr "" -#: cps/helper.py:150 +#: cps/helper.py:147 msgid "Get Started with Calibre-Web" msgstr "" -#: cps/helper.py:151 +#: cps/helper.py:148 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "" -#: cps/helper.py:165 cps/helper.py:167 cps/helper.py:169 cps/helper.py:177 -#: cps/helper.py:179 cps/helper.py:181 +#: cps/helper.py:162 cps/helper.py:164 cps/helper.py:166 cps/helper.py:174 +#: cps/helper.py:176 cps/helper.py:178 #, python-format msgid "Send %(format)s to Kindle" msgstr "" -#: cps/helper.py:185 +#: cps/helper.py:182 #, python-format msgid "Convert %(orig)s to %(format)s and send to Kindle" msgstr "" -#: cps/helper.py:224 +#: cps/helper.py:221 #, python-format msgid "E-mail: %(book)s" msgstr "" -#: cps/helper.py:227 +#: cps/helper.py:224 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "" -#: cps/helper.py:335 +#: cps/helper.py:331 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:345 +#: cps/helper.py:341 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:359 +#: cps/helper.py:355 #, python-format msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:385 cps/helper.py:395 cps/helper.py:403 +#: cps/helper.py:381 cps/helper.py:391 cps/helper.py:399 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "" -#: cps/helper.py:424 +#: cps/helper.py:420 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "" -#: cps/helper.py:584 +#: cps/helper.py:579 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:586 +#: cps/helper.py:581 msgid "Unrar binary file not found" msgstr "" -#: cps/helper.py:614 +#: cps/helper.py:609 msgid "Waiting" msgstr "" -#: cps/helper.py:616 +#: cps/helper.py:611 msgid "Failed" msgstr "" -#: cps/helper.py:618 +#: cps/helper.py:613 msgid "Started" msgstr "" -#: cps/helper.py:620 +#: cps/helper.py:615 msgid "Finished" msgstr "" -#: cps/helper.py:622 +#: cps/helper.py:617 msgid "Unknown Status" msgstr "" -#: cps/helper.py:627 +#: cps/helper.py:622 msgid "E-mail: " msgstr "" -#: cps/helper.py:629 cps/helper.py:633 +#: cps/helper.py:624 cps/helper.py:628 msgid "Convert: " msgstr "" -#: cps/helper.py:631 +#: cps/helper.py:626 msgid "Upload: " msgstr "" -#: cps/helper.py:635 +#: cps/helper.py:630 msgid "Unknown Task: " msgstr "" -#: cps/oauth_bb.py:87 +#: cps/oauth_bb.py:91 #, python-format -msgid "Register with %s, " +msgid "Register with %(provider)s" msgstr "" -#: cps/oauth_bb.py:145 +#: cps/oauth_bb.py:149 msgid "Failed to log in with GitHub." msgstr "" -#: cps/oauth_bb.py:150 +#: cps/oauth_bb.py:154 msgid "Failed to fetch user info from GitHub." msgstr "" -#: cps/oauth_bb.py:161 +#: cps/oauth_bb.py:165 msgid "Failed to log in with Google." msgstr "" -#: cps/oauth_bb.py:166 +#: cps/oauth_bb.py:170 msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:265 +#: cps/oauth_bb.py:269 #, python-format msgid "Unlink to %(oauth)s success." msgstr "" -#: cps/oauth_bb.py:269 +#: cps/oauth_bb.py:273 #, python-format msgid "Unlink to %(oauth)s failed." msgstr "" -#: cps/oauth_bb.py:272 +#: cps/oauth_bb.py:276 #, python-format msgid "Not linked to %(oauth)s." msgstr "" -#: cps/oauth_bb.py:300 +#: cps/oauth_bb.py:304 msgid "GitHub Oauth error, please retry later." msgstr "" -#: cps/oauth_bb.py:319 +#: cps/oauth_bb.py:323 msgid "Google Oauth error, please retry later." msgstr "" -#: cps/shelf.py:40 cps/shelf.py:92 +#: cps/shelf.py:46 cps/shelf.py:98 msgid "Invalid shelf specified" msgstr "" -#: cps/shelf.py:47 +#: cps/shelf.py:53 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" msgstr "" -#: cps/shelf.py:55 +#: cps/shelf.py:61 msgid "You are not allowed to edit public shelves" msgstr "" -#: cps/shelf.py:64 +#: cps/shelf.py:70 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" msgstr "" -#: cps/shelf.py:78 +#: cps/shelf.py:84 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "" -#: cps/shelf.py:97 +#: cps/shelf.py:103 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "" -#: cps/shelf.py:102 +#: cps/shelf.py:108 msgid "User is not allowed to edit public shelves" msgstr "" -#: cps/shelf.py:120 +#: cps/shelf.py:126 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "" -#: cps/shelf.py:134 +#: cps/shelf.py:140 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "" -#: cps/shelf.py:136 +#: cps/shelf.py:142 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "" -#: cps/shelf.py:173 +#: cps/shelf.py:179 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "" -#: cps/shelf.py:179 +#: cps/shelf.py:185 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" -#: cps/shelf.py:200 cps/shelf.py:224 +#: cps/shelf.py:206 cps/shelf.py:230 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "" -#: cps/shelf.py:205 +#: cps/shelf.py:211 #, python-format msgid "Shelf %(title)s created" msgstr "" -#: cps/shelf.py:207 cps/shelf.py:235 +#: cps/shelf.py:213 cps/shelf.py:241 msgid "There was an error" msgstr "" -#: cps/shelf.py:208 cps/shelf.py:210 +#: cps/shelf.py:214 cps/shelf.py:216 msgid "create a shelf" msgstr "" -#: cps/shelf.py:233 +#: cps/shelf.py:239 #, python-format msgid "Shelf %(title)s changed" msgstr "" -#: cps/shelf.py:236 cps/shelf.py:238 +#: cps/shelf.py:242 cps/shelf.py:244 msgid "Edit a shelf" msgstr "" -#: cps/shelf.py:259 -#, python-format -msgid "successfully deleted shelf %(name)s" -msgstr "" - -#: cps/shelf.py:289 +#: cps/shelf.py:295 #, python-format msgid "Shelf: '%(name)s'" msgstr "" -#: cps/shelf.py:292 +#: cps/shelf.py:298 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "" -#: cps/shelf.py:324 +#: cps/shelf.py:330 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "" -#: cps/ub.py:111 +#: cps/ub.py:68 msgid "Recently Added" msgstr "" -#: cps/ub.py:113 +#: cps/ub.py:70 msgid "Show recent books" msgstr "" -#: cps/templates/index.xml:17 cps/ub.py:114 +#: cps/templates/index.xml:17 cps/ub.py:71 msgid "Hot Books" msgstr "" -#: cps/ub.py:115 +#: cps/ub.py:72 msgid "Show hot books" msgstr "" -#: cps/templates/index.xml:24 cps/ub.py:118 +#: cps/templates/index.xml:24 cps/ub.py:75 msgid "Best rated Books" msgstr "" -#: cps/ub.py:120 +#: cps/ub.py:77 msgid "Show best rated books" msgstr "" -#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:121 -#: cps/web.py:965 +#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:78 +#: cps/web.py:958 msgid "Read Books" msgstr "" -#: cps/ub.py:123 +#: cps/ub.py:80 msgid "Show read and unread" msgstr "" -#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:125 -#: cps/web.py:969 +#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:82 +#: cps/web.py:962 msgid "Unread Books" msgstr "" -#: cps/ub.py:127 +#: cps/ub.py:84 msgid "Show unread" msgstr "" -#: cps/ub.py:128 +#: cps/ub.py:85 msgid "Discover" msgstr "" -#: cps/ub.py:130 +#: cps/ub.py:87 msgid "Show random books" msgstr "" -#: cps/ub.py:131 +#: cps/ub.py:88 msgid "Categories" msgstr "" -#: cps/ub.py:133 +#: cps/ub.py:90 msgid "Show category selection" msgstr "" #: cps/templates/book_edit.html:71 cps/templates/search_form.html:53 -#: cps/ub.py:134 +#: cps/ub.py:91 msgid "Series" msgstr "" -#: cps/ub.py:136 +#: cps/ub.py:93 msgid "Show series selection" msgstr "" -#: cps/templates/index.xml:61 cps/ub.py:137 +#: cps/templates/index.xml:61 cps/ub.py:94 msgid "Authors" msgstr "" -#: cps/ub.py:139 +#: cps/ub.py:96 msgid "Show author selection" msgstr "" -#: cps/templates/index.xml:68 cps/ub.py:141 +#: cps/templates/index.xml:68 cps/ub.py:98 msgid "Publishers" msgstr "" -#: cps/ub.py:143 +#: cps/ub.py:100 msgid "Show publisher selection" msgstr "" -#: cps/templates/search_form.html:74 cps/ub.py:144 +#: cps/templates/search_form.html:74 cps/ub.py:101 msgid "Languages" msgstr "" -#: cps/ub.py:147 +#: cps/ub.py:104 msgid "Show language selection" msgstr "" -#: cps/ub.py:148 +#: cps/ub.py:105 msgid "Ratings" msgstr "" -#: cps/ub.py:150 +#: cps/ub.py:107 msgid "Show ratings selection" msgstr "" -#: cps/ub.py:151 +#: cps/ub.py:108 msgid "File formats" msgstr "" -#: cps/ub.py:153 +#: cps/ub.py:110 msgid "Show file formats selection" msgstr "" -#: cps/updater.py:257 cps/updater.py:364 cps/updater.py:377 +#: cps/updater.py:253 cps/updater.py:360 cps/updater.py:373 msgid "Unexpected data while reading update information" msgstr "" -#: cps/updater.py:264 cps/updater.py:370 +#: cps/updater.py:260 cps/updater.py:366 msgid "No update available. You already have the latest version installed" msgstr "" -#: cps/updater.py:290 cps/updater.py:422 +#: cps/updater.py:286 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "" -#: cps/updater.py:343 +#: cps/updater.py:339 msgid "Could not fetch update information" msgstr "" -#: cps/updater.py:357 +#: cps/updater.py:353 msgid "No release information available" msgstr "" -#: cps/updater.py:403 cps/updater.py:412 +#: cps/updater.py:406 cps/updater.py:415 #, python-format msgid "A new update is available. Click on the button below to update to version: %(version)s" msgstr "" -#: cps/web.py:457 +#: cps/updater.py:425 +msgid "Click on the button below to update to the latest stable version." +msgstr "" + +#: cps/web.py:445 msgid "Recently Added Books" msgstr "" -#: cps/web.py:484 +#: cps/web.py:473 msgid "Best rated books" msgstr "" -#: cps/templates/index.xml:38 cps/web.py:492 +#: cps/templates/index.xml:38 cps/web.py:481 msgid "Random Books" msgstr "" -#: cps/web.py:516 +#: cps/web.py:505 msgid "Books" msgstr "" -#: cps/web.py:543 +#: cps/web.py:532 msgid "Hot Books (most downloaded)" msgstr "" -#: cps/web.py:553 cps/web.py:1294 cps/web.py:1383 +#: cps/web.py:542 cps/web.py:1298 cps/web.py:1386 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "" -#: cps/web.py:580 +#: cps/web.py:559 +#, python-format +msgid "Author: %(name)s" +msgstr "" + +#: cps/web.py:571 #, python-format msgid "Publisher: %(name)s" msgstr "" -#: cps/web.py:591 +#: cps/web.py:582 #, python-format msgid "Series: %(serie)s" msgstr "" -#: cps/web.py:602 +#: cps/web.py:593 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:613 +#: cps/web.py:604 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:625 +#: cps/web.py:616 #, python-format msgid "Category: %(name)s" msgstr "" -#: cps/web.py:659 +#: cps/web.py:650 msgid "Publisher list" msgstr "" -#: cps/templates/index.xml:82 cps/web.py:675 +#: cps/templates/index.xml:82 cps/web.py:666 msgid "Series list" msgstr "" -#: cps/web.py:689 +#: cps/web.py:680 msgid "Ratings list" msgstr "" -#: cps/web.py:702 +#: cps/web.py:693 msgid "File formats list" msgstr "" -#: cps/web.py:730 +#: cps/web.py:721 msgid "Available languages" msgstr "" -#: cps/web.py:750 +#: cps/web.py:741 #, python-format msgid "Language: %(name)s" msgstr "" -#: cps/templates/index.xml:75 cps/web.py:764 +#: cps/templates/index.xml:75 cps/web.py:755 msgid "Category list" msgstr "" -#: cps/templates/layout.html:73 cps/web.py:777 +#: cps/templates/layout.html:73 cps/web.py:769 msgid "Tasks" msgstr "" -#: cps/web.py:841 +#: cps/web.py:834 msgid "Published after " msgstr "" -#: cps/web.py:848 +#: cps/web.py:841 msgid "Published before " msgstr "" -#: cps/web.py:862 +#: cps/web.py:855 #, python-format msgid "Rating <= %(rating)s" msgstr "" -#: cps/web.py:864 +#: cps/web.py:857 #, python-format msgid "Rating >= %(rating)s" msgstr "" -#: cps/web.py:924 cps/web.py:933 +#: cps/web.py:917 cps/web.py:926 msgid "search" msgstr "" -#: cps/web.py:1018 +#: cps/web.py:1012 msgid "Please configure the SMTP mail settings first..." msgstr "" -#: cps/web.py:1023 +#: cps/web.py:1017 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "" -#: cps/web.py:1027 +#: cps/web.py:1021 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "" -#: cps/web.py:1046 cps/web.py:1071 cps/web.py:1076 cps/web.py:1081 -#: cps/web.py:1085 +#: cps/web.py:1041 cps/web.py:1066 cps/web.py:1070 cps/web.py:1075 +#: cps/web.py:1079 msgid "register" msgstr "" -#: cps/web.py:1073 +#: cps/web.py:1068 msgid "Your e-mail is not allowed to register" msgstr "" -#: cps/web.py:1077 +#: cps/web.py:1071 msgid "Confirmation e-mail was send to your e-mail account." msgstr "" -#: cps/web.py:1080 +#: cps/web.py:1074 msgid "This username or e-mail address is already in use." msgstr "" -#: cps/web.py:1103 cps/web.py:1115 +#: cps/web.py:1089 +msgid "Cannot activate LDAP authentication" +msgstr "" + +#: cps/web.py:1098 cps/web.py:1212 #, python-format -msgid "You are now logged in as: '%(nickname)s'" +msgid "you are now logged in as: '%(nickname)s'" msgstr "" -#: cps/web.py:1108 cps/web.py:1120 +#: cps/web.py:1105 cps/web.py:1122 msgid "Wrong Username or Password" msgstr "" -#: cps/web.py:1111 +#: cps/web.py:1108 msgid "Could not login. LDAP server down, please contact your administrator" msgstr "" -#: cps/web.py:1124 cps/web.py:1146 +#: cps/web.py:1117 +#, python-format +msgid "You are now logged in as: '%(nickname)s'" +msgstr "" + +#: cps/web.py:1126 cps/web.py:1148 msgid "login" msgstr "" -#: cps/web.py:1158 cps/web.py:1189 +#: cps/web.py:1160 cps/web.py:1191 msgid "Token not found" msgstr "" -#: cps/web.py:1166 cps/web.py:1197 +#: cps/web.py:1168 cps/web.py:1199 msgid "Token has expired" msgstr "" -#: cps/web.py:1174 +#: cps/web.py:1176 msgid "Success! Please return to your device" msgstr "" -#: cps/web.py:1210 -#, python-format -msgid "you are now logged in as: '%(nickname)s'" -msgstr "" - -#: cps/web.py:1250 cps/web.py:1277 cps/web.py:1281 +#: cps/web.py:1253 cps/web.py:1280 cps/web.py:1284 #, python-format msgid "%(name)s's profile" msgstr "" -#: cps/web.py:1274 +#: cps/web.py:1277 msgid "Found an existing account for this e-mail address." msgstr "" -#: cps/web.py:1279 +#: cps/web.py:1282 msgid "Profile updated" msgstr "" -#: cps/web.py:1304 cps/web.py:1306 cps/web.py:1308 cps/web.py:1314 -#: cps/web.py:1318 +#: cps/web.py:1308 cps/web.py:1310 cps/web.py:1312 cps/web.py:1318 +#: cps/web.py:1322 msgid "Read a Book" msgstr "" -#: cps/web.py:1328 +#: cps/web.py:1332 msgid "Error opening eBook. File does not exist or file is not accessible." msgstr "" -#: cps/worker.py:308 +#: cps/worker.py:311 #, python-format msgid "Ebook-converter failed: %(error)s" msgstr "" -#: cps/worker.py:319 +#: cps/worker.py:322 #, python-format msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "" @@ -1055,53 +1065,57 @@ msgid "Administration" msgstr "" #: cps/templates/admin.html:109 -msgid "Reconnect to Calibre DB" +msgid "View Logfiles" msgstr "" #: cps/templates/admin.html:110 -msgid "Restart Calibre-Web" +msgid "Reconnect to Calibre DB" msgstr "" #: cps/templates/admin.html:111 +msgid "Restart Calibre-Web" +msgstr "" + +#: cps/templates/admin.html:112 msgid "Stop Calibre-Web" msgstr "" -#: cps/templates/admin.html:117 +#: cps/templates/admin.html:118 msgid "Update" msgstr "" -#: cps/templates/admin.html:121 +#: cps/templates/admin.html:122 msgid "Version" msgstr "" -#: cps/templates/admin.html:122 +#: cps/templates/admin.html:123 msgid "Details" msgstr "" -#: cps/templates/admin.html:128 +#: cps/templates/admin.html:129 msgid "Current version" msgstr "" -#: cps/templates/admin.html:134 +#: cps/templates/admin.html:135 msgid "Check for update" msgstr "" -#: cps/templates/admin.html:135 +#: cps/templates/admin.html:136 msgid "Perform Update" msgstr "" -#: cps/templates/admin.html:147 +#: cps/templates/admin.html:148 msgid "Do you really want to restart Calibre-Web?" msgstr "" -#: cps/templates/admin.html:152 cps/templates/admin.html:166 -#: cps/templates/admin.html:186 cps/templates/shelf.html:72 +#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:187 cps/templates/shelf.html:72 msgid "Ok" msgstr "" -#: cps/templates/admin.html:153 cps/templates/admin.html:167 +#: cps/templates/admin.html:154 cps/templates/admin.html:168 #: cps/templates/book_edit.html:174 cps/templates/book_edit.html:196 -#: cps/templates/config_edit.html:281 cps/templates/config_view_edit.html:147 +#: cps/templates/config_edit.html:331 cps/templates/config_view_edit.html:147 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 @@ -1109,11 +1123,11 @@ msgstr "" msgid "Back" msgstr "" -#: cps/templates/admin.html:165 +#: cps/templates/admin.html:166 msgid "Do you really want to stop Calibre-Web?" msgstr "" -#: cps/templates/admin.html:177 +#: cps/templates/admin.html:178 msgid "Updating, please do not reload page" msgstr "" @@ -1242,7 +1256,7 @@ msgstr "" msgid "Get metadata" msgstr "" -#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:279 +#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329 #: cps/templates/config_view_edit.html:146 cps/templates/login.html:20 #: cps/templates/search_form.html:150 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:130 @@ -1386,123 +1400,171 @@ msgstr "" msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "" -#: cps/templates/config_edit.html:140 -msgid "Feature Configuration" +#: cps/templates/config_edit.html:134 +msgid "Enable Access Log" +msgstr "" + +#: cps/templates/config_edit.html:137 +msgid "Location and name of access logfile (access.log for no entry)" msgstr "" #: cps/templates/config_edit.html:148 +msgid "Feature Configuration" +msgstr "" + +#: cps/templates/config_edit.html:156 msgid "Enable uploading" msgstr "" -#: cps/templates/config_edit.html:152 +#: cps/templates/config_edit.html:160 msgid "Enable anonymous browsing" msgstr "" -#: cps/templates/config_edit.html:156 +#: cps/templates/config_edit.html:164 msgid "Enable public registration" msgstr "" -#: cps/templates/config_edit.html:160 +#: cps/templates/config_edit.html:168 msgid "Enable remote login (\"magic link\")" msgstr "" -#: cps/templates/config_edit.html:165 +#: cps/templates/config_edit.html:173 msgid "Use" msgstr "" -#: cps/templates/config_edit.html:166 +#: cps/templates/config_edit.html:174 msgid "Obtain an API Key" msgstr "" -#: cps/templates/config_edit.html:170 +#: cps/templates/config_edit.html:178 msgid "Goodreads API Key" msgstr "" -#: cps/templates/config_edit.html:174 +#: cps/templates/config_edit.html:182 msgid "Goodreads API Secret" msgstr "" -#: cps/templates/config_edit.html:181 +#: cps/templates/config_edit.html:189 msgid "Login type" msgstr "" -#: cps/templates/config_edit.html:183 +#: cps/templates/config_edit.html:191 msgid "Use standard Authentication" msgstr "" -#: cps/templates/config_edit.html:185 +#: cps/templates/config_edit.html:193 msgid "Use LDAP Authentication" msgstr "" -#: cps/templates/config_edit.html:188 +#: cps/templates/config_edit.html:196 msgid "Use GitHub OAuth" msgstr "" -#: cps/templates/config_edit.html:189 +#: cps/templates/config_edit.html:197 msgid "Use Google OAuth" msgstr "" -#: cps/templates/config_edit.html:196 -msgid "LDAP Provider URL" +#: cps/templates/config_edit.html:204 +msgid "LDAP Server Host Name or IP Address" +msgstr "" + +#: cps/templates/config_edit.html:208 +msgid "LDAP Server Port" msgstr "" -#: cps/templates/config_edit.html:200 +#: cps/templates/config_edit.html:212 +msgid "LDAP schema (ldap or ldaps)" +msgstr "" + +#: cps/templates/config_edit.html:216 +msgid "LDAP Admin username" +msgstr "" + +#: cps/templates/config_edit.html:220 +msgid "LDAP Admin password" +msgstr "" + +#: cps/templates/config_edit.html:225 +msgid "LDAP Server use SSL" +msgstr "" + +#: cps/templates/config_edit.html:229 +msgid "LDAP Server use TLS" +msgstr "" + +#: cps/templates/config_edit.html:233 +msgid "LDAP Server Certificate" +msgstr "" + +#: cps/templates/config_edit.html:237 +msgid "LDAP SSL Certificate Path" +msgstr "" + +#: cps/templates/config_edit.html:242 msgid "LDAP Distinguished Name (DN)" msgstr "" -#: cps/templates/config_edit.html:208 +#: cps/templates/config_edit.html:246 +msgid "LDAP User object filter" +msgstr "" + +#: cps/templates/config_edit.html:251 +msgid "LDAP Server is OpenLDAP?" +msgstr "" + +#: cps/templates/config_edit.html:258 msgid "Obtain GitHub OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:211 +#: cps/templates/config_edit.html:261 msgid "GitHub OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:215 +#: cps/templates/config_edit.html:265 msgid "GitHub OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:221 +#: cps/templates/config_edit.html:271 msgid "Obtain Google OAuth Credential" msgstr "" -#: cps/templates/config_edit.html:224 +#: cps/templates/config_edit.html:274 msgid "Google OAuth Client Id" msgstr "" -#: cps/templates/config_edit.html:228 +#: cps/templates/config_edit.html:278 msgid "Google OAuth Client Secret" msgstr "" -#: cps/templates/config_edit.html:242 +#: cps/templates/config_edit.html:292 msgid "External binaries" msgstr "" -#: cps/templates/config_edit.html:250 +#: cps/templates/config_edit.html:300 msgid "No converter" msgstr "" -#: cps/templates/config_edit.html:252 +#: cps/templates/config_edit.html:302 msgid "Use Kindlegen" msgstr "" -#: cps/templates/config_edit.html:254 +#: cps/templates/config_edit.html:304 msgid "Use calibre's ebook converter" msgstr "" -#: cps/templates/config_edit.html:258 +#: cps/templates/config_edit.html:308 msgid "E-Book converter settings" msgstr "" -#: cps/templates/config_edit.html:262 +#: cps/templates/config_edit.html:312 msgid "Path to convertertool" msgstr "" -#: cps/templates/config_edit.html:268 +#: cps/templates/config_edit.html:318 msgid "Location of Unrar binary" msgstr "" -#: cps/templates/config_edit.html:284 cps/templates/layout.html:84 +#: cps/templates/config_edit.html:334 cps/templates/layout.html:84 #: cps/templates/login.html:4 msgid "Login" msgstr "" @@ -1716,7 +1778,7 @@ msgstr "" msgid "Discover (Random Books)" msgstr "" -#: cps/templates/index.html:65 +#: cps/templates/index.html:64 msgid "Group by series" msgstr "" @@ -1859,6 +1921,14 @@ msgstr "" msgid "Log in with magic link" msgstr "" +#: cps/templates/logviewer.html:5 +msgid "Show Calibre-Web log" +msgstr "" + +#: cps/templates/logviewer.html:8 +msgid "Show access log" +msgstr "" + #: cps/templates/osd.xml:5 msgid "Calibre-Web ebook catalog" msgstr "" diff --git a/test/Calibre-Web TestSummary.html b/test/Calibre-Web TestSummary.html index 571c1fb1..b1ef2283 100644 --- a/test/Calibre-Web TestSummary.html +++ b/test/Calibre-Web TestSummary.html @@ -30,15 +30,15 @@
-

Start Time: 2019-05-12 18:51:22.511134

+

Start Time: 2019-06-22 21:54:40.897700

-

Stop Time: 2019-05-12 19:42:21.577115

+

Stop Time: 2019-06-22 22:37:09.413469

-

Duration: 0:50:59.065981

+

Duration: 0:42:28.515769

@@ -574,8 +574,8 @@ ret['edit_enable'] = bool(tree.find("//*[@class='glyphicon glyphicon-edit']")) /home/matthias/Entwicklung/calibre-web-test/test/ui_helper.py:709: FutureWarning: The behavior of this method will change in future versions. Use specific 'len(elem)' or 'elem is not None' test instead. ret['read']= bool(tree.find("//*[@id='have_read_cb']")) -Incomming connection 127.0.0.1:45556 -127.0.0.1:45556 Timeouted +Incomming connection 127.0.0.1:45524 +127.0.0.1:45524 Timeouted
@@ -598,8 +598,8 @@ Incomming connection 127.0.0.1:45556 aria-hidden="true">×
-
pt3.2: Incomming connection 127.0.0.1:45562
-127.0.0.1:45562 Timeouted
+
pt3.2: Incomming connection 127.0.0.1:45526
+127.0.0.1:45526 Timeouted
@@ -622,17 +622,17 @@ Incomming connection 127.0.0.1:45556 aria-hidden="true">×
-
pt3.3: Incomming connection 127.0.0.1:45564
+                
pt3.3: Incomming connection 127.0.0.1:45528
 Received: EHLO
 Received: AUTH
 User: name@host.com, Password: 10234
 Received: MAIL
 Received: RCPT
 Received: DATA
-('Receiving message from:', ('127.0.0.1', 45564))
-('Message addressed from:', '<name@host.com> size=507')
+('Receiving message from:', ('127.0.0.1', 45528))
+('Message addressed from:', '<name@host.com> size=508')
 ('Message addressed to  :', ['a1@b.com'])
-('Message length        :', 506)
+('Message length        :', 507)
 Received: QUIT
@@ -656,17 +656,17 @@ Received: QUIT aria-hidden="true">×
-
pt3.4: Incomming connection 127.0.0.1:45566
+                
pt3.4: Incomming connection 127.0.0.1:45530
 Received: EHLO
 Received: AUTH
 User: name@host.com, Password: 10234
 Received: MAIL
 Received: RCPT
 Received: DATA
-('Receiving message from:', ('127.0.0.1', 45566))
-('Message addressed from:', '<name@host.com> size=30377')
+('Receiving message from:', ('127.0.0.1', 45530))
+('Message addressed from:', '<name@host.com> size=30379')
 ('Message addressed to  :', ['a1@b.com'])
-('Message length        :', 30376)
+('Message length        :', 30378)
 Received: QUIT
@@ -701,8 +701,8 @@ Received: QUIT aria-hidden="true">×
-
pt4.1: Incomming connection 127.0.0.1:45674
-127.0.0.1:45674 Timeouted
+
pt4.1: Incomming connection 127.0.0.1:45622
+127.0.0.1:45622 Timeouted
@@ -725,8 +725,8 @@ Received: QUIT aria-hidden="true">×
-
pt4.2: Incomming connection 127.0.0.1:45680
-127.0.0.1:45680 Timeouted
+
pt4.2: Incomming connection 127.0.0.1:45624
+127.0.0.1:45624 Timeouted
@@ -749,14 +749,14 @@ Received: QUIT aria-hidden="true">×
-
pt4.3: Incomming connection 127.0.0.1:45682
+                
pt4.3: Incomming connection 127.0.0.1:45626
 Received: EHLO
 Received: AUTH
 User: name@host.com, Password: 10234
 Received: MAIL
 Received: RCPT
 Received: DATA
-('Receiving message from:', ('127.0.0.1', 45682))
+('Receiving message from:', ('127.0.0.1', 45626))
 ('Message addressed from:', '<name@host.com> size=523')
 ('Message addressed to  :', ['a1@b.com'])
 ('Message length        :', 506)
@@ -783,14 +783,14 @@ Received: QUIT
aria-hidden="true">×
-
pt4.4: Incomming connection 127.0.0.1:45684
+                
pt4.4: Incomming connection 127.0.0.1:45628
 Received: EHLO
 Received: AUTH
 User: name@host.com, Password: 10234
 Received: MAIL
 Received: RCPT
 Received: DATA
-('Receiving message from:', ('127.0.0.1', 45684))
+('Receiving message from:', ('127.0.0.1', 45628))
 ('Message addressed from:', '<name@host.com> size=30788')
 ('Message addressed to  :', ['a1@b.com'])
 ('Message length        :', 30378)
@@ -801,78 +801,118 @@ Received: QUIT
- - test_logging.test_logging_Python27 - 5 + + unittest.suite._ErrorHolder + 3 + 0 + 0 3 - 1 0 - 1 - Detail + Detail - + -
test_debug_log
+
test_logging_Python27)
- PASS - - - -
test_failed_login
+ +
+ ERROR +
+ + + - PASS - + -
test_failed_register
+
test_anonymous_Python27)
- SKIP + ERROR
-
- test_anonymous.test_anonymous_Python27 + test_anonymous.test_anonymous_Python36 10 10 0 @@ -1545,834 +1585,3800 @@ AssertionError: logfile config value is not empty after reseting to default PASS - - test_anonymous.test_anonymous_Python36 - 10 - 10 - 0 - 0 - 0 - - Detail - - - - -
test_guest_about
- - PASS - - - -
test_guest_change_visibility_category
- - PASS - - - -
test_guest_change_visibility_hot
- - PASS - - - -
test_guest_change_visibility_language
- - PASS - - - -
test_guest_change_visibility_publisher
- - PASS - - - -
test_guest_change_visibility_rated
- - PASS - - - -
test_guest_change_visibility_series
- - PASS - - - -
test_guest_random_books_available
- - PASS - - - -
test_guest_visibility_read
- - PASS - - - -
test_guest_visibility_sidebar
- - PASS - - + test_user_template.test_user_template_Python27 - 14 - 11 + 25 0 0 + 22 3 - Detail + Detail - +
test_author_user_template
- PASS - - - -
test_best_user_template
- - PASS - - - -
test_category_user_template
- - PASS - - - -
test_detail_random_user_template
- - PASS - - - -
test_hot_user_template
- - PASS - - - -
test_language_user_template
- - PASS - - - -
test_limit_book_languages
-
- SKIP + ERROR
-