diff --git a/README.md b/README.md index 1141288f..4ee209f8 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ Optionally, to enable on-the-fly conversion from one ebook format to another whe [Download and install](https://calibre-ebook.com/download) the Calibre desktop program for your platform and enter the folder including program name (normally /opt/calibre/ebook-convert, or C:\Program Files\calibre\ebook-convert.exe) in the field "calibre's converter tool" on the setup page. -[Download](https://github.com/geek1011/kepubify/releases/tag/v3.1.2) Kepubify tool for your platform and place the binary starting with `kepubify` in Linux: `\opt\kepubify` Windows: `C:\Program Files\kepubify`. +[Download](https://github.com/pgaskin/kepubify/releases/latest) Kepubify tool for your platform and place the binary starting with `kepubify` in Linux: `\opt\kepubify` Windows: `C:\Program Files\kepubify`. ## Docker Images diff --git a/cps/about.py b/cps/about.py index 676d91db..f9c58738 100644 --- a/cps/about.py +++ b/cps/about.py @@ -82,6 +82,12 @@ _VERSIONS = OrderedDict( _VERSIONS.update(uploader.get_versions()) +def collect_stats(): + _VERSIONS['ebook converter'] = _(converter.get_calibre_version()) + _VERSIONS['unrar'] = _(converter.get_unrar_version()) + _VERSIONS['kepubify'] = _(converter.get_kepubify_version()) + return _VERSIONS + @about.route("/stats") @flask_login.login_required def stats(): @@ -89,8 +95,7 @@ def stats(): authors = calibre_db.session.query(db.Authors).count() categorys = calibre_db.session.query(db.Tags).count() series = calibre_db.session.query(db.Series).count() - _VERSIONS['ebook converter'] = _(converter.get_calibre_version()) - _VERSIONS['unrar'] = _(converter.get_unrar_version()) - _VERSIONS['kepubify'] = _(converter.get_kepubify_version()) - return render_title_template('stats.html', bookcounter=counter, authorcounter=authors, versions=_VERSIONS, + return render_title_template('stats.html', bookcounter=counter, authorcounter=authors, versions=collect_stats(), categorycounter=categorys, seriecounter=series, title=_(u"Statistics"), page="stat") + + diff --git a/cps/admin.py b/cps/admin.py index c0d1f39c..fe2769e2 100644 --- a/cps/admin.py +++ b/cps/admin.py @@ -41,7 +41,8 @@ from . import constants, logger, helper, services from . import db, calibre_db, ub, web_server, get_locale, config, updater_thread, babel, gdriveutils from .helper import check_valid_domain, send_test_mail, reset_password, generate_password_hash from .gdriveutils import is_gdrive_ready, gdrive_support -from .web import admin_required, render_title_template, before_request, unconfigured, login_required_if_no_ano +from .web import admin_required, render_title_template, before_request, unconfigured +from . import debug_info log = logger.create() @@ -131,8 +132,9 @@ def admin(): allUser = ub.session.query(ub.User).all() email_settings = config.get_mail_settings() + kobo_support = feature_support['kobo'] and config.config_kobo_sync return render_title_template("admin.html", allUser=allUser, email=email_settings, config=config, commit=commit, - feature_support=feature_support, + feature_support=feature_support, kobo_support=kobo_support, title=_(u"Admin page"), page="admin") @@ -217,7 +219,8 @@ def edit_domain(allow): @admin_required def add_domain(allow): domain_name = request.form.to_dict()['domainname'].replace('*', '%').replace('?', '_').lower() - check = ub.session.query(ub.Registration).filter(ub.Registration.domain == domain_name).filter(ub.Registration.allow == allow).first() + check = ub.session.query(ub.Registration).filter(ub.Registration.domain == domain_name)\ + .filter(ub.Registration.allow == allow).first() if not check: new_domain = ub.Registration(domain=domain_name, allow=allow) ub.session.add(new_domain) @@ -547,12 +550,14 @@ def _configuration_logfile_helper(to_save, gdriveError): reboot_required |= _config_int(to_save, "config_log_level") reboot_required |= _config_string(to_save, "config_logfile") if not logger.is_valid_logfile(config.config_logfile): - return reboot_required, _configuration_result(_('Logfile Location is not Valid, Please Enter Correct Path'), gdriveError) + return reboot_required, \ + _configuration_result(_('Logfile Location is not Valid, Please Enter Correct Path'), gdriveError) reboot_required |= _config_checkbox_int(to_save, "config_access_log") reboot_required |= _config_string(to_save, "config_access_logfile") if not logger.is_valid_logfile(config.config_access_logfile): - return reboot_required, _configuration_result(_('Access Logfile Location is not Valid, Please Enter Correct Path'), gdriveError) + return reboot_required, \ + _configuration_result(_('Access Logfile Location is not Valid, Please Enter Correct Path'), gdriveError) return reboot_required, None def _configuration_ldap_helper(to_save, gdriveError): @@ -584,28 +589,32 @@ def _configuration_ldap_helper(to_save, gdriveError): if config.config_ldap_authentication > constants.LDAP_AUTH_ANONYMOUS: if config.config_ldap_authentication > constants.LDAP_AUTH_UNAUTHENTICATE: if not config.config_ldap_serv_username or not bool(config.config_ldap_serv_password): - return reboot_required, _configuration_result('Please Enter a LDAP Service Account and Password', gdriveError) + return reboot_required, _configuration_result('Please Enter a LDAP Service Account and Password', + gdriveError) else: if not config.config_ldap_serv_username: return reboot_required, _configuration_result('Please Enter a LDAP Service Account', gdriveError) if config.config_ldap_group_object_filter: if config.config_ldap_group_object_filter.count("%s") != 1: - return reboot_required, _configuration_result(_('LDAP Group Object Filter Needs to Have One "%s" Format Identifier'), + return reboot_required, \ + _configuration_result(_('LDAP Group Object Filter Needs to Have One "%s" Format Identifier'), gdriveError) if config.config_ldap_group_object_filter.count("(") != config.config_ldap_group_object_filter.count(")"): return reboot_required, _configuration_result(_('LDAP Group Object Filter Has Unmatched Parenthesis'), gdriveError) if config.config_ldap_user_object.count("%s") != 1: - return reboot_required, _configuration_result(_('LDAP User Object Filter needs to Have One "%s" Format Identifier'), + return reboot_required, \ + _configuration_result(_('LDAP User Object Filter needs to Have One "%s" Format Identifier'), gdriveError) if config.config_ldap_user_object.count("(") != config.config_ldap_user_object.count(")"): return reboot_required, _configuration_result(_('LDAP User Object Filter Has Unmatched Parenthesis'), gdriveError) if config.config_ldap_cert_path and not os.path.isfile(config.config_ldap_cert_path): - return reboot_required, _configuration_result(_('LDAP Certificate Location is not Valid, Please Enter Correct Path'), + return reboot_required, \ + _configuration_result(_('LDAP Certificate Location is not Valid, Please Enter Correct Path'), gdriveError) return reboot_required, None @@ -616,7 +625,10 @@ def _configuration_update_helper(): to_save = request.form.to_dict() gdriveError = None - to_save['config_calibre_dir'] = re.sub('[\\/]metadata\.db$', '', to_save['config_calibre_dir'], flags=re.IGNORECASE) + to_save['config_calibre_dir'] = re.sub('[\\/]metadata\.db$', + '', + to_save['config_calibre_dir'], + flags=re.IGNORECASE) try: db_change |= _config_string(to_save, "config_calibre_dir") @@ -1027,6 +1039,27 @@ def send_logfile(logtype): else: return "" +@admi.route("/admin/logdownload/") +@login_required +@admin_required +def download_log(logtype): + if logtype == 0: + file_name = logger.get_logfile(config.config_logfile) + elif logtype == 1: + file_name = logger.get_accesslogfile(config.config_access_logfile) + else: + abort(404) + if logger.is_valid_logfile(file_name): + return debug_info.assemble_logfiles(file_name) + abort(404) + + +@admi.route("/admin/debug") +@login_required +@admin_required +def download_debug(): + return debug_info.send_debug() + @admi.route("/get_update_status", methods=['GET']) @login_required diff --git a/cps/comic.py b/cps/comic.py index 1bb23622..c228454c 100644 --- a/cps/comic.py +++ b/cps/comic.py @@ -62,14 +62,12 @@ def _cover_processing(tmp_file_name, img, extension): im.save(tmp_bytesio, format='JPEG') img = tmp_bytesio.getvalue() - prefix = os.path.dirname(tmp_file_name) - if img: - tmp_cover_name = prefix + '/cover.jpg' - image = open(tmp_cover_name, 'wb') - image.write(img) - image.close() - else: - tmp_cover_name = None + if not img: + return None + + tmp_cover_name = os.path.join(os.path.dirname(tmp_file_name), 'cover.jpg') + with open(tmp_cover_name, 'wb') as f: + f.write(img) return tmp_cover_name diff --git a/cps/debug_info.py b/cps/debug_info.py new file mode 100644 index 00000000..75ef3bb8 --- /dev/null +++ b/cps/debug_info.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- + +# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) +# Copyright (C) 2012-2019 cervinko, idalin, SiphonSquirrel, ouzklcn, akushsky, +# OzzieIsaacs, bodybybuddha, jkrehm, matthazinski, janeczku +# +# 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 . + +import shutil +import glob +import zipfile +import json +import io +import os + +from flask import send_file + +from . import logger, config +from .about import collect_stats + +log = logger.create() + +def assemble_logfiles(file_name): + log_list = glob.glob(file_name + '*') + wfd = io.StringIO() + for f in log_list: + with open(f, 'r') as fd: + shutil.copyfileobj(fd, wfd) + return send_file(wfd, + as_attachment=True, + attachment_filename=os.path.basename(file_name)) + +def send_debug(): + file_list = glob.glob(logger.get_logfile(config.config_logfile) + '*') + file_list.extend(glob.glob(logger.get_accesslogfile(config.config_access_logfile) + '*')) + memory_zip = io.BytesIO() + with zipfile.ZipFile(memory_zip, 'w', compression=zipfile.ZIP_DEFLATED) as zf: + zf.writestr('libs.txt', json.dumps(collect_stats())) + for fp in file_list: + zf.write(fp, os.path.basename(fp)) + memory_zip.seek(0) + return send_file(memory_zip, + as_attachment=True, + attachment_filename="Calibre-Web-debug-pack.zip") diff --git a/cps/editbooks.py b/cps/editbooks.py index f2e52af4..105995f6 100644 --- a/cps/editbooks.py +++ b/cps/editbooks.py @@ -405,7 +405,7 @@ def edit_book_languages(languages, book, upload=False): # the book it's language is set to the filter language if input_l[0] != current_user.filter_language() and current_user.filter_language() != "all": input_l[0] = calibre_db.session.query(db.Languages). \ - filter(db.Languages.lang_code == current_user.filter_language()).first() + filter(db.Languages.lang_code == current_user.filter_language()).first().lang_code # Remove duplicates input_l = helper.uniq(input_l) return modify_database_object(input_l, book.languages, db.Languages, calibre_db.session, 'languages') diff --git a/cps/epub.py b/cps/epub.py index 779c1ca2..583e4eda 100644 --- a/cps/epub.py +++ b/cps/epub.py @@ -66,11 +66,11 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension): tmp = p.xpath('dc:%s/text()' % s, namespaces=ns) if len(tmp) > 0: if s == 'creator': - epub_metadata[s] = ' & '.join(split_authors(p.xpath('dc:%s/text()' % s, namespaces=ns))) + epub_metadata[s] = ' & '.join(split_authors(tmp)) elif s == 'subject': - epub_metadata[s] = ', '.join(p.xpath('dc:%s/text()' % s, namespaces=ns)) + epub_metadata[s] = ', '.join(tmp) else: - epub_metadata[s] = p.xpath('dc:%s/text()' % s, namespaces=ns)[0] + epub_metadata[s] = tmp[0] else: epub_metadata[s] = u'Unknown' diff --git a/cps/helper.py b/cps/helper.py index 8561a95a..9845df97 100644 --- a/cps/helper.py +++ b/cps/helper.py @@ -24,7 +24,10 @@ import io import mimetypes import re import shutil +import glob import time +import zipfile +import json import unicodedata from datetime import datetime, timedelta from tempfile import gettempdir @@ -32,14 +35,12 @@ from tempfile import gettempdir import requests from babel.dates import format_datetime from babel.units import format_unit -from flask import send_from_directory, make_response, redirect, abort, url_for +from flask import send_from_directory, make_response, redirect, abort, url_for, send_file from flask_babel import gettext as _ from flask_login import current_user from sqlalchemy.sql.expression import true, false, and_, text from werkzeug.datastructures import Headers from werkzeug.security import generate_password_hash -from . import calibre_db -from .tasks.convert import TaskConvert try: from urllib.parse import quote @@ -59,6 +60,8 @@ try: except ImportError: use_PIL = False +from . import calibre_db +from .tasks.convert import TaskConvert from . import logger, config, get_locale, db, ub from . import gdriveutils as gd from .constants import STATIC_DIR as _STATIC_DIR @@ -824,3 +827,4 @@ def get_download_link(book_id, book_format, client): return do_download_file(book, book_format, client, data1, headers) else: abort(404) + diff --git a/cps/kobo.py b/cps/kobo.py index 7a05ea5d..2acd925d 100644 --- a/cps/kobo.py +++ b/cps/kobo.py @@ -119,7 +119,11 @@ def redirect_or_proxy_request(): def convert_to_kobo_timestamp_string(timestamp): - return timestamp.strftime("%Y-%m-%dT%H:%M:%SZ") + try: + return timestamp.strftime("%Y-%m-%dT%H:%M:%SZ") + except AttributeError as exc: + log.debug("Timestamp not valid: {}".format(exc)) + return datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ") @kobo.route("/v1/library/sync") diff --git a/cps/static/css/caliBlur.css b/cps/static/css/caliBlur.css index 92cf466e..490f652f 100644 --- a/cps/static/css/caliBlur.css +++ b/cps/static/css/caliBlur.css @@ -637,18 +637,18 @@ div[aria-label="Edit/Delete book"] > .btn > span:hover { color: var(--color-primary) } -.book { +/* .book { width: 225px; max-width: 225px; position: relative !important; - left: auto !important; + left: auto !important; top: auto !important; -webkit-transform: none !important; -ms-transform: none !important; transform: none !important; min-width: 225px; display: block -} +} */ #infscr-loading img, body > div.container-fluid > div > div.col-sm-10 > div.discover > div.isotope:after, body > div.container-fluid > div > div.col-sm-10 > div.discover > div.isotope:before { display: none diff --git a/cps/static/js/get_meta.js b/cps/static/js/get_meta.js index e27608ab..b14283fe 100644 --- a/cps/static/js/get_meta.js +++ b/cps/static/js/get_meta.js @@ -253,7 +253,7 @@ $(function () { } function dbSearchBook (title) { - var apikey = "0df993c66c0c636e29ecbb5344252a4a"; + var apikey = "054022eaeae0b00e0fc068c0c0a2102a"; $.ajax({ url: douban + dbSearch + "?apikey=" + apikey + "&q=" + title + "&fields=all&count=10", type: "GET", diff --git a/cps/static/js/libs/epub.min.js b/cps/static/js/libs/epub.min.js index 143f24af..60719ba5 100644 --- a/cps/static/js/libs/epub.min.js +++ b/cps/static/js/libs/epub.min.js @@ -1 +1 @@ -(function(e,t){'object'==typeof exports&&'object'==typeof module?module.exports=t(require('xmldom'),function(){try{return require('jszip')}catch(t){}}()):'function'==typeof define&&define.amd?define(['xmldom','jszip'],t):'object'==typeof exports?exports.ePub=t(require('xmldom'),function(){try{return require('jszip')}catch(t){}}()):e.ePub=t(e.xmldom,e.jszip)})(this,function(e,t){var n=String.prototype,a=Math.ceil,i=Math.round,o=Math.max,s=Math.floor;return function(e){function t(a){if(n[a])return n[a].exports;var i=n[a]={i:a,l:!1,exports:{}};return e[a].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,a){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var n=e&&e.__esModule?function(){return e['default']}:function(){return e};return t.d(n,'a',n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p='/dist/',t(t.s=25)}([function(e,t,n){'use strict';function a(e,t){if(!(e instanceof t))throw new TypeError('Cannot call a class as a function')}function i(){var e=new Date().getTime(),t='xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(t){var n=0|(e+16*Math.random())%16;return e=s(e/16),('x'==t?n:8|7&n).toString(16)});return t}function r(e){return!isNaN(parseFloat(e))&&isFinite(e)}function l(e,t,n,a,i){var o=a||0,s=i||t.length,r=parseInt(o+(s-o)/2),d;return(n||(n=function(e,t){return e>t?1:e=s-o)?r:(d=n(t[r],e),1==s-o?0<=d?r:r+1:0===d?r:-1===d?l(e,t,n,r,s):l(e,t,n,o,r))}function d(e,t,n,a,i){var o=a||0,s=i||t.length,r=parseInt(o+(s-o)/2),l;return(n||(n=function(e,t){return e>t?1:e=s-o)?-1:(l=n(t[r],e),1==s-o?0===l?r:-1:0===l?r:-1===l?d(e,t,n,r,s):d(e,t,n,o,r))}function u(e,t){for(var n=e.parentNode,a=n.childNodes,o=-1,s=0,i;sn.spinePos)return 1;if(t.spinePoso[d].index)return 1;if(a[d].indexr.offset?1:s.offset')}},{key:'textNodes',value:function(e,t){return Array.prototype.slice.call(e.childNodes).filter(function(e){return e.nodeType===l||t&&e.classList.contains(t)})}},{key:'walkToNode',value:function(e,t,n){var a=t||document,o=a.documentElement,r=e.length,l,d,u;for(u=0;uc)t-=c;else{i=u.nodeType===r?u.childNodes[0]:u;break}}return{container:i,offset:t}}},{key:'toRange',value:function(e,t){var n=e||document,a=this,i=!!t&&null!=n.querySelector('.'+t),o,r,l,d,u,c,p,h;if(o='undefined'==typeof n.createRange?new s.RangeObject:n.createRange(),a.range?(r=a.start,c=a.path.steps.concat(r.steps),d=this.findNode(c,n,i?t:null),l=a.end,p=a.path.steps.concat(l.steps),u=this.findNode(p,n,i?t:null)):(r=a.path,c=a.path.steps,d=this.findNode(a.path.steps,n,i?t:null)),d)try{null==r.terminal.offset?o.setStart(d,0):o.setStart(d,r.terminal.offset)}catch(a){h=this.fixMiss(c,r.terminal.offset,n,i?t:null),o.setStart(h.container,h.offset)}else return console.log('No startContainer found for',this.toString()),null;if(u)try{null==l.terminal.offset?o.setEnd(u,0):o.setEnd(u,l.terminal.offset)}catch(s){h=this.fixMiss(p,a.end.terminal.offset,n,i?t:null),o.setEnd(h.container,h.offset)}return o}},{key:'isCfiString',value:function(e){return'string'==typeof e&&0===e.indexOf('epubcfi(')&&')'===e[e.length-1]}},{key:'generateChapterComponent',value:function(e,t,n){var a=parseInt(t),i='/'+2*(e+1)+'/';return i+=2*(a+1),n&&(i+='['+n+']'),i}},{key:'collapse',value:function(e){this.range&&(this.range=!1,e?(this.path.steps=this.path.steps.concat(this.start.steps),this.path.terminal=this.start.terminal):(this.path.steps=this.path.steps.concat(this.end.steps),this.path.terminal=this.end.terminal))}}]),e}();t.default=d,e.exports=t['default']},function(e,t,n){'use strict';var a=n(27),o=n(41),s=Function.prototype.apply,r=Function.prototype.call,i=Object.create,l=Object.defineProperty,d=Object.defineProperties,u=Object.prototype.hasOwnProperty,c={configurable:!0,enumerable:!1,writable:!0},p,h,g,f,m,y,v;p=function(e,t){var n;return o(t),u.call(this,'__ee__')?n=this.__ee__:(n=c.value=i(null),l(this,'__ee__',c),c.value=null),n[e]?'object'==typeof n[e]?n[e].push(t):n[e]=[n[e],t]:n[e]=t,this},h=function(e,t){var n,a;return o(t),a=this,p.call(this,e,n=function(){g.call(a,e,n),s.call(t,this,arguments)}),n.__eeOnceListener__=t,this},g=function(e,t){var n,a,s,r;if(o(t),!u.call(this,'__ee__'))return this;if(n=this.__ee__,!n[e])return this;if(a=n[e],'object'==typeof a)for(r=0;s=a[r];++r)(s===t||s.__eeOnceListener__===t)&&(2===a.length?n[e]=a[r?0:1]:a.splice(r,1));else(a===t||a.__eeOnceListener__===t)&&delete n[e];return this},f=function(e){var t,n,a,i,o;if(u.call(this,'__ee__')&&(i=this.__ee__[e],!!i))if('object'==typeof i){for(n=arguments.length,o=Array(n-1),t=1;tn.length||46!==n.charCodeAt(n.length-1)||46!==n.charCodeAt(n.length-2))if(2c){if(47===n.charCodeAt(l+h))return n.slice(l+h+1);if(0==h)return n.slice(l+h)}else r>c&&(47===e.charCodeAt(a+h)?p=h:0==h&&(p=0));break}var i=e.charCodeAt(a+h),g=n.charCodeAt(l+h);if(i!==g)break;else 47===i&&(p=h)}var f='';for(h=a+p+1;h<=o;++h)(h===o||47===e.charCodeAt(h))&&(f+=0===f.length?'..':'/..');return 0=s;--c){if(a=e.charCodeAt(c),47===a){if(!u){l=c+1;break}continue}-1==d&&(u=!1,d=c+1),46===a?-1==r?r=c:1!=i&&(i=1):-1!=r&&(i=-1)}return-1==r||-1==d||0==i||1==i&&r==d-1&&r==l+1?-1!=d&&(0==l&&o?n.base=n.name=e.slice(1,d):n.base=n.name=e.slice(l,d)):(0==l&&o?(n.name=e.slice(1,r),n.base=e.slice(1,d)):(n.name=e.slice(l,r),n.base=e.slice(l,d)),n.ext=e.slice(r,d)),0this.container.scrollWidth&&(t=this.container.scrollWidth-this.layout.delta)):n=e.top,this.scrollTo(t,n,!0)}},{key:'add',value:function(e){var t=this,n=this.createView(e);return this.views.append(n),n.onDisplayed=this.afterDisplayed.bind(this),n.onResize=this.afterResized.bind(this),n.on(b.EVENTS.VIEWS.AXIS,function(e){t.updateAxis(e)}),n.display(this.request)}},{key:'append',value:function(e){var t=this,n=this.createView(e);return this.views.append(n),n.onDisplayed=this.afterDisplayed.bind(this),n.onResize=this.afterResized.bind(this),n.on(b.EVENTS.VIEWS.AXIS,function(e){t.updateAxis(e)}),n.display(this.request)}},{key:'prepend',value:function(e){var t=this,n=this.createView(e);return n.on(b.EVENTS.VIEWS.RESIZED,function(e){t.counter(e)}),this.views.prepend(n),n.onDisplayed=this.afterDisplayed.bind(this),n.onResize=this.afterResized.bind(this),n.on(b.EVENTS.VIEWS.AXIS,function(e){t.updateAxis(e)}),n.display(this.request)}},{key:'counter',value:function(e){'vertical'===this.settings.axis?this.scrollBy(0,e.heightDelta,!0):this.scrollBy(e.widthDelta,0,!0)}},{key:'next',value:function(){var e=this.settings.direction,t,n;if(this.views.length){if(this.isPaginated&&'horizontal'===this.settings.axis&&(!e||'ltr'===e))this.scrollLeft=this.container.scrollLeft,n=this.container.scrollLeft+this.container.offsetWidth+this.layout.delta,n<=this.container.scrollWidth?this.scrollBy(this.layout.delta,0,!0):t=this.views.last().section.next();else if(this.isPaginated&&'horizontal'===this.settings.axis&&'rtl'===e)this.scrollLeft=this.container.scrollLeft,n=this.container.scrollLeft,0p&&(g=p,r=g-h);var f=e.layout.count(p,o).pages,m=a(h/o),y=[],v=a(g/o);y=[];for(var b=m,i;b<=v;b++)i=b+1,y.push(i);var k=e.mapping.page(t.contents,t.section.cfiBase,h,g);return{index:d,href:u,pages:y,totalPages:f,mapping:k}});return i}},{key:'paginatedLocation',value:function(){var e=this,t=this.visible(),n=this.container.getBoundingClientRect(),a=0,o=0;this.fullsize&&(a=window.scrollX);var i=t.map(function(t){var r=t.section,l=r.index,d=r.href,u=t.offset().left,c=t.position().left,p=t.width(),h=a+n.left-c+o,g=h+e.layout.width-o,f=e.mapping.page(t.contents,t.section.cfiBase,h,g),m=e.layout.count(p).pages,y=s(h/e.layout.pageWidth),v=[],b=s(g/e.layout.pageWidth);if(0>y&&(y=0,++b),'rtl'===e.settings.direction){var k=y;y=m-b,b=m-k}for(var x=y+1,i;x<=b;x++)i=x,v.push(i);return{index:l,href:d,pages:v,totalPages:m,mapping:f}});return i}},{key:'isVisible',value:function(e,t,n,a){var i=e.position(),o=a||this.bounds();return'horizontal'===this.settings.axis&&i.right>o.left-t&&i.lefto.top-t&&i.top=a.end.displayed.total&&(a.atEnd=!0),t.index===this.book.spine.first().index&&1===a.start.displayed.page&&(a.atStart=!0),a}},{key:'destroy',value:function(){this.manager&&this.manager.destroy(),this.book=void 0}},{key:'passEvents',value:function(t){var n=this,e=x.default.listenedEvents;e.forEach(function(a){t.on(a,function(e){return n.triggerViewEvent(e,t)})}),t.on(w.EVENTS.CONTENTS.SELECTED,function(a){return n.triggerSelectedEvent(a,t)})}},{key:'triggerViewEvent',value:function(t,e){this.emit(t.type,t,e)}},{key:'triggerSelectedEvent',value:function(e,t){this.emit(w.EVENTS.RENDITION.SELECTED,e,t)}},{key:'triggerMarkEvent',value:function(e,t,n){this.emit(w.EVENTS.RENDITION.MARK_CLICKED,e,t,n)}},{key:'getRange',value:function(e,t){var n=new h.default(e),a=this.manager.visible().filter(function(e){if(n.spinePos===e.index)return!0});if(a.length)return a[0].contents.range(n,t)}},{key:'adjustImages',value:function(e){return'pre-paginated'===this._layout.name?new Promise(function(e){e()}):(e.addStylesheetRules({img:{"max-width":(this._layout.columnWidth?this._layout.columnWidth+'px':'100%')+'!important',"max-height":(this._layout.height?0.6*this._layout.height+'px':'60%')+'!important',"object-fit":'contain',"page-break-inside":'avoid'},svg:{"max-width":(this._layout.columnWidth?this._layout.columnWidth+'px':'100%')+'!important',"max-height":(this._layout.height?0.6*this._layout.height+'px':'60%')+'!important',"page-break-inside":'avoid'}}),new Promise(function(e){setTimeout(function(){e()},1)}))}},{key:'getContents',value:function(){return this.manager?this.manager.getContents():[]}},{key:'views',value:function(){var e=this.manager?this.manager.views:void 0;return e||[]}},{key:'handleLinks',value:function(e){var t=this;e&&e.on(w.EVENTS.CONTENTS.LINK_CLICKED,function(e){var n=t.book.path.relative(e);t.display(n)})}},{key:'injectStylesheet',value:function(e){var t=e.createElement('link');t.setAttribute('type','text/css'),t.setAttribute('rel','stylesheet'),t.setAttribute('href',this.settings.stylesheet),e.getElementsByTagName('head')[0].appendChild(t)}},{key:'injectScript',value:function(e){var t=e.createElement('script');t.setAttribute('type','text/javascript'),t.setAttribute('src',this.settings.script),t.textContent=' ',e.getElementsByTagName('head')[0].appendChild(t)}},{key:'injectIdentifier',value:function(e){var t=this.book.package.metadata.identifier,n=e.createElement('meta');n.setAttribute('name','dc.relation.ispartof'),t&&n.setAttribute('content',t),e.getElementsByTagName('head')[0].appendChild(n)}}]),e}();(0,l.default)(P.prototype),t.default=P,e.exports=t['default']},function(e,t,n){'use strict';function o(e,t){if(!(e instanceof t))throw new TypeError('Cannot call a class as a function')}Object.defineProperty(t,'__esModule',{value:!0});var s=function(){function e(e,t){for(var n=0,a;n=t&&s<=n)return e;if(r>t)return e;o=e,i.push(e)}else if(a.horizontal&&'rtl'===a.direction){if(s=u.left,r=u.right,r<=n&&r>=t)return e;if(s=t&&l<=n)return e;if(d>t)return e;o=e,i.push(e)}}),r)return this.findTextStartRange(r,t,n);return this.findTextStartRange(o,t,n)}},{key:'findEnd',value:function(e,t,n){for(var a=this,o=[e],s=e,r,l;o.length;)if(r=o.shift(),l=this.walk(r,function(e){var r,l,d,u,c;if(c=a.getBounds(e),a.horizontal&&'ltr'===a.direction){if(r=i(c.left),l=i(c.right),r>n&&s)return s;if(l>n)return e;s=e,o.push(e)}else if(a.horizontal&&'rtl'===a.direction){if(r=i(a.horizontal?c.left:c.top),l=i(a.horizontal?c.right:c.bottom),ln&&s)return s;if(u>n)return e;s=e,o.push(e)}}),l)return this.findTextEndRange(l,t,n);return this.findTextEndRange(s,t,n)}},{key:'findTextStartRange',value:function(e,t,n){for(var a=this.splitTextNodeIntoRanges(e),o=0,i,s,r,l,d;o=t)return i;}else if(this.horizontal&&'rtl'===this.direction){if(d=s.right,d<=n)return i;}else if(l=s.top,l>=t)return i;return a[0]}},{key:'findTextEndRange',value:function(e,t,n){for(var a=this.splitTextNodeIntoRanges(e),o=0,i,s,r,l,d,u,c;on&&i)return i;if(d>n)return s}else if(this.horizontal&&'rtl'===this.direction){if(l=r.left,d=r.right,dn&&i)return i;if(c>n)return s}i=s}return a[a.length-1]}},{key:'splitTextNodeIntoRanges',value:function(e,t){var n=[],a=e.textContent||'',i=a.trim(),o=e.ownerDocument,s=t||' ',r=i.indexOf(s),l;if(-1===r||e.nodeType!=Node.TEXT_NODE)return l=o.createRange(),l.selectNodeContents(e),[l];for(l=o.createRange(),l.setStart(e,0),l.setEnd(e,r),n.push(l),l=!1;-1!=r;)r=i.indexOf(s,r+1),0=t||0>n||y&&a>=x}function p(){var e=i();return c(e)?h(e):void(_=setTimeout(p,u(e)))}function h(e){return(_=void 0,v&&b)?l(e):(b=k=void 0,E)}function g(){var e=i(),n=c(e);if(b=arguments,k=this,w=e,n){if(void 0===_)return d(w);if(y)return _=setTimeout(p,t),l(w)}return void 0===_&&(_=setTimeout(p,t)),E}var f=0,m=!1,y=!1,v=!0,b,k,x,E,_,w;if('function'!=typeof e)throw new TypeError('Expected a function');return t=s(t)||0,a(n)&&(m=!!n.leading,y='maxWait'in n,x=y?o(s(n.maxWait)||0,t):x,v='trailing'in n?!!n.trailing:v),g.cancel=function(){void 0!==_&&clearTimeout(_),f=0,b=w=k=_=void 0},g.flush=function(){return void 0===_?E:h(i())},g}},function(e,t,n){var a=n(59),i='object'==typeof self&&self&&self.Object===Object&&self,o=a||i||Function('return this')();e.exports=o},function(e,t,n){var a=n(22),i=a.Symbol;e.exports=i},function(e,t,n){'use strict';function a(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError('Cannot call a class as a function')}function o(e,t){if(!e)throw new ReferenceError('this hasn\'t been initialised - super() hasn\'t been called');return t&&('object'==typeof t||'function'==typeof t)?t:e}function r(e,t){if('function'!=typeof t&&null!==t)throw new TypeError('Super expression must either be null or a function, not '+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,'__esModule',{value:!0});var l=function(){function e(e,t){for(var n=0,a;n=h&&(o&&l?g():f()),0>c-s&&(o&&l?f():g());var m=i.map(function(e){return e.displayed});return i.length?Promise.all(m).then(function(){if('pre-paginated'===n.layout.name&&n.layout.props.spread)return n.check()}).then(function(){return n.update(s)},function(e){return e}):(this.q.enqueue(function(){this.update()}.bind(this)),a.resolve(!1),a.promise)}},{key:'trim',value:function(){for(var e=new d.defer,t=this.views.displayed(),n=t[0],a=t[t.length-1],o=this.views.indexOf(n),s=this.views.indexOf(a),r=this.views.slice(0,o),l=this.views.slice(s+1),u=0;uarguments.length||'string'!=typeof t?(d=n,n=t,t=null):d=arguments[2],null==t?(o=l=!0,r=!1):(o=s.call(t,'c'),r=s.call(t,'e'),l=s.call(t,'w')),u={value:n,configurable:o,enumerable:r,writable:l},d?a(i(d),u):u},r.gs=function(t,n,r){var l,d,u,p;return'string'==typeof t?u=arguments[3]:(u=r,r=n,n=t,t=null),null==n?n=void 0:o(n)?null==r?r=void 0:!o(r)&&(u=r,r=void 0):(u=n,n=r=void 0),null==t?(l=!0,d=!1):(l=s.call(t,'c'),d=s.call(t,'e')),p={get:n,set:r,configurable:l,enumerable:d},u?a(i(u),p):p}},function(e,t,n){'use strict';e.exports=n(29)()?Object.assign:n(30)},function(e){'use strict';e.exports=function(){var e=Object.assign,t;return!('function'!=typeof e)&&(t={foo:'raz'},e(t,{bar:'dwa'},{trzy:'trzy'}),'razdwatrzy'===t.foo+t.bar+t.trzy)}},function(e,t,n){'use strict';var a=n(31),s=n(35);e.exports=function(e,t){var n=o(arguments.length,2),r,l,i;for(e=Object(s(e)),i=function(n){try{e[n]=t[n]}catch(t){r||(r=t)}},l=1;ln&&(s+=n,i=n);i=n)s+=n-i,i=n;else{i+=o,d.endContainer=e,d.endOffset=i;var r=new c.default(d,t).toString();a.push(r),s=0}u=e}.bind(this)),d&&d.startContainer&&u){d.endContainer=u,d.endOffset=u.length;var p=new c.default(d,t).toString();a.push(p),s=0}return a}},{key:'locationFromCfi',value:function(e){var t;return(c.default.prototype.isCfiString(e)&&(e=new c.default(e)),0===this._locations.length)?-1:(t=(0,r.locationOf)(e,this._locations,this.epubcfi.compare),t>this.total?this.total:t)}},{key:'percentageFromCfi',value:function(e){if(0===this._locations.length)return null;var t=this.locationFromCfi(e);return this.percentageFromLocation(t)}},{key:'percentageFromLocation',value:function(e){return e&&this.total?e/this.total:0}},{key:'cfiFromLocation',value:function(e){var t=-1;return'number'!=typeof e&&(e=parseInt(e)),0<=e&&e=this._minSpreadWidth?2:1,'reflowable'!==this.name||'paginated'!==this._flow||0<=n||(i=0==l%2?l:l-1),'pre-paginated'===this.name&&(i=0),1=e.left&&t.top>=e.top&&t.bottom<=e.bottom}var u='function'==typeof Symbol&&'symbol'==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&'function'==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?'symbol':typeof e};Object.defineProperty(t,'__esModule',{value:!0}),t.Underline=t.Highlight=t.Mark=t.Pane=void 0;var c=function e(t,n,a){null===t&&(t=Function.prototype);var i=Object.getOwnPropertyDescriptor(t,n);if(i===void 0){var o=Object.getPrototypeOf(t);return null===o?void 0:e(o,n,a)}if('value'in i)return i.value;var s=i.get;return void 0===s?void 0:s.call(a)},p=function(){function e(e,t){for(var n=0,a;nn&&r>t}var s=t.getBoundingClientRect(),r=e.getBoundingClientRect();if(!o(r,n,a))return!1;for(var l=e.getClientRects(),d=0,i=l.length;dt&&-1==[34,35,60,62,63,96].indexOf(t)?e:encodeURIComponent(e)}function s(e){var t=e.charCodeAt(0);return 32t&&-1==[34,35,60,62,96].indexOf(t)?e:encodeURIComponent(e)}function i(e,r,l){function d(e){x.push(e)}var m=r||'scheme start',y=0,v='',b=!1,k=!1,x=[];loop:for(;(e[y-1]!=f||0==y)&&!this._isInvalid;){var E=e[y];switch(m){case'scheme start':if(E&&h.test(E))v+=E.toLowerCase(),m='scheme';else if(!r){v='',m='no scheme';continue}else{d('Invalid scheme.');break loop}break;case'scheme':if(E&&g.test(E))v+=E.toLowerCase();else if(':'==E){if(this._scheme=v,v='',r)break loop;t(this._scheme)&&(this._isRelative=!0),m='file'==this._scheme?'relative':this._isRelative&&l&&l._scheme==this._scheme?'relative or authority':this._isRelative?'authority first slash':'scheme data'}else if(!r){v='',y=0,m='no scheme';continue}else if(f==E)break loop;else{d('Code point not allowed in scheme: '+E);break loop}break;case'scheme data':'?'==E?(this._query='?',m='query'):'#'==E?(this._fragment='#',m='fragment'):f!=E&&'\t'!=E&&'\n'!=E&&'\r'!=E&&(this._schemeData+=o(E));break;case'no scheme':if(!l||!t(l._scheme))d('Missing scheme.'),n.call(this);else{m='relative';continue}break;case'relative or authority':if('/'==E&&'/'==e[y+1])m='authority ignore slashes';else{d('Expected /, got: '+E),m='relative';continue}break;case'relative':if(this._isRelative=!0,'file'!=this._scheme&&(this._scheme=l._scheme),f==E){this._host=l._host,this._port=l._port,this._path=l._path.slice(),this._query=l._query,this._username=l._username,this._password=l._password;break loop}else if('/'==E||'\\'==E)'\\'==E&&d('\\ is an invalid code point.'),m='relative slash';else if('?'==E)this._host=l._host,this._port=l._port,this._path=l._path.slice(),this._query='?',this._username=l._username,this._password=l._password,m='query';else if('#'==E)this._host=l._host,this._port=l._port,this._path=l._path.slice(),this._query=l._query,this._fragment='#',this._username=l._username,this._password=l._password,m='fragment';else{var c=e[y+1],_=e[y+2];'file'==this._scheme&&h.test(E)&&(':'==c||'|'==c)&&(f==_||'/'==_||'\\'==_||'?'==_||'#'==_)||(this._host=l._host,this._port=l._port,this._username=l._username,this._password=l._password,this._path=l._path.slice(),this._path.pop()),m='relative path';continue}break;case'relative slash':if('/'==E||'\\'==E)'\\'==E&&d('\\ is an invalid code point.'),m='file'==this._scheme?'file host':'authority ignore slashes';else{'file'!=this._scheme&&(this._host=l._host,this._port=l._port,this._username=l._username,this._password=l._password),m='relative path';continue}break;case'authority first slash':if('/'==E)m='authority second slash';else{d('Expected \'/\', got: '+E),m='authority ignore slashes';continue}break;case'authority second slash':if(m='authority ignore slashes','/'!=E){d('Expected \'/\', got: '+E);continue}break;case'authority ignore slashes':if('/'!=E&&'\\'!=E){m='authority';continue}else d('Expected authority, got: '+E);break;case'authority':if('@'==E){b&&(d('@ already seen.'),v+='%40'),b=!0;for(var w=0,i;w-1||Math.floor(e)!==e)}function u(t){var e=["-webkit-","-webkit-","-moz-","-o-","-ms-"],i=t.toLowerCase(),n=["Webkit","webkit","Moz","O","ms"].length;if("undefined"==typeof document||void 0!==document.body.style[i])return t;for(var r=0;re?1:t=0?h:h+1:0===s?h:-1===s?g(t,e,i,h,a):g(t,e,i,o,h))}function v(t,e,i,n,r){var s,o=n||0,a=r||e.length,h=parseInt(o+(a-o)/2);return i||(i=function(t,e){return t>e?1:t-1}function O(t,e){return new Blob([t],{type:e})}function C(t,e){var i=O(t,e);return s.createObjectURL(i)}function T(t){return s.revokeObjectURL(t)}function k(t,e){if("string"==typeof t)return"data:"+e+";base64,"+btoa(encodeURIComponent(t))}function R(t){return Object.prototype.toString.call(t).slice(8,-1)}function L(t,e,i){var r;return r="undefined"==typeof DOMParser||i?n.DOMParser:DOMParser,65279===t.charCodeAt(0)&&(t=t.slice(1)),(new r).parseFromString(t,e)}function I(t,e){var i;if(!t)throw new Error("No Element Provided");return void 0!==t.querySelector?t.querySelector(e):(i=t.getElementsByTagName(e)).length?i[0]:void 0}function j(t,e){return void 0!==t.querySelector?t.querySelectorAll(e):t.getElementsByTagName(e)}function N(t,e,i){var n,r;if(void 0!==t.querySelector){for(var s in e+="[",i)e+=s+"~='"+i[s]+"'";return e+="]",t.querySelector(e)}if(n=t.getElementsByTagName(e),r=Array.prototype.slice.call(n,0).filter((function(t){for(var e in i)if(t.getAttribute(e)===i[e])return!0;return!1})))return r[0]}function A(t,e){void 0!==(t.ownerDocument||t).createTreeWalker?P(t,e,NodeFilter.SHOW_TEXT):D(t,(function(t){t&&3===t.nodeType&&e(t)}))}function P(t,e,i){var n=document.createTreeWalker(t,i,null,!1);let r;for(;r=n.nextNode();)e(r)}function D(t,e){if(e(t))return!0;if(t=t.firstChild)do{if(D(t,e))return!0;t=t.nextSibling}while(t)}function z(t){return new Promise((function(e,i){var n=new FileReader;n.readAsDataURL(t),n.onloadend=function(){e(n.result)}}))}function B(){this.resolve=null,this.reject=null,this.id=o(),this.promise=new Promise((t,e)=>{this.resolve=t,this.reject=e}),Object.freeze(this)}function q(t,e,i){var n;if(void 0!==t.querySelector&&(n=t.querySelector(`${e}[*|type="${i}"]`)),n&&0!==n.length)return n;n=j(t,e);for(var r=0;r1&&(e=n[1],i.terminal=this.parseTerminal(e)),""===r[0]&&r.shift(),i.steps=r.map(function(t){return this.parseStep(t)}.bind(this)),i}parseStep(t){var e,i,n,r,s;if((r=t.match(/\[(.*)\]/))&&r[1]&&(s=r[1]),i=parseInt(t),!isNaN(i))return i%2==0?(e="element",n=i/2-1):(e="text",n=(i-1)/2),{type:e,index:n,id:s||null}}parseTerminal(t){var e,i,r=t.match(/\[(.*)\]/);return r&&r[1]?(e=parseInt(t.split("[")[0]),i=r[1]):e=parseInt(t),Object(n.isNumber)(e)||(e=null),{offset:e,assertion:i}}getChapterComponent(t){return t.split("!")[0]}getPathComponent(t){var e=t.split("!");if(e[1]){return e[1].split(",")[0]}}getRange(t){var e=t.split(",");return 3===e.length&&[e[1],e[2]]}getCharecterOffsetComponent(t){return t.split(":")[1]||""}joinSteps(t){return t?t.map((function(t){var e="";return"element"===t.type&&(e+=2*(t.index+1)),"text"===t.type&&(e+=1+2*t.index),t.id&&(e+="["+t.id+"]"),e})).join("/"):""}segmentString(t){var e="/";return e+=this.joinSteps(t.steps),t.terminal&&null!=t.terminal.offset&&(e+=":"+t.terminal.offset),t.terminal&&null!=t.terminal.assertion&&(e+="["+t.terminal.assertion+"]"),e}toString(){var t="epubcfi(";return t+=this.segmentString(this.base),t+="!",t+=this.segmentString(this.path),this.range&&this.start&&(t+=",",t+=this.segmentString(this.start)),this.range&&this.end&&(t+=",",t+=this.segmentString(this.end)),t+=")"}compare(t,e){var i,n,s,o;if("string"==typeof t&&(t=new r(t)),"string"==typeof e&&(e=new r(e)),t.spinePos>e.spinePos)return 1;if(t.spinePosn[a].index)return 1;if(i[a].indexo.offset?1:s.offset=0&&(r.terminal.offset=e,"text"!=r.steps[r.steps.length-1].type&&r.steps.push({type:"text",index:0})),r}equalStep(t,e){return!(!t||!e)&&(t.index===e.index&&t.id===e.id&&t.type===e.type)}fromRange(t,e,i){var n={range:!1,base:{},path:{},start:null,end:null},r=t.startContainer,s=t.endContainer,o=t.startOffset,a=t.endOffset,h=!1;if(i&&(h=null!=r.ownerDocument.querySelector("."+i)),"string"==typeof e?(n.base=this.parseComponent(e),n.spinePos=n.base.steps[1].index):"object"==typeof e&&(n.base=e),t.collapsed)h&&(o=this.patchOffset(r,o,i)),n.path=this.pathTo(r,o,i);else{n.range=!0,h&&(o=this.patchOffset(r,o,i)),n.start=this.pathTo(r,o,i),h&&(a=this.patchOffset(s,a,i)),n.end=this.pathTo(s,a,i),n.path={steps:[],terminal:null};var l,c=n.start.steps.length;for(l=0;l0&&3===r&&3===s?o[n]=a:e===r&&(a+=1,o[n]=a),s=r;return o}position(t){var e,i;return 1===t.nodeType?((e=t.parentNode.children)||(e=Object(n.findChildren)(t.parentNode)),i=Array.prototype.indexOf.call(e,t)):i=(e=this.textNodes(t.parentNode)).indexOf(t),i}filteredPosition(t,e){var i,n;return 1===t.nodeType?(i=t.parentNode.children,n=this.normalizedMap(i,1,e)):(i=t.parentNode.childNodes,t.parentNode.classList.contains(e)&&(i=(t=t.parentNode).parentNode.childNodes),n=this.normalizedMap(i,3,e)),n[Array.prototype.indexOf.call(i,t)]}stepsToXpath(t){var e=[".","*"];return t.forEach((function(t){var i=t.index+1;t.id?e.push("*[position()="+i+" and @id='"+t.id+"']"):"text"===t.type?e.push("text()["+i+"]"):e.push("*["+i+"]")})),e.join("/")}stepsToQuerySelector(t){var e=["html"];return t.forEach((function(t){var i=t.index+1;t.id?e.push("#"+t.id):"text"===t.type||e.push("*:nth-child("+i+")")})),e.join(">")}textNodes(t,e){return Array.prototype.slice.call(t.childNodes).filter((function(t){return 3===t.nodeType||!(!e||!t.classList.contains(e))}))}walkToNode(t,e,i){var r,s,o=e||document,a=o.documentElement,h=t.length;for(s=0;s(s=(r=a[t]).textContent.length))){o=1===r.nodeType?r.childNodes[0]:r;break}e-=s}}return{container:o,offset:e}}toRange(t,e){var i,r,s,o,a,h,l,c,u=t||document,d=!!e&&null!=u.querySelector("."+e);if(i=void 0!==u.createRange?u.createRange():new n.RangeObject,this.range?(r=this.start,h=this.path.steps.concat(r.steps),o=this.findNode(h,u,d?e:null),s=this.end,l=this.path.steps.concat(s.steps),a=this.findNode(l,u,d?e:null)):(r=this.path,h=this.path.steps,o=this.findNode(this.path.steps,u,d?e:null)),!o)return console.log("No startContainer found for",this.toString()),null;try{null!=r.terminal.offset?i.setStart(o,r.terminal.offset):i.setStart(o,0)}catch(t){c=this.fixMiss(h,r.terminal.offset,u,d?e:null),i.setStart(c.container,c.offset)}if(a)try{null!=s.terminal.offset?i.setEnd(a,s.terminal.offset):i.setEnd(a,0)}catch(t){c=this.fixMiss(l,this.end.terminal.offset,u,d?e:null),i.setEnd(c.container,c.offset)}return i}isCfiString(t){return"string"==typeof t&&0===t.indexOf("epubcfi(")&&")"===t[t.length-1]}generateChapterComponent(t,e,i){var n="/"+2*(t+1)+"/";return n+=2*(parseInt(e)+1),i&&(n+="["+i+"]"),n}collapse(t){this.range&&(this.range=!1,t?(this.path.steps=this.path.steps.concat(this.start.steps),this.path.terminal=this.start.terminal):(this.path.steps=this.path.steps.concat(this.end.steps),this.path.terminal=this.end.terminal))}}e.a=r},function(t,e,i){"use strict";var n,r,s,o,a,h,l,c=i(108),u=i(122),d=Function.prototype.apply,f=Function.prototype.call,p=Object.create,g=Object.defineProperty,v=Object.defineProperties,m=Object.prototype.hasOwnProperty,y={configurable:!0,enumerable:!1,writable:!0};r=function(t,e){var i,r;return u(e),r=this,n.call(this,t,i=function(){s.call(r,t,i),d.call(e,this,arguments)}),i.__eeOnceListener__=e,this},a={on:n=function(t,e){var i;return u(e),m.call(this,"__ee__")?i=this.__ee__:(i=y.value=p(null),g(this,"__ee__",y),y.value=null),i[t]?"object"==typeof i[t]?i[t].push(e):i[t]=[i[t],e]:i[t]=e,this},once:r,off:s=function(t,e){var i,n,r,s;if(u(e),!m.call(this,"__ee__"))return this;if(!(i=this.__ee__)[t])return this;if("object"==typeof(n=i[t]))for(s=0;r=n[s];++s)r!==e&&r.__eeOnceListener__!==e||(2===n.length?i[t]=n[s?0:1]:n.splice(s,1));else n!==e&&n.__eeOnceListener__!==e||delete i[t];return this},emit:o=function(t){var e,i,n,r,s;if(m.call(this,"__ee__")&&(r=this.__ee__[t]))if("object"==typeof r){for(i=arguments.length,s=new Array(i-1),e=1;e-1&&(t=new URL(t).pathname),e=this.parse(t),this.path=t,this.isDirectory(t)?this.directory=t:this.directory=e.dir+"/",this.filename=e.base,this.extension=e.ext.slice(1)}parse(t){return r.a.parse(t)}isAbsolute(t){return r.a.isAbsolute(t||this.path)}isDirectory(t){return"/"===t.charAt(t.length-1)}resolve(t){return r.a.resolve(this.directory,t)}relative(t){return t&&t.indexOf("://")>-1?t:r.a.relative(this.directory,t)}splitPath(t){return this.splitPathRe.exec(t).slice(1)}toString(){return this.path}}},function(t,e,i){"use strict";i(14),i(20);var n=i(4),r=i(9),s=i.n(r);e.a=class{constructor(t,e){var i=t.indexOf("://")>-1,r=t;if(this.Url=void 0,this.href=t,this.protocol="",this.origin="",this.hash="",this.hash="",this.search="",this.base=e,!i&&!1!==e&&"string"!=typeof e&&window&&window.location&&(this.base=window.location.href),i||this.base)try{this.base?this.Url=new URL(t,this.base):this.Url=new URL(t),this.href=this.Url.href,this.protocol=this.Url.protocol,this.origin=this.Url.origin,this.hash=this.Url.hash,this.search=this.Url.search,r=this.Url.pathname+(this.Url.search?this.Url.search:"")}catch(t){this.Url=void 0,this.base&&(r=new n.a(this.base).resolve(r))}this.Path=new n.a(r),this.directory=this.Path.directory,this.filename=this.Path.filename,this.extension=this.Path.extension}path(){return this.Path}resolve(t){var e;return t.indexOf("://")>-1?t:(e=s.a.resolve(this.directory,t),this.origin+e)}relative(t){return s.a.relative(t,this.directory)}toString(){return this.href}}},function(t,e,i){"use strict";i(14);e.a=class{constructor(t){this.context=t||this,this.hooks=[]}register(){for(var t=0;t2){for(var a=n.length-1,h=a;h>=0&&47!==n.charCodeAt(h);--h);if(h!==a){n=-1===h?"":n.slice(0,h),r=o,s=0;continue}}else if(2===n.length||1===n.length){n="",r=o,s=0;continue}e&&(n.length>0?n+="/..":n="..")}else n.length>0?n+="/"+t.slice(r+1,o):n=t.slice(r+1,o);r=o,s=0}else 46===i&&-1!==s?++s:s=-1}return n}var o={resolve:function(){for(var t,e="",i=!1,o=arguments.length-1;o>=-1&&!i;o--){var a;o>=0?a=arguments[o]:(void 0===t&&(t=n.cwd()),a=t),r(a),0!==a.length&&(e=a+"/"+e,i=47===a.charCodeAt(0))}return e=s(e,!i),i?e.length>0?"/"+e:"/":e.length>0?e:"."},normalize:function(t){if(r(t),0===t.length)return".";var e=47===t.charCodeAt(0),i=47===t.charCodeAt(t.length-1);return 0!==(t=s(t,!e)).length||e||(t="."),t.length>0&&i&&(t+="/"),e?"/"+t:t},isAbsolute:function(t){return r(t),t.length>0&&47===t.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var t,e=0;e0&&(void 0===t?t=i:t+="/"+i)}return void 0===t?".":o.normalize(t)},relative:function(t,e){if(r(t),r(e),t===e)return"";if((t=o.resolve(t))===(e=o.resolve(e)))return"";for(var i=1;il){if(47===e.charCodeAt(a+u))return e.slice(a+u+1);if(0===u)return e.slice(a+u)}else s>l&&(47===t.charCodeAt(i+u)?c=u:0===u&&(c=0));break}var d=t.charCodeAt(i+u);if(d!==e.charCodeAt(a+u))break;47===d&&(c=u)}var f="";for(u=i+c+1;u<=n;++u)u!==n&&47!==t.charCodeAt(u)||(0===f.length?f+="..":f+="/..");return f.length>0?f+e.slice(a+c):(a+=c,47===e.charCodeAt(a)&&++a,e.slice(a))},_makeLong:function(t){return t},dirname:function(t){if(r(t),0===t.length)return".";for(var e=t.charCodeAt(0),i=47===e,n=-1,s=!0,o=t.length-1;o>=1;--o)if(47===(e=t.charCodeAt(o))){if(!s){n=o;break}}else s=!1;return-1===n?i?"/":".":i&&1===n?"//":t.slice(0,n)},basename:function(t,e){if(void 0!==e&&"string"!=typeof e)throw new TypeError('"ext" argument must be a string');r(t);var i,n=0,s=-1,o=!0;if(void 0!==e&&e.length>0&&e.length<=t.length){if(e.length===t.length&&e===t)return"";var a=e.length-1,h=-1;for(i=t.length-1;i>=0;--i){var l=t.charCodeAt(i);if(47===l){if(!o){n=i+1;break}}else-1===h&&(o=!1,h=i+1),a>=0&&(l===e.charCodeAt(a)?-1==--a&&(s=i):(a=-1,s=h))}return n===s?s=h:-1===s&&(s=t.length),t.slice(n,s)}for(i=t.length-1;i>=0;--i)if(47===t.charCodeAt(i)){if(!o){n=i+1;break}}else-1===s&&(o=!1,s=i+1);return-1===s?"":t.slice(n,s)},extname:function(t){r(t);for(var e=-1,i=0,n=-1,s=!0,o=0,a=t.length-1;a>=0;--a){var h=t.charCodeAt(a);if(47!==h)-1===n&&(s=!1,n=a+1),46===h?-1===e?e=a:1!==o&&(o=1):-1!==e&&(o=-1);else if(!s){i=a+1;break}}return-1===e||-1===n||0===o||1===o&&e===n-1&&e===i+1?"":t.slice(e,n)},format:function(t){if(null===t||"object"!=typeof t)throw new TypeError('Parameter "pathObject" must be an object, not '+typeof t);return function(t,e){var i=e.dir||e.root,n=e.base||(e.name||"")+(e.ext||"");return i?i===e.root?i+n:i+t+n:n}("/",t)},parse:function(t){r(t);var e={root:"",dir:"",base:"",ext:"",name:""};if(0===t.length)return e;var i,n=t.charCodeAt(0),s=47===n;s?(e.root="/",i=1):i=0;for(var o=-1,a=0,h=-1,l=!0,c=t.length-1,u=0;c>=i;--c)if(47!==(n=t.charCodeAt(c)))-1===h&&(l=!1,h=c+1),46===n?-1===o?o=c:1!==u&&(u=1):-1!==o&&(u=-1);else if(!l){a=c+1;break}return-1===o||-1===h||0===u||1===u&&o===h-1&&o===a+1?-1!==h&&(e.base=e.name=0===a&&s?t.slice(1,h):t.slice(a,h)):(0===a&&s?(e.name=t.slice(1,o),e.base=t.slice(1,h)):(e.name=t.slice(a,o),e.base=t.slice(a,h)),e.ext=t.slice(o,h)),a>0?e.dir=t.slice(0,a-1):s&&(e.dir="/"),e},sep:"/",delimiter:":",posix:null};t.exports=o},function(t,e){var i={}.hasOwnProperty;t.exports=function(t,e){return i.call(t,e)}},function(t,e,i){"use strict";i.d(e,"a",(function(){return s})),i.d(e,"b",(function(){return o})),i.d(e,"d",(function(){return a})),i.d(e,"c",(function(){return h})),i.d(e,"e",(function(){return l}));i(24);var n=i(0),r=i(5);i(4);function s(t,e){var i,r,s=e.url,o=s.indexOf("://")>-1;t&&(r=Object(n.qs)(t,"head"),(i=Object(n.qs)(r,"base"))||(i=t.createElement("base"),r.insertBefore(i,r.firstChild)),!o&&window&&window.location&&(s=window.location.origin+s),i.setAttribute("href",s))}function o(t,e){var i,r,s=e.canonical;t&&(i=Object(n.qs)(t,"head"),(r=Object(n.qs)(i,"link[rel='canonical']"))?r.setAttribute("href",s):((r=t.createElement("link")).setAttribute("rel","canonical"),r.setAttribute("href",s),i.appendChild(r)))}function a(t,e){var i,r,s=e.idref;t&&(i=Object(n.qs)(t,"head"),(r=Object(n.qs)(i,"link[property='dc.identifier']"))?r.setAttribute("content",s):((r=t.createElement("meta")).setAttribute("name","dc.identifier"),r.setAttribute("content",s),i.appendChild(r)))}function h(t,e){var i=t.querySelectorAll("a[href]");if(i.length)for(var s=Object(n.qs)(t.ownerDocument,"base"),o=s?s.getAttribute("href"):void 0,a=function(t){var i=t.getAttribute("href");if(0!==i.indexOf("mailto:"))if(i.indexOf("://")>-1)t.setAttribute("target","_blank");else{var n;try{n=new r.a(i,o)}catch(t){}t.onclick=function(){return n&&n.hash?e(n.Path.path+n.hash):e(n?n.Path.path:i),!1}}}.bind(this),h=0;h4)return t;for(i=[],n=0;n1&&"0"==r.charAt(0)&&(s=R.test(r)?16:8,r=r.slice(8==s?1:2)),""===r)o=0;else{if(!(10==s?I:8==s?L:j).test(r))return t;o=parseInt(r,s)}i.push(o)}for(n=0;n=O(256,5-e))return null}else if(o>255)return null;for(a=i.pop(),n=0;n6)return;for(n=0;d();){if(r=null,n>0){if(!("."==d()&&n<4))return;u++}if(!k.test(d()))return;for(;k.test(d());){if(s=parseInt(d(),10),null===r)r=s;else{if(0==r)return;r=10*r+s}if(r>255)return;u++}h[l]=256*h[l]+r,2!=++n&&4!=n||l++}if(4!=n)return;break}if(":"==d()){if(u++,!d())return}else if(d())return;h[l++]=e}else{if(null!==c)return;u++,c=++l}}if(null!==c)for(o=l-c,l=7;0!=l&&o>0;)a=h[l],h[l--]=h[c+o-1],h[c+--o]=a;else if(8!=l)return;return h},M=function(t){var e,i,n,r;if("number"==typeof t){for(e=[],i=0;i<4;i++)e.unshift(t%256),t=_(t/256);return e.join(".")}if("object"==typeof t){for(e="",n=function(t){for(var e=null,i=1,n=null,r=0,s=0;s<8;s++)0!==t[s]?(r>i&&(e=n,i=r),n=null,r=0):(null===n&&(n=s),++r);return r>i&&(e=n,i=r),e}(t),i=0;i<8;i++)r&&0===t[i]||(r&&(r=!1),n===i?(e+=i?":":"::",r=!0):(e+=t[i].toString(16),i<7&&(e+=":")));return"["+e+"]"}return t},U={},F=d({},U,{" ":1,'"':1,"<":1,">":1,"`":1}),W=d({},F,{"#":1,"?":1,"{":1,"}":1}),H=d({},W,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),V=function(t,e){var i=p(t,0);return i>32&&i<127&&!u(e,t)?t:encodeURIComponent(t)},X={ftp:21,file:null,http:80,https:443,ws:80,wss:443},G=function(t){return u(X,t.scheme)},Y=function(t){return""!=t.username||""!=t.password},$=function(t){return!t.host||t.cannotBeABaseURL||"file"==t.scheme},K=function(t,e){var i;return 2==t.length&&C.test(t.charAt(0))&&(":"==(i=t.charAt(1))||!e&&"|"==i)},Z=function(t){var e;return t.length>1&&K(t.slice(0,2))&&(2==t.length||"/"===(e=t.charAt(2))||"\\"===e||"?"===e||"#"===e)},J=function(t){var e=t.path,i=e.length;!i||"file"==t.scheme&&1==i&&K(e[0],!0)||e.pop()},Q=function(t){return"."===t||"%2e"===t.toLowerCase()},tt={},et={},it={},nt={},rt={},st={},ot={},at={},ht={},lt={},ct={},ut={},dt={},ft={},pt={},gt={},vt={},mt={},yt={},bt={},wt={},xt=function(t,e,i,r){var s,o,a,h,l,c=i||tt,d=0,p="",g=!1,v=!1,m=!1;for(i||(t.scheme="",t.username="",t.password="",t.host=null,t.port=null,t.path=[],t.query=null,t.fragment=null,t.cannotBeABaseURL=!1,e=e.replace(P,"")),e=e.replace(D,""),s=f(e);d<=s.length;){switch(o=s[d],c){case tt:if(!o||!C.test(o)){if(i)return"Invalid scheme";c=it;continue}p+=o.toLowerCase(),c=et;break;case et:if(o&&(T.test(o)||"+"==o||"-"==o||"."==o))p+=o.toLowerCase();else{if(":"!=o){if(i)return"Invalid scheme";p="",c=it,d=0;continue}if(i&&(G(t)!=u(X,p)||"file"==p&&(Y(t)||null!==t.port)||"file"==t.scheme&&!t.host))return;if(t.scheme=p,i)return void(G(t)&&X[t.scheme]==t.port&&(t.port=null));p="","file"==t.scheme?c=ft:G(t)&&r&&r.scheme==t.scheme?c=nt:G(t)?c=at:"/"==s[d+1]?(c=rt,d++):(t.cannotBeABaseURL=!0,t.path.push(""),c=yt)}break;case it:if(!r||r.cannotBeABaseURL&&"#"!=o)return"Invalid scheme";if(r.cannotBeABaseURL&&"#"==o){t.scheme=r.scheme,t.path=r.path.slice(),t.query=r.query,t.fragment="",t.cannotBeABaseURL=!0,c=wt;break}c="file"==r.scheme?ft:st;continue;case nt:if("/"!=o||"/"!=s[d+1]){c=st;continue}c=ht,d++;break;case rt:if("/"==o){c=lt;break}c=mt;continue;case st:if(t.scheme=r.scheme,o==n)t.username=r.username,t.password=r.password,t.host=r.host,t.port=r.port,t.path=r.path.slice(),t.query=r.query;else if("/"==o||"\\"==o&&G(t))c=ot;else if("?"==o)t.username=r.username,t.password=r.password,t.host=r.host,t.port=r.port,t.path=r.path.slice(),t.query="",c=bt;else{if("#"!=o){t.username=r.username,t.password=r.password,t.host=r.host,t.port=r.port,t.path=r.path.slice(),t.path.pop(),c=mt;continue}t.username=r.username,t.password=r.password,t.host=r.host,t.port=r.port,t.path=r.path.slice(),t.query=r.query,t.fragment="",c=wt}break;case ot:if(!G(t)||"/"!=o&&"\\"!=o){if("/"!=o){t.username=r.username,t.password=r.password,t.host=r.host,t.port=r.port,c=mt;continue}c=lt}else c=ht;break;case at:if(c=ht,"/"!=o||"/"!=p.charAt(d+1))continue;d++;break;case ht:if("/"!=o&&"\\"!=o){c=lt;continue}break;case lt:if("@"==o){g&&(p="%40"+p),g=!0,a=f(p);for(var y=0;y65535)return"Invalid port";t.port=G(t)&&x===X[t.scheme]?null:x,p=""}if(i)return;c=vt;continue}return"Invalid port"}p+=o;break;case ft:if(t.scheme="file","/"==o||"\\"==o)c=pt;else{if(!r||"file"!=r.scheme){c=mt;continue}if(o==n)t.host=r.host,t.path=r.path.slice(),t.query=r.query;else if("?"==o)t.host=r.host,t.path=r.path.slice(),t.query="",c=bt;else{if("#"!=o){Z(s.slice(d).join(""))||(t.host=r.host,t.path=r.path.slice(),J(t)),c=mt;continue}t.host=r.host,t.path=r.path.slice(),t.query=r.query,t.fragment="",c=wt}}break;case pt:if("/"==o||"\\"==o){c=gt;break}r&&"file"==r.scheme&&!Z(s.slice(d).join(""))&&(K(r.path[0],!0)?t.path.push(r.path[0]):t.host=r.host),c=mt;continue;case gt:if(o==n||"/"==o||"\\"==o||"?"==o||"#"==o){if(!i&&K(p))c=mt;else if(""==p){if(t.host="",i)return;c=vt}else{if(h=z(t,p))return h;if("localhost"==t.host&&(t.host=""),i)return;p="",c=vt}continue}p+=o;break;case vt:if(G(t)){if(c=mt,"/"!=o&&"\\"!=o)continue}else if(i||"?"!=o)if(i||"#"!=o){if(o!=n&&(c=mt,"/"!=o))continue}else t.fragment="",c=wt;else t.query="",c=bt;break;case mt:if(o==n||"/"==o||"\\"==o&&G(t)||!i&&("?"==o||"#"==o)){if(".."===(l=(l=p).toLowerCase())||"%2e."===l||".%2e"===l||"%2e%2e"===l?(J(t),"/"==o||"\\"==o&&G(t)||t.path.push("")):Q(p)?"/"==o||"\\"==o&&G(t)||t.path.push(""):("file"==t.scheme&&!t.path.length&&K(p)&&(t.host&&(t.host=""),p=p.charAt(0)+":"),t.path.push(p)),p="","file"==t.scheme&&(o==n||"?"==o||"#"==o))for(;t.path.length>1&&""===t.path[0];)t.path.shift();"?"==o?(t.query="",c=bt):"#"==o&&(t.fragment="",c=wt)}else p+=V(o,W);break;case yt:"?"==o?(t.query="",c=bt):"#"==o?(t.fragment="",c=wt):o!=n&&(t.path[0]+=V(o,U));break;case bt:i||"#"!=o?o!=n&&("'"==o&&G(t)?t.query+="%27":t.query+="#"==o?"%23":V(o,U)):(t.fragment="",c=wt);break;case wt:o!=n&&(t.fragment+=V(o,F))}d++}},Et=function(t){var e,i,n=c(this,Et,"URL"),r=arguments.length>1?arguments[1]:void 0,o=String(t),a=E(n,{type:"URL"});if(void 0!==r)if(r instanceof Et)e=S(r);else if(i=xt(e={},String(r)))throw TypeError(i);if(i=xt(a,o,null,e))throw TypeError(i);var h=a.searchParams=new w,l=x(h);l.updateSearchParams(a.query),l.updateURL=function(){a.query=String(h)||null},s||(n.href=_t.call(n),n.origin=Ot.call(n),n.protocol=Ct.call(n),n.username=Tt.call(n),n.password=kt.call(n),n.host=Rt.call(n),n.hostname=Lt.call(n),n.port=It.call(n),n.pathname=jt.call(n),n.search=Nt.call(n),n.searchParams=At.call(n),n.hash=Pt.call(n))},St=Et.prototype,_t=function(){var t=S(this),e=t.scheme,i=t.username,n=t.password,r=t.host,s=t.port,o=t.path,a=t.query,h=t.fragment,l=e+":";return null!==r?(l+="//",Y(t)&&(l+=i+(n?":"+n:"")+"@"),l+=M(r),null!==s&&(l+=":"+s)):"file"==e&&(l+="//"),l+=t.cannotBeABaseURL?o[0]:o.length?"/"+o.join("/"):"",null!==a&&(l+="?"+a),null!==h&&(l+="#"+h),l},Ot=function(){var t=S(this),e=t.scheme,i=t.port;if("blob"==e)try{return new URL(e.path[0]).origin}catch(t){return"null"}return"file"!=e&&G(t)?e+"://"+M(t.host)+(null!==i?":"+i:""):"null"},Ct=function(){return S(this).scheme+":"},Tt=function(){return S(this).username},kt=function(){return S(this).password},Rt=function(){var t=S(this),e=t.host,i=t.port;return null===e?"":null===i?M(e):M(e)+":"+i},Lt=function(){var t=S(this).host;return null===t?"":M(t)},It=function(){var t=S(this).port;return null===t?"":String(t)},jt=function(){var t=S(this),e=t.path;return t.cannotBeABaseURL?e[0]:e.length?"/"+e.join("/"):""},Nt=function(){var t=S(this).query;return t?"?"+t:""},At=function(){return S(this).searchParams},Pt=function(){var t=S(this).fragment;return t?"#"+t:""},Dt=function(t,e){return{get:t,set:e,configurable:!0,enumerable:!0}};if(s&&h(St,{href:Dt(_t,(function(t){var e=S(this),i=String(t),n=xt(e,i);if(n)throw TypeError(n);x(e.searchParams).updateSearchParams(e.query)})),origin:Dt(Ot),protocol:Dt(Ct,(function(t){var e=S(this);xt(e,String(t)+":",tt)})),username:Dt(Tt,(function(t){var e=S(this),i=f(String(t));if(!$(e)){e.username="";for(var n=0;n{this._q.length?this.dequeue().then(function(){this.run()}.bind(this)):(this.defered.resolve(),this.running=void 0)}),1==this.paused&&(this.paused=!1),this.defered.promise}flush(){return this.running?this.running:this._q.length?(this.running=this.dequeue().then(function(){return this.running=void 0,this.flush()}.bind(this)),this.running):void 0}clear(){this._q=[]}length(){return this._q.length}pause(){this.paused=!0}stop(){this._q=[],this.running=!1,this.paused=!0}}},function(t,e,i){"use strict";var n=i(3),r=i.n(n),s=i(0);function o(){var t="reverse",e=function(){var t=document.createElement("div");t.dir="rtl",t.style.position="fixed",t.style.width="1px",t.style.height="1px",t.style.top="0px",t.style.left="0px",t.style.overflow="hidden";var e=document.createElement("div");e.style.width="2px";var i=document.createElement("span");i.style.width="1px",i.style.display="inline-block";var n=document.createElement("span");return n.style.width="1px",n.style.display="inline-block",e.appendChild(i),e.appendChild(n),t.appendChild(e),t}();return document.body.appendChild(e),e.scrollLeft>0?t="default":"undefined"!=typeof Element&&Element.prototype.scrollIntoView?(e.children[0].children[1].scrollIntoView(),e.scrollLeft<0&&(t="negative")):(e.scrollLeft=1,0===e.scrollLeft&&(t="negative")),document.body.removeChild(e),t}var a=i(23),h=i(21),l=i(84),c=i.n(l);var u=class{constructor(t){this.settings=t||{},this.id="epubjs-container-"+Object(s.uuid)(),this.container=this.create(this.settings),this.settings.hidden&&(this.wrapper=this.wrap(this.container))}create(t){let e=t.height,i=t.width,n=t.overflow||!1,r=t.axis||"vertical",o=t.direction;Object(s.extend)(this.settings,t),t.height&&Object(s.isNumber)(t.height)&&(e=t.height+"px"),t.width&&Object(s.isNumber)(t.width)&&(i=t.width+"px");let a=document.createElement("div");return a.id=this.id,a.classList.add("epub-container"),a.style.wordSpacing="0",a.style.lineHeight="0",a.style.verticalAlign="top",a.style.position="relative","horizontal"===r&&(a.style.display="flex",a.style.flexDirection="row",a.style.flexWrap="nowrap"),i&&(a.style.width=i),e&&(a.style.height=e),n&&("scroll"===n&&"vertical"===r?(a.style["overflow-y"]=n,a.style["overflow-x"]="hidden"):"scroll"===n&&"horizontal"===r?(a.style["overflow-y"]="hidden",a.style["overflow-x"]=n):a.style.overflow=n),o&&(a.dir=o,a.style.direction=o),o&&this.settings.fullsize&&(document.body.style.direction=o),a}wrap(t){var e=document.createElement("div");return e.style.visibility="hidden",e.style.overflow="hidden",e.style.width="0",e.style.height="0",e.appendChild(t),e}getElement(t){var e;if(Object(s.isElement)(t)?e=t:"string"==typeof t&&(e=document.getElementById(t)),!e)throw new Error("Not an Element");return e}attachTo(t){var e,i=this.getElement(t);if(i)return e=this.settings.hidden?this.wrapper:this.container,i.appendChild(e),this.element=i,i}getContainer(){return this.container}onResize(t){Object(s.isNumber)(this.settings.width)&&Object(s.isNumber)(this.settings.height)||(this.resizeFunc=c()(t,50),window.addEventListener("resize",this.resizeFunc,!1))}onOrientationChange(t){this.orientationChangeFunc=t,window.addEventListener("orientationchange",this.orientationChangeFunc,!1)}size(t,e){var i;let n=t||this.settings.width,r=e||this.settings.height;null===t?(i=this.element.getBoundingClientRect()).width&&(t=Math.floor(i.width),this.container.style.width=t+"px"):Object(s.isNumber)(t)?this.container.style.width=t+"px":this.container.style.width=t,null===e?(i=i||this.element.getBoundingClientRect()).height&&(e=i.height,this.container.style.height=e+"px"):Object(s.isNumber)(e)?this.container.style.height=e+"px":this.container.style.height=e,Object(s.isNumber)(t)||(t=this.container.clientWidth),Object(s.isNumber)(e)||(e=this.container.clientHeight),this.containerStyles=window.getComputedStyle(this.container),this.containerPadding={left:parseFloat(this.containerStyles["padding-left"])||0,right:parseFloat(this.containerStyles["padding-right"])||0,top:parseFloat(this.containerStyles["padding-top"])||0,bottom:parseFloat(this.containerStyles["padding-bottom"])||0};let o=Object(s.windowBounds)(),a=window.getComputedStyle(document.body),h=parseFloat(a["padding-left"])||0,l=parseFloat(a["padding-right"])||0,c=parseFloat(a["padding-top"])||0,u=parseFloat(a["padding-bottom"])||0;return n||(t=o.width-h-l),(this.settings.fullsize&&!r||!r)&&(e=o.height-c-u),{width:t-this.containerPadding.left-this.containerPadding.right,height:e-this.containerPadding.top-this.containerPadding.bottom}}bounds(){let t;return"visible"!==this.container.style.overflow&&(t=this.container&&this.container.getBoundingClientRect()),t&&t.width&&t.height?t:Object(s.windowBounds)()}getSheet(){var t=document.createElement("style");return t.appendChild(document.createTextNode("")),document.head.appendChild(t),t.sheet}addStyleRules(t,e){var i="#"+this.id+" ",n="";this.sheet||(this.sheet=this.getSheet()),e.forEach((function(t){for(var e in t)t.hasOwnProperty(e)&&(n+=e+":"+t[e]+";")})),this.sheet.insertRule(i+t+" {"+n+"}",0)}axis(t){"horizontal"===t?(this.container.style.display="flex",this.container.style.flexDirection="row",this.container.style.flexWrap="nowrap"):this.container.style.display="block",this.settings.axis=t}direction(t){this.container&&(this.container.dir=t,this.container.style.direction=t),this.settings.fullsize&&(document.body.style.direction=t),this.settings.dir=t}overflow(t){this.container&&("scroll"===t&&"vertical"===this.settings.axis?(this.container.style["overflow-y"]=t,this.container.style["overflow-x"]="hidden"):"scroll"===t&&"horizontal"===this.settings.axis?(this.container.style["overflow-y"]="hidden",this.container.style["overflow-x"]=t):this.container.style.overflow=t),this.settings.overflow=t}destroy(){this.element&&(this.settings.hidden?this.wrapper:this.container,this.element.contains(this.container)&&this.element.removeChild(this.container),window.removeEventListener("resize",this.resizeFunc),window.removeEventListener("orientationChange",this.orientationChangeFunc))}};var d=class{constructor(t){this.container=t,this._views=[],this.length=0,this.hidden=!1}all(){return this._views}first(){return this._views[0]}last(){return this._views[this._views.length-1]}indexOf(t){return this._views.indexOf(t)}slice(){return this._views.slice.apply(this._views,arguments)}get(t){return this._views[t]}append(t){return this._views.push(t),this.container&&this.container.appendChild(t.element),this.length++,t}prepend(t){return this._views.unshift(t),this.container&&this.container.insertBefore(t.element,this.container.firstChild),this.length++,t}insert(t,e){return this._views.splice(e,0,t),this.container&&(e-1&&this._views.splice(e,1),this.destroy(t),this.length--}destroy(t){t.displayed&&t.destroy(),this.container&&this.container.removeChild(t.element),t=null}forEach(){return this._views.forEach.apply(this._views,arguments)}clear(){var t,e=this.length;if(this.length){for(var i=0;i1){if(t||0===e.index)return;if(n=e.next(),n&&!n.properties.includes("page-spread-left"))return i.call(this,n)}}display(t,e){var i=new s.defer,n=i.promise;(e===t.href||Object(s.isNumber)(e))&&(e=void 0);var r=this.views.find(t);if(r&&t&&"pre-paginated"!==this.layout.name){let t=r.offset();if("ltr"===this.settings.direction)this.scrollTo(t.left,t.top,!0);else{let e=r.width();this.scrollTo(t.left+e,t.top,!0)}if(e){let t=r.locationOf(e);this.moveTo(t)}return i.resolve(),n}this.clear();let o=!1;return"pre-paginated"===this.layout.name&&2===this.layout.divisor&&t.properties.includes("page-spread-right")&&(o=!0),this.add(t,o).then(function(t){if(e){let i=t.locationOf(e);this.moveTo(i)}}.bind(this),t=>{i.reject(t)}).then(function(){return this.handleNextPrePaginated(o,t,this.add)}.bind(this)).then(function(){this.views.show(),i.resolve()}.bind(this)),n}afterDisplayed(t){this.emit(f.c.MANAGERS.ADDED,t)}afterResized(t){this.emit(f.c.MANAGERS.RESIZE,t.section)}moveTo(t){var e=0,i=0;this.isPaginated?(e=Math.floor(t.left/this.layout.delta)*this.layout.delta)+this.layout.delta>this.container.scrollWidth&&(e=this.container.scrollWidth-this.layout.delta):i=t.top,this.scrollTo(e,i,!0)}add(t,e){var i=this.createView(t,e);return this.views.append(i),i.onDisplayed=this.afterDisplayed.bind(this),i.onResize=this.afterResized.bind(this),i.on(f.c.VIEWS.AXIS,t=>{this.updateAxis(t)}),i.on(f.c.VIEWS.WRITING_MODE,t=>{this.updateWritingMode(t)}),i.display(this.request)}append(t,e){var i=this.createView(t,e);return this.views.append(i),i.onDisplayed=this.afterDisplayed.bind(this),i.onResize=this.afterResized.bind(this),i.on(f.c.VIEWS.AXIS,t=>{this.updateAxis(t)}),i.on(f.c.VIEWS.WRITING_MODE,t=>{this.updateWritingMode(t)}),i.display(this.request)}prepend(t,e){var i=this.createView(t,e);return i.on(f.c.VIEWS.RESIZED,t=>{this.counter(t)}),this.views.prepend(i),i.onDisplayed=this.afterDisplayed.bind(this),i.onResize=this.afterResized.bind(this),i.on(f.c.VIEWS.AXIS,t=>{this.updateAxis(t)}),i.on(f.c.VIEWS.WRITING_MODE,t=>{this.updateWritingMode(t)}),i.display(this.request)}counter(t){"vertical"===this.settings.axis?this.scrollBy(0,t.heightDelta,!0):this.scrollBy(t.widthDelta,0,!0)}next(){var t;let e=this.settings.direction;if(this.views.length){if(!this.isPaginated||"horizontal"!==this.settings.axis||e&&"ltr"!==e)if(this.isPaginated&&"horizontal"===this.settings.axis&&"rtl"===e)this.scrollLeft=this.container.scrollLeft,"default"===this.settings.rtlScrollType?this.container.scrollLeft>0?this.scrollBy(this.layout.delta,0,!0):t=this.views.last().section.next():this.container.scrollLeft+-1*this.layout.delta>-1*this.container.scrollWidth?this.scrollBy(this.layout.delta,0,!0):t=this.views.last().section.next();else if(this.isPaginated&&"vertical"===this.settings.axis){this.scrollTop=this.container.scrollTop,this.container.scrollTop+this.container.offsetHeightt).then(function(){this.isPaginated||"horizontal"!==this.settings.axis||"rtl"!==this.settings.direction||"default"!==this.settings.rtlScrollType||this.scrollTo(this.container.scrollWidth,0,!0),this.views.show()}.bind(this))}}}prev(){var t;let e=this.settings.direction;if(this.views.length){if(!this.isPaginated||"horizontal"!==this.settings.axis||e&&"ltr"!==e)if(this.isPaginated&&"horizontal"===this.settings.axis&&"rtl"===e)this.scrollLeft=this.container.scrollLeft,"default"===this.settings.rtlScrollType?this.container.scrollLeft+this.container.offsetWidth0?this.scrollBy(0,-this.layout.height,!0):t=this.views.first().section.prev()}else t=this.views.first().section.prev();else this.scrollLeft=this.container.scrollLeft,this.container.scrollLeft>0?this.scrollBy(-this.layout.delta,0,!0):t=this.views.first().section.prev();if(t){this.clear();let e=!1;return"pre-paginated"===this.layout.name&&2===this.layout.divisor&&"object"!=typeof t.prev()&&(e=!0),this.prepend(t,e).then(function(){var e;if("pre-paginated"===this.layout.name&&this.layout.divisor>1&&(e=t.prev()))return this.prepend(e)}.bind(this),t=>t).then(function(){this.isPaginated&&"horizontal"===this.settings.axis&&("rtl"===this.settings.direction?"default"===this.settings.rtlScrollType?this.scrollTo(0,0,!0):this.scrollTo(-1*this.container.scrollWidth+this.layout.delta,0,!0):this.scrollTo(this.container.scrollWidth-this.layout.delta,0,!0)),this.views.show()}.bind(this))}}}current(){var t=this.visible();return t.length?t[t.length-1]:null}clear(){this.views&&(this.views.hide(),this.scrollTo(0,0,!0),this.views.clear())}currentLocation(){return this.isPaginated&&"horizontal"===this.settings.axis?this.location=this.paginatedLocation():this.location=this.scrolledLocation(),this.location}scrolledLocation(){let t=this.visible(),e=this.container.getBoundingClientRect(),i=e.height{let o,a,h,l,{index:c,href:u}=t.section,d=t.position(),f=t.width(),p=t.height();r?(o=s+e.top-d.top+0,a=o+i-0,l=this.layout.count(p,i).pages,h=i):(o=s+e.left-d.left+0,a=o+n-0,l=this.layout.count(f,n).pages,h=n);let g=Math.ceil(o/h),v=[],m=Math.ceil(a/h);if("rtl"===this.settings.direction&&!r){let t=g;g=l-m,m=l-t}v=[];for(var y=g;y<=m;y++){let t=y+1;v.push(t)}return{index:c,href:u,pages:v,totalPages:l,mapping:this.mapping.page(t.contents,t.section.cfiBase,o,a)}})}paginatedLocation(){let t=this.visible(),e=this.container.getBoundingClientRect(),i=0,n=0;return this.settings.fullsize&&(i=window.scrollX),t.map(t=>{let r,s,o,a,{index:h,href:l}=t.section,c=t.position(),u=t.width();"rtl"===this.settings.direction?(r=e.right-i,a=Math.min(Math.abs(r-c.left),this.layout.width)-n,o=c.width-(c.right-r)-n,s=o-a):(r=e.left+i,a=Math.min(c.right-r,this.layout.width)-n,s=r-c.left+n,o=s+a),n+=a;let d=this.mapping.page(t.contents,t.section.cfiBase,s,o),f=this.layout.count(u).pages,p=Math.floor(s/this.layout.pageWidth),g=[],v=Math.floor(o/this.layout.pageWidth);if(p<0&&(p=0,v+=1),"rtl"===this.settings.direction){let t=p;p=f-v,v=f-t}for(var m=p+1;m<=v;m++){let t=m;g.push(t)}return{index:h,href:l,pages:g,totalPages:f,mapping:d}})}isVisible(t,e,i,n){var r=t.position(),s=n||this.bounds();return"horizontal"===this.settings.axis&&r.right>s.left-e&&r.lefts.top-e&&r.top0&&"pre-paginated"===this.layout.name&&this.display(this.views.first().section)}updateLayout(){this.stage&&(this._stageSize=this.stage.size(),this.isPaginated?(this.layout.calculate(this._stageSize.width,this._stageSize.height,this.settings.gap),this.settings.offset=this.layout.delta/this.layout.divisor):this.layout.calculate(this._stageSize.width,this._stageSize.height),this.viewSettings.width=this.layout.width,this.viewSettings.height=this.layout.height,this.setLayout(this.layout))}setLayout(t){this.viewSettings.layout=t,this.mapping=new a.a(t.props,this.settings.direction,this.settings.axis),this.views&&this.views.forEach((function(e){e&&e.setLayout(t)}))}updateWritingMode(t){this.writingMode=t}updateAxis(t,e){(e||t!==this.settings.axis)&&(this.settings.axis=t,this.stage&&this.stage.axis(t),this.viewSettings.axis=t,this.mapping&&(this.mapping=new a.a(this.layout.props,this.settings.direction,this.settings.axis)),this.layout&&("vertical"===t?this.layout.spread("none"):this.layout.spread(this.layout.settings.spread)))}updateFlow(t,e="auto"){let i="paginated"===t||"auto"===t;this.isPaginated=i,"scrolled-doc"===t||"scrolled-continuous"===t||"scrolled"===t?this.updateAxis("vertical"):this.updateAxis("horizontal"),this.viewSettings.flow=t,this.settings.overflow?this.overflow=this.settings.overflow:this.overflow=i?"hidden":e,this.stage&&this.stage.overflow(this.overflow),this.updateLayout()}getContents(){var t=[];return this.views?(this.views.forEach((function(e){const i=e&&e.contents;i&&t.push(i)})),t):t}direction(t="ltr"){this.settings.direction=t,this.stage&&this.stage.direction(t),this.viewSettings.direction=t,this.updateLayout()}isRendered(){return this.rendered}}r()(p.prototype);e.a=p},function(t,e,i){"use strict";var n=i(2),r=i(0);e.a=class{constructor(t,e,i,n=!1){this.layout=t,this.horizontal="horizontal"===i,this.direction=e||"ltr",this._dev=n}section(t){var e=this.findRanges(t);return this.rangeListToCfiList(t.section.cfiBase,e)}page(t,e,i,r){var s,o=!(!t||!t.document)&&t.document.body;if(o){if(s=this.rangePairToCfiPair(e,{start:this.findStart(o,i,r),end:this.findEnd(o,i,r)}),!0===this._dev){let e=t.document,i=new n.a(s.start).toRange(e),r=new n.a(s.end).toRange(e),o=e.defaultView.getSelection(),a=e.createRange();o.removeAllRanges(),a.setStart(i.startContainer,i.startOffset),a.setEnd(r.endContainer,r.endOffset),o.addRange(a)}return s}}walk(t,e){if(!t||t.nodeType!==Node.TEXT_NODE){var i=function(t){return t.data.trim().length>0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT},n=i;n.acceptNode=i;for(var r,s,o=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,n,!1);(r=o.nextNode())&&!(s=e(r)););return s}}findRanges(t){for(var e,i,n=[],r=t.contents.scrollWidth(),s=Math.ceil(r/this.layout.spreadWidth)*this.layout.divisor,o=this.layout.columnWidth,a=this.layout.gap,h=0;h{var n,s,h,l,c;if(c=Object(r.nodeBounds)(t),this.horizontal&&"ltr"===this.direction){if(n=this.horizontal?c.left:c.top,s=this.horizontal?c.right:c.bottom,n>=e&&n<=i)return t;if(s>e)return t;a=t,o.push(t)}else if(this.horizontal&&"rtl"===this.direction){if(n=c.left,(s=c.right)<=i&&s>=e)return t;if(n=e&&h<=i)return t;if(l>e)return t;a=t,o.push(t)}}))return this.findTextStartRange(s,e,i);return this.findTextStartRange(a,e,i)}findEnd(t,e,i){for(var n,s,o=[t],a=t;o.length;)if(n=o.shift(),s=this.walk(n,t=>{var n,s,h,l,c;if(c=Object(r.nodeBounds)(t),this.horizontal&&"ltr"===this.direction){if(n=Math.round(c.left),s=Math.round(c.right),n>i&&a)return a;if(s>i)return t;a=t,o.push(t)}else if(this.horizontal&&"rtl"===this.direction){if(n=Math.round(this.horizontal?c.left:c.top),(s=Math.round(this.horizontal?c.right:c.bottom))i&&a)return a;if(l>i)return t;a=t,o.push(t)}}))return this.findTextEndRange(s,e,i);return this.findTextEndRange(a,e,i)}findTextStartRange(t,e,i){for(var n,r,s=this.splitTextNodeIntoRanges(t),o=0;o=e)return n}else if(this.horizontal&&"rtl"===this.direction){if(r.right<=i)return n}else if(r.top>=e)return n;return s[0]}findTextEndRange(t,e,i){for(var n,r,s,o,a,h,l,c=this.splitTextNodeIntoRanges(t),u=0;ui&&n)return n;if(a>i)return r}else if(this.horizontal&&"rtl"===this.direction){if(o=s.left,(a=s.right)i&&n)return n;if(l>i)return r}n=r}return c[c.length-1]}splitTextNodeIntoRanges(t,e){var i,n=[],r=(t.textContent||"").trim(),s=t.ownerDocument,o=e||" ",a=r.indexOf(o);if(-1===a||t.nodeType!=Node.TEXT_NODE)return(i=s.createRange()).selectNodeContents(t),[i];for((i=s.createRange()).setStart(t,0),i.setEnd(t,a),n.push(i),i=!1;-1!=a;)(a=r.indexOf(o,a+1))>0&&(i&&(i.setEnd(t,a),n.push(i)),(i=s.createRange()).setStart(t,a+1));return i&&(i.setEnd(t,r.length),n.push(i)),n}rangePairToCfiPair(t,e){var i=e.start,r=e.end;return i.collapse(!0),r.collapse(!1),{start:new n.a(i,t).toString(),end:new n.a(r,t).toString()}}rangeListToCfiList(t,e){for(var i,n=[],r=0;r]*>)/g,g=/\$([$&'`]|\d\d?)/g;n("replace",2,(function(t,e,i,n){var v=n.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,m=n.REPLACE_KEEPS_$0,y=v?"$":"$0";return[function(i,n){var r=h(this),s=null==i?void 0:i[t];return void 0!==s?s.call(i,r,n):e.call(String(r),i,n)},function(t,n){if(!v&&m||"string"==typeof n&&-1===n.indexOf(y)){var s=i(e,t,this,n);if(s.done)return s.value}var h=r(t),f=String(this),p="function"==typeof n;p||(n=String(n));var g=h.global;if(g){var w=h.unicode;h.lastIndex=0}for(var x=[];;){var E=c(h,f);if(null===E)break;if(x.push(E),!g)break;""===String(E[0])&&(h.lastIndex=l(f,o(h.lastIndex),w))}for(var S,_="",O=0,C=0;C=O&&(_+=f.slice(O,k)+N,O=k+T.length)}return _+f.slice(O)}];function b(t,i,n,r,o,a){var h=n+t.length,l=r.length,c=g;return void 0!==o&&(o=s(o),c=p),e.call(a,c,(function(e,s){var a;switch(s.charAt(0)){case"$":return"$";case"&":return t;case"`":return i.slice(0,n);case"'":return i.slice(h);case"<":a=o[s.slice(1,-1)];break;default:var c=+s;if(0===c)return e;if(c>l){var u=f(c/10);return 0===u?e:u<=l?void 0===r[u-1]?s.charAt(1):r[u-1]+s.charAt(1):e}a=r[c-1]}return void 0===a?"":a}))}}))},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e,i){var n,r,s,o=i(89),a=i(7),h=i(17),l=i(15),c=i(10),u=i(43),d=i(44),f=a.WeakMap;if(o){var p=new f,g=p.get,v=p.has,m=p.set;n=function(t,e){return m.call(p,t,e),e},r=function(t){return g.call(p,t)||{}},s=function(t){return v.call(p,t)}}else{var y=u("state");d[y]=!0,n=function(t,e){return l(t,y,e),e},r=function(t){return c(t,y)?t[y]:{}},s=function(t){return c(t,y)}}t.exports={set:n,get:r,has:s,enforce:function(t){return s(t)?r(t):n(t,{})},getterFor:function(t){return function(e){var i;if(!h(e)||(i=r(e)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return i}}}},function(t,e){t.exports={}},function(t,e,i){"use strict";var n=i(3),r=i.n(n),s=i(0),o=i(2),a=i(23),h=i(11),l=i(1);const c="undefined"!=typeof navigator,u=c&&/Chrome/.test(navigator.userAgent),d=c&&!u&&/AppleWebKit/.test(navigator.userAgent);class f{constructor(t,e,i,n){this.epubcfi=new o.a,this.document=t,this.documentElement=this.document.documentElement,this.content=e||this.document.body,this.window=this.document.defaultView,this._size={width:0,height:0},this.sectionIndex=n||0,this.cfiBase=i||"",this.epubReadingSystem("epub.js",l.b),this.called=0,this.active=!0,this.listeners()}static get listenedEvents(){return l.a}width(t){var e=this.content;return t&&Object(s.isNumber)(t)&&(t+="px"),t&&(e.style.width=t),parseInt(this.window.getComputedStyle(e).width)}height(t){var e=this.content;return t&&Object(s.isNumber)(t)&&(t+="px"),t&&(e.style.height=t),parseInt(this.window.getComputedStyle(e).height)}contentWidth(t){var e=this.content||this.document.body;return t&&Object(s.isNumber)(t)&&(t+="px"),t&&(e.style.width=t),parseInt(this.window.getComputedStyle(e).width)}contentHeight(t){var e=this.content||this.document.body;return t&&Object(s.isNumber)(t)&&(t+="px"),t&&(e.style.height=t),parseInt(this.window.getComputedStyle(e).height)}textWidth(){let t,e,i=this.document.createRange(),n=this.content||this.document.body,r=Object(s.borders)(n);return i.selectNodeContents(n),t=i.getBoundingClientRect(),e=t.width,r&&r.width&&(e+=r.width),Math.round(e)}textHeight(){let t,e,i=this.document.createRange(),n=this.content||this.document.body;return i.selectNodeContents(n),t=i.getBoundingClientRect(),e=t.bottom,Math.round(e)}scrollWidth(){return this.documentElement.scrollWidth}scrollHeight(){return this.documentElement.scrollHeight}overflow(t){return t&&(this.documentElement.style.overflow=t),this.window.getComputedStyle(this.documentElement).overflow}overflowX(t){return t&&(this.documentElement.style.overflowX=t),this.window.getComputedStyle(this.documentElement).overflowX}overflowY(t){return t&&(this.documentElement.style.overflowY=t),this.window.getComputedStyle(this.documentElement).overflowY}css(t,e,i){var n=this.content||this.document.body;return e?n.style.setProperty(t,e,i?"important":""):n.style.removeProperty(t),this.window.getComputedStyle(n)[t]}viewport(t){var e,i=this.document.querySelector("meta[name='viewport']"),n={width:void 0,height:void 0,scale:void 0,minimum:void 0,maximum:void 0,scalable:void 0},r=[];if(i&&i.hasAttribute("content")){let t=i.getAttribute("content"),e=t.match(/width\s*=\s*([^,]*)/),r=t.match(/height\s*=\s*([^,]*)/),s=t.match(/initial-scale\s*=\s*([^,]*)/),o=t.match(/minimum-scale\s*=\s*([^,]*)/),a=t.match(/maximum-scale\s*=\s*([^,]*)/),h=t.match(/user-scalable\s*=\s*([^,]*)/);e&&e.length&&void 0!==e[1]&&(n.width=e[1]),r&&r.length&&void 0!==r[1]&&(n.height=r[1]),s&&s.length&&void 0!==s[1]&&(n.scale=s[1]),o&&o.length&&void 0!==o[1]&&(n.minimum=o[1]),a&&a.length&&void 0!==a[1]&&(n.maximum=a[1]),h&&h.length&&void 0!==h[1]&&(n.scalable=h[1])}return e=Object(s.defaults)(t||{},n),t&&(e.width&&r.push("width="+e.width),e.height&&r.push("height="+e.height),e.scale&&r.push("initial-scale="+e.scale),"no"===e.scalable?(r.push("minimum-scale="+e.scale),r.push("maximum-scale="+e.scale),r.push("user-scalable="+e.scalable)):(e.scalable&&r.push("user-scalable="+e.scalable),e.minimum&&r.push("minimum-scale="+e.minimum),e.maximum&&r.push("minimum-scale="+e.maximum)),i||((i=this.document.createElement("meta")).setAttribute("name","viewport"),this.document.querySelector("head").appendChild(i)),i.setAttribute("content",r.join(", ")),this.window.scrollTo(0,0)),e}expand(){this.emit(l.c.CONTENTS.EXPAND)}listeners(){this.imageLoadListeners(),this.mediaQueryListeners(),this.addEventListeners(),this.addSelectionListeners(),"undefined"==typeof ResizeObserver?(this.resizeListeners(),this.visibilityListeners()):this.resizeObservers(),this.linksHandler()}removeListeners(){this.removeEventListeners(),this.removeSelectionListeners(),this.observer&&this.observer.disconnect(),clearTimeout(this.expanding)}resizeCheck(){let t=this.textWidth(),e=this.textHeight();t==this._size.width&&e==this._size.height||(this._size={width:t,height:e},this.onResize&&this.onResize(this._size),this.emit(l.c.CONTENTS.RESIZE,this._size))}resizeListeners(){clearTimeout(this.expanding),requestAnimationFrame(this.resizeCheck.bind(this)),this.expanding=setTimeout(this.resizeListeners.bind(this),350)}visibilityListeners(){document.addEventListener("visibilitychange",()=>{"visible"===document.visibilityState&&!1===this.active?(this.active=!0,this.resizeListeners()):(this.active=!1,clearTimeout(this.expanding))})}transitionListeners(){let t=this.content;t.style.transitionProperty="font, font-size, font-size-adjust, font-stretch, font-variation-settings, font-weight, width, height",t.style.transitionDuration="0.001ms",t.style.transitionTimingFunction="linear",t.style.transitionDelay="0",this._resizeCheck=this.resizeCheck.bind(this),this.document.addEventListener("transitionend",this._resizeCheck)}mediaQueryListeners(){for(var t=this.document.styleSheets,e=function(t){t.matches&&!this._expanding&&setTimeout(this.expand.bind(this),1)}.bind(this),i=0;i{requestAnimationFrame(this.resizeCheck.bind(this))}),this.observer.observe(this.document.documentElement)}mutationObservers(){this.observer=new MutationObserver(t=>{this.resizeCheck()});this.observer.observe(this.document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})}imageLoadListeners(){for(var t,e=this.document.querySelectorAll("img"),i=0;i0?(e.setStart(t,r.startOffset-2),e.setEnd(t,r.startOffset),i=e.getBoundingClientRect()):i=t.parentNode.getBoundingClientRect()}catch(t){console.error(t,t.stack)}}else i=r.getBoundingClientRect()}}else if("string"==typeof t&&t.indexOf("#")>-1){let e=t.substring(t.indexOf("#")+1),n=this.document.getElementById(e);if(n)if(d){let t=new Range;t.selectNode(n),i=t.getBoundingClientRect()}else i=n.getBoundingClientRect()}return i&&(n.left=i.left,n.top=i.top),n}addStylesheet(t){return new Promise(function(e,i){var n,r=!1;this.document?(n=this.document.querySelector("link[href='"+t+"']"))?e(!0):((n=this.document.createElement("link")).type="text/css",n.rel="stylesheet",n.href=t,n.onload=n.onreadystatechange=function(){r||this.readyState&&"complete"!=this.readyState||(r=!0,setTimeout(()=>{e(!0)},1))},this.document.head.appendChild(n)):e(!1)}.bind(this))}_getStylesheetNode(t){var e;return t="epubjs-inserted-css-"+(t||""),!!this.document&&((e=this.document.getElementById(t))||((e=this.document.createElement("style")).id=t,this.document.head.appendChild(e)),e)}addStylesheetCss(t,e){return!(!this.document||!t)&&(this._getStylesheetNode(e).innerHTML=t,!0)}addStylesheetRules(t,e){var i;if(this.document&&t&&0!==t.length)if(i=this._getStylesheetNode(e).sheet,"[object Array]"===Object.prototype.toString.call(t))for(var n=0,r=t.length;n{const n=t[e];if(Array.isArray(n))n.forEach(t=>{const n=Object.keys(t).map(e=>`${e}:${t[e]}`).join(";");i.insertRule(`${e}{${n}}`,i.cssRules.length)});else{const t=Object.keys(n).map(t=>`${t}:${n[t]}`).join(";");i.insertRule(`${e}{${t}}`,i.cssRules.length)}})}}addScript(t){return new Promise(function(e,i){var n,r=!1;this.document?((n=this.document.createElement("script")).type="text/javascript",n.async=!0,n.src=t,n.onload=n.onreadystatechange=function(){r||this.readyState&&"complete"!=this.readyState||(r=!0,setTimeout((function(){e(!0)}),1))},this.document.head.appendChild(n)):e(!1)}.bind(this))}addClass(t){var e;this.document&&(e=this.content||this.document.body)&&e.classList.add(t)}removeClass(t){var e;this.document&&(e=this.content||this.document.body)&&e.classList.remove(t)}addEventListeners(){this.document&&(this._triggerEvent=this.triggerEvent.bind(this),l.a.forEach((function(t){this.document.addEventListener(t,this._triggerEvent,{passive:!0})}),this))}removeEventListeners(){this.document&&(l.a.forEach((function(t){this.document.removeEventListener(t,this._triggerEvent,{passive:!0})}),this),this._triggerEvent=void 0)}triggerEvent(t){this.emit(t.type,t)}addSelectionListeners(){this.document&&(this._onSelectionChange=this.onSelectionChange.bind(this),this.document.addEventListener("selectionchange",this._onSelectionChange,{passive:!0}))}removeSelectionListeners(){this.document&&(this.document.removeEventListener("selectionchange",this._onSelectionChange,{passive:!0}),this._onSelectionChange=void 0)}onSelectionChange(t){this.selectionEndTimeout&&clearTimeout(this.selectionEndTimeout),this.selectionEndTimeout=setTimeout(function(){var t=this.window.getSelection();this.triggerSelectedEvent(t)}.bind(this),250)}triggerSelectedEvent(t){var e,i;t&&t.rangeCount>0&&((e=t.getRangeAt(0)).collapsed||(i=new o.a(e,this.cfiBase).toString(),this.emit(l.c.CONTENTS.SELECTED,i),this.emit(l.c.CONTENTS.SELECTED_RANGE,e)))}range(t,e){return new o.a(t).toRange(this.document,e)}cfiFromRange(t,e){return new o.a(t,this.cfiBase,e).toString()}cfiFromNode(t,e){return new o.a(t,this.cfiBase,e).toString()}map(t){return new a.a(t).section()}size(t,e){var i={scale:1,scalable:"no"};this.layoutStyle("scrolling"),t>=0&&(this.width(t),i.width=t,this.css("padding","0 "+t/12+"px")),e>=0&&(this.height(e),i.height=e),this.css("margin","0"),this.css("box-sizing","border-box"),this.viewport(i)}columns(t,e,i,n,r){let o=Object(s.prefixed)("column-axis"),a=Object(s.prefixed)("column-gap"),h=Object(s.prefixed)("column-width"),l=Object(s.prefixed)("column-fill"),c=0===this.writingMode().indexOf("vertical")?"vertical":"horizontal";this.layoutStyle("paginated"),"rtl"===r&&"horizontal"===c&&this.direction(r),this.width(t),this.height(e),this.viewport({width:t,height:e,scale:1,scalable:"no"}),this.css("overflow-y","hidden"),this.css("margin","0",!0),"vertical"===c?(this.css("padding-top",n/2+"px",!0),this.css("padding-bottom",n/2+"px",!0),this.css("padding-left","20px"),this.css("padding-right","20px"),this.css(o,"vertical")):(this.css("padding-top","20px"),this.css("padding-bottom","20px"),this.css("padding-left",n/2+"px",!0),this.css("padding-right",n/2+"px",!0),this.css(o,"horizontal")),this.css("box-sizing","border-box"),this.css("max-width","inherit"),this.css(l,"auto"),this.css(a,n+"px"),this.css(h,i+"px"),this.css("-webkit-line-box-contain","block glyphs replaced")}scaler(t,e,i){var n="scale("+t+")",r="";this.css("transform-origin","top left"),(e>=0||i>=0)&&(r=" translate("+(e||0)+"px, "+(i||0)+"px )"),this.css("transform",n+r)}fit(t,e,i){var n=this.viewport(),r=parseInt(n.width),s=parseInt(n.height),o=t/r,a=e/s,h=o{this.emit(l.c.CONTENTS.LINK_CLICKED,t)})}writingMode(t){let e=Object(s.prefixed)("writing-mode");return t&&this.documentElement&&(this.documentElement.style[e]=t),this.window.getComputedStyle(this.documentElement)[e]||""}layoutStyle(t){return t&&(this._layoutStyle=t,navigator.epubReadingSystem.layoutStyle=this._layoutStyle),this._layoutStyle||"paginated"}epubReadingSystem(t,e){return navigator.epubReadingSystem={name:t,version:e,layoutStyle:this.layoutStyle(),hasFeature:function(t){switch(t){case"dom-manipulation":case"layout-changes":case"touch-events":case"mouse-events":case"keyboard-events":return!0;case"spine-scripting":default:return!1}}},navigator.epubReadingSystem}destroy(){this.removeListeners()}}r()(f.prototype),e.a=f},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Underline=e.Highlight=e.Mark=e.Pane=void 0;var n=function(){function t(t,e){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:document.body;l(this,t),this.target=e,this.element=r.default.createElement("svg"),this.marks=[],this.element.style.position="absolute",this.element.setAttribute("pointer-events","none"),s.default.proxyMouse(this.target,this.marks),this.container=i,this.container.appendChild(this.element),this.render()}return n(t,[{key:"addMark",value:function(t){var e=r.default.createElement("g");return this.element.appendChild(e),t.bind(e,this.container),this.marks.push(t),t.render(),t}},{key:"removeMark",value:function(t){var e=this.marks.indexOf(t);if(-1!==e){var i=t.unbind();this.element.removeChild(i),this.marks.splice(e,1)}}},{key:"render",value:function(){var t,e,i,n;!function(t,e){t.style.setProperty("top",e.top+"px","important"),t.style.setProperty("left",e.left+"px","important"),t.style.setProperty("height",e.height+"px","important"),t.style.setProperty("width",e.width+"px","important")}(this.element,(t=this.target,e=this.container,i=e.getBoundingClientRect(),n=t.getBoundingClientRect(),{top:n.top-i.top,left:n.left-i.left,height:t.scrollHeight,width:t.scrollWidth}));var r=!0,s=!1,o=void 0;try{for(var a,h=this.marks[Symbol.iterator]();!(r=(a=h.next()).done);r=!0){a.value.render()}}catch(t){s=!0,o=t}finally{try{!r&&h.return&&h.return()}finally{if(s)throw o}}}}]),t}();var c=e.Mark=function(){function t(){l(this,t),this.element=null}return n(t,[{key:"bind",value:function(t,e){this.element=t,this.container=e}},{key:"unbind",value:function(){var t=this.element;return this.element=null,t}},{key:"render",value:function(){}},{key:"dispatchEvent",value:function(t){this.element&&this.element.dispatchEvent(t)}},{key:"getBoundingClientRect",value:function(){return this.element.getBoundingClientRect()}},{key:"getClientRects",value:function(){for(var t=[],e=this.element.firstChild;e;)t.push(e.getBoundingClientRect()),e=e.nextSibling;return t}},{key:"filteredRanges",value:function(){var t=Array.from(this.range.getClientRects());return t.filter((function(e){for(var i=0;i=n.left&&r.top>=n.top&&r.bottom<=n.bottom)return!1}var n,r;return!0}))}}]),t}(),u=e.Highlight=function(t){function e(t,i,n,r){l(this,e);var s=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return s.range=t,s.className=i,s.data=n||{},s.attributes=r||{},s}return h(e,t),n(e,[{key:"bind",value:function(t,i){for(var n in function t(e,i,n){null===e&&(e=Function.prototype);var r=Object.getOwnPropertyDescriptor(e,i);if(void 0===r){var s=Object.getPrototypeOf(e);return null===s?void 0:t(s,i,n)}if("value"in r)return r.value;var o=r.get;return void 0!==o?o.call(n):void 0}(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"bind",this).call(this,t,i),this.data)this.data.hasOwnProperty(n)&&(this.element.dataset[n]=this.data[n]);for(var n in this.attributes)this.attributes.hasOwnProperty(n)&&this.element.setAttribute(n,this.attributes[n]);this.className&&this.element.classList.add(this.className)}},{key:"render",value:function(){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);for(var t=this.element.ownerDocument.createDocumentFragment(),e=this.filteredRanges(),i=this.element.getBoundingClientRect(),n=this.container.getBoundingClientRect(),s=0,o=e.length;s0?n:i)(t)}},function(t,e,i){var n=i(33);t.exports=function(t){return Object(n(t))}},function(t,e,i){var n=i(18).f,r=i(10),s=i(8)("toStringTag");t.exports=function(t,e,i){t&&!r(t=i?t:t.prototype,s)&&n(t,s,{configurable:!0,value:e})}},function(e,i){e.exports=t},function(t,e,i){"use strict";var n=i(3),r=i.n(n),s=i(0),o=i(6),a=i(2),h=i(21),l=i(1);class c{constructor(t){this.settings=t,this.name=t.layout||"reflowable",this._spread="none"!==t.spread,this._minSpreadWidth=t.minSpreadWidth||800,this._evenSpreads=t.evenSpreads||!1,"scrolled"===t.flow||"scrolled-continuous"===t.flow||"scrolled-doc"===t.flow?this._flow="scrolled":this._flow="paginated",this.width=0,this.height=0,this.spreadWidth=0,this.delta=0,this.columnWidth=0,this.gap=0,this.divisor=1,this.props={name:this.name,spread:this._spread,flow:this._flow,width:0,height:0,spreadWidth:0,delta:0,columnWidth:0,gap:0,divisor:1}}flow(t){return void 0!==t&&(this._flow="scrolled"===t||"scrolled-continuous"===t||"scrolled-doc"===t?"scrolled":"paginated",this.update({flow:this._flow})),this._flow}spread(t,e){return t&&(this._spread="none"!==t,this.update({spread:this._spread})),e>=0&&(this._minSpreadWidth=e),this._spread}calculate(t,e,i){var n,r,s,o,a=1,h=i||0,l=t,c=e,u=Math.floor(l/12);a=this._spread&&l>=this._minSpreadWidth?2:1,"reflowable"!==this.name||"paginated"!==this._flow||i>=0||(h=u%2==0?u:u-1),"pre-paginated"===this.name&&(h=0),a>1?s=(n=l/a-h)+h:(n=l,s=l),"pre-paginated"===this.name&&a>1&&(l=n),r=n*a+h,o=l,this.width=l,this.height=c,this.spreadWidth=r,this.pageWidth=s,this.delta=o,this.columnWidth=n,this.gap=h,this.divisor=a,this.update({width:l,height:c,spreadWidth:r,pageWidth:s,delta:o,columnWidth:n,gap:h,divisor:a})}format(t,e,i){return"pre-paginated"===this.name?t.fit(this.columnWidth,this.height,e):"paginated"===this._flow?t.columns(this.width,this.height,this.columnWidth,this.gap,this.settings.direction):i&&"horizontal"===i?t.size(null,this.height):t.size(this.width,null)}count(t,e){let i,n;return"pre-paginated"===this.name?(i=1,n=1):"paginated"===this._flow?(e=e||this.delta,i=Math.ceil(t/e),n=i*this.divisor):(e=e||this.height,i=Math.ceil(t/e),n=i),{spreads:i,pages:n}}update(t){if(Object.keys(t).forEach(e=>{this.props[e]===t[e]&&delete t[e]}),Object.keys(t).length>0){let e=Object(s.extend)(this.props,t);this.emit(l.c.LAYOUT.UPDATED,e,t)}}}r()(c.prototype);var u=c,d=i(5);var f=class{constructor(t){this.rendition=t,this._themes={default:{rules:{},url:"",serialized:""}},this._overrides={},this._current="default",this._injected=[],this.rendition.hooks.content.register(this.inject.bind(this)),this.rendition.hooks.content.register(this.overrides.bind(this))}register(){if(0!==arguments.length)return 1===arguments.length&&"object"==typeof arguments[0]?this.registerThemes(arguments[0]):1===arguments.length&&"string"==typeof arguments[0]?this.default(arguments[0]):2===arguments.length&&"string"==typeof arguments[1]?this.registerUrl(arguments[0],arguments[1]):2===arguments.length&&"object"==typeof arguments[1]?this.registerRules(arguments[0],arguments[1]):void 0}default(t){if(t)return"string"==typeof t?this.registerUrl("default",t):"object"==typeof t?this.registerRules("default",t):void 0}registerThemes(t){for(var e in t)t.hasOwnProperty(e)&&("string"==typeof t[e]?this.registerUrl(e,t[e]):this.registerRules(e,t[e]))}registerCss(t,e){this._themes[t]={serialized:e},(this._injected[t]||"default"==t)&&this.update(t)}registerUrl(t,e){var i=new d.a(e);this._themes[t]={url:i.toString()},(this._injected[t]||"default"==t)&&this.update(t)}registerRules(t,e){this._themes[t]={rules:e},(this._injected[t]||"default"==t)&&this.update(t)}select(t){var e=this._current;this._current=t,this.update(t),this.rendition.getContents().forEach(i=>{i.removeClass(e),i.addClass(t)})}update(t){this.rendition.getContents().forEach(e=>{this.add(t,e)})}inject(t){var e,i=[],n=this._themes;for(var r in n)!n.hasOwnProperty(r)||r!==this._current&&"default"!==r||(((e=n[r]).rules&&Object.keys(e.rules).length>0||e.url&&-1===i.indexOf(e.url))&&this.add(r,t),this._injected.push(r));"default"!=this._current&&t.addClass(this._current)}add(t,e){var i=this._themes[t];i&&e&&(i.url?e.addStylesheet(i.url):i.serialized?(e.addStylesheetCss(i.serialized,t),i.injected=!0):i.rules&&(e.addStylesheetRules(i.rules,t),i.injected=!0))}override(t,e,i){var n=this.rendition.getContents();this._overrides[t]={value:e,priority:!0===i},n.forEach(e=>{e.css(t,this._overrides[t].value,this._overrides[t].priority)})}removeOverride(t){var e=this.rendition.getContents();delete this._overrides[t],e.forEach(e=>{e.css(t)})}overrides(t){var e=this._overrides;for(var i in e)e.hasOwnProperty(i)&&t.css(i,e[i].value,e[i].priority)}fontSize(t){this.override("font-size",t)}font(t){this.override("font-family",t,!0)}destroy(){this.rendition=void 0,this._themes=void 0,this._overrides=void 0,this._current=void 0,this._injected=void 0}};i(28);class p{constructor({type:t,cfiRange:e,data:i,sectionIndex:n,cb:r,className:s,styles:o}){this.type=t,this.cfiRange=e,this.data=i,this.sectionIndex=n,this.mark=void 0,this.cb=r,this.className=s,this.styles=o}update(t){this.data=t}attach(t){let e,{cfiRange:i,data:n,type:r,mark:s,cb:o,className:a,styles:h}=this;return"highlight"===r?e=t.highlight(i,n,o,a,h):"underline"===r?e=t.underline(i,n,o,a,h):"mark"===r&&(e=t.mark(i,n,o)),this.mark=e,this.emit(l.c.ANNOTATION.ATTACH,e),e}detach(t){let e,{cfiRange:i,type:n}=this;return t&&("highlight"===n?e=t.unhighlight(i):"underline"===n?e=t.ununderline(i):"mark"===n&&(e=t.unmark(i))),this.mark=void 0,this.emit(l.c.ANNOTATION.DETACH,e),e}text(){}}r()(p.prototype);var g=class{constructor(t){this.rendition=t,this.highlights=[],this.underlines=[],this.marks=[],this._annotations={},this._annotationsBySectionIndex={},this.rendition.hooks.render.register(this.inject.bind(this)),this.rendition.hooks.unloaded.register(this.clear.bind(this))}add(t,e,i,n,r,s){let o=encodeURI(e+t),h=new a.a(e).spinePos,l=new p({type:t,cfiRange:e,data:i,sectionIndex:h,cb:n,className:r,styles:s});return this._annotations[o]=l,h in this._annotationsBySectionIndex?this._annotationsBySectionIndex[h].push(o):this._annotationsBySectionIndex[h]=[o],this.rendition.views().forEach(t=>{l.sectionIndex===t.index&&l.attach(t)}),l}remove(t,e){let i=encodeURI(t+e);if(i in this._annotations){let t=this._annotations[i];if(e&&t.type!==e)return;this.rendition.views().forEach(e=>{this._removeFromAnnotationBySectionIndex(t.sectionIndex,i),t.sectionIndex===e.index&&t.detach(e)}),delete this._annotations[i]}}_removeFromAnnotationBySectionIndex(t,e){this._annotationsBySectionIndex[t]=this._annotationsAt(t).filter(t=>t!==e)}_annotationsAt(t){return this._annotationsBySectionIndex[t]}highlight(t,e,i,n,r){return this.add("highlight",t,e,i,n,r)}underline(t,e,i,n,r){return this.add("underline",t,e,i,n,r)}mark(t,e,i){return this.add("mark",t,e,i)}each(){return this._annotations.forEach.apply(this._annotations,arguments)}inject(t){let e=t.index;if(e in this._annotationsBySectionIndex){this._annotationsBySectionIndex[e].forEach(e=>{this._annotations[e].attach(t)})}}clear(t){let e=t.index;if(e in this._annotationsBySectionIndex){this._annotationsBySectionIndex[e].forEach(e=>{this._annotations[e].detach(t)})}}show(){}hide(){}},v=i(54),m=i(22),y=i(56);class b{constructor(t,e){this.settings=Object(s.extend)(this.settings||{},{width:null,height:null,ignoreClass:"",manager:"default",view:"iframe",flow:null,layout:null,spread:null,minSpreadWidth:800,stylesheet:null,resizeOnOrientationChange:!0,script:null,snap:!1,defaultDirection:"ltr"}),Object(s.extend)(this.settings,e),"object"==typeof this.settings.manager&&(this.manager=this.settings.manager),this.book=t,this.hooks={},this.hooks.display=new o.a(this),this.hooks.serialize=new o.a(this),this.hooks.content=new o.a(this),this.hooks.unloaded=new o.a(this),this.hooks.layout=new o.a(this),this.hooks.render=new o.a(this),this.hooks.show=new o.a(this),this.hooks.content.register(this.handleLinks.bind(this)),this.hooks.content.register(this.passEvents.bind(this)),this.hooks.content.register(this.adjustImages.bind(this)),this.book.spine.hooks.content.register(this.injectIdentifier.bind(this)),this.settings.stylesheet&&this.book.spine.hooks.content.register(this.injectStylesheet.bind(this)),this.settings.script&&this.book.spine.hooks.content.register(this.injectScript.bind(this)),this.themes=new f(this),this.annotations=new g(this),this.epubcfi=new a.a,this.q=new h.a(this),this.location=void 0,this.q.enqueue(this.book.opened),this.starting=new s.defer,this.started=this.starting.promise,this.q.enqueue(this.start)}setManager(t){this.manager=t}requireManager(t){return"string"==typeof t&&"default"===t?m.a:"string"==typeof t&&"continuous"===t?y.a:t}requireView(t){return"string"==typeof t&&"iframe"===t?v.a:t}start(){switch(this.settings.layout||"pre-paginated"!==this.book.package.metadata.layout&&"true"!==this.book.displayOptions.fixedLayout||(this.settings.layout="pre-paginated"),this.book.package.metadata.spread){case"none":this.settings.spread="none";break;case"both":this.settings.spread=!0}this.manager||(this.ViewManager=this.requireManager(this.settings.manager),this.View=this.requireView(this.settings.view),this.manager=new this.ViewManager({view:this.View,queue:this.q,request:this.book.load.bind(this.book),settings:this.settings})),this.direction(this.book.package.metadata.direction||this.settings.defaultDirection),this.settings.globalLayoutProperties=this.determineLayoutProperties(this.book.package.metadata),this.flow(this.settings.globalLayoutProperties.flow),this.layout(this.settings.globalLayoutProperties),this.manager.on(l.c.MANAGERS.ADDED,this.afterDisplayed.bind(this)),this.manager.on(l.c.MANAGERS.REMOVED,this.afterRemoved.bind(this)),this.manager.on(l.c.MANAGERS.RESIZED,this.onResized.bind(this)),this.manager.on(l.c.MANAGERS.ORIENTATION_CHANGE,this.onOrientationChange.bind(this)),this.manager.on(l.c.MANAGERS.SCROLLED,this.reportLocation.bind(this)),this.emit(l.c.RENDITION.STARTED),this.starting.resolve()}attachTo(t){return this.q.enqueue(function(){this.manager.render(t,{width:this.settings.width,height:this.settings.height}),this.emit(l.c.RENDITION.ATTACHED)}.bind(this))}display(t){return this.displaying&&this.displaying.resolve(),this.q.enqueue(this._display,t)}_display(t){if(this.book){this.epubcfi.isCfiString(t);var e,i=new s.defer,n=i.promise;return this.displaying=i,this.book.locations.length()&&Object(s.isFloat)(t)&&(t=this.book.locations.cfiFromPercentage(parseFloat(t))),(e=this.book.spine.get(t))?(this.manager.display(e,t).then(()=>{i.resolve(e),this.displaying=void 0,this.emit(l.c.RENDITION.DISPLAYED,e),this.reportLocation()},t=>{this.emit(l.c.RENDITION.DISPLAY_ERROR,t)}),n):(i.reject(new Error("No Section Found")),n)}}afterDisplayed(t){t.on(l.c.VIEWS.MARK_CLICKED,(e,i)=>this.triggerMarkEvent(e,i,t.contents)),this.hooks.render.trigger(t,this).then(()=>{t.contents?this.hooks.content.trigger(t.contents,this).then(()=>{this.emit(l.c.RENDITION.RENDERED,t.section,t)}):this.emit(l.c.RENDITION.RENDERED,t.section,t)})}afterRemoved(t){this.hooks.unloaded.trigger(t,this).then(()=>{this.emit(l.c.RENDITION.REMOVED,t.section,t)})}onResized(t,e){this.emit(l.c.RENDITION.RESIZED,{width:t.width,height:t.height},e),this.location&&this.location.start&&this.display(e||this.location.start.cfi)}onOrientationChange(t){this.emit(l.c.RENDITION.ORIENTATION_CHANGE,t)}moveTo(t){this.manager.moveTo(t)}resize(t,e,i){t&&(this.settings.width=t),e&&(this.settings.height=e),this.manager.resize(t,e,i)}clear(){this.manager.clear()}next(){return this.q.enqueue(this.manager.next.bind(this.manager)).then(this.reportLocation.bind(this))}prev(){return this.q.enqueue(this.manager.prev.bind(this.manager)).then(this.reportLocation.bind(this))}determineLayoutProperties(t){var e=this.settings.layout||t.layout||"reflowable",i=this.settings.spread||t.spread||"auto",n=this.settings.orientation||t.orientation||"auto",r=this.settings.flow||t.flow||"auto",s=t.viewport||"",o=this.settings.minSpreadWidth||t.minSpreadWidth||800,a=this.settings.direction||t.direction||"ltr";return(0===this.settings.width||this.settings.width>0)&&(0===this.settings.height||this.settings.height),{layout:e,spread:i,orientation:n,flow:r,viewport:s,minSpreadWidth:o,direction:a}}flow(t){var e=t;"scrolled"!==t&&"scrolled-doc"!==t&&"scrolled-continuous"!==t||(e="scrolled"),"auto"!==t&&"paginated"!==t||(e="paginated"),this.settings.flow=t,this._layout&&this._layout.flow(e),this.manager&&this._layout&&this.manager.applyLayout(this._layout),this.manager&&this.manager.updateFlow(e),this.manager&&this.manager.isRendered()&&this.location&&(this.manager.clear(),this.display(this.location.start.cfi))}layout(t){return t&&(this._layout=new u(t),this._layout.spread(t.spread,this.settings.minSpreadWidth),this._layout.on(l.c.LAYOUT.UPDATED,(t,e)=>{this.emit(l.c.RENDITION.LAYOUT,t,e)})),this.manager&&this._layout&&this.manager.applyLayout(this._layout),this._layout}spread(t,e){this.settings.spread=t,e&&(this.settings.minSpreadWidth=e),this._layout&&this._layout.spread(t,e),this.manager&&this.manager.isRendered()&&this.manager.updateLayout()}direction(t){this.settings.direction=t||"ltr",this.manager&&this.manager.direction(this.settings.direction),this.manager&&this.manager.isRendered()&&this.location&&(this.manager.clear(),this.display(this.location.start.cfi))}reportLocation(){return this.q.enqueue(function(){requestAnimationFrame(function(){var t=this.manager.currentLocation();if(t&&t.then&&"function"==typeof t.then)t.then(function(t){let e=this.located(t);e&&e.start&&e.end&&(this.location=e,this.emit(l.c.RENDITION.LOCATION_CHANGED,{index:this.location.start.index,href:this.location.start.href,start:this.location.start.cfi,end:this.location.end.cfi,percentage:this.location.start.percentage}),this.emit(l.c.RENDITION.RELOCATED,this.location))}.bind(this));else if(t){let e=this.located(t);if(!e||!e.start||!e.end)return;this.location=e,this.emit(l.c.RENDITION.LOCATION_CHANGED,{index:this.location.start.index,href:this.location.start.href,start:this.location.start.cfi,end:this.location.end.cfi,percentage:this.location.start.percentage}),this.emit(l.c.RENDITION.RELOCATED,this.location)}}.bind(this))}.bind(this))}currentLocation(){var t=this.manager.currentLocation();if(t&&t.then&&"function"==typeof t.then)t.then(function(t){return this.located(t)}.bind(this));else if(t){return this.located(t)}}located(t){if(!t.length)return{};let e=t[0],i=t[t.length-1],n={start:{index:e.index,href:e.href,cfi:e.mapping.start,displayed:{page:e.pages[0]||1,total:e.totalPages}},end:{index:i.index,href:i.href,cfi:i.mapping.end,displayed:{page:i.pages[i.pages.length-1]||1,total:i.totalPages}}},r=this.book.locations.locationFromCfi(e.mapping.start),s=this.book.locations.locationFromCfi(i.mapping.end);null!=r&&(n.start.location=r,n.start.percentage=this.book.locations.percentageFromLocation(r)),null!=s&&(n.end.location=s,n.end.percentage=this.book.locations.percentageFromLocation(s));let o=this.book.pageList.pageFromCfi(e.mapping.start),a=this.book.pageList.pageFromCfi(i.mapping.end);return-1!=o&&(n.start.page=o),-1!=a&&(n.end.page=a),i.index===this.book.spine.last().index&&n.end.displayed.page>=n.end.displayed.total&&(n.atEnd=!0),e.index===this.book.spine.first().index&&1===n.start.displayed.page&&(n.atStart=!0),n}destroy(){this.manager&&this.manager.destroy(),this.book=void 0}passEvents(t){l.a.forEach(e=>{t.on(e,e=>this.triggerViewEvent(e,t))}),t.on(l.c.CONTENTS.SELECTED,e=>this.triggerSelectedEvent(e,t))}triggerViewEvent(t,e){this.emit(t.type,t,e)}triggerSelectedEvent(t,e){this.emit(l.c.RENDITION.SELECTED,t,e)}triggerMarkEvent(t,e,i){this.emit(l.c.RENDITION.MARK_CLICKED,t,e,i)}getRange(t,e){var i=new a.a(t),n=this.manager.visible().filter((function(t){if(i.spinePos===t.index)return!0}));if(n.length)return n[0].contents.range(i,e)}adjustImages(t){if("pre-paginated"===this._layout.name)return new Promise((function(t){t()}));let e=t.window.getComputedStyle(t.content,null),i=.95*(t.content.offsetHeight-(parseFloat(e.paddingTop)+parseFloat(e.paddingBottom))),n=parseFloat(e.paddingLeft)+parseFloat(e.paddingRight);return t.addStylesheetRules({img:{"max-width":(this._layout.columnWidth?this._layout.columnWidth-n+"px":"100%")+"!important","max-height":i+"px!important","object-fit":"contain","page-break-inside":"avoid","break-inside":"avoid","box-sizing":"border-box"},svg:{"max-width":(this._layout.columnWidth?this._layout.columnWidth-n+"px":"100%")+"!important","max-height":i+"px!important","page-break-inside":"avoid","break-inside":"avoid"}}),new Promise((function(t,e){setTimeout((function(){t()}),1)}))}getContents(){return this.manager?this.manager.getContents():[]}views(){return(this.manager?this.manager.views:void 0)||[]}handleLinks(t){t&&t.on(l.c.CONTENTS.LINK_CLICKED,t=>{let e=this.book.path.relative(t);this.display(e)})}injectStylesheet(t,e){let i=t.createElement("link");i.setAttribute("type","text/css"),i.setAttribute("rel","stylesheet"),i.setAttribute("href",this.settings.stylesheet),t.getElementsByTagName("head")[0].appendChild(i)}injectScript(t,e){let i=t.createElement("script");i.setAttribute("type","text/javascript"),i.setAttribute("src",this.settings.script),i.textContent=" ",t.getElementsByTagName("head")[0].appendChild(i)}injectIdentifier(t,e){let i=this.book.packaging.metadata.identifier,n=t.createElement("meta");n.setAttribute("name","dc.relation.ispartof"),i&&n.setAttribute("content",i),t.getElementsByTagName("head")[0].appendChild(n)}}r()(b.prototype);e.a=b},function(t,e){var i={}.toString;t.exports=function(t){return i.call(t).slice(8,-1)}},function(t,e,i){var n=i(17);t.exports=function(t,e){if(!n(t))return t;var i,r;if(e&&"function"==typeof(i=t.toString)&&!n(r=i.call(t)))return r;if("function"==typeof(i=t.valueOf)&&!n(r=i.call(t)))return r;if(!e&&"function"==typeof(i=t.toString)&&!n(r=i.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},function(t,e,i){var n=i(7),r=i(15);t.exports=function(t,e){try{r(n,t,e)}catch(i){n[t]=e}return e}},function(t,e,i){var n=i(66),r=i(67),s=n("keys");t.exports=function(t){return s[t]||(s[t]=r(t))}},function(t,e){t.exports={}},function(t,e,i){var n=i(92),r=i(7),s=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?s(n[t])||s(r[t]):n[t]&&n[t][e]||r[t]&&r[t][e]}},function(t,e,i){var n=i(35),r=Math.min;t.exports=function(t){return t>0?r(n(t),9007199254740991):0}},function(t,e){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,e,i){"use strict";var n,r,s=i(97),o=i(98),a=RegExp.prototype.exec,h=String.prototype.replace,l=a,c=(n=/a/,r=/b*/g,a.call(n,"a"),a.call(r,"a"),0!==n.lastIndex||0!==r.lastIndex),u=o.UNSUPPORTED_Y||o.BROKEN_CARET,d=void 0!==/()??/.exec("")[1];(c||d||u)&&(l=function(t){var e,i,n,r,o=this,l=u&&o.sticky,f=s.call(o),p=o.source,g=0,v=t;return l&&(-1===(f=f.replace("y","")).indexOf("g")&&(f+="g"),v=String(t).slice(o.lastIndex),o.lastIndex>0&&(!o.multiline||o.multiline&&"\n"!==t[o.lastIndex-1])&&(p="(?: "+p+")",v=" "+v,g++),i=new RegExp("^(?:"+p+")",f)),d&&(i=new RegExp("^"+p+"$(?!\\s)",f)),c&&(e=o.lastIndex),n=a.call(l?i:o,v),l?n?(n.input=n.input.slice(g),n[0]=n[0].slice(g),n.index=o.lastIndex,o.lastIndex+=n[0].length):o.lastIndex=0:c&&n&&(o.lastIndex=o.global?n.index+n[0].length:e),d&&n&&n.length>1&&h.call(n[0],i,(function(){for(r=1;r=l?t?"":void 0:(s=a.charCodeAt(h))<55296||s>56319||h+1===l||(o=a.charCodeAt(h+1))<56320||o>57343?t?a.charAt(h):s:t?a.slice(h,h+2):o-56320+(s-55296<<10)+65536}};t.exports={codeAt:s(!1),charAt:s(!0)}},function(t,e,i){var n,r=i(13),s=i(72),o=i(47),a=i(44),h=i(104),l=i(63),c=i(43),u=c("IE_PROTO"),d=function(){},f=function(t){return" diff --git a/cps/templates/search.html b/cps/templates/search.html index cba430a4..3b694229 100644 --- a/cps/templates/search.html +++ b/cps/templates/search.html @@ -67,7 +67,7 @@ {% endif %} {% endfor %} {% for format in entry.data %} - {% if format.format|lower == 'mp3' %} + {% if format.format|lower in g.constants.EXTENSIONS_AUDIO %} {% endif %} {% endfor %} diff --git a/cps/translations/cs/LC_MESSAGES/messages.po b/cps/translations/cs/LC_MESSAGES/messages.po index 04c6a949..2f28779f 100644 --- a/cps/translations/cs/LC_MESSAGES/messages.po +++ b/cps/translations/cs/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2020-10-31 19:17+0100\n" +"POT-Creation-Date: 2020-11-14 13:11+0100\n" "PO-Revision-Date: 2020-06-09 21:11+0100\n" "Last-Translator: Lukas Heroudek \n" "Language: cs_CZ\n" @@ -21,7 +21,7 @@ msgstr "" msgid "installed" msgstr "nainstalováno" -#: cps/about.py:44 cps/converter.py:33 +#: cps/about.py:44 cps/converter.py:32 msgid "not installed" msgstr "není nainstalováno" @@ -45,351 +45,351 @@ msgstr "Úspěšně obnovené připojení" msgid "Unknown command" msgstr "Neznámý příkaz" -#: cps/admin.py:116 cps/editbooks.py:612 cps/editbooks.py:624 -#: cps/editbooks.py:724 cps/editbooks.py:726 cps/editbooks.py:787 -#: cps/editbooks.py:803 cps/updater.py:510 cps/uploader.py:98 +#: cps/admin.py:116 cps/editbooks.py:611 cps/editbooks.py:623 +#: cps/editbooks.py:723 cps/editbooks.py:725 cps/editbooks.py:786 +#: cps/editbooks.py:802 cps/updater.py:510 cps/uploader.py:98 #: cps/uploader.py:108 msgid "Unknown" msgstr "Neznámý" -#: cps/admin.py:136 +#: cps/admin.py:137 msgid "Admin page" msgstr "Stránka správce" -#: cps/admin.py:158 +#: cps/admin.py:159 msgid "UI Configuration" msgstr "Konfigurace uživatelského rozhraní" -#: cps/admin.py:190 cps/admin.py:717 +#: cps/admin.py:191 cps/admin.py:718 msgid "Calibre-Web configuration updated" msgstr "Konfigurace Calibre-Web aktualizována" -#: cps/admin.py:435 cps/admin.py:441 cps/admin.py:452 cps/admin.py:463 +#: cps/admin.py:436 cps/admin.py:442 cps/admin.py:453 cps/admin.py:464 #: cps/templates/modal_dialogs.html:29 msgid "Deny" msgstr "Zakázat" -#: cps/admin.py:437 cps/admin.py:443 cps/admin.py:454 cps/admin.py:465 +#: cps/admin.py:438 cps/admin.py:444 cps/admin.py:455 cps/admin.py:466 #: cps/templates/modal_dialogs.html:28 msgid "Allow" msgstr "Povolit" -#: cps/admin.py:511 +#: cps/admin.py:512 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json není nakonfigurováno pro webové aplikace" -#: cps/admin.py:550 +#: cps/admin.py:551 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "Umístění zápisového souboru není platné. Určete prosím platnou polohu" -#: cps/admin.py:555 +#: cps/admin.py:556 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "Umístění zápisového souboru pro přístup není platné. Určete prosím platnou polohu" -#: cps/admin.py:581 +#: cps/admin.py:582 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "Prosím zadejte LDAP poskytovatele, port, DN a Identifikátor objektu uživatele" -#: cps/admin.py:594 +#: cps/admin.py:595 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "Filtr objektů skupiny LDAP musí mít jeden “%s” formátový identifikátor" -#: cps/admin.py:597 +#: cps/admin.py:598 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "Filtr objektů skupiny LDAP má nesrovnatelnou závorku" -#: cps/admin.py:601 +#: cps/admin.py:602 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "Filtr uživatelských objektů LDAP musí mít jeden “%s” formátový identifikátor" -#: cps/admin.py:604 +#: cps/admin.py:605 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "Filtr uživatelských objektů LDAP má nesrovnatelnou závorku" -#: cps/admin.py:608 +#: cps/admin.py:609 msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path" msgstr "Umístění certifikátu LDAP není platné, zadejte prosím správnou cestu" -#: cps/admin.py:630 +#: cps/admin.py:631 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "Umístění souboru klíčů není platné, zadejte prosím správnou cestu" -#: cps/admin.py:634 +#: cps/admin.py:635 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "Umístění certifikátu není platné, zadejte prosím správnou cestu" -#: cps/admin.py:700 cps/admin.py:799 cps/admin.py:889 cps/admin.py:938 +#: cps/admin.py:701 cps/admin.py:800 cps/admin.py:890 cps/admin.py:939 #: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260 #: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:712 +#: cps/admin.py:713 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "Umístění databáze není platné, opravte prosím cestu" -#: cps/admin.py:714 +#: cps/admin.py:715 msgid "DB is not Writeable" msgstr "Databáze není zapisovatelná" -#: cps/admin.py:747 +#: cps/admin.py:748 msgid "Basic Configuration" msgstr "Základní konfigurace" -#: cps/admin.py:762 cps/web.py:1505 +#: cps/admin.py:763 cps/web.py:1507 msgid "Please fill out all fields!" msgstr "Vyplňte všechna pole!" -#: cps/admin.py:765 cps/admin.py:777 cps/admin.py:783 cps/admin.py:907 +#: cps/admin.py:766 cps/admin.py:778 cps/admin.py:784 cps/admin.py:908 msgid "Add new user" msgstr "Přidat nového uživatele" -#: cps/admin.py:774 cps/web.py:1751 +#: cps/admin.py:775 cps/web.py:1753 msgid "E-mail is not from valid domain" msgstr "E-mail není z platné domény" -#: cps/admin.py:781 cps/admin.py:796 +#: cps/admin.py:782 cps/admin.py:797 msgid "Found an existing account for this e-mail address or nickname." msgstr "Byl nalezen existující účet pro tuto e-mailovou adresu nebo přezdívku." -#: cps/admin.py:792 +#: cps/admin.py:793 #, python-format msgid "User '%(user)s' created" msgstr "Uživatel '%(user)s' vytvořen" -#: cps/admin.py:808 +#: cps/admin.py:809 #, python-format msgid "User '%(nick)s' deleted" msgstr "Uživatel '%(nick)s' smazán" -#: cps/admin.py:811 +#: cps/admin.py:812 msgid "No admin user remaining, can't delete user" msgstr "Nezbývá žádný správce, nemůžete jej odstranit" -#: cps/admin.py:817 +#: cps/admin.py:818 msgid "No admin user remaining, can't remove admin role" msgstr "Nezbývá žádný správce, nelze odebrat roli správce" -#: cps/admin.py:853 cps/web.py:1793 +#: cps/admin.py:854 cps/web.py:1795 msgid "Found an existing account for this e-mail address." msgstr "Byl nalezen existující účet pro tuto e-mailovou adresu." -#: cps/admin.py:862 cps/admin.py:876 cps/admin.py:979 cps/web.py:1769 +#: cps/admin.py:863 cps/admin.py:877 cps/admin.py:980 cps/web.py:1771 #, python-format msgid "Edit User %(nick)s" msgstr "Upravit uživatele %(nick)s" -#: cps/admin.py:868 cps/web.py:1762 +#: cps/admin.py:869 cps/web.py:1764 msgid "This username is already taken" msgstr "Zadané uživatelské jméno je již použito" -#: cps/admin.py:883 +#: cps/admin.py:884 #, python-format msgid "User '%(nick)s' updated" msgstr "Uživatel '%(nick)s' aktualizován" -#: cps/admin.py:886 +#: cps/admin.py:887 msgid "An unknown error occured." msgstr "Došlo k neznámé chybě." -#: cps/admin.py:916 cps/templates/admin.html:71 +#: cps/admin.py:917 cps/templates/admin.html:71 msgid "Edit E-mail Server Settings" msgstr "Změnit SMTP nastavení" -#: cps/admin.py:945 +#: cps/admin.py:946 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "Zkušební e-mail úspěšně odeslán na %(kindlemail)s" -#: cps/admin.py:948 +#: cps/admin.py:949 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Při odesílání zkušebního e-mailu došlo k chybě: %(res)s" -#: cps/admin.py:950 +#: cps/admin.py:951 msgid "Please configure your e-mail address first..." msgstr "Prvně nastavte svou e-mailovou adresu..." -#: cps/admin.py:952 +#: cps/admin.py:953 msgid "E-mail server settings updated" msgstr "Nastavení e-mailového serveru aktualizováno" -#: cps/admin.py:963 +#: cps/admin.py:964 msgid "User not found" msgstr "Uživatel nenalezen" -#: cps/admin.py:990 +#: cps/admin.py:991 #, python-format msgid "Password for user %(user)s reset" msgstr "Heslo pro uživatele %(user)s resetováno" -#: cps/admin.py:993 cps/web.py:1529 cps/web.py:1593 +#: cps/admin.py:994 cps/web.py:1531 cps/web.py:1595 msgid "An unknown error occurred. Please try again later." msgstr "Neznámá chyba. Opakujte prosím později." -#: cps/admin.py:996 cps/web.py:1467 +#: cps/admin.py:997 cps/web.py:1469 msgid "Please configure the SMTP mail settings first..." msgstr "Nejprve nakonfigurujte nastavení pošty SMTP..." -#: cps/admin.py:1008 +#: cps/admin.py:1009 msgid "Logfile viewer" msgstr "Prohlížeč log souborů" -#: cps/admin.py:1047 +#: cps/admin.py:1049 msgid "Requesting update package" msgstr "Požadování balíčku aktualizace" -#: cps/admin.py:1048 +#: cps/admin.py:1050 msgid "Downloading update package" msgstr "Stahování balíčku aktualizace" -#: cps/admin.py:1049 +#: cps/admin.py:1051 msgid "Unzipping update package" msgstr "Rozbalování balíčku aktualizace" -#: cps/admin.py:1050 +#: cps/admin.py:1052 msgid "Replacing files" msgstr "Nahrazování souborů" -#: cps/admin.py:1051 +#: cps/admin.py:1053 msgid "Database connections are closed" msgstr "Databázová připojení jsou uzavřena" -#: cps/admin.py:1052 +#: cps/admin.py:1054 msgid "Stopping server" msgstr "Zastavuji server" -#: cps/admin.py:1053 +#: cps/admin.py:1055 msgid "Update finished, please press okay and reload page" msgstr "Aktualizace dokončena, klepněte na tlačítko OK a znovu načtěte stránku" -#: cps/admin.py:1054 cps/admin.py:1055 cps/admin.py:1056 cps/admin.py:1057 -#: cps/admin.py:1058 +#: cps/admin.py:1056 cps/admin.py:1057 cps/admin.py:1058 cps/admin.py:1059 +#: cps/admin.py:1060 msgid "Update failed:" msgstr "Aktualizace selhala:" -#: cps/admin.py:1054 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 +#: cps/admin.py:1056 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 msgid "HTTP Error" msgstr "HTTP chyba" -#: cps/admin.py:1055 cps/updater.py:322 cps/updater.py:525 +#: cps/admin.py:1057 cps/updater.py:322 cps/updater.py:525 msgid "Connection error" msgstr "Chyba připojení" -#: cps/admin.py:1056 cps/updater.py:324 cps/updater.py:527 +#: cps/admin.py:1058 cps/updater.py:324 cps/updater.py:527 msgid "Timeout while establishing connection" msgstr "Vypršel časový limit při navazování spojení" -#: cps/admin.py:1057 cps/updater.py:326 cps/updater.py:529 +#: cps/admin.py:1059 cps/updater.py:326 cps/updater.py:529 msgid "General error" msgstr "Všeobecná chyba" -#: cps/admin.py:1058 +#: cps/admin.py:1060 msgid "Update File Could Not be Saved in Temp Dir" msgstr "Aktualizační soubor nemohl být uložen do Temp Dir" -#: cps/converter.py:32 +#: cps/converter.py:31 msgid "not configured" msgstr "není nakonfigurováno" -#: cps/converter.py:34 +#: cps/converter.py:33 msgid "Execution permissions missing" msgstr "Chybí povolení k exekuci" -#: cps/editbooks.py:273 cps/editbooks.py:275 +#: cps/editbooks.py:272 cps/editbooks.py:274 msgid "Book Format Successfully Deleted" msgstr "Formát knihy úspěšně smazán" -#: cps/editbooks.py:282 cps/editbooks.py:284 +#: cps/editbooks.py:281 cps/editbooks.py:283 msgid "Book Successfully Deleted" msgstr "Kniha úspěšně smazána" -#: cps/editbooks.py:293 cps/editbooks.py:596 cps/web.py:1824 cps/web.py:1865 -#: cps/web.py:1927 +#: cps/editbooks.py:292 cps/editbooks.py:595 cps/web.py:1826 cps/web.py:1867 +#: cps/web.py:1929 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Chyba otevírání eknihy. Soubor neexistuje nebo není přístupný" -#: cps/editbooks.py:327 +#: cps/editbooks.py:326 msgid "edit metadata" msgstr "upravit metadata" -#: cps/editbooks.py:402 +#: cps/editbooks.py:401 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s není platným jazykem" -#: cps/editbooks.py:513 cps/editbooks.py:769 +#: cps/editbooks.py:512 cps/editbooks.py:768 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Soubor s příponou '%(ext)s' nelze odeslat na tento server" -#: cps/editbooks.py:517 cps/editbooks.py:773 +#: cps/editbooks.py:516 cps/editbooks.py:772 msgid "File to be uploaded must have an extension" msgstr "Soubor, který má být odeslán musí mít příponu" -#: cps/editbooks.py:529 +#: cps/editbooks.py:528 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Nepodařilo se vytvořit cestu %(path)s (oprávnění odepřeno)." -#: cps/editbooks.py:534 +#: cps/editbooks.py:533 #, python-format msgid "Failed to store file %(file)s." msgstr "Uložení souboru %(file)s se nezdařilo." -#: cps/editbooks.py:552 cps/editbooks.py:904 +#: cps/editbooks.py:551 cps/editbooks.py:903 #, python-format msgid "Database error: %(error)s." msgstr "Chyba databáze: %(error)s." -#: cps/editbooks.py:556 +#: cps/editbooks.py:555 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Formát souboru %(ext)s přidán do %(book)s" -#: cps/editbooks.py:673 +#: cps/editbooks.py:672 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:710 +#: cps/editbooks.py:709 msgid "Metadata successfully updated" msgstr "Metadata úspěšně aktualizována" -#: cps/editbooks.py:719 +#: cps/editbooks.py:718 msgid "Error editing book, please check logfile for details" msgstr "Chyba při úpravách knihy, zkontrolujte prosím log pro podrobnosti" -#: cps/editbooks.py:781 +#: cps/editbooks.py:780 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "Soubor %(filename)s nemohl být uložen do dočasného adresáře" -#: cps/editbooks.py:791 +#: cps/editbooks.py:790 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Nahraná kniha pravděpodobně existuje v knihovně, zvažte prosím změnu před nahráním nové: " -#: cps/editbooks.py:879 +#: cps/editbooks.py:878 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "Nepodařilo se přesunout soubor obalu %(file)s: %(error)s" -#: cps/editbooks.py:890 +#: cps/editbooks.py:889 #, python-format msgid "File %(file)s uploaded" msgstr "Soubor %(file)s nahrán" -#: cps/editbooks.py:916 +#: cps/editbooks.py:915 msgid "Source or destination format for conversion missing" msgstr "Chybí zdrojový nebo cílový formát pro převod" -#: cps/editbooks.py:924 +#: cps/editbooks.py:923 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Kniha byla úspěšně zařazena do fronty pro převod do %(book_format)s" -#: cps/editbooks.py:928 +#: cps/editbooks.py:927 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Při převodu této knihy došlo k chybě: %(res)s" @@ -579,7 +579,7 @@ msgstr "Přihlášení pomocí Google selhalo." msgid "Failed to fetch user info from Google." msgstr "Nepodařilo se načíst informace o uživateli z Google." -#: cps/oauth_bb.py:225 cps/web.py:1565 cps/web.py:1707 +#: cps/oauth_bb.py:225 cps/web.py:1567 cps/web.py:1709 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "nyní jste přihlášen jako: '%(nickname)s'" @@ -739,7 +739,7 @@ msgstr "" msgid "Show Downloaded Books" msgstr "" -#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:639 +#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:641 msgid "Top Rated Books" msgstr "Nejlépe hodnocené knihy" @@ -748,7 +748,7 @@ msgid "Show Top Rated Books" msgstr "Zobrazit nejlépe hodnocené knihy" #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:82 -#: cps/web.py:900 +#: cps/web.py:902 msgid "Read Books" msgstr "Přečtené knihy" @@ -757,7 +757,7 @@ msgid "Show read and unread" msgstr "Zobrazit prečtené a nepřečtené" #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:86 -#: cps/web.py:903 +#: cps/web.py:905 msgid "Unread Books" msgstr "Nepřečtené knihy" @@ -774,7 +774,7 @@ msgid "Show random books" msgstr "Zobrazit náhodné knihy" #: cps/templates/book_table.html:50 cps/templates/index.xml:75 cps/ub.py:92 -#: cps/web.py:1204 +#: cps/web.py:1206 msgid "Categories" msgstr "Kategorie" @@ -784,7 +784,7 @@ msgstr "Zobrazit výběr kategorie" #: cps/templates/book_edit.html:84 cps/templates/book_table.html:51 #: cps/templates/index.xml:82 cps/templates/search_form.html:54 cps/ub.py:95 -#: cps/web.py:1108 cps/web.py:1118 +#: cps/web.py:1110 cps/web.py:1120 msgid "Series" msgstr "Série" @@ -801,7 +801,7 @@ msgid "Show author selection" msgstr "Zobrazit výběr autora" #: cps/templates/book_table.html:55 cps/templates/index.xml:68 cps/ub.py:102 -#: cps/web.py:1087 +#: cps/web.py:1089 msgid "Publishers" msgstr "Vydavatelé" @@ -810,7 +810,7 @@ msgid "Show publisher selection" msgstr "Zobrazit výběr vydavatele" #: cps/templates/book_table.html:53 cps/templates/index.xml:89 -#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1183 +#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1185 msgid "Languages" msgstr "Jazyky" @@ -834,7 +834,7 @@ msgstr "Formáty souborů" msgid "Show file formats selection" msgstr "Zobrazit výběr formátů" -#: cps/ub.py:116 cps/web.py:927 +#: cps/ub.py:116 cps/web.py:929 msgid "Archived Books" msgstr "Archivované knihy" @@ -879,225 +879,225 @@ msgstr "Nová aktualizace k dispozici. Klepnutím na tlačítko níže aktualizu msgid "Click on the button below to update to the latest stable version." msgstr "Klepnutím na tlačítko níže aktualizujte na nejnovější stabilní verzi." -#: cps/web.py:316 +#: cps/web.py:318 #, python-format msgid "Error: %(ldaperror)s" msgstr "Chyba: %(ldaperror)s" -#: cps/web.py:320 +#: cps/web.py:322 msgid "Error: No user returned in response of LDAP server" msgstr "Chyba: Žádná reakce od uživatele LDAP serveru" -#: cps/web.py:368 +#: cps/web.py:370 msgid "Failed to Create at Least One LDAP User" msgstr "Nepodařilo se vytvořit nejméně jednoho uživatele LDAP" -#: cps/web.py:371 +#: cps/web.py:373 msgid "At Least One LDAP User Not Found in Database" msgstr "Nejméně jeden uživatel LDAP nenalezen v databázi" -#: cps/web.py:373 +#: cps/web.py:375 msgid "User Successfully Imported" msgstr "Uživatel úspěšně importován" -#: cps/templates/index.html:5 cps/web.py:647 +#: cps/templates/index.html:5 cps/web.py:649 msgid "Discover (Random Books)" msgstr "Objevte (Náhodné knihy)" -#: cps/web.py:686 +#: cps/web.py:688 msgid "Books" msgstr "Knihy" -#: cps/web.py:713 +#: cps/web.py:715 msgid "Hot Books (Most Downloaded)" msgstr "Žhavé knihy (Nejstahovanější)" -#: cps/web.py:748 +#: cps/web.py:750 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:762 +#: cps/web.py:764 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Jejda! Vybraná kniha není k dispozici. Soubor neexistuje nebo není přístupný" -#: cps/web.py:776 +#: cps/web.py:778 #, python-format msgid "Author: %(name)s" msgstr "Autoři: %(name)s" -#: cps/web.py:790 +#: cps/web.py:792 #, python-format msgid "Publisher: %(name)s" msgstr "Vydavatel: %(name)s" -#: cps/web.py:803 +#: cps/web.py:805 #, python-format msgid "Series: %(serie)s" msgstr "Série: %(serie)s" -#: cps/web.py:816 +#: cps/web.py:818 #, python-format msgid "Rating: %(rating)s stars" msgstr "Hodnocení: %(rating)s stars" -#: cps/web.py:829 +#: cps/web.py:831 #, python-format msgid "File format: %(format)s" msgstr "Soubor formátů: %(format)s" -#: cps/web.py:843 +#: cps/web.py:845 #, python-format msgid "Category: %(name)s" msgstr "Kategorie: %(name)s" -#: cps/web.py:862 +#: cps/web.py:864 #, python-format msgid "Language: %(name)s" msgstr "Jazyky: %(name)s" -#: cps/web.py:891 +#: cps/web.py:893 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "Vlastní sloupec %(column)d neexistuje v databázi" -#: cps/templates/layout.html:56 cps/web.py:958 cps/web.py:1407 +#: cps/templates/layout.html:56 cps/web.py:960 cps/web.py:1409 msgid "Advanced Search" msgstr "Rozšířené hledání" #: cps/templates/book_edit.html:213 cps/templates/feed.xml:33 #: cps/templates/layout.html:45 cps/templates/layout.html:48 -#: cps/templates/search_form.html:175 cps/web.py:970 cps/web.py:1241 +#: cps/templates/search_form.html:175 cps/web.py:972 cps/web.py:1243 msgid "Search" msgstr "Hledat" -#: cps/web.py:998 +#: cps/web.py:1000 msgid "Books list" msgstr "" -#: cps/web.py:1136 +#: cps/web.py:1138 msgid "Ratings list" msgstr "Seznam hodnocení" -#: cps/web.py:1155 +#: cps/web.py:1157 msgid "File formats list" msgstr "Seznam formátů" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1218 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1220 msgid "Tasks" msgstr "Úlohy" -#: cps/web.py:1303 +#: cps/web.py:1305 msgid "Published after " msgstr "Vydáno po " -#: cps/web.py:1310 +#: cps/web.py:1312 msgid "Published before " msgstr "Vydáno před " -#: cps/web.py:1325 +#: cps/web.py:1327 #, python-format msgid "Rating <= %(rating)s" msgstr "Hodnocení <= %(rating)s" -#: cps/web.py:1327 +#: cps/web.py:1329 #, python-format msgid "Rating >= %(rating)s" msgstr "Hodnocení >= %(rating)s" -#: cps/web.py:1472 +#: cps/web.py:1474 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Kniha byla úspěšně zařazena do fronty pro odeslání na %(kindlemail)s" -#: cps/web.py:1476 +#: cps/web.py:1478 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Při odesílání této knihy došlo k chybě: %(res)s" -#: cps/web.py:1478 +#: cps/web.py:1480 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Nejprve nakonfigurujte vaši kindle e-mailovou adresu.." -#: cps/web.py:1495 +#: cps/web.py:1497 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "E-mailový server není nakonfigurován, kontaktujte svého správce!" -#: cps/web.py:1496 cps/web.py:1506 cps/web.py:1530 cps/web.py:1534 -#: cps/web.py:1539 cps/web.py:1543 +#: cps/web.py:1498 cps/web.py:1508 cps/web.py:1532 cps/web.py:1536 +#: cps/web.py:1541 cps/web.py:1545 msgid "register" msgstr "registrovat" -#: cps/web.py:1532 +#: cps/web.py:1534 msgid "Your e-mail is not allowed to register" msgstr "Váš e-mail nemá povolení k registraci" -#: cps/web.py:1535 +#: cps/web.py:1537 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Potvrzovací e-mail byl odeslán na váš účet." -#: cps/web.py:1538 +#: cps/web.py:1540 msgid "This username or e-mail address is already in use." msgstr "Toto uživatelské jméno nebo e-mailová adresa jsou již používány." -#: cps/web.py:1555 +#: cps/web.py:1557 msgid "Cannot activate LDAP authentication" msgstr "Nelze aktivovat ověření LDAP" -#: cps/web.py:1572 +#: cps/web.py:1574 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "Záložní přihlášení jako: ‘%(nickname)s’, server LDAP není dosažitelný nebo neznámý uživatel" -#: cps/web.py:1578 +#: cps/web.py:1580 #, python-format msgid "Could not login: %(message)s" msgstr "Nelze se přihlásit: %(message)s" -#: cps/web.py:1582 cps/web.py:1606 +#: cps/web.py:1584 cps/web.py:1608 msgid "Wrong Username or Password" msgstr "Špatné uživatelské jméno nebo heslo" -#: cps/web.py:1589 +#: cps/web.py:1591 msgid "New Password was send to your email address" msgstr "Nové heslo bylo zasláno na vaši emailovou adresu" -#: cps/web.py:1595 +#: cps/web.py:1597 msgid "Please enter valid username to reset password" msgstr "Zadejte platné uživatelské jméno pro obnovení hesla" -#: cps/web.py:1601 +#: cps/web.py:1603 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Nyní jste přihlášeni jako: '%(nickname)s'" -#: cps/web.py:1612 cps/web.py:1639 +#: cps/web.py:1614 cps/web.py:1641 msgid "login" msgstr "přihlásit se" -#: cps/web.py:1651 cps/web.py:1685 +#: cps/web.py:1653 cps/web.py:1687 msgid "Token not found" msgstr "Token nenalezen" -#: cps/web.py:1660 cps/web.py:1693 +#: cps/web.py:1662 cps/web.py:1695 msgid "Token has expired" msgstr "Token vypršel" -#: cps/web.py:1669 +#: cps/web.py:1671 msgid "Success! Please return to your device" msgstr "Úspěch! Vraťte se prosím do zařízení" -#: cps/web.py:1753 cps/web.py:1809 +#: cps/web.py:1755 cps/web.py:1811 #, python-format msgid "%(name)s's profile" msgstr "%(name)s profil" -#: cps/web.py:1789 +#: cps/web.py:1791 msgid "Profile updated" msgstr "Profil aktualizován" -#: cps/web.py:1836 cps/web.py:1839 cps/web.py:1842 cps/web.py:1849 -#: cps/web.py:1854 +#: cps/web.py:1838 cps/web.py:1841 cps/web.py:1844 cps/web.py:1851 +#: cps/web.py:1856 msgid "Read a Book" msgstr "Číst knihu" diff --git a/cps/translations/de/LC_MESSAGES/messages.po b/cps/translations/de/LC_MESSAGES/messages.po index 957d1c6b..a0a7ec7b 100644 --- a/cps/translations/de/LC_MESSAGES/messages.po +++ b/cps/translations/de/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2020-10-31 19:17+0100\n" +"POT-Creation-Date: 2020-11-14 13:11+0100\n" "PO-Revision-Date: 2020-09-26 16:18+0200\n" "Last-Translator: Ozzie Isaacs\n" "Language: de\n" @@ -22,7 +22,7 @@ msgstr "" msgid "installed" msgstr "Installiert" -#: cps/about.py:44 cps/converter.py:33 +#: cps/about.py:44 cps/converter.py:32 msgid "not installed" msgstr "Nicht installiert" @@ -46,351 +46,351 @@ msgstr "Erfolgreich neu verbunden" msgid "Unknown command" msgstr "Unbekannter Befehl" -#: cps/admin.py:116 cps/editbooks.py:612 cps/editbooks.py:624 -#: cps/editbooks.py:724 cps/editbooks.py:726 cps/editbooks.py:787 -#: cps/editbooks.py:803 cps/updater.py:510 cps/uploader.py:98 +#: cps/admin.py:116 cps/editbooks.py:611 cps/editbooks.py:623 +#: cps/editbooks.py:723 cps/editbooks.py:725 cps/editbooks.py:786 +#: cps/editbooks.py:802 cps/updater.py:510 cps/uploader.py:98 #: cps/uploader.py:108 msgid "Unknown" msgstr "Unbekannt" -#: cps/admin.py:136 +#: cps/admin.py:137 msgid "Admin page" msgstr "Admin Seite" -#: cps/admin.py:158 +#: cps/admin.py:159 msgid "UI Configuration" msgstr "Benutzeroberflächenkonfiguration" -#: cps/admin.py:190 cps/admin.py:717 +#: cps/admin.py:191 cps/admin.py:718 msgid "Calibre-Web configuration updated" msgstr "Konfiguration von Calibre-Web wurde aktualisiert" -#: cps/admin.py:435 cps/admin.py:441 cps/admin.py:452 cps/admin.py:463 +#: cps/admin.py:436 cps/admin.py:442 cps/admin.py:453 cps/admin.py:464 #: cps/templates/modal_dialogs.html:29 msgid "Deny" msgstr "Verbieten" -#: cps/admin.py:437 cps/admin.py:443 cps/admin.py:454 cps/admin.py:465 +#: cps/admin.py:438 cps/admin.py:444 cps/admin.py:455 cps/admin.py:466 #: cps/templates/modal_dialogs.html:28 msgid "Allow" msgstr "Erlauben" -#: cps/admin.py:511 +#: cps/admin.py:512 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json ist nicht für Web Anwendungen konfiguriert" -#: cps/admin.py:550 +#: cps/admin.py:551 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "Logdatei Pfad ist ungültig, bitte einen gültigen Pfad angeben" -#: cps/admin.py:555 +#: cps/admin.py:556 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "Zugriffs Logdatei Pfad ist ungültig, bitte einen gültigen Pfad angeben" -#: cps/admin.py:581 +#: cps/admin.py:582 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "Bitte einen LDAP Server, Port, DN und Benutzer Objekt angeben" -#: cps/admin.py:594 +#: cps/admin.py:595 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "LDAP Gruppen Objekt Filter benötigt genau eine \"%s\" Format Kennung" -#: cps/admin.py:597 +#: cps/admin.py:598 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "LDAP Gruppen Objekt Filter hat ungleiche Anzahl von Klammern" -#: cps/admin.py:601 +#: cps/admin.py:602 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "LDAP Benutzer Objekt Filter benötigt genau eine \"%s\" Format Kennung" -#: cps/admin.py:604 +#: cps/admin.py:605 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "LDAP Benutzer Objekt Filter hat ungleiche Anzahl von Klammern" -#: cps/admin.py:608 +#: cps/admin.py:609 msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path" msgstr "LDAP Zertifikat Pfad ist ungültig, bitte einen gültigen Pfad angeben" -#: cps/admin.py:630 +#: cps/admin.py:631 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "Schlüsseldatei ist ungültig, bitte einen gültigen Pfad angeben" -#: cps/admin.py:634 +#: cps/admin.py:635 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "Zertifikatsdatei ist ungültig, bitte einen gültigen Pfad angeben" -#: cps/admin.py:700 cps/admin.py:799 cps/admin.py:889 cps/admin.py:938 +#: cps/admin.py:701 cps/admin.py:800 cps/admin.py:890 cps/admin.py:939 #: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260 #: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392 msgid "Settings DB is not Writeable" msgstr "Einstellungsdatenbank ist nicht schreibbar" -#: cps/admin.py:712 +#: cps/admin.py:713 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "DB Pfad ist nicht gültig, bitte einen gültigen Pfad angeben" -#: cps/admin.py:714 +#: cps/admin.py:715 msgid "DB is not Writeable" msgstr "Datenbank ist nicht schreibbar" -#: cps/admin.py:747 +#: cps/admin.py:748 msgid "Basic Configuration" msgstr "Basiskonfiguration" -#: cps/admin.py:762 cps/web.py:1505 +#: cps/admin.py:763 cps/web.py:1507 msgid "Please fill out all fields!" msgstr "Bitte alle Felder ausfüllen!" -#: cps/admin.py:765 cps/admin.py:777 cps/admin.py:783 cps/admin.py:907 +#: cps/admin.py:766 cps/admin.py:778 cps/admin.py:784 cps/admin.py:908 msgid "Add new user" msgstr "Neuen Benutzer hinzufügen" -#: cps/admin.py:774 cps/web.py:1751 +#: cps/admin.py:775 cps/web.py:1753 msgid "E-mail is not from valid domain" msgstr "E-Mail bezieht sich nicht auf eine gültige Domain" -#: cps/admin.py:781 cps/admin.py:796 +#: cps/admin.py:782 cps/admin.py:797 msgid "Found an existing account for this e-mail address or nickname." msgstr "Es existiert bereits ein Account für diese E-Mailadresse oder diesen Benutzernamen." -#: cps/admin.py:792 +#: cps/admin.py:793 #, python-format msgid "User '%(user)s' created" msgstr "Benutzer '%(user)s' angelegt" -#: cps/admin.py:808 +#: cps/admin.py:809 #, python-format msgid "User '%(nick)s' deleted" msgstr "Benutzer '%(nick)s' gelöscht" -#: cps/admin.py:811 +#: cps/admin.py:812 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:817 +#: cps/admin.py:818 msgid "No admin user remaining, can't remove admin role" msgstr "Kein Admin Benutzer verblieben Admin Berechtigung kann nicht entfernt werden" -#: cps/admin.py:853 cps/web.py:1793 +#: cps/admin.py:854 cps/web.py:1795 msgid "Found an existing account for this e-mail address." msgstr "Es existiert bereits ein Benutzer für diese E-Mailadresse." -#: cps/admin.py:862 cps/admin.py:876 cps/admin.py:979 cps/web.py:1769 +#: cps/admin.py:863 cps/admin.py:877 cps/admin.py:980 cps/web.py:1771 #, python-format msgid "Edit User %(nick)s" msgstr "Benutzer %(nick)s bearbeiten" -#: cps/admin.py:868 cps/web.py:1762 +#: cps/admin.py:869 cps/web.py:1764 msgid "This username is already taken" msgstr "Benutzername ist schon vorhanden" -#: cps/admin.py:883 +#: cps/admin.py:884 #, python-format msgid "User '%(nick)s' updated" msgstr "Benutzer '%(nick)s' aktualisiert" -#: cps/admin.py:886 +#: cps/admin.py:887 msgid "An unknown error occured." msgstr "Es ist ein unbekannter Fehler aufgetreten." -#: cps/admin.py:916 cps/templates/admin.html:71 +#: cps/admin.py:917 cps/templates/admin.html:71 msgid "Edit E-mail Server Settings" msgstr "SMTP-Einstellungen ändern" -#: cps/admin.py:945 +#: cps/admin.py:946 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "Test-E-Mail wurde erfolgreich an %(kindlemail)s versendet" -#: cps/admin.py:948 +#: cps/admin.py:949 #, 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:950 +#: cps/admin.py:951 msgid "Please configure your e-mail address first..." msgstr "Bitte zuerst E-Mail Adresse konfigurieren..." -#: cps/admin.py:952 +#: cps/admin.py:953 msgid "E-mail server settings updated" msgstr "Einstellungen des E-Mail-Servers aktualisiert" -#: cps/admin.py:963 +#: cps/admin.py:964 msgid "User not found" msgstr "Benutzer nicht gefunden" -#: cps/admin.py:990 +#: cps/admin.py:991 #, python-format msgid "Password for user %(user)s reset" msgstr "Passwort für Benutzer %(user)s wurde zurückgesetzt" -#: cps/admin.py:993 cps/web.py:1529 cps/web.py:1593 +#: cps/admin.py:994 cps/web.py:1531 cps/web.py:1595 msgid "An unknown error occurred. Please try again later." msgstr "Es ist ein unbekannter Fehler aufgetreten. Bitte später erneut versuchen." -#: cps/admin.py:996 cps/web.py:1467 +#: cps/admin.py:997 cps/web.py:1469 msgid "Please configure the SMTP mail settings first..." msgstr "Bitte zuerst die SMTP-Einstellung konfigurieren ..." -#: cps/admin.py:1008 +#: cps/admin.py:1009 msgid "Logfile viewer" msgstr "Logdatei Anzeige" -#: cps/admin.py:1047 +#: cps/admin.py:1049 msgid "Requesting update package" msgstr "Frage Update an" -#: cps/admin.py:1048 +#: cps/admin.py:1050 msgid "Downloading update package" msgstr "Lade Update herunter" -#: cps/admin.py:1049 +#: cps/admin.py:1051 msgid "Unzipping update package" msgstr "Entpacke Update" -#: cps/admin.py:1050 +#: cps/admin.py:1052 msgid "Replacing files" msgstr "Ersetze Dateien" -#: cps/admin.py:1051 +#: cps/admin.py:1053 msgid "Database connections are closed" msgstr "Schließe Datenbankverbindungen" -#: cps/admin.py:1052 +#: cps/admin.py:1054 msgid "Stopping server" msgstr "Stoppe Server" -#: cps/admin.py:1053 +#: cps/admin.py:1055 msgid "Update finished, please press okay and reload page" msgstr "Update abgeschlossen, bitte okay drücken und Seite neu laden" -#: cps/admin.py:1054 cps/admin.py:1055 cps/admin.py:1056 cps/admin.py:1057 -#: cps/admin.py:1058 +#: cps/admin.py:1056 cps/admin.py:1057 cps/admin.py:1058 cps/admin.py:1059 +#: cps/admin.py:1060 msgid "Update failed:" msgstr "Update fehlgeschlagen:" -#: cps/admin.py:1054 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 +#: cps/admin.py:1056 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 msgid "HTTP Error" msgstr "HTTP Fehler" -#: cps/admin.py:1055 cps/updater.py:322 cps/updater.py:525 +#: cps/admin.py:1057 cps/updater.py:322 cps/updater.py:525 msgid "Connection error" msgstr "Verbindungsfehler" -#: cps/admin.py:1056 cps/updater.py:324 cps/updater.py:527 +#: cps/admin.py:1058 cps/updater.py:324 cps/updater.py:527 msgid "Timeout while establishing connection" msgstr "Timeout beim Verbindungsaufbau" -#: cps/admin.py:1057 cps/updater.py:326 cps/updater.py:529 +#: cps/admin.py:1059 cps/updater.py:326 cps/updater.py:529 msgid "General error" msgstr "Allgemeiner Fehler" -#: cps/admin.py:1058 +#: cps/admin.py:1060 msgid "Update File Could Not be Saved in Temp Dir" msgstr "Updatedatei konnte nicht in Temporärem Ordner gespeichert werden" -#: cps/converter.py:32 +#: cps/converter.py:31 msgid "not configured" msgstr "Nicht konfiguriert" -#: cps/converter.py:34 +#: cps/converter.py:33 msgid "Execution permissions missing" msgstr "Ausführeberechtigung fehlt" -#: cps/editbooks.py:273 cps/editbooks.py:275 +#: cps/editbooks.py:272 cps/editbooks.py:274 msgid "Book Format Successfully Deleted" msgstr "Buch Format erfolgreich gelöscht" -#: cps/editbooks.py:282 cps/editbooks.py:284 +#: cps/editbooks.py:281 cps/editbooks.py:283 msgid "Book Successfully Deleted" msgstr "Buch erfolgreich gelöscht" -#: cps/editbooks.py:293 cps/editbooks.py:596 cps/web.py:1824 cps/web.py:1865 -#: cps/web.py:1927 +#: cps/editbooks.py:292 cps/editbooks.py:595 cps/web.py:1826 cps/web.py:1867 +#: cps/web.py:1929 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Öffnen des Buchs fehlgeschlagen. Datei existiert nicht oder ist nicht zugänglich" -#: cps/editbooks.py:327 +#: cps/editbooks.py:326 msgid "edit metadata" msgstr "Metadaten editieren" -#: cps/editbooks.py:402 +#: cps/editbooks.py:401 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s ist keine gültige Sprache" -#: cps/editbooks.py:513 cps/editbooks.py:769 +#: cps/editbooks.py:512 cps/editbooks.py:768 #, 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:517 cps/editbooks.py:773 +#: cps/editbooks.py:516 cps/editbooks.py:772 msgid "File to be uploaded must have an extension" msgstr "Dateien müssen eine Erweiterung haben, um hochgeladen zu werden" -#: cps/editbooks.py:529 +#: cps/editbooks.py:528 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Fehler beim Erzeugen des Pfads %(path)s (Zugriff verweigert)" -#: cps/editbooks.py:534 +#: cps/editbooks.py:533 #, python-format msgid "Failed to store file %(file)s." msgstr "Fehler beim Speichern der Datei %(file)s." -#: cps/editbooks.py:552 cps/editbooks.py:904 +#: cps/editbooks.py:551 cps/editbooks.py:903 #, python-format msgid "Database error: %(error)s." msgstr "Datenbankfehler: %(error)s." -#: cps/editbooks.py:556 +#: cps/editbooks.py:555 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Dateiformat %(ext)s zu %(book)s hinzugefügt" -#: cps/editbooks.py:673 +#: cps/editbooks.py:672 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "IDs unterscheiden nicht Groß-Kleinschreibung, alte ID wird überschrieben" -#: cps/editbooks.py:710 +#: cps/editbooks.py:709 msgid "Metadata successfully updated" msgstr "Metadaten wurden erfolgreich aktualisiert" -#: cps/editbooks.py:719 +#: cps/editbooks.py:718 msgid "Error editing book, please check logfile for details" msgstr "Fehler beim Editieren des Buchs, Details im Logfile" -#: cps/editbooks.py:781 +#: cps/editbooks.py:780 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "Die Datei %(filename)s konnte nicht im temporären Ordner gespeichert werden" -#: cps/editbooks.py:791 +#: cps/editbooks.py:790 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Das hochgeladene Buch existiert evtl. schon in der Bibliothek: " -#: cps/editbooks.py:879 +#: cps/editbooks.py:878 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "Fehler beim Verschieben der Cover Datei %(file)s: %(error)s" -#: cps/editbooks.py:890 +#: cps/editbooks.py:889 #, python-format msgid "File %(file)s uploaded" msgstr "Datei %(file)s hochgeladen" -#: cps/editbooks.py:916 +#: cps/editbooks.py:915 msgid "Source or destination format for conversion missing" msgstr "Quell- oder Zielformat für Konvertierung fehlt" -#: cps/editbooks.py:924 +#: cps/editbooks.py:923 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Buch wurde erfolgreich für die Konvertierung nach %(book_format)s eingereiht" -#: cps/editbooks.py:928 +#: cps/editbooks.py:927 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Es trat ein Fehler beim Konvertieren des Buches auf: %(res)s" @@ -580,7 +580,7 @@ msgstr "Login mit Google fehlgeschlagen." msgid "Failed to fetch user info from Google." msgstr "Laden der Benutzerinformationen von Google fehlgeschlagen." -#: cps/oauth_bb.py:225 cps/web.py:1565 cps/web.py:1707 +#: cps/oauth_bb.py:225 cps/web.py:1567 cps/web.py:1709 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "Du bist nun eingeloggt als '%(nickname)s'" @@ -740,7 +740,7 @@ msgstr "" msgid "Show Downloaded Books" msgstr "" -#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:639 +#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:641 msgid "Top Rated Books" msgstr "Best bewertete Bücher" @@ -749,7 +749,7 @@ msgid "Show Top Rated Books" msgstr "Bestbewertete Bücher anzeigen" #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:82 -#: cps/web.py:900 +#: cps/web.py:902 msgid "Read Books" msgstr "Gelesene Bücher" @@ -758,7 +758,7 @@ msgid "Show read and unread" msgstr "Zeige gelesene/ungelesene Bücher" #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:86 -#: cps/web.py:903 +#: cps/web.py:905 msgid "Unread Books" msgstr "Ungelesene Bücher" @@ -775,7 +775,7 @@ msgid "Show random books" msgstr "Zeige zufällige Bücher" #: cps/templates/book_table.html:50 cps/templates/index.xml:75 cps/ub.py:92 -#: cps/web.py:1204 +#: cps/web.py:1206 msgid "Categories" msgstr "Kategorien" @@ -785,7 +785,7 @@ msgstr "Zeige Kategorienauswahl" #: cps/templates/book_edit.html:84 cps/templates/book_table.html:51 #: cps/templates/index.xml:82 cps/templates/search_form.html:54 cps/ub.py:95 -#: cps/web.py:1108 cps/web.py:1118 +#: cps/web.py:1110 cps/web.py:1120 msgid "Series" msgstr "Serien" @@ -802,7 +802,7 @@ msgid "Show author selection" msgstr "Zeige Autorenauswahl" #: cps/templates/book_table.html:55 cps/templates/index.xml:68 cps/ub.py:102 -#: cps/web.py:1087 +#: cps/web.py:1089 msgid "Publishers" msgstr "Verleger" @@ -811,7 +811,7 @@ msgid "Show publisher selection" msgstr "Zeige Verlegerauswahl" #: cps/templates/book_table.html:53 cps/templates/index.xml:89 -#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1183 +#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1185 msgid "Languages" msgstr "Sprachen" @@ -835,7 +835,7 @@ msgstr "Dateiformate" msgid "Show file formats selection" msgstr "Zeige Dateiformatauswahl" -#: cps/ub.py:116 cps/web.py:927 +#: cps/ub.py:116 cps/web.py:929 msgid "Archived Books" msgstr "Archivierte Bücher" @@ -880,225 +880,225 @@ msgstr "Ein neues Update ist verfügbar. Klicke auf den Button unten, um auf Ver msgid "Click on the button below to update to the latest stable version." msgstr "Klicke auf den Button unten, um auf die letzte stabile Version zu aktualisieren." -#: cps/web.py:316 +#: cps/web.py:318 #, python-format msgid "Error: %(ldaperror)s" msgstr "Fehler: %(ldaperror)s" -#: cps/web.py:320 +#: cps/web.py:322 msgid "Error: No user returned in response of LDAP server" msgstr "Fehler: Keine Benutzerinformationen von LDAP Server empfangen" -#: cps/web.py:368 +#: cps/web.py:370 msgid "Failed to Create at Least One LDAP User" msgstr "Mindestens ein LDAP Benutzer konnte nicht erzeugt werden" -#: cps/web.py:371 +#: cps/web.py:373 msgid "At Least One LDAP User Not Found in Database" msgstr "Mindestens ein LDAP Benutzer wurde nicht in der Datenbank gefudnen" -#: cps/web.py:373 +#: cps/web.py:375 msgid "User Successfully Imported" msgstr "Benutzer erfolgreich hinzugefügt" -#: cps/templates/index.html:5 cps/web.py:647 +#: cps/templates/index.html:5 cps/web.py:649 msgid "Discover (Random Books)" msgstr "Zufällige Bücher" -#: cps/web.py:686 +#: cps/web.py:688 msgid "Books" msgstr "Bücher" -#: cps/web.py:713 +#: cps/web.py:715 msgid "Hot Books (Most Downloaded)" msgstr "Beliebte Bücher (am meisten Downloads)" -#: cps/web.py:748 +#: cps/web.py:750 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:762 +#: cps/web.py:764 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Öffnen des Buchs fehlgeschlagen. Datei existiert nicht oder ist nicht zugänglich" -#: cps/web.py:776 +#: cps/web.py:778 #, python-format msgid "Author: %(name)s" msgstr "Author: %(name)s" -#: cps/web.py:790 +#: cps/web.py:792 #, python-format msgid "Publisher: %(name)s" msgstr "Verleger: %(name)s" -#: cps/web.py:803 +#: cps/web.py:805 #, python-format msgid "Series: %(serie)s" msgstr "Serie: %(serie)s" -#: cps/web.py:816 +#: cps/web.py:818 #, python-format msgid "Rating: %(rating)s stars" msgstr "Bewertung: %(rating)s Sterne" -#: cps/web.py:829 +#: cps/web.py:831 #, python-format msgid "File format: %(format)s" msgstr "Dateiformat: %(format)s" -#: cps/web.py:843 +#: cps/web.py:845 #, python-format msgid "Category: %(name)s" msgstr "Kategorie: %(name)s" -#: cps/web.py:862 +#: cps/web.py:864 #, python-format msgid "Language: %(name)s" msgstr "Sprache: %(name)s" -#: cps/web.py:891 +#: cps/web.py:893 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "Benutzerdefinierte Spalte Nr. %(column)d ist nicht in Calibre Datenbank vorhanden" -#: cps/templates/layout.html:56 cps/web.py:958 cps/web.py:1407 +#: cps/templates/layout.html:56 cps/web.py:960 cps/web.py:1409 msgid "Advanced Search" msgstr "Erweiterte Suche" #: cps/templates/book_edit.html:213 cps/templates/feed.xml:33 #: cps/templates/layout.html:45 cps/templates/layout.html:48 -#: cps/templates/search_form.html:175 cps/web.py:970 cps/web.py:1241 +#: cps/templates/search_form.html:175 cps/web.py:972 cps/web.py:1243 msgid "Search" msgstr "Suche" -#: cps/web.py:998 +#: cps/web.py:1000 msgid "Books list" msgstr "" -#: cps/web.py:1136 +#: cps/web.py:1138 msgid "Ratings list" msgstr "Bewertungsliste" -#: cps/web.py:1155 +#: cps/web.py:1157 msgid "File formats list" msgstr "Liste der Dateiformate" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1218 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1220 msgid "Tasks" msgstr "Aufgaben" -#: cps/web.py:1303 +#: cps/web.py:1305 msgid "Published after " msgstr "Herausgegeben nach dem " -#: cps/web.py:1310 +#: cps/web.py:1312 msgid "Published before " msgstr "Herausgegeben vor dem " -#: cps/web.py:1325 +#: cps/web.py:1327 #, python-format msgid "Rating <= %(rating)s" msgstr "Bewertung <= %(rating)s" -#: cps/web.py:1327 +#: cps/web.py:1329 #, python-format msgid "Rating >= %(rating)s" msgstr "Bewertung >= %(rating)s" -#: cps/web.py:1472 +#: cps/web.py:1474 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Buch erfolgreich zum Senden an %(kindlemail)s eingereiht" -#: cps/web.py:1476 +#: cps/web.py:1478 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Beim Senden des Buchs trat ein Fehler auf: %(res)s" -#: cps/web.py:1478 +#: cps/web.py:1480 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Bitte zuerst die Kindle E-Mailadresse konfigurieren..." -#: cps/web.py:1495 +#: cps/web.py:1497 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "Der E-Mail Server ist nicht konfigurierte, bitte den Administrator kontaktieren!" -#: cps/web.py:1496 cps/web.py:1506 cps/web.py:1530 cps/web.py:1534 -#: cps/web.py:1539 cps/web.py:1543 +#: cps/web.py:1498 cps/web.py:1508 cps/web.py:1532 cps/web.py:1536 +#: cps/web.py:1541 cps/web.py:1545 msgid "register" msgstr "Registieren" -#: cps/web.py:1532 +#: cps/web.py:1534 msgid "Your e-mail is not allowed to register" msgstr "Diese E-Mail ist nicht für die Registrierung zugelassen" -#: cps/web.py:1535 +#: cps/web.py:1537 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Eine Bestätigungs-E-Mail wurde an deinen E-Mail Account versendet." -#: cps/web.py:1538 +#: cps/web.py:1540 msgid "This username or e-mail address is already in use." msgstr "Benutzername oder E-Mailadresse ist bereits in Verwendung." -#: cps/web.py:1555 +#: cps/web.py:1557 msgid "Cannot activate LDAP authentication" msgstr "LDAP-Authentifizierung kann nicht aktiviert werden" -#: cps/web.py:1572 +#: cps/web.py:1574 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "Rückfall Login als: '%(nickname)s', LDAP Server ist nicht erreichbar, oder der Nutzer ist unbekannt" -#: cps/web.py:1578 +#: cps/web.py:1580 #, python-format msgid "Could not login: %(message)s" msgstr "Login nicht erfolgreich: %(message)s" -#: cps/web.py:1582 cps/web.py:1606 +#: cps/web.py:1584 cps/web.py:1608 msgid "Wrong Username or Password" msgstr "Falscher Benutzername oder Passwort" -#: cps/web.py:1589 +#: cps/web.py:1591 msgid "New Password was send to your email address" msgstr "Das neue Passwort wurde an die E-Mail Adresse verschickt" -#: cps/web.py:1595 +#: cps/web.py:1597 msgid "Please enter valid username to reset password" msgstr "Bitte einen gültigen Benutzernamen zum Zurücksetzen des Passworts angeben" -#: cps/web.py:1601 +#: cps/web.py:1603 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Eingeloggt als: '%(nickname)s'" -#: cps/web.py:1612 cps/web.py:1639 +#: cps/web.py:1614 cps/web.py:1641 msgid "login" msgstr "Login" -#: cps/web.py:1651 cps/web.py:1685 +#: cps/web.py:1653 cps/web.py:1687 msgid "Token not found" msgstr "Token wurde nicht gefunden" -#: cps/web.py:1660 cps/web.py:1693 +#: cps/web.py:1662 cps/web.py:1695 msgid "Token has expired" msgstr "Token ist abgelaufen" -#: cps/web.py:1669 +#: cps/web.py:1671 msgid "Success! Please return to your device" msgstr "Erfolg! Bitte zum Gerät zurückkehren" -#: cps/web.py:1753 cps/web.py:1809 +#: cps/web.py:1755 cps/web.py:1811 #, python-format msgid "%(name)s's profile" msgstr "%(name)s's Profil" -#: cps/web.py:1789 +#: cps/web.py:1791 msgid "Profile updated" msgstr "Profil aktualisiert" -#: cps/web.py:1836 cps/web.py:1839 cps/web.py:1842 cps/web.py:1849 -#: cps/web.py:1854 +#: cps/web.py:1838 cps/web.py:1841 cps/web.py:1844 cps/web.py:1851 +#: cps/web.py:1856 msgid "Read a Book" msgstr "Lese ein Buch" diff --git a/cps/translations/el/LC_MESSAGES/messages.po b/cps/translations/el/LC_MESSAGES/messages.po index 344128b8..177ddfda 100644 --- a/cps/translations/el/LC_MESSAGES/messages.po +++ b/cps/translations/el/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2020-10-31 19:17+0100\n" +"POT-Creation-Date: 2020-11-14 13:11+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Depountis Georgios\n" "Language: el\n" @@ -21,7 +21,7 @@ msgstr "" msgid "installed" msgstr "εγκαταστάθηκε" -#: cps/about.py:44 cps/converter.py:33 +#: cps/about.py:44 cps/converter.py:32 msgid "not installed" msgstr "δεν εγκαταστάθηκε" @@ -45,351 +45,351 @@ msgstr "Επιτυχής επανασύνδεση" msgid "Unknown command" msgstr "Άγνωστη εντολή" -#: cps/admin.py:116 cps/editbooks.py:612 cps/editbooks.py:624 -#: cps/editbooks.py:724 cps/editbooks.py:726 cps/editbooks.py:787 -#: cps/editbooks.py:803 cps/updater.py:510 cps/uploader.py:98 +#: cps/admin.py:116 cps/editbooks.py:611 cps/editbooks.py:623 +#: cps/editbooks.py:723 cps/editbooks.py:725 cps/editbooks.py:786 +#: cps/editbooks.py:802 cps/updater.py:510 cps/uploader.py:98 #: cps/uploader.py:108 msgid "Unknown" msgstr "ʼΑγνωστο" -#: cps/admin.py:136 +#: cps/admin.py:137 msgid "Admin page" msgstr "Σελίδα διαχειριστή" -#: cps/admin.py:158 +#: cps/admin.py:159 msgid "UI Configuration" msgstr "UI Διαμόρφωση" -#: cps/admin.py:190 cps/admin.py:717 +#: cps/admin.py:191 cps/admin.py:718 msgid "Calibre-Web configuration updated" msgstr "Ενημερώθηκε η διαμόρφωση Calibre-Web" -#: cps/admin.py:435 cps/admin.py:441 cps/admin.py:452 cps/admin.py:463 +#: cps/admin.py:436 cps/admin.py:442 cps/admin.py:453 cps/admin.py:464 #: cps/templates/modal_dialogs.html:29 msgid "Deny" msgstr "Απόρριψη" -#: cps/admin.py:437 cps/admin.py:443 cps/admin.py:454 cps/admin.py:465 +#: cps/admin.py:438 cps/admin.py:444 cps/admin.py:455 cps/admin.py:466 #: cps/templates/modal_dialogs.html:28 msgid "Allow" msgstr "Επιτρέπεται" -#: cps/admin.py:511 +#: cps/admin.py:512 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json Δεν Έχει Διαμορφωθεί Για Διαδικτυακή Εφαρμογή" -#: cps/admin.py:550 +#: cps/admin.py:551 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "Το Φύλλο Καταγραφής Τοποθεσίας δεν είναι Έγκυρο, Παρακαλούμε Συμπλήρωσε Τη Σωστή Πορεία" -#: cps/admin.py:555 +#: cps/admin.py:556 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "Η Πρόσβαση Φύλλου Καταγραφης Τοποθεσίας δεν είναι έγκυρη, Παρακαλούμε Συμπλήρωσε Τη Σωστή Πορεία" -#: cps/admin.py:581 +#: cps/admin.py:582 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "Παρακαλούμε Συμπλήρωσε ένα Πάροχο LDAP, Θύρα, DN και Αντικείμενο Αναγνώρισης Χρήστη" -#: cps/admin.py:594 +#: cps/admin.py:595 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "Το Αντικείμενο Φίλτρου Ομάδας LDAP Πρέπει να Έχει Μια \"%s\" Αναγνώριση Μορφής" -#: cps/admin.py:597 +#: cps/admin.py:598 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "Το Αντικείμενο Φίλτρου Ομάδας LDAP Έχει Παρενθέσεις Που Δεν Ταιριάζουν" -#: cps/admin.py:601 +#: cps/admin.py:602 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "Το Αντικείμενο Φίλτρου Χρήστη LDAP πρέπει να Έχει Μια \"%s\" Αναγνώριση Μορφής" -#: cps/admin.py:604 +#: cps/admin.py:605 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "Το Αντικείμενο Φίλτρου Χρήστη LDAP Έχει Παρενθέσεις Που Δεν Ταιριάζουν" -#: cps/admin.py:608 +#: cps/admin.py:609 msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path" msgstr "Το Πιστοποιητικό Τοποθεσίας LDAP δεν είναι Έγκυρο, Παρακαλούμε Συμπληρώστε Τη Σωστή Πορεία" -#: cps/admin.py:630 +#: cps/admin.py:631 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "Το Αρχειο Κλειδί Τοποθεσίας δεν είναι Έγκυρο, Παρακαλούμε Συμπληρώστε Τη Σωστή Πορεία" -#: cps/admin.py:634 +#: cps/admin.py:635 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "Η Τοποθεσία Certfile δεν είναι Έγκυρη, Παρακαλούμε Συμπληρώστε Τη Σωστή Πορεία" -#: cps/admin.py:700 cps/admin.py:799 cps/admin.py:889 cps/admin.py:938 +#: cps/admin.py:701 cps/admin.py:800 cps/admin.py:890 cps/admin.py:939 #: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260 #: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392 msgid "Settings DB is not Writeable" msgstr "Οι ρυθμίσεις DB δεν μπορούν να Γραφτούν" -#: cps/admin.py:712 +#: cps/admin.py:713 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "Η Τοποθεσία DB δεν είναι Έγκυρη, Παρακαλούμε Συμπληρώστε Τη Σωστή Πορεία" -#: cps/admin.py:714 +#: cps/admin.py:715 msgid "DB is not Writeable" msgstr "Η DB δεν μπορεί να Γραφτεί" -#: cps/admin.py:747 +#: cps/admin.py:748 msgid "Basic Configuration" msgstr "Βασική Διαμόρφωση" -#: cps/admin.py:762 cps/web.py:1505 +#: cps/admin.py:763 cps/web.py:1507 msgid "Please fill out all fields!" msgstr "Παρακαλούμε συμπλήρωσε όλα τα πεδία!" -#: cps/admin.py:765 cps/admin.py:777 cps/admin.py:783 cps/admin.py:907 +#: cps/admin.py:766 cps/admin.py:778 cps/admin.py:784 cps/admin.py:908 msgid "Add new user" msgstr "Προσθήκη νέου χρήστη" -#: cps/admin.py:774 cps/web.py:1751 +#: cps/admin.py:775 cps/web.py:1753 msgid "E-mail is not from valid domain" msgstr "Το E-mail δεν είναι από έγκυρο domain" -#: cps/admin.py:781 cps/admin.py:796 +#: cps/admin.py:782 cps/admin.py:797 msgid "Found an existing account for this e-mail address or nickname." msgstr "Βρέθηκε ένας ήδη υπάρχον λογαριασμός για αυτή τη διεύθυνση e-mail ή όνομα χρήστη." -#: cps/admin.py:792 +#: cps/admin.py:793 #, python-format msgid "User '%(user)s' created" msgstr "Χρήστης/ες '%(user)s' δημιουργήθηκαν" -#: cps/admin.py:808 +#: cps/admin.py:809 #, python-format msgid "User '%(nick)s' deleted" msgstr "Χρήστης/ες '%(nick)s' διαγράφηκαν" -#: cps/admin.py:811 +#: cps/admin.py:812 msgid "No admin user remaining, can't delete user" msgstr "Δεν έχει απομείνει χρήστης διαχειριστής, δεν μπορεί να διαγραφεί ο χρήστης" -#: cps/admin.py:817 +#: cps/admin.py:818 msgid "No admin user remaining, can't remove admin role" msgstr "Δεν έχει απομείνει χρήστης διαχειριστής, δεν μπορεί να αφαιρεθεί ο ρόλος διαχειριστή" -#: cps/admin.py:853 cps/web.py:1793 +#: cps/admin.py:854 cps/web.py:1795 msgid "Found an existing account for this e-mail address." msgstr "Βρέθηκε ένας ήδη υπάρχον λογαριασμός για αυτή τη διεύθυνση e-mail." -#: cps/admin.py:862 cps/admin.py:876 cps/admin.py:979 cps/web.py:1769 +#: cps/admin.py:863 cps/admin.py:877 cps/admin.py:980 cps/web.py:1771 #, python-format msgid "Edit User %(nick)s" msgstr "Επεξεργασία χρήστη %(nick)s" -#: cps/admin.py:868 cps/web.py:1762 +#: cps/admin.py:869 cps/web.py:1764 msgid "This username is already taken" msgstr "Αυτό το όνομα χρήστη έχει ήδη παρθεί" -#: cps/admin.py:883 +#: cps/admin.py:884 #, python-format msgid "User '%(nick)s' updated" msgstr "Χρήστης/ες '%(nick)s' ενημερώθηκαν" -#: cps/admin.py:886 +#: cps/admin.py:887 msgid "An unknown error occured." msgstr "Προέκυψε ένα άγνωστο σφάλμα." -#: cps/admin.py:916 cps/templates/admin.html:71 +#: cps/admin.py:917 cps/templates/admin.html:71 msgid "Edit E-mail Server Settings" msgstr "Επεξεργασία Ρυθμίσεων E-mail Διακομιστή" -#: cps/admin.py:945 +#: cps/admin.py:946 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "Το e-mail δοκιμής στάλθηκε επιτυχώς στο %(kindlemail)s" -#: cps/admin.py:948 +#: cps/admin.py:949 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Παρουσιάστηκε σφάλμα κατά την αποστολή του δοκιμαστικού e-mail:% (res)s" -#: cps/admin.py:950 +#: cps/admin.py:951 msgid "Please configure your e-mail address first..." msgstr "Παρακαλούμε ρύθμισε πρώτα τη διεύθυνση e-mail σου..." -#: cps/admin.py:952 +#: cps/admin.py:953 msgid "E-mail server settings updated" msgstr "Ενημερώθηκαν οι ρυθμίσεις E-mail διακομιστή" -#: cps/admin.py:963 +#: cps/admin.py:964 msgid "User not found" msgstr "Δεν βρέθηκε χρήστης" -#: cps/admin.py:990 +#: cps/admin.py:991 #, python-format msgid "Password for user %(user)s reset" msgstr "Κωδικός για επαναφορά %(user) χρήστη/ών" -#: cps/admin.py:993 cps/web.py:1529 cps/web.py:1593 +#: cps/admin.py:994 cps/web.py:1531 cps/web.py:1595 msgid "An unknown error occurred. Please try again later." msgstr "Προέκυψε ένα άγνωστο σφάλμα. Παρακαλούμε δοκίμασε ξανά αργότερα." -#: cps/admin.py:996 cps/web.py:1467 +#: cps/admin.py:997 cps/web.py:1469 msgid "Please configure the SMTP mail settings first..." msgstr "Παρακαλούμε διαμόρφωσε πρώτα τις ρυθμίσεις ταχυδρομείου SMTP..." -#: cps/admin.py:1008 +#: cps/admin.py:1009 msgid "Logfile viewer" msgstr "Προβολέας αρχείου φύλλου καταγραφής" -#: cps/admin.py:1047 +#: cps/admin.py:1049 msgid "Requesting update package" msgstr "Αίτημα πακέτου ενημέρωσης" -#: cps/admin.py:1048 +#: cps/admin.py:1050 msgid "Downloading update package" msgstr "Κατεβάζει πακέτο ενημέρωσης" -#: cps/admin.py:1049 +#: cps/admin.py:1051 msgid "Unzipping update package" msgstr "Ανοίγει πακέτο ενημέρωσης" -#: cps/admin.py:1050 +#: cps/admin.py:1052 msgid "Replacing files" msgstr "Αντικατάσταση αρχείων" -#: cps/admin.py:1051 +#: cps/admin.py:1053 msgid "Database connections are closed" msgstr "Οι συνδέσεις βάσης δεδομένων είναι κλειστές" -#: cps/admin.py:1052 +#: cps/admin.py:1054 msgid "Stopping server" msgstr "Σταματάει το διακομιστή" -#: cps/admin.py:1053 +#: cps/admin.py:1055 msgid "Update finished, please press okay and reload page" msgstr "Η ενημέρωση τελειώσε, παρακαλούμε πιέστε το εντάξει και φορτώστε ξανά τη σελίδα" -#: cps/admin.py:1054 cps/admin.py:1055 cps/admin.py:1056 cps/admin.py:1057 -#: cps/admin.py:1058 +#: cps/admin.py:1056 cps/admin.py:1057 cps/admin.py:1058 cps/admin.py:1059 +#: cps/admin.py:1060 msgid "Update failed:" msgstr "Η ενημέρωση απέτυχε:" -#: cps/admin.py:1054 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 +#: cps/admin.py:1056 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 msgid "HTTP Error" msgstr "HTTP Σφάλμα" -#: cps/admin.py:1055 cps/updater.py:322 cps/updater.py:525 +#: cps/admin.py:1057 cps/updater.py:322 cps/updater.py:525 msgid "Connection error" msgstr "Σφάλμα σύνδεσης" -#: cps/admin.py:1056 cps/updater.py:324 cps/updater.py:527 +#: cps/admin.py:1058 cps/updater.py:324 cps/updater.py:527 msgid "Timeout while establishing connection" msgstr "Τελείωσε ο χρόνος κατά την προσπάθεια δημιουργίας σύνδεσης" -#: cps/admin.py:1057 cps/updater.py:326 cps/updater.py:529 +#: cps/admin.py:1059 cps/updater.py:326 cps/updater.py:529 msgid "General error" msgstr "Γενικό σφάλμα" -#: cps/admin.py:1058 +#: cps/admin.py:1060 msgid "Update File Could Not be Saved in Temp Dir" msgstr "Το Αρχείο Ενημέρωσης Δεν Μπόρεσε Να Αποθηκευτεί σε" -#: cps/converter.py:32 +#: cps/converter.py:31 msgid "not configured" msgstr "δεν διαμορφώθηκε" -#: cps/converter.py:34 +#: cps/converter.py:33 msgid "Execution permissions missing" msgstr "Λείπουν άδειες εκτέλεσης" -#: cps/editbooks.py:273 cps/editbooks.py:275 +#: cps/editbooks.py:272 cps/editbooks.py:274 msgid "Book Format Successfully Deleted" msgstr "Η μορφή βιβλίου Διαγράφηκε Επιτυχώς" -#: cps/editbooks.py:282 cps/editbooks.py:284 +#: cps/editbooks.py:281 cps/editbooks.py:283 msgid "Book Successfully Deleted" msgstr "Το Βιβλίο Διαγράφηκε Επιτυχώς" -#: cps/editbooks.py:293 cps/editbooks.py:596 cps/web.py:1824 cps/web.py:1865 -#: cps/web.py:1927 +#: cps/editbooks.py:292 cps/editbooks.py:595 cps/web.py:1826 cps/web.py:1867 +#: cps/web.py:1929 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Σφάλμα ανοίγματος eBook. Το αρχείο δεν υπάρχει ή το αρχείο δεν είναι προσβάσιμο" -#: cps/editbooks.py:327 +#: cps/editbooks.py:326 msgid "edit metadata" msgstr "επεξεργασία μεταδεδομένων" -#: cps/editbooks.py:402 +#: cps/editbooks.py:401 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s δεν είναι μια έγκυρη γλώσσα" -#: cps/editbooks.py:513 cps/editbooks.py:769 +#: cps/editbooks.py:512 cps/editbooks.py:768 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Η επέκταση αρχείου '%(ext)s' δεν επιτρέπεται να ανέβει σε αυτό το διακομιστή" -#: cps/editbooks.py:517 cps/editbooks.py:773 +#: cps/editbooks.py:516 cps/editbooks.py:772 msgid "File to be uploaded must have an extension" msgstr "Το αρχείο προς ανέβασμα πρέπει να έχει μια επέκταση" -#: cps/editbooks.py:529 +#: cps/editbooks.py:528 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Αποτυχεία δημιουργίας πορείας %(path)s (Η άδεια απορρήφθηκε)." -#: cps/editbooks.py:534 +#: cps/editbooks.py:533 #, python-format msgid "Failed to store file %(file)s." msgstr "Αποτυχία αποθήκευσης αρχείου %(file)s." -#: cps/editbooks.py:552 cps/editbooks.py:904 +#: cps/editbooks.py:551 cps/editbooks.py:903 #, python-format msgid "Database error: %(error)s." msgstr "Σφάλμα βάσης δεδομένων: %(error)s." -#: cps/editbooks.py:556 +#: cps/editbooks.py:555 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Μορφή αρχείου %(ext)s προστέθηκε σε %(book)s" -#: cps/editbooks.py:673 +#: cps/editbooks.py:672 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "Τα αναγνωριστικά δεν έχουν Διάκριση Πεζών-Κεφαλαίων Γραμμάτων, Αντικατάσταση Παλιού Αναγνωριστικού" -#: cps/editbooks.py:710 +#: cps/editbooks.py:709 msgid "Metadata successfully updated" msgstr "Τα μεταδεδομένα ενημερώθηκαν επιτυχώς" -#: cps/editbooks.py:719 +#: cps/editbooks.py:718 msgid "Error editing book, please check logfile for details" msgstr "Σφάλμα επεξεργασίας βιβλίου, παρακαλούμε έλεγξε το φύλλο καταγραφής για λεπτομέρειες" -#: cps/editbooks.py:781 +#: cps/editbooks.py:780 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "Το αρχείο %(filename)s δεν μπόρεσε να αποθηκευτεί σε temp dir" -#: cps/editbooks.py:791 +#: cps/editbooks.py:790 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Το βιβλίο που ανέβηκε πιθανόν να υπάρχει στη βιβλιοθήκη, σκέψου να το αλλάξεις πριν ανεβάσεις νέο: " -#: cps/editbooks.py:879 +#: cps/editbooks.py:878 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "Αποτυχία Μετακίνησης Αρχείου Φόντου %(file)s: %(error)s" -#: cps/editbooks.py:890 +#: cps/editbooks.py:889 #, python-format msgid "File %(file)s uploaded" msgstr "Το αρχείο %(file)s ανέβηκε" -#: cps/editbooks.py:916 +#: cps/editbooks.py:915 msgid "Source or destination format for conversion missing" msgstr "Η δομή πηγής ή προορισμού για μετατροπή λείπει" -#: cps/editbooks.py:924 +#: cps/editbooks.py:923 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Το βιβλίο είναι σε σειρά επιτυχώς για μετατροπή σε %(book_format)s" -#: cps/editbooks.py:928 +#: cps/editbooks.py:927 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Υπήρξε ένα σφάλμα στη μετατροπή αυτού του βιβλίου: %(res)s" @@ -579,7 +579,7 @@ msgstr "Αποτυχία σύνδεσης με το Google." msgid "Failed to fetch user info from Google." msgstr "Αποτυχία συγκέντρωσης πληροφοριών χρήστη από το Google." -#: cps/oauth_bb.py:225 cps/web.py:1565 cps/web.py:1707 +#: cps/oauth_bb.py:225 cps/web.py:1567 cps/web.py:1709 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "τώρα έχεις συνδεθεί ως: '%(nickname)s'" @@ -739,7 +739,7 @@ msgstr "Κατεβασμένα Βιβλία" msgid "Show Downloaded Books" msgstr "Προβολή Κατεβασμένων Βιβλίων" -#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:639 +#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:641 msgid "Top Rated Books" msgstr "Βιβλία με Κορυφαία Αξιολόγηση" @@ -748,7 +748,7 @@ msgid "Show Top Rated Books" msgstr "Προβολή Βιβλίων με Κορυφαία Αξιολόγηση" #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:82 -#: cps/web.py:900 +#: cps/web.py:902 msgid "Read Books" msgstr "Βιβλία που Διαβάστηκαν" @@ -757,7 +757,7 @@ msgid "Show read and unread" msgstr "Προβολή διαβασμένων και αδιάβαστων" #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:86 -#: cps/web.py:903 +#: cps/web.py:905 msgid "Unread Books" msgstr "Βιβλία που δεν Διαβάστηκαν" @@ -774,7 +774,7 @@ msgid "Show random books" msgstr "Προβολή τυχαίων βιβλίων" #: cps/templates/book_table.html:50 cps/templates/index.xml:75 cps/ub.py:92 -#: cps/web.py:1204 +#: cps/web.py:1206 msgid "Categories" msgstr "Κατηγορίες" @@ -784,7 +784,7 @@ msgstr "Προβολή επιλογών κατηγορίας" #: cps/templates/book_edit.html:84 cps/templates/book_table.html:51 #: cps/templates/index.xml:82 cps/templates/search_form.html:54 cps/ub.py:95 -#: cps/web.py:1108 cps/web.py:1118 +#: cps/web.py:1110 cps/web.py:1120 msgid "Series" msgstr "Σειρές" @@ -801,7 +801,7 @@ msgid "Show author selection" msgstr "Προβολή επιλογών συγγραφέα" #: cps/templates/book_table.html:55 cps/templates/index.xml:68 cps/ub.py:102 -#: cps/web.py:1087 +#: cps/web.py:1089 msgid "Publishers" msgstr "Εκδότες" @@ -810,7 +810,7 @@ msgid "Show publisher selection" msgstr "Προβολή επιλογών εκδότη" #: cps/templates/book_table.html:53 cps/templates/index.xml:89 -#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1183 +#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1185 msgid "Languages" msgstr "Γλώσσες" @@ -834,7 +834,7 @@ msgstr "Μορφές αρχείου" msgid "Show file formats selection" msgstr "Προβολή επιλογών μορφής αρχείου" -#: cps/ub.py:116 cps/web.py:927 +#: cps/ub.py:116 cps/web.py:929 msgid "Archived Books" msgstr "Αρχειοθετημένα Βιβλία" @@ -879,225 +879,225 @@ msgstr "Μια νέα ενημέρωση είναι διαθέσιμη. Κάνε msgid "Click on the button below to update to the latest stable version." msgstr "Κάνε κλικ στο κουμπί πιο κάτω για να ενημερώσεις με την τελευταία σταθερή έκδοση." -#: cps/web.py:316 +#: cps/web.py:318 #, python-format msgid "Error: %(ldaperror)s" msgstr "Σφάλμα: %(ldaperror)s" -#: cps/web.py:320 +#: cps/web.py:322 msgid "Error: No user returned in response of LDAP server" msgstr "Σφάλμα: Δεν επιστράφηκε χρήστης σε απάντηση του διακομιστή LDAP" -#: cps/web.py:368 +#: cps/web.py:370 msgid "Failed to Create at Least One LDAP User" msgstr "Αποτυχία Δημιουργίας Τουλάχιστον Ενός Χρήστη LDAP" -#: cps/web.py:371 +#: cps/web.py:373 msgid "At Least One LDAP User Not Found in Database" msgstr "Τουλάχιστον Ένας Χρήστης LDAP Δεν Βρέθηκε Στη Βάση Δεδομένων" -#: cps/web.py:373 +#: cps/web.py:375 msgid "User Successfully Imported" msgstr "Ο Χρήστης Εισήχθει Επιτυχώς" -#: cps/templates/index.html:5 cps/web.py:647 +#: cps/templates/index.html:5 cps/web.py:649 msgid "Discover (Random Books)" msgstr "Ανακάλυψε (Τυχαία Βιβλία)" -#: cps/web.py:686 +#: cps/web.py:688 msgid "Books" msgstr "Βιβλία" -#: cps/web.py:713 +#: cps/web.py:715 msgid "Hot Books (Most Downloaded)" msgstr "Βιβλία στη Μόδα (Με τα περισσότερα κατεβάσματα)" -#: cps/web.py:748 +#: cps/web.py:750 #, python-format msgid "Downloaded books by %(user)s" msgstr "Κατεβασμένα βιβλία από %(user)s" -#: cps/web.py:762 +#: cps/web.py:764 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Oυπς! Ο επιλεγμένος τίτλος βιβλίου δεν είναι διαθέσιμος. Το αρχείο δεν υπάρχει ή δεν είναι προσβάσιμο" -#: cps/web.py:776 +#: cps/web.py:778 #, python-format msgid "Author: %(name)s" msgstr "Συγγραφέας: %(name)s" -#: cps/web.py:790 +#: cps/web.py:792 #, python-format msgid "Publisher: %(name)s" msgstr "Εκδότης: %(name)s" -#: cps/web.py:803 +#: cps/web.py:805 #, python-format msgid "Series: %(serie)s" msgstr "Σειρές: %(serie)s" -#: cps/web.py:816 +#: cps/web.py:818 #, python-format msgid "Rating: %(rating)s stars" msgstr "Αξιολόγηση: %(rating)s stars" -#: cps/web.py:829 +#: cps/web.py:831 #, python-format msgid "File format: %(format)s" msgstr "Μορφή αρχείου: %(format)s" -#: cps/web.py:843 +#: cps/web.py:845 #, python-format msgid "Category: %(name)s" msgstr "Κατηγορία: %(name)s" -#: cps/web.py:862 +#: cps/web.py:864 #, python-format msgid "Language: %(name)s" msgstr "Γλώσσα: %(name)s" -#: cps/web.py:891 +#: cps/web.py:893 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "Η ειδικά προσαρμοσμένη στήλη No.%(column)d δεν υπάρχει στο επίπεδο βάσης δεδομένων" -#: cps/templates/layout.html:56 cps/web.py:958 cps/web.py:1407 +#: cps/templates/layout.html:56 cps/web.py:960 cps/web.py:1409 msgid "Advanced Search" msgstr "Προχωρημένη Αναζήτηση" #: cps/templates/book_edit.html:213 cps/templates/feed.xml:33 #: cps/templates/layout.html:45 cps/templates/layout.html:48 -#: cps/templates/search_form.html:175 cps/web.py:970 cps/web.py:1241 +#: cps/templates/search_form.html:175 cps/web.py:972 cps/web.py:1243 msgid "Search" msgstr "Αναζήτηση" -#: cps/web.py:998 +#: cps/web.py:1000 msgid "Books list" msgstr "Λίστα βιβλίων" -#: cps/web.py:1136 +#: cps/web.py:1138 msgid "Ratings list" msgstr "Λίστα αξιολογήσεων" -#: cps/web.py:1155 +#: cps/web.py:1157 msgid "File formats list" msgstr "Λίστα μορφών αρχείου" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1218 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1220 msgid "Tasks" msgstr "Εργασίες" -#: cps/web.py:1303 +#: cps/web.py:1305 msgid "Published after " msgstr "Εκδόθηκε μετά" -#: cps/web.py:1310 +#: cps/web.py:1312 msgid "Published before " msgstr "Εκδόθηκε πριν" -#: cps/web.py:1325 +#: cps/web.py:1327 #, python-format msgid "Rating <= %(rating)s" msgstr "Αξιολόγηση <= %(rating)s" -#: cps/web.py:1327 +#: cps/web.py:1329 #, python-format msgid "Rating >= %(rating)s" msgstr "Αξιολόγηση >= %(rating)s" -#: cps/web.py:1472 +#: cps/web.py:1474 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Το βιβλίο έχει επιτυχώς μπει σε σειρά για αποστολή στο %(kindlemail)s" -#: cps/web.py:1476 +#: cps/web.py:1478 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Oυπς! Υπήρξε ένα σφάλμα κατά την αποστολή αυτού του βιβλίου: %(res)s" -#: cps/web.py:1478 +#: cps/web.py:1480 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Παρακαλούμε ενημέρωσε το προφίλ σου με μια έγκυρη Διεύθυνση E-mail Αποστολής στο Kindle." -#: cps/web.py:1495 +#: cps/web.py:1497 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "Ο διακομιστής E-Mail δεν έχει διαμορφωθεί, παρακαλούμε επικοινώνησε με το διαχειριστή σου!" -#: cps/web.py:1496 cps/web.py:1506 cps/web.py:1530 cps/web.py:1534 -#: cps/web.py:1539 cps/web.py:1543 +#: cps/web.py:1498 cps/web.py:1508 cps/web.py:1532 cps/web.py:1536 +#: cps/web.py:1541 cps/web.py:1545 msgid "register" msgstr "εγγραφή" -#: cps/web.py:1532 +#: cps/web.py:1534 msgid "Your e-mail is not allowed to register" msgstr "Η διεύθυνση e-mail σου δεν επιτρέπεται να εγγραφεί" -#: cps/web.py:1535 +#: cps/web.py:1537 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Το e-mail επιβεβαίωσης έχει σταλεί στον e-mail λογαριασμό σου." -#: cps/web.py:1538 +#: cps/web.py:1540 msgid "This username or e-mail address is already in use." msgstr "Αυτό το όνομα χρήστη ή η διεύθυνση e-mail είναι ήδη σε χρήση." -#: cps/web.py:1555 +#: cps/web.py:1557 msgid "Cannot activate LDAP authentication" msgstr "Δεν μπόρεσε να ενεργοποιηθεί η επαλήθευση LDAP" -#: cps/web.py:1572 +#: cps/web.py:1574 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "Εναλλακτική Σύνδεση ως: '%(nickname)s', Ο Διακομιστής LDAP δεν είναι προσβάσιμος, ή ο χρήστης δεν είναι γνωστός" -#: cps/web.py:1578 +#: cps/web.py:1580 #, python-format msgid "Could not login: %(message)s" msgstr "Δεν μπόρεσε να συνδεθεί: %(message)s" -#: cps/web.py:1582 cps/web.py:1606 +#: cps/web.py:1584 cps/web.py:1608 msgid "Wrong Username or Password" msgstr "Λανθασμένο Όνομα Χρήστη ή Κωδικός" -#: cps/web.py:1589 +#: cps/web.py:1591 msgid "New Password was send to your email address" msgstr "Ο Νέος Κωδικός έχει σταλεί στη διεύθυνση email σου" -#: cps/web.py:1595 +#: cps/web.py:1597 msgid "Please enter valid username to reset password" msgstr "Παρακαλούμε συμπλήρωσε ένα έγκυρο όνομα χρήστη για επαναφορά του κωδικού" -#: cps/web.py:1601 +#: cps/web.py:1603 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Έχεις συνδεθεί ως: '%(nickname)s'" -#: cps/web.py:1612 cps/web.py:1639 +#: cps/web.py:1614 cps/web.py:1641 msgid "login" msgstr "σύνδεση" -#: cps/web.py:1651 cps/web.py:1685 +#: cps/web.py:1653 cps/web.py:1687 msgid "Token not found" msgstr "Η μάρκα δεν βρέθηκε" -#: cps/web.py:1660 cps/web.py:1693 +#: cps/web.py:1662 cps/web.py:1695 msgid "Token has expired" msgstr "Η μάρκα έχει λήξει" -#: cps/web.py:1669 +#: cps/web.py:1671 msgid "Success! Please return to your device" msgstr "Επιτυχία! Παρακαλούμε επέστρεψε στη συσκευή σου" -#: cps/web.py:1753 cps/web.py:1809 +#: cps/web.py:1755 cps/web.py:1811 #, python-format msgid "%(name)s's profile" msgstr "%(name)s's προφίλ" -#: cps/web.py:1789 +#: cps/web.py:1791 msgid "Profile updated" msgstr "Το προφίλ ενημερώθηκε" -#: cps/web.py:1836 cps/web.py:1839 cps/web.py:1842 cps/web.py:1849 -#: cps/web.py:1854 +#: cps/web.py:1838 cps/web.py:1841 cps/web.py:1844 cps/web.py:1851 +#: cps/web.py:1856 msgid "Read a Book" msgstr "Διάβασε ένα Βιβλίο" diff --git a/cps/translations/es/LC_MESSAGES/messages.po b/cps/translations/es/LC_MESSAGES/messages.po index 7d375d7e..8c87b476 100644 --- a/cps/translations/es/LC_MESSAGES/messages.po +++ b/cps/translations/es/LC_MESSAGES/messages.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2020-10-31 19:17+0100\n" +"POT-Creation-Date: 2020-11-14 13:11+0100\n" "PO-Revision-Date: 2020-05-25 17:22+0200\n" "Last-Translator: minakmostoles \n" "Language: es\n" @@ -24,7 +24,7 @@ msgstr "" msgid "installed" msgstr "instalado" -#: cps/about.py:44 cps/converter.py:33 +#: cps/about.py:44 cps/converter.py:32 msgid "not installed" msgstr "no instalado" @@ -49,351 +49,351 @@ msgstr "Reconexión correcta" msgid "Unknown command" msgstr "Comando desconocido" -#: cps/admin.py:116 cps/editbooks.py:612 cps/editbooks.py:624 -#: cps/editbooks.py:724 cps/editbooks.py:726 cps/editbooks.py:787 -#: cps/editbooks.py:803 cps/updater.py:510 cps/uploader.py:98 +#: cps/admin.py:116 cps/editbooks.py:611 cps/editbooks.py:623 +#: cps/editbooks.py:723 cps/editbooks.py:725 cps/editbooks.py:786 +#: cps/editbooks.py:802 cps/updater.py:510 cps/uploader.py:98 #: cps/uploader.py:108 msgid "Unknown" msgstr "Desconocido" -#: cps/admin.py:136 +#: cps/admin.py:137 msgid "Admin page" msgstr "Página de administración" -#: cps/admin.py:158 +#: cps/admin.py:159 msgid "UI Configuration" msgstr "Configuración de la interfaz de usuario" -#: cps/admin.py:190 cps/admin.py:717 +#: cps/admin.py:191 cps/admin.py:718 msgid "Calibre-Web configuration updated" msgstr "Configuración de Calibre-Web actualizada" -#: cps/admin.py:435 cps/admin.py:441 cps/admin.py:452 cps/admin.py:463 +#: cps/admin.py:436 cps/admin.py:442 cps/admin.py:453 cps/admin.py:464 #: cps/templates/modal_dialogs.html:29 msgid "Deny" msgstr "Denegar" -#: cps/admin.py:437 cps/admin.py:443 cps/admin.py:454 cps/admin.py:465 +#: cps/admin.py:438 cps/admin.py:444 cps/admin.py:455 cps/admin.py:466 #: cps/templates/modal_dialogs.html:28 msgid "Allow" msgstr "Permitir" -#: cps/admin.py:511 +#: cps/admin.py:512 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:550 +#: cps/admin.py:551 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "La ruta del Logfile no es válida. Por favor, introduzca la ruta correcta" -#: cps/admin.py:555 +#: cps/admin.py:556 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "La ruta del Access Logfile no es válida. Por favor, introduzca la ruta correcta" -#: cps/admin.py:581 +#: cps/admin.py:582 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "Por favor, introduzca un proveedor LDAP, puerto, DN y el User Object Identifier" -#: cps/admin.py:594 +#: cps/admin.py:595 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "LDAP Group Object Filter necesita tener un identificador de formato \"%s\"" -#: cps/admin.py:597 +#: cps/admin.py:598 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "El LDAP Group Object Filter tiene un paréntesis diferente" -#: cps/admin.py:601 +#: cps/admin.py:602 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "LDAP Group Object Filter necesita tener un identificador de formato \"%s\"" -#: cps/admin.py:604 +#: cps/admin.py:605 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "El LDAP Group Object Filter tiene un paréntesis diferente" -#: cps/admin.py:608 +#: cps/admin.py:609 msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path" msgstr "La ruta del certificado LDAP no es válida. Por favor, introduzca la ruta correcta" -#: cps/admin.py:630 +#: cps/admin.py:631 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "La ruta del Keyfile no es válida, por favor, introduzca la ruta correcta" -#: cps/admin.py:634 +#: cps/admin.py:635 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "La ruta de Certfile no es válida, por favor, introduzca la ruta correcta" -#: cps/admin.py:700 cps/admin.py:799 cps/admin.py:889 cps/admin.py:938 +#: cps/admin.py:701 cps/admin.py:800 cps/admin.py:890 cps/admin.py:939 #: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260 #: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392 msgid "Settings DB is not Writeable" msgstr "La base de datos de configuración no es modificable" -#: cps/admin.py:712 +#: cps/admin.py:713 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "La ruta de la base de datos no es válida. Por favor, introduzca la ruta correcta" -#: cps/admin.py:714 +#: cps/admin.py:715 msgid "DB is not Writeable" msgstr "La base de datos no es modificable" -#: cps/admin.py:747 +#: cps/admin.py:748 msgid "Basic Configuration" msgstr "Configuración básica" -#: cps/admin.py:762 cps/web.py:1505 +#: cps/admin.py:763 cps/web.py:1507 msgid "Please fill out all fields!" msgstr "¡Por favor, completa todos los campos!" -#: cps/admin.py:765 cps/admin.py:777 cps/admin.py:783 cps/admin.py:907 +#: cps/admin.py:766 cps/admin.py:778 cps/admin.py:784 cps/admin.py:908 msgid "Add new user" msgstr "Añadir un nuevo usuario" -#: cps/admin.py:774 cps/web.py:1751 +#: cps/admin.py:775 cps/web.py:1753 msgid "E-mail is not from valid domain" msgstr "El correo electrónico no tiene un dominio válido" -#: cps/admin.py:781 cps/admin.py:796 +#: cps/admin.py:782 cps/admin.py:797 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:792 +#: cps/admin.py:793 #, python-format msgid "User '%(user)s' created" msgstr "Usuario '%(user)s' creado" -#: cps/admin.py:808 +#: cps/admin.py:809 #, python-format msgid "User '%(nick)s' deleted" msgstr "Usuario '%(nick)s' borrado" -#: cps/admin.py:811 +#: cps/admin.py:812 msgid "No admin user remaining, can't delete user" msgstr "No queda ningún usuario administrador, no se puede eliminar al usuario" -#: cps/admin.py:817 +#: cps/admin.py:818 msgid "No admin user remaining, can't remove admin role" msgstr "No queda ningún usuario administrador, no se puede eliminar al usuario" -#: cps/admin.py:853 cps/web.py:1793 +#: cps/admin.py:854 cps/web.py:1795 msgid "Found an existing account for this e-mail address." msgstr "Encontrada una cuenta existente para esa dirección de correo electrónico." -#: cps/admin.py:862 cps/admin.py:876 cps/admin.py:979 cps/web.py:1769 +#: cps/admin.py:863 cps/admin.py:877 cps/admin.py:980 cps/web.py:1771 #, python-format msgid "Edit User %(nick)s" msgstr "Editar Usuario %(nick)s" -#: cps/admin.py:868 cps/web.py:1762 +#: cps/admin.py:869 cps/web.py:1764 msgid "This username is already taken" msgstr "Este nombre de usuario ya está en uso" -#: cps/admin.py:883 +#: cps/admin.py:884 #, python-format msgid "User '%(nick)s' updated" msgstr "Usuario '%(nick)s' actualizado" -#: cps/admin.py:886 +#: cps/admin.py:887 msgid "An unknown error occured." msgstr "Ocurrió un error desconocido." -#: cps/admin.py:916 cps/templates/admin.html:71 +#: cps/admin.py:917 cps/templates/admin.html:71 msgid "Edit E-mail Server Settings" msgstr "Cambiar parámetros de correo" -#: cps/admin.py:945 +#: cps/admin.py:946 #, 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:948 +#: cps/admin.py:949 #, 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:950 +#: cps/admin.py:951 msgid "Please configure your e-mail address first..." msgstr "Por favor, configure su correo electrónico primero..." -#: cps/admin.py:952 +#: cps/admin.py:953 msgid "E-mail server settings updated" msgstr "Actualizados los ajustes del servidor de correo electrónico" -#: cps/admin.py:963 +#: cps/admin.py:964 msgid "User not found" msgstr "Usuario no encontrado" -#: cps/admin.py:990 +#: cps/admin.py:991 #, python-format msgid "Password for user %(user)s reset" msgstr "Contraseña para el usuario %(user)s reinicializada" -#: cps/admin.py:993 cps/web.py:1529 cps/web.py:1593 +#: cps/admin.py:994 cps/web.py:1531 cps/web.py:1595 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:996 cps/web.py:1467 +#: cps/admin.py:997 cps/web.py:1469 msgid "Please configure the SMTP mail settings first..." msgstr "Configura primero los parámetros del servidor SMTP..." -#: cps/admin.py:1008 +#: cps/admin.py:1009 msgid "Logfile viewer" msgstr "Visor del fichero de log" -#: cps/admin.py:1047 +#: cps/admin.py:1049 msgid "Requesting update package" msgstr "Solicitando paquete de actualización" -#: cps/admin.py:1048 +#: cps/admin.py:1050 msgid "Downloading update package" msgstr "Descargando paquete de actualización" -#: cps/admin.py:1049 +#: cps/admin.py:1051 msgid "Unzipping update package" msgstr "Descomprimiendo paquete de actualización" -#: cps/admin.py:1050 +#: cps/admin.py:1052 msgid "Replacing files" msgstr "Remplazando archivos" -#: cps/admin.py:1051 +#: cps/admin.py:1053 msgid "Database connections are closed" msgstr "Los conexiones con la base datos están cerradas" -#: cps/admin.py:1052 +#: cps/admin.py:1054 msgid "Stopping server" msgstr "Parando el servidor" -#: cps/admin.py:1053 +#: cps/admin.py:1055 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:1054 cps/admin.py:1055 cps/admin.py:1056 cps/admin.py:1057 -#: cps/admin.py:1058 +#: cps/admin.py:1056 cps/admin.py:1057 cps/admin.py:1058 cps/admin.py:1059 +#: cps/admin.py:1060 msgid "Update failed:" msgstr "Falló la actualización:" -#: cps/admin.py:1054 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 +#: cps/admin.py:1056 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 msgid "HTTP Error" msgstr "Error HTTP" -#: cps/admin.py:1055 cps/updater.py:322 cps/updater.py:525 +#: cps/admin.py:1057 cps/updater.py:322 cps/updater.py:525 msgid "Connection error" msgstr "Error de conexión" -#: cps/admin.py:1056 cps/updater.py:324 cps/updater.py:527 +#: cps/admin.py:1058 cps/updater.py:324 cps/updater.py:527 msgid "Timeout while establishing connection" msgstr "Tiempo agotado mientras se trataba de establecer la conexión" -#: cps/admin.py:1057 cps/updater.py:326 cps/updater.py:529 +#: cps/admin.py:1059 cps/updater.py:326 cps/updater.py:529 msgid "General error" msgstr "Error general" -#: cps/admin.py:1058 +#: cps/admin.py:1060 msgid "Update File Could Not be Saved in Temp Dir" msgstr "La actualización del archivo no pudo guardarse en el directorio temporal (Temp Dir)" -#: cps/converter.py:32 +#: cps/converter.py:31 msgid "not configured" msgstr "no configurado" -#: cps/converter.py:34 +#: cps/converter.py:33 msgid "Execution permissions missing" msgstr "Faltan permisos de ejecución" -#: cps/editbooks.py:273 cps/editbooks.py:275 +#: cps/editbooks.py:272 cps/editbooks.py:274 msgid "Book Format Successfully Deleted" msgstr "Formato de libro borrado correctamente" -#: cps/editbooks.py:282 cps/editbooks.py:284 +#: cps/editbooks.py:281 cps/editbooks.py:283 msgid "Book Successfully Deleted" msgstr "Libro borrado correctamente" -#: cps/editbooks.py:293 cps/editbooks.py:596 cps/web.py:1824 cps/web.py:1865 -#: cps/web.py:1927 +#: cps/editbooks.py:292 cps/editbooks.py:595 cps/web.py:1826 cps/web.py:1867 +#: cps/web.py:1929 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:327 +#: cps/editbooks.py:326 msgid "edit metadata" msgstr "editar metadatos" -#: cps/editbooks.py:402 +#: cps/editbooks.py:401 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s no es un idioma válido" -#: cps/editbooks.py:513 cps/editbooks.py:769 +#: cps/editbooks.py:512 cps/editbooks.py:768 #, 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:517 cps/editbooks.py:773 +#: cps/editbooks.py:516 cps/editbooks.py:772 msgid "File to be uploaded must have an extension" msgstr "El archivo a subir debe tener una extensión" -#: cps/editbooks.py:529 +#: cps/editbooks.py:528 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Fallo al crear la ruta %(path)s (permiso denegado)" -#: cps/editbooks.py:534 +#: cps/editbooks.py:533 #, python-format msgid "Failed to store file %(file)s." msgstr "Fallo al guardar el archivo %(file)s." -#: cps/editbooks.py:552 cps/editbooks.py:904 +#: cps/editbooks.py:551 cps/editbooks.py:903 #, python-format msgid "Database error: %(error)s." msgstr "Error en la base de datos: %(error)s." -#: cps/editbooks.py:556 +#: cps/editbooks.py:555 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Archivo con formato %(ext)s añadido a %(book)s" -#: cps/editbooks.py:673 +#: cps/editbooks.py:672 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:710 +#: cps/editbooks.py:709 msgid "Metadata successfully updated" msgstr "Metadatos actualizados correctamente" -#: cps/editbooks.py:719 +#: cps/editbooks.py:718 msgid "Error editing book, please check logfile for details" msgstr "Error al editar el libro, por favor, compruebe el archivo de registro (logfile) para tener más detalles" -#: cps/editbooks.py:781 +#: cps/editbooks.py:780 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "El archivo %(filename)s no pudo salvarse en el directorio temporal (Temp Dir)" -#: cps/editbooks.py:791 +#: cps/editbooks.py:790 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "El libro cargado probablemente existe en la biblioteca, considera cambiarlo antes de subirlo de nuevo: " -#: cps/editbooks.py:879 +#: cps/editbooks.py:878 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "Fallo al mover el archivo de cubierta %(file)s: %(error)s" -#: cps/editbooks.py:890 +#: cps/editbooks.py:889 #, python-format msgid "File %(file)s uploaded" msgstr "El fichero %(file)s a sido subido" -#: cps/editbooks.py:916 +#: cps/editbooks.py:915 msgid "Source or destination format for conversion missing" msgstr "Falta la fuente o el formato de destino para la conversión" -#: cps/editbooks.py:924 +#: cps/editbooks.py:923 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Libro puesto a la cola para su conversión a %(book_format)s" -#: cps/editbooks.py:928 +#: cps/editbooks.py:927 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Ocurrió un error al convertir este libro: %(res)s" @@ -583,7 +583,7 @@ msgstr "Error al iniciar sesión con Google." msgid "Failed to fetch user info from Google." msgstr "Error al obtener información del usuario de Google." -#: cps/oauth_bb.py:225 cps/web.py:1565 cps/web.py:1707 +#: cps/oauth_bb.py:225 cps/web.py:1567 cps/web.py:1709 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "has iniciado sesión como : '%(nickname)s'" @@ -743,7 +743,7 @@ msgstr "" msgid "Show Downloaded Books" msgstr "" -#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:639 +#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:641 msgid "Top Rated Books" msgstr "Libros mejor valorados" @@ -752,7 +752,7 @@ msgid "Show Top Rated Books" msgstr "Mostrar libros mejor valorados" #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:82 -#: cps/web.py:900 +#: cps/web.py:902 msgid "Read Books" msgstr "Libros leídos" @@ -761,7 +761,7 @@ 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:86 -#: cps/web.py:903 +#: cps/web.py:905 msgid "Unread Books" msgstr "Libros no leídos" @@ -778,7 +778,7 @@ msgid "Show random books" msgstr "Mostrar libros al azar" #: cps/templates/book_table.html:50 cps/templates/index.xml:75 cps/ub.py:92 -#: cps/web.py:1204 +#: cps/web.py:1206 msgid "Categories" msgstr "Categorías" @@ -788,7 +788,7 @@ msgstr "Mostrar selección de categorías" #: cps/templates/book_edit.html:84 cps/templates/book_table.html:51 #: cps/templates/index.xml:82 cps/templates/search_form.html:54 cps/ub.py:95 -#: cps/web.py:1108 cps/web.py:1118 +#: cps/web.py:1110 cps/web.py:1120 msgid "Series" msgstr "Series" @@ -805,7 +805,7 @@ msgid "Show author selection" msgstr "Mostrar selección de autores" #: cps/templates/book_table.html:55 cps/templates/index.xml:68 cps/ub.py:102 -#: cps/web.py:1087 +#: cps/web.py:1089 msgid "Publishers" msgstr "Editores" @@ -814,7 +814,7 @@ msgid "Show publisher selection" msgstr "Mostrar selección de editores" #: cps/templates/book_table.html:53 cps/templates/index.xml:89 -#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1183 +#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1185 msgid "Languages" msgstr "Idiomas" @@ -838,7 +838,7 @@ msgstr "Formatos de archivo" msgid "Show file formats selection" msgstr "Mostrar selección de formatos de archivo" -#: cps/ub.py:116 cps/web.py:927 +#: cps/ub.py:116 cps/web.py:929 msgid "Archived Books" msgstr "Libros archivados" @@ -883,225 +883,225 @@ msgstr "Hay una nueva actualización disponible. Haz clic en el botón de abajo msgid "Click on the button below to update to the latest stable version." msgstr "Haz clic en el botón de abajo para actualizar a la última versión estable." -#: cps/web.py:316 +#: cps/web.py:318 #, python-format msgid "Error: %(ldaperror)s" msgstr "Error: %(ldaperror)s" -#: cps/web.py:320 +#: cps/web.py:322 msgid "Error: No user returned in response of LDAP server" msgstr "Error: el servidor LDAP no ha devuelto ningún usuario" -#: cps/web.py:368 +#: cps/web.py:370 msgid "Failed to Create at Least One LDAP User" msgstr "Error al crear al menos un usuario LDAP" -#: cps/web.py:371 +#: cps/web.py:373 msgid "At Least One LDAP User Not Found in Database" msgstr "Al menos, un usuario LDAP no se ha encontrado en la base de datos" -#: cps/web.py:373 +#: cps/web.py:375 msgid "User Successfully Imported" msgstr "Usuario importado correctamente" -#: cps/templates/index.html:5 cps/web.py:647 +#: cps/templates/index.html:5 cps/web.py:649 msgid "Discover (Random Books)" msgstr "Descubrir (Libros al azar)" -#: cps/web.py:686 +#: cps/web.py:688 msgid "Books" msgstr "Libros" -#: cps/web.py:713 +#: cps/web.py:715 msgid "Hot Books (Most Downloaded)" msgstr "Libros populares (los más descargados)" -#: cps/web.py:748 +#: cps/web.py:750 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:762 +#: cps/web.py:764 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "oh, oh, el libro seleccionado no está disponible. El archivo no existe o no es accesible" -#: cps/web.py:776 +#: cps/web.py:778 #, python-format msgid "Author: %(name)s" msgstr "Autor/es: %(name)s" -#: cps/web.py:790 +#: cps/web.py:792 #, python-format msgid "Publisher: %(name)s" msgstr "Editor/es: %(name)s" -#: cps/web.py:803 +#: cps/web.py:805 #, python-format msgid "Series: %(serie)s" msgstr "Series: %(serie)s" -#: cps/web.py:816 +#: cps/web.py:818 #, python-format msgid "Rating: %(rating)s stars" msgstr "Calificación: %(rating)s estrellas" -#: cps/web.py:829 +#: cps/web.py:831 #, python-format msgid "File format: %(format)s" msgstr "Formato del archivo: %(format)s" -#: cps/web.py:843 +#: cps/web.py:845 #, python-format msgid "Category: %(name)s" msgstr "Categoría : %(name)s" -#: cps/web.py:862 +#: cps/web.py:864 #, python-format msgid "Language: %(name)s" msgstr "Idioma: %(name)s" -#: cps/web.py:891 +#: cps/web.py:893 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:958 cps/web.py:1407 +#: cps/templates/layout.html:56 cps/web.py:960 cps/web.py:1409 msgid "Advanced Search" msgstr "Búsqueda avanzada" #: cps/templates/book_edit.html:213 cps/templates/feed.xml:33 #: cps/templates/layout.html:45 cps/templates/layout.html:48 -#: cps/templates/search_form.html:175 cps/web.py:970 cps/web.py:1241 +#: cps/templates/search_form.html:175 cps/web.py:972 cps/web.py:1243 msgid "Search" msgstr "Buscar" -#: cps/web.py:998 +#: cps/web.py:1000 msgid "Books list" msgstr "" -#: cps/web.py:1136 +#: cps/web.py:1138 msgid "Ratings list" msgstr "Lista de calificaciones" -#: cps/web.py:1155 +#: cps/web.py:1157 msgid "File formats list" msgstr "Lista de formatos" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1218 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1220 msgid "Tasks" msgstr "Tareas" -#: cps/web.py:1303 +#: cps/web.py:1305 msgid "Published after " msgstr "Publicado después de " -#: cps/web.py:1310 +#: cps/web.py:1312 msgid "Published before " msgstr "Publicado antes de " -#: cps/web.py:1325 +#: cps/web.py:1327 #, python-format msgid "Rating <= %(rating)s" msgstr "Calificación <= %(rating)s" -#: cps/web.py:1327 +#: cps/web.py:1329 #, python-format msgid "Rating >= %(rating)s" msgstr "Calificación >= %(rating)s" -#: cps/web.py:1472 +#: cps/web.py:1474 #, 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:1476 +#: cps/web.py:1478 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Ha sucedido un error en el envío del libro: %(res)s" -#: cps/web.py:1478 +#: cps/web.py:1480 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Por favor actualiza tu perfil con la dirección de correo de su kindle..." -#: cps/web.py:1495 +#: cps/web.py:1497 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "El servidor de E-Mail no está configurado, por favor, ¡avisa a tu administrador!" -#: cps/web.py:1496 cps/web.py:1506 cps/web.py:1530 cps/web.py:1534 -#: cps/web.py:1539 cps/web.py:1543 +#: cps/web.py:1498 cps/web.py:1508 cps/web.py:1532 cps/web.py:1536 +#: cps/web.py:1541 cps/web.py:1545 msgid "register" msgstr "registrarse" -#: cps/web.py:1532 +#: cps/web.py:1534 msgid "Your e-mail is not allowed to register" msgstr "Su correo electrónico no está permitido para registrarse" -#: cps/web.py:1535 +#: cps/web.py:1537 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Se ha enviado un correo electrónico de verificación a su cuenta de correo." -#: cps/web.py:1538 +#: cps/web.py:1540 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:1555 +#: cps/web.py:1557 msgid "Cannot activate LDAP authentication" msgstr "No se puede activar la autenticación LDAP" -#: cps/web.py:1572 +#: cps/web.py:1574 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "Fallback login como: '%(nickname)s', no se puede acceder al servidor LDAP o usuario desconocido" -#: cps/web.py:1578 +#: cps/web.py:1580 #, python-format msgid "Could not login: %(message)s" msgstr "No se pudo entrar: %(message)s" -#: cps/web.py:1582 cps/web.py:1606 +#: cps/web.py:1584 cps/web.py:1608 msgid "Wrong Username or Password" msgstr "Usuario o contraseña inválido" -#: cps/web.py:1589 +#: cps/web.py:1591 msgid "New Password was send to your email address" msgstr "Una nueva contraseña se ha enviado a su cuenta de correo electrónico" -#: cps/web.py:1595 +#: cps/web.py:1597 msgid "Please enter valid username to reset password" msgstr "Por favor, introduce un usuario válido para restablecer la contraseña" -#: cps/web.py:1601 +#: cps/web.py:1603 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Ahora estás conectado como: '%(nickname)s'" -#: cps/web.py:1612 cps/web.py:1639 +#: cps/web.py:1614 cps/web.py:1641 msgid "login" msgstr "iniciar sesión" -#: cps/web.py:1651 cps/web.py:1685 +#: cps/web.py:1653 cps/web.py:1687 msgid "Token not found" msgstr "Token no encontrado" -#: cps/web.py:1660 cps/web.py:1693 +#: cps/web.py:1662 cps/web.py:1695 msgid "Token has expired" msgstr "El token ha expirado" -#: cps/web.py:1669 +#: cps/web.py:1671 msgid "Success! Please return to your device" msgstr "¡Correcto! Por favor regrese a su dispositivo" -#: cps/web.py:1753 cps/web.py:1809 +#: cps/web.py:1755 cps/web.py:1811 #, python-format msgid "%(name)s's profile" msgstr "Perfil de %(name)s" -#: cps/web.py:1789 +#: cps/web.py:1791 msgid "Profile updated" msgstr "Perfil actualizado" -#: cps/web.py:1836 cps/web.py:1839 cps/web.py:1842 cps/web.py:1849 -#: cps/web.py:1854 +#: cps/web.py:1838 cps/web.py:1841 cps/web.py:1844 cps/web.py:1851 +#: cps/web.py:1856 msgid "Read a Book" msgstr "Leer un libro" diff --git a/cps/translations/fi/LC_MESSAGES/messages.po b/cps/translations/fi/LC_MESSAGES/messages.po index d9d537b5..89a96312 100644 --- a/cps/translations/fi/LC_MESSAGES/messages.po +++ b/cps/translations/fi/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2020-10-31 19:17+0100\n" +"POT-Creation-Date: 2020-11-14 13:11+0100\n" "PO-Revision-Date: 2020-01-12 13:56+0100\n" "Last-Translator: Samuli Valavuo \n" "Language: fi\n" @@ -22,7 +22,7 @@ msgstr "" msgid "installed" msgstr "asennettu" -#: cps/about.py:44 cps/converter.py:33 +#: cps/about.py:44 cps/converter.py:32 msgid "not installed" msgstr "ei asennettu" @@ -46,351 +46,351 @@ msgstr "" msgid "Unknown command" msgstr "" -#: cps/admin.py:116 cps/editbooks.py:612 cps/editbooks.py:624 -#: cps/editbooks.py:724 cps/editbooks.py:726 cps/editbooks.py:787 -#: cps/editbooks.py:803 cps/updater.py:510 cps/uploader.py:98 +#: cps/admin.py:116 cps/editbooks.py:611 cps/editbooks.py:623 +#: cps/editbooks.py:723 cps/editbooks.py:725 cps/editbooks.py:786 +#: cps/editbooks.py:802 cps/updater.py:510 cps/uploader.py:98 #: cps/uploader.py:108 msgid "Unknown" msgstr "Tuntematon" -#: cps/admin.py:136 +#: cps/admin.py:137 msgid "Admin page" msgstr "Ylläpitosivu" -#: cps/admin.py:158 +#: cps/admin.py:159 msgid "UI Configuration" msgstr "Käyttöliittymän asetukset" -#: cps/admin.py:190 cps/admin.py:717 +#: cps/admin.py:191 cps/admin.py:718 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web asetukset päivitetty" -#: cps/admin.py:435 cps/admin.py:441 cps/admin.py:452 cps/admin.py:463 +#: cps/admin.py:436 cps/admin.py:442 cps/admin.py:453 cps/admin.py:464 #: cps/templates/modal_dialogs.html:29 msgid "Deny" msgstr "" -#: cps/admin.py:437 cps/admin.py:443 cps/admin.py:454 cps/admin.py:465 +#: cps/admin.py:438 cps/admin.py:444 cps/admin.py:455 cps/admin.py:466 #: cps/templates/modal_dialogs.html:28 msgid "Allow" msgstr "" -#: cps/admin.py:511 +#: cps/admin.py:512 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "" -#: cps/admin.py:550 +#: cps/admin.py:551 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:555 +#: cps/admin.py:556 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:581 +#: cps/admin.py:582 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "" -#: cps/admin.py:594 +#: cps/admin.py:595 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:597 +#: cps/admin.py:598 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:601 +#: cps/admin.py:602 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:604 +#: cps/admin.py:605 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:608 +#: cps/admin.py:609 msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:630 +#: cps/admin.py:631 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:634 +#: cps/admin.py:635 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:700 cps/admin.py:799 cps/admin.py:889 cps/admin.py:938 +#: cps/admin.py:701 cps/admin.py:800 cps/admin.py:890 cps/admin.py:939 #: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260 #: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:712 +#: cps/admin.py:713 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:714 +#: cps/admin.py:715 msgid "DB is not Writeable" msgstr "" -#: cps/admin.py:747 +#: cps/admin.py:748 msgid "Basic Configuration" msgstr "Perusasetukset" -#: cps/admin.py:762 cps/web.py:1505 +#: cps/admin.py:763 cps/web.py:1507 msgid "Please fill out all fields!" msgstr "Ole hyvä ja täytä kaikki kentät!" -#: cps/admin.py:765 cps/admin.py:777 cps/admin.py:783 cps/admin.py:907 +#: cps/admin.py:766 cps/admin.py:778 cps/admin.py:784 cps/admin.py:908 msgid "Add new user" msgstr "Lisää uusi käyttäjä" -#: cps/admin.py:774 cps/web.py:1751 +#: cps/admin.py:775 cps/web.py:1753 msgid "E-mail is not from valid domain" msgstr "Sähköpostiosoite ei ole toimivasta domainista" -#: cps/admin.py:781 cps/admin.py:796 +#: cps/admin.py:782 cps/admin.py:797 msgid "Found an existing account for this e-mail address or nickname." msgstr "Tälle sähköpostiosoitteelle tai tunnukselle löytyi jo tili." -#: cps/admin.py:792 +#: cps/admin.py:793 #, python-format msgid "User '%(user)s' created" msgstr "Käyttäjä '%(user)s' lisätty" -#: cps/admin.py:808 +#: cps/admin.py:809 #, python-format msgid "User '%(nick)s' deleted" msgstr "Käyttäjä '%(nick)s' poistettu" -#: cps/admin.py:811 +#: cps/admin.py:812 msgid "No admin user remaining, can't delete user" msgstr "Pääkäyttäjiä ei jää jäljelle, käyttäjää ei voi poistaa" -#: cps/admin.py:817 +#: cps/admin.py:818 msgid "No admin user remaining, can't remove admin role" msgstr "" -#: cps/admin.py:853 cps/web.py:1793 +#: cps/admin.py:854 cps/web.py:1795 msgid "Found an existing account for this e-mail address." msgstr "Tälle sähköpostiosoitteelle läytyi jo käyttäjätunnus." -#: cps/admin.py:862 cps/admin.py:876 cps/admin.py:979 cps/web.py:1769 +#: cps/admin.py:863 cps/admin.py:877 cps/admin.py:980 cps/web.py:1771 #, python-format msgid "Edit User %(nick)s" msgstr "Muokkaa käyttäjää %(nick)s" -#: cps/admin.py:868 cps/web.py:1762 +#: cps/admin.py:869 cps/web.py:1764 msgid "This username is already taken" msgstr "" -#: cps/admin.py:883 +#: cps/admin.py:884 #, python-format msgid "User '%(nick)s' updated" msgstr "Käyttäjä '%(nick)s' päivitetty" -#: cps/admin.py:886 +#: cps/admin.py:887 msgid "An unknown error occured." msgstr "Tapahtui tuntematon virhe." -#: cps/admin.py:916 cps/templates/admin.html:71 +#: cps/admin.py:917 cps/templates/admin.html:71 msgid "Edit E-mail Server Settings" msgstr "Muuta SMTP asetuksia" -#: cps/admin.py:945 +#: cps/admin.py:946 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "Testisähköposti lähetetty onnistuneesti osoitteeseen %(kindlemail)s" -#: cps/admin.py:948 +#: cps/admin.py:949 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Testisähköpostin lähetyksessä tapahtui virhe: %(res)s" -#: cps/admin.py:950 +#: cps/admin.py:951 msgid "Please configure your e-mail address first..." msgstr "" -#: cps/admin.py:952 +#: cps/admin.py:953 msgid "E-mail server settings updated" msgstr "Sähköpostipalvelimen tiedot päivitetty" -#: cps/admin.py:963 +#: cps/admin.py:964 msgid "User not found" msgstr "" -#: cps/admin.py:990 +#: cps/admin.py:991 #, python-format msgid "Password for user %(user)s reset" msgstr "Käyttäjän %(user)s salasana palautettu" -#: cps/admin.py:993 cps/web.py:1529 cps/web.py:1593 +#: cps/admin.py:994 cps/web.py:1531 cps/web.py:1595 msgid "An unknown error occurred. Please try again later." msgstr "Tapahtui tuntematon virhe. Yritä myöhemmin uudelleen." -#: cps/admin.py:996 cps/web.py:1467 +#: cps/admin.py:997 cps/web.py:1469 msgid "Please configure the SMTP mail settings first..." msgstr "Ole hyvä ja aseta SMTP postiasetukset ensin..." -#: cps/admin.py:1008 +#: cps/admin.py:1009 msgid "Logfile viewer" msgstr "Lokitiedoston katselin" -#: cps/admin.py:1047 +#: cps/admin.py:1049 msgid "Requesting update package" msgstr "Haetaan päivitystiedostoa" -#: cps/admin.py:1048 +#: cps/admin.py:1050 msgid "Downloading update package" msgstr "Ladataan päivitystiedostoa" -#: cps/admin.py:1049 +#: cps/admin.py:1051 msgid "Unzipping update package" msgstr "Puretaan päivitystiedostoa" -#: cps/admin.py:1050 +#: cps/admin.py:1052 msgid "Replacing files" msgstr "Korvataan tiedostoja" -#: cps/admin.py:1051 +#: cps/admin.py:1053 msgid "Database connections are closed" msgstr "Tietokantayhteydet on katkaistu" -#: cps/admin.py:1052 +#: cps/admin.py:1054 msgid "Stopping server" msgstr "Sammutetaan palvelin" -#: cps/admin.py:1053 +#: cps/admin.py:1055 msgid "Update finished, please press okay and reload page" msgstr "Päivitys valmistui, ole hyvä ja paina OK ja lataa sivu uudelleen" -#: cps/admin.py:1054 cps/admin.py:1055 cps/admin.py:1056 cps/admin.py:1057 -#: cps/admin.py:1058 +#: cps/admin.py:1056 cps/admin.py:1057 cps/admin.py:1058 cps/admin.py:1059 +#: cps/admin.py:1060 msgid "Update failed:" msgstr "Päivitys epäonnistui:" -#: cps/admin.py:1054 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 +#: cps/admin.py:1056 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 msgid "HTTP Error" msgstr "HTTP virhe" -#: cps/admin.py:1055 cps/updater.py:322 cps/updater.py:525 +#: cps/admin.py:1057 cps/updater.py:322 cps/updater.py:525 msgid "Connection error" msgstr "Yhteysvirhe" -#: cps/admin.py:1056 cps/updater.py:324 cps/updater.py:527 +#: cps/admin.py:1058 cps/updater.py:324 cps/updater.py:527 msgid "Timeout while establishing connection" msgstr "Aikakatkaisu yhteyttä luotaessa" -#: cps/admin.py:1057 cps/updater.py:326 cps/updater.py:529 +#: cps/admin.py:1059 cps/updater.py:326 cps/updater.py:529 msgid "General error" msgstr "Yleinen virhe" -#: cps/admin.py:1058 +#: cps/admin.py:1060 msgid "Update File Could Not be Saved in Temp Dir" msgstr "" -#: cps/converter.py:32 +#: cps/converter.py:31 msgid "not configured" msgstr "" -#: cps/converter.py:34 +#: cps/converter.py:33 msgid "Execution permissions missing" msgstr "" -#: cps/editbooks.py:273 cps/editbooks.py:275 +#: cps/editbooks.py:272 cps/editbooks.py:274 msgid "Book Format Successfully Deleted" msgstr "" -#: cps/editbooks.py:282 cps/editbooks.py:284 +#: cps/editbooks.py:281 cps/editbooks.py:283 msgid "Book Successfully Deleted" msgstr "" -#: cps/editbooks.py:293 cps/editbooks.py:596 cps/web.py:1824 cps/web.py:1865 -#: cps/web.py:1927 +#: cps/editbooks.py:292 cps/editbooks.py:595 cps/web.py:1826 cps/web.py:1867 +#: cps/web.py:1929 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Virhe e-kirjaa avatessa. Tiedostoa ei löydy tai se ei ole saatavilla" -#: cps/editbooks.py:327 +#: cps/editbooks.py:326 msgid "edit metadata" msgstr "muokkaa metadataa" -#: cps/editbooks.py:402 +#: cps/editbooks.py:401 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s ei ole kelvollinen kieli" -#: cps/editbooks.py:513 cps/editbooks.py:769 +#: cps/editbooks.py:512 cps/editbooks.py:768 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Tiedostopääte '%(ext)s' ei ole sallittujen palvelimelle ladattavien listalla" -#: cps/editbooks.py:517 cps/editbooks.py:773 +#: cps/editbooks.py:516 cps/editbooks.py:772 msgid "File to be uploaded must have an extension" msgstr "Ladattavalla tiedostolla on oltava tiedostopääte" -#: cps/editbooks.py:529 +#: cps/editbooks.py:528 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Polun %(path)s luonti epäonnistui (Ei oikeutta)." -#: cps/editbooks.py:534 +#: cps/editbooks.py:533 #, python-format msgid "Failed to store file %(file)s." msgstr "Tiedoston %(file)s tallennus epäonnistui." -#: cps/editbooks.py:552 cps/editbooks.py:904 +#: cps/editbooks.py:551 cps/editbooks.py:903 #, python-format msgid "Database error: %(error)s." msgstr "" -#: cps/editbooks.py:556 +#: cps/editbooks.py:555 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Tiedostoformaatti %(ext)s lisätty %(book)s" -#: cps/editbooks.py:673 +#: cps/editbooks.py:672 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:710 +#: cps/editbooks.py:709 msgid "Metadata successfully updated" msgstr "Metadata päivitetty onnistuneesti" -#: cps/editbooks.py:719 +#: cps/editbooks.py:718 msgid "Error editing book, please check logfile for details" msgstr "Kirjan editoinnissa tapahtui virhe, tarkista virheilmoitus lokista" -#: cps/editbooks.py:781 +#: cps/editbooks.py:780 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "" -#: cps/editbooks.py:791 +#: cps/editbooks.py:790 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "" -#: cps/editbooks.py:879 +#: cps/editbooks.py:878 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "" -#: cps/editbooks.py:890 +#: cps/editbooks.py:889 #, python-format msgid "File %(file)s uploaded" msgstr "Tiedosto %(file)s tallennettu" -#: cps/editbooks.py:916 +#: cps/editbooks.py:915 msgid "Source or destination format for conversion missing" msgstr "Lähteen tai kohteen tiedostomuoto puuttuu" -#: cps/editbooks.py:924 +#: cps/editbooks.py:923 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Kirja lisätty muutosjonoon muotoon %(book_format)s" -#: cps/editbooks.py:928 +#: cps/editbooks.py:927 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Kirjan muunnoksessa tapahtui virhe: %(res)s" @@ -580,7 +580,7 @@ msgstr "Googleen kirjautuminen epäonnistui." msgid "Failed to fetch user info from Google." msgstr "Käyttäjätietojen haku Googlesta epäonnistui." -#: cps/oauth_bb.py:225 cps/web.py:1565 cps/web.py:1707 +#: cps/oauth_bb.py:225 cps/web.py:1567 cps/web.py:1709 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "olet nyt kirjautunut tunnuksella: \"%(nickname)s\"" @@ -740,7 +740,7 @@ msgstr "" msgid "Show Downloaded Books" msgstr "" -#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:639 +#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:641 msgid "Top Rated Books" msgstr "Parhaiten arvioidut kirjat" @@ -749,7 +749,7 @@ msgid "Show Top Rated Books" msgstr "Näytä parhaiten arvioidut kirjat" #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:82 -#: cps/web.py:900 +#: cps/web.py:902 msgid "Read Books" msgstr "Luetut kirjat" @@ -758,7 +758,7 @@ msgid "Show read and unread" msgstr "Näytä luetut ja lukemattomat" #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:86 -#: cps/web.py:903 +#: cps/web.py:905 msgid "Unread Books" msgstr "Lukemattomat kirjat" @@ -775,7 +775,7 @@ msgid "Show random books" msgstr "Näytä satunnaisia kirjoja" #: cps/templates/book_table.html:50 cps/templates/index.xml:75 cps/ub.py:92 -#: cps/web.py:1204 +#: cps/web.py:1206 msgid "Categories" msgstr "Kategoriat" @@ -785,7 +785,7 @@ msgstr "Näytä kategoriavalinta" #: cps/templates/book_edit.html:84 cps/templates/book_table.html:51 #: cps/templates/index.xml:82 cps/templates/search_form.html:54 cps/ub.py:95 -#: cps/web.py:1108 cps/web.py:1118 +#: cps/web.py:1110 cps/web.py:1120 msgid "Series" msgstr "Sarjat" @@ -802,7 +802,7 @@ msgid "Show author selection" msgstr "Näytä kirjailijavalinta" #: cps/templates/book_table.html:55 cps/templates/index.xml:68 cps/ub.py:102 -#: cps/web.py:1087 +#: cps/web.py:1089 msgid "Publishers" msgstr "Julkaisijat" @@ -811,7 +811,7 @@ msgid "Show publisher selection" msgstr "Näytä julkaisijavalinta" #: cps/templates/book_table.html:53 cps/templates/index.xml:89 -#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1183 +#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1185 msgid "Languages" msgstr "Kielet" @@ -835,7 +835,7 @@ msgstr "Tiedotomuodot" msgid "Show file formats selection" msgstr "Näytä tiedostomuotovalinta" -#: cps/ub.py:116 cps/web.py:927 +#: cps/ub.py:116 cps/web.py:929 msgid "Archived Books" msgstr "" @@ -880,225 +880,225 @@ msgstr "Uusi päivitys saatavilla. Paina alla olevaa nappia päivittääksesi ve msgid "Click on the button below to update to the latest stable version." msgstr "Paina alla olevaa nappia päivittääksesi uusimpaan vakaaseen versioon." -#: cps/web.py:316 +#: cps/web.py:318 #, python-format msgid "Error: %(ldaperror)s" msgstr "" -#: cps/web.py:320 +#: cps/web.py:322 msgid "Error: No user returned in response of LDAP server" msgstr "" -#: cps/web.py:368 +#: cps/web.py:370 msgid "Failed to Create at Least One LDAP User" msgstr "" -#: cps/web.py:371 +#: cps/web.py:373 msgid "At Least One LDAP User Not Found in Database" msgstr "" -#: cps/web.py:373 +#: cps/web.py:375 msgid "User Successfully Imported" msgstr "" -#: cps/templates/index.html:5 cps/web.py:647 +#: cps/templates/index.html:5 cps/web.py:649 msgid "Discover (Random Books)" msgstr "Löydä (satunnaiset kirjat)" -#: cps/web.py:686 +#: cps/web.py:688 msgid "Books" msgstr "Kirjat" -#: cps/web.py:713 +#: cps/web.py:715 msgid "Hot Books (Most Downloaded)" msgstr "Kuumat kirjat (ladatuimmat)" -#: cps/web.py:748 +#: cps/web.py:750 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:762 +#: cps/web.py:764 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Virhe eKirjan avaamisessa. Tiedostoa ei ole tai se ei ole saatavilla:" -#: cps/web.py:776 +#: cps/web.py:778 #, python-format msgid "Author: %(name)s" msgstr "Kirjailija: %(name)s" -#: cps/web.py:790 +#: cps/web.py:792 #, python-format msgid "Publisher: %(name)s" msgstr "Julkaisija: %(name)s" -#: cps/web.py:803 +#: cps/web.py:805 #, python-format msgid "Series: %(serie)s" msgstr "Sarja: %(serie)s" -#: cps/web.py:816 +#: cps/web.py:818 #, python-format msgid "Rating: %(rating)s stars" msgstr "Arvostelu: %(rating)s tähteä" -#: cps/web.py:829 +#: cps/web.py:831 #, python-format msgid "File format: %(format)s" msgstr "Tiedostomuoto: %(format)s" -#: cps/web.py:843 +#: cps/web.py:845 #, python-format msgid "Category: %(name)s" msgstr "Kategoria: %(name)s" -#: cps/web.py:862 +#: cps/web.py:864 #, python-format msgid "Language: %(name)s" msgstr "Kieli: %(name)s" -#: cps/web.py:891 +#: cps/web.py:893 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:958 cps/web.py:1407 +#: cps/templates/layout.html:56 cps/web.py:960 cps/web.py:1409 msgid "Advanced Search" msgstr "Edistynyt haku" #: cps/templates/book_edit.html:213 cps/templates/feed.xml:33 #: cps/templates/layout.html:45 cps/templates/layout.html:48 -#: cps/templates/search_form.html:175 cps/web.py:970 cps/web.py:1241 +#: cps/templates/search_form.html:175 cps/web.py:972 cps/web.py:1243 msgid "Search" msgstr "Hae" -#: cps/web.py:998 +#: cps/web.py:1000 msgid "Books list" msgstr "" -#: cps/web.py:1136 +#: cps/web.py:1138 msgid "Ratings list" msgstr "Arvostelulistaus" -#: cps/web.py:1155 +#: cps/web.py:1157 msgid "File formats list" msgstr "Tiedostomuotolistaus" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1218 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1220 msgid "Tasks" msgstr "Tehtävät" -#: cps/web.py:1303 +#: cps/web.py:1305 msgid "Published after " msgstr "Julkaistu alkaen " -#: cps/web.py:1310 +#: cps/web.py:1312 msgid "Published before " msgstr "Julkaisut ennen " -#: cps/web.py:1325 +#: cps/web.py:1327 #, python-format msgid "Rating <= %(rating)s" msgstr "Arvostelu <= %(rating)s" -#: cps/web.py:1327 +#: cps/web.py:1329 #, python-format msgid "Rating >= %(rating)s" msgstr "Arvostelu >= %(rating)s" -#: cps/web.py:1472 +#: cps/web.py:1474 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Kirja lisätty onnistuneeksi lähetettäväksi osoitteeseen %(kindlemail)s" -#: cps/web.py:1476 +#: cps/web.py:1478 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Kirjan: %(res)s lähettämisessa tapahtui virhe" -#: cps/web.py:1478 +#: cps/web.py:1480 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Ole hyvä ja aseta Kindle sähköpostiosoite ensin..." -#: cps/web.py:1495 +#: cps/web.py:1497 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "" -#: cps/web.py:1496 cps/web.py:1506 cps/web.py:1530 cps/web.py:1534 -#: cps/web.py:1539 cps/web.py:1543 +#: cps/web.py:1498 cps/web.py:1508 cps/web.py:1532 cps/web.py:1536 +#: cps/web.py:1541 cps/web.py:1545 msgid "register" msgstr "rekisteröidy" -#: cps/web.py:1532 +#: cps/web.py:1534 msgid "Your e-mail is not allowed to register" msgstr "Sähköpostiosoitteellasi ei ole sallittua rekisteröityä" -#: cps/web.py:1535 +#: cps/web.py:1537 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Vahvistusviesti on lähetetty sähköpostiosoitteeseesi." -#: cps/web.py:1538 +#: cps/web.py:1540 msgid "This username or e-mail address is already in use." msgstr "Käyttäjätunnus tai sähköpostiosoite on jo käytössä." -#: cps/web.py:1555 +#: cps/web.py:1557 msgid "Cannot activate LDAP authentication" msgstr "LDAP autnetikoinnin aktivointi ei onnistu" -#: cps/web.py:1572 +#: cps/web.py:1574 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "" -#: cps/web.py:1578 +#: cps/web.py:1580 #, python-format msgid "Could not login: %(message)s" msgstr "" -#: cps/web.py:1582 cps/web.py:1606 +#: cps/web.py:1584 cps/web.py:1608 msgid "Wrong Username or Password" msgstr "Väärä käyttäjätunnus tai salasana" -#: cps/web.py:1589 +#: cps/web.py:1591 msgid "New Password was send to your email address" msgstr "" -#: cps/web.py:1595 +#: cps/web.py:1597 msgid "Please enter valid username to reset password" msgstr "" -#: cps/web.py:1601 +#: cps/web.py:1603 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "olet kirjautunut tunnuksella: '%(nickname)s'" -#: cps/web.py:1612 cps/web.py:1639 +#: cps/web.py:1614 cps/web.py:1641 msgid "login" msgstr "kirjaudu" -#: cps/web.py:1651 cps/web.py:1685 +#: cps/web.py:1653 cps/web.py:1687 msgid "Token not found" msgstr "Valtuutusta ei löytynyt" -#: cps/web.py:1660 cps/web.py:1693 +#: cps/web.py:1662 cps/web.py:1695 msgid "Token has expired" msgstr "Valtuutus vanhentunut" -#: cps/web.py:1669 +#: cps/web.py:1671 msgid "Success! Please return to your device" msgstr "Onnistui! Ole hyvä ja palaa laitteellesi" -#: cps/web.py:1753 cps/web.py:1809 +#: cps/web.py:1755 cps/web.py:1811 #, python-format msgid "%(name)s's profile" msgstr "%(name)sn profiili" -#: cps/web.py:1789 +#: cps/web.py:1791 msgid "Profile updated" msgstr "Profiili päivitetty" -#: cps/web.py:1836 cps/web.py:1839 cps/web.py:1842 cps/web.py:1849 -#: cps/web.py:1854 +#: cps/web.py:1838 cps/web.py:1841 cps/web.py:1844 cps/web.py:1851 +#: cps/web.py:1856 msgid "Read a Book" msgstr "Lue kirja" diff --git a/cps/translations/fr/LC_MESSAGES/messages.mo b/cps/translations/fr/LC_MESSAGES/messages.mo index 327cb152..85ae5d7a 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 ec4e682d..15b62a41 100644 --- a/cps/translations/fr/LC_MESSAGES/messages.po +++ b/cps/translations/fr/LC_MESSAGES/messages.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2020-10-31 19:17+0100\n" +"POT-Creation-Date: 2020-11-14 13:15+0100\n" "PO-Revision-Date: 2020-06-07 06:47+0200\n" "Last-Translator: Dekani \n" "Language: fr\n" @@ -36,7 +36,7 @@ msgstr "" msgid "installed" msgstr "installé" -#: cps/about.py:44 cps/converter.py:33 +#: cps/about.py:44 cps/converter.py:32 msgid "not installed" msgstr "non installé" @@ -60,351 +60,351 @@ msgstr "Reconnecté avec succès" msgid "Unknown command" msgstr "Commande inconnue" -#: cps/admin.py:116 cps/editbooks.py:612 cps/editbooks.py:624 -#: cps/editbooks.py:724 cps/editbooks.py:726 cps/editbooks.py:787 -#: cps/editbooks.py:803 cps/updater.py:510 cps/uploader.py:98 +#: cps/admin.py:116 cps/editbooks.py:611 cps/editbooks.py:623 +#: cps/editbooks.py:723 cps/editbooks.py:725 cps/editbooks.py:786 +#: cps/editbooks.py:802 cps/updater.py:510 cps/uploader.py:98 #: cps/uploader.py:108 msgid "Unknown" msgstr "Inconnu" -#: cps/admin.py:136 +#: cps/admin.py:137 msgid "Admin page" msgstr "Page admin" -#: cps/admin.py:158 +#: cps/admin.py:159 msgid "UI Configuration" msgstr "Configuration de l’interface utilisateur" -#: cps/admin.py:190 cps/admin.py:717 +#: cps/admin.py:191 cps/admin.py:718 msgid "Calibre-Web configuration updated" msgstr "Configuration de Calibre-Web mise à jour" -#: cps/admin.py:435 cps/admin.py:441 cps/admin.py:452 cps/admin.py:463 +#: cps/admin.py:436 cps/admin.py:442 cps/admin.py:453 cps/admin.py:464 #: cps/templates/modal_dialogs.html:29 msgid "Deny" msgstr "Refuser" -#: cps/admin.py:437 cps/admin.py:443 cps/admin.py:454 cps/admin.py:465 +#: cps/admin.py:438 cps/admin.py:444 cps/admin.py:455 cps/admin.py:466 #: cps/templates/modal_dialogs.html:28 msgid "Allow" msgstr "Autoriser" -#: cps/admin.py:511 +#: cps/admin.py:512 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json n'est pas configuré pour l'application Web" -#: cps/admin.py:550 +#: cps/admin.py:551 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "L'emplacement du fichier logfile est incorrect, veuillez saisir un chemin valide" -#: cps/admin.py:555 +#: cps/admin.py:556 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "L'emplacement du fichier Access Logfile est incorrect, veuillez saisir un chemin valide" -#: cps/admin.py:581 +#: cps/admin.py:582 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "Veuillez saisir un fournisseur LDAP, Port, DN et l'identifiant objet de l'utilisateur" -#: cps/admin.py:594 +#: cps/admin.py:595 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "Le filtre objet du groupe LDAP a besoin d'un identifiant de format \"%s\"" -#: cps/admin.py:597 +#: cps/admin.py:598 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "Le filtre objet du groupe LDAP a une parenthèse non gérée" -#: cps/admin.py:601 +#: cps/admin.py:602 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "Le filtre objet de l'utilisateur LDAP a besoin d'un identifiant de format \"%s\"" -#: cps/admin.py:604 +#: cps/admin.py:605 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "Le filtre objet de l'utilisateur LDAP a une parenthèse non gérée" -#: cps/admin.py:608 +#: cps/admin.py:609 msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path" msgstr "L'emplacement du certificat LDAP est incorrect, veuillez saisir un chemin valide" -#: cps/admin.py:630 +#: cps/admin.py:631 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "L'emplacement du fichier Keyfile est incorrect, veuillez saisir un chemin valide" -#: cps/admin.py:634 +#: cps/admin.py:635 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "L'emplacement du fichier Certfile est incorrect, veuillez saisir un chemin valide" -#: cps/admin.py:700 cps/admin.py:799 cps/admin.py:889 cps/admin.py:938 +#: cps/admin.py:701 cps/admin.py:800 cps/admin.py:890 cps/admin.py:939 #: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260 #: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:712 +#: cps/admin.py:713 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "L'emplacement DB est incorrect, veuillez saisir un chemin valide" -#: cps/admin.py:714 +#: cps/admin.py:715 msgid "DB is not Writeable" msgstr "La DB n'est pas accessible en écriture" -#: cps/admin.py:747 +#: cps/admin.py:748 msgid "Basic Configuration" msgstr "Configuration principale" -#: cps/admin.py:762 cps/web.py:1505 +#: cps/admin.py:763 cps/web.py:1508 msgid "Please fill out all fields!" msgstr "Veuillez compléter tous les champs !" -#: cps/admin.py:765 cps/admin.py:777 cps/admin.py:783 cps/admin.py:907 +#: cps/admin.py:766 cps/admin.py:778 cps/admin.py:784 cps/admin.py:908 msgid "Add new user" msgstr "Ajouter un nouvel utilisateur" -#: cps/admin.py:774 cps/web.py:1751 +#: cps/admin.py:775 cps/web.py:1754 msgid "E-mail is not from valid domain" msgstr "Cette adresse de courriel n’appartient pas à un domaine valide" -#: cps/admin.py:781 cps/admin.py:796 +#: cps/admin.py:782 cps/admin.py:797 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:792 +#: cps/admin.py:793 #, python-format msgid "User '%(user)s' created" msgstr "Utilisateur '%(user)s' créé" -#: cps/admin.py:808 +#: cps/admin.py:809 #, python-format msgid "User '%(nick)s' deleted" msgstr "Utilisateur '%(nick)s' supprimé" -#: cps/admin.py:811 +#: cps/admin.py:812 msgid "No admin user remaining, can't delete user" msgstr "Aucun utilisateur admin restant, impossible de supprimer l’utilisateur" -#: cps/admin.py:817 +#: cps/admin.py:818 msgid "No admin user remaining, can't remove admin role" msgstr "Aucun utilisateur admin restant, impossible de supprimer le rôle admin" -#: cps/admin.py:853 cps/web.py:1793 +#: cps/admin.py:854 cps/web.py:1796 msgid "Found an existing account for this e-mail address." msgstr "Un compte existant a été trouvé pour cette adresse de courriel." -#: cps/admin.py:862 cps/admin.py:876 cps/admin.py:979 cps/web.py:1769 +#: cps/admin.py:863 cps/admin.py:877 cps/admin.py:980 cps/web.py:1772 #, python-format msgid "Edit User %(nick)s" msgstr "Éditer l'utilisateur %(nick)s" -#: cps/admin.py:868 cps/web.py:1762 +#: cps/admin.py:869 cps/web.py:1765 msgid "This username is already taken" msgstr "Cet utilisateur est déjà pris" -#: cps/admin.py:883 +#: cps/admin.py:884 #, python-format msgid "User '%(nick)s' updated" msgstr "Utilisateur '%(nick)s' mis à jour" -#: cps/admin.py:886 +#: cps/admin.py:887 msgid "An unknown error occured." msgstr "Oups ! Une erreur inconnue a eu lieu." -#: cps/admin.py:916 cps/templates/admin.html:71 +#: cps/admin.py:917 cps/templates/admin.html:71 msgid "Edit E-mail Server Settings" msgstr "Modifier les paramètres du serveur de courriels" -#: cps/admin.py:945 +#: cps/admin.py:946 #, 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:948 +#: cps/admin.py:949 #, 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:950 +#: cps/admin.py:951 msgid "Please configure your e-mail address first..." msgstr "Veuillez d'abord configurer votre adresse de courriel..." -#: cps/admin.py:952 +#: cps/admin.py:953 msgid "E-mail server settings updated" msgstr "Les paramètres du serveur de courriels ont été mis à jour" -#: cps/admin.py:963 +#: cps/admin.py:964 msgid "User not found" msgstr "L'utilisateur n'a pas été trouvé" -#: cps/admin.py:990 +#: cps/admin.py:991 #, 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:993 cps/web.py:1529 cps/web.py:1593 +#: cps/admin.py:994 cps/web.py:1532 cps/web.py:1596 msgid "An unknown error occurred. Please try again later." msgstr "Une erreur inconnue est survenue. Veuillez réessayer plus tard." -#: cps/admin.py:996 cps/web.py:1467 +#: cps/admin.py:997 cps/web.py:1470 msgid "Please configure the SMTP mail settings first..." msgstr "Veuillez configurer les paramètres SMTP au préalable..." -#: cps/admin.py:1008 +#: cps/admin.py:1009 msgid "Logfile viewer" msgstr "Visualiseur de fichier journal" -#: cps/admin.py:1047 +#: cps/admin.py:1049 msgid "Requesting update package" msgstr "Demande de mise à jour" -#: cps/admin.py:1048 +#: cps/admin.py:1050 msgid "Downloading update package" msgstr "Téléchargement de la mise à jour" -#: cps/admin.py:1049 +#: cps/admin.py:1051 msgid "Unzipping update package" msgstr "Décompression de la mise à jour" -#: cps/admin.py:1050 +#: cps/admin.py:1052 msgid "Replacing files" msgstr "Remplacement des fichiers" -#: cps/admin.py:1051 +#: cps/admin.py:1053 msgid "Database connections are closed" msgstr "Les connexions à la base de données ont été fermées" -#: cps/admin.py:1052 +#: cps/admin.py:1054 msgid "Stopping server" msgstr "Arrêt du serveur" -#: cps/admin.py:1053 +#: cps/admin.py:1055 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:1054 cps/admin.py:1055 cps/admin.py:1056 cps/admin.py:1057 -#: cps/admin.py:1058 +#: cps/admin.py:1056 cps/admin.py:1057 cps/admin.py:1058 cps/admin.py:1059 +#: cps/admin.py:1060 msgid "Update failed:" msgstr "La mise à jour a échoué :" -#: cps/admin.py:1054 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 +#: cps/admin.py:1056 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 msgid "HTTP Error" msgstr "Erreur HTTP" -#: cps/admin.py:1055 cps/updater.py:322 cps/updater.py:525 +#: cps/admin.py:1057 cps/updater.py:322 cps/updater.py:525 msgid "Connection error" msgstr "Erreur de connexion" -#: cps/admin.py:1056 cps/updater.py:324 cps/updater.py:527 +#: cps/admin.py:1058 cps/updater.py:324 cps/updater.py:527 msgid "Timeout while establishing connection" msgstr "Délai d'attente dépassé lors de l'établissement de connexion" -#: cps/admin.py:1057 cps/updater.py:326 cps/updater.py:529 +#: cps/admin.py:1059 cps/updater.py:326 cps/updater.py:529 msgid "General error" msgstr "Erreur générale" -#: cps/admin.py:1058 +#: cps/admin.py:1060 msgid "Update File Could Not be Saved in Temp Dir" msgstr "Le fichier de mise à jour ne peut pas être sauvegardé dans le répertoire temporaire" -#: cps/converter.py:32 +#: cps/converter.py:31 msgid "not configured" msgstr "non configuré" -#: cps/converter.py:34 +#: cps/converter.py:33 msgid "Execution permissions missing" msgstr "Les permissions d'exécutions manquantes" -#: cps/editbooks.py:273 cps/editbooks.py:275 +#: cps/editbooks.py:272 cps/editbooks.py:274 msgid "Book Format Successfully Deleted" msgstr "Le format du livre a été supprimé avec succès" -#: cps/editbooks.py:282 cps/editbooks.py:284 +#: cps/editbooks.py:281 cps/editbooks.py:283 msgid "Book Successfully Deleted" msgstr "Le livre a été supprimé avec succès" -#: cps/editbooks.py:293 cps/editbooks.py:596 cps/web.py:1824 cps/web.py:1865 -#: cps/web.py:1927 +#: cps/editbooks.py:292 cps/editbooks.py:595 cps/web.py:1827 cps/web.py:1868 +#: cps/web.py:1930 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:327 +#: cps/editbooks.py:326 msgid "edit metadata" msgstr "modifier les métadonnées" -#: cps/editbooks.py:402 +#: cps/editbooks.py:401 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s n'est pas une langue valide" -#: cps/editbooks.py:513 cps/editbooks.py:769 +#: cps/editbooks.py:512 cps/editbooks.py:768 #, 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:517 cps/editbooks.py:773 +#: cps/editbooks.py:516 cps/editbooks.py:772 msgid "File to be uploaded must have an extension" msgstr "Pour être déposé le fichier doit avoir une extension" -#: cps/editbooks.py:529 +#: cps/editbooks.py:528 #, 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:534 +#: cps/editbooks.py:533 #, python-format msgid "Failed to store file %(file)s." msgstr "Échec de la sauvegarde du fichier %(file)s." -#: cps/editbooks.py:552 cps/editbooks.py:904 +#: cps/editbooks.py:551 cps/editbooks.py:903 #, python-format msgid "Database error: %(error)s." msgstr "Erreur de la base de données: %(error)s." -#: cps/editbooks.py:556 +#: cps/editbooks.py:555 #, 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:673 +#: cps/editbooks.py:672 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:710 +#: cps/editbooks.py:709 msgid "Metadata successfully updated" msgstr "Les métadonnées ont bien été mises à jour" -#: cps/editbooks.py:719 +#: cps/editbooks.py:718 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:781 +#: cps/editbooks.py:780 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "Le fichier %(filename)s ne peut pas être sauvegardé dans le répertoire temporaire" -#: cps/editbooks.py:791 +#: cps/editbooks.py:790 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Le fichier téléchargé existe probablement dans la librairie, veuillez le modifier avant de le télécharger de nouveau: " -#: cps/editbooks.py:879 +#: cps/editbooks.py:878 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "Impossible de déplacer le fichier de couverture %(file)s: %(error)s" -#: cps/editbooks.py:890 +#: cps/editbooks.py:889 #, python-format msgid "File %(file)s uploaded" msgstr "Le fichier %(file)s a été téléchargé" -#: cps/editbooks.py:916 +#: cps/editbooks.py:915 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:924 +#: cps/editbooks.py:923 #, 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:928 +#: cps/editbooks.py:927 #, 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" @@ -594,7 +594,7 @@ msgstr "Échec de la connexion avec Google." msgid "Failed to fetch user info from Google." msgstr "Impossible d’obtenir les informations d’utilisateur avec Google." -#: cps/oauth_bb.py:225 cps/web.py:1565 cps/web.py:1707 +#: cps/oauth_bb.py:225 cps/web.py:1568 cps/web.py:1710 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "vous êtes maintenant connecté comme : '%(nickname)s'" @@ -754,7 +754,7 @@ msgstr "" msgid "Show Downloaded Books" msgstr "" -#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:639 +#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:642 msgid "Top Rated Books" msgstr "Livres les mieux notés" @@ -763,7 +763,7 @@ msgid "Show Top Rated Books" msgstr "Montrer les livres les mieux notés" #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:82 -#: cps/web.py:900 +#: cps/web.py:903 msgid "Read Books" msgstr "Livres lus" @@ -772,7 +772,7 @@ msgid "Show read and unread" msgstr "Montrer lus et non-lus" #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:86 -#: cps/web.py:903 +#: cps/web.py:906 msgid "Unread Books" msgstr "Livres non-lus" @@ -789,7 +789,7 @@ msgid "Show random books" msgstr "Montrer des livres au hasard" #: cps/templates/book_table.html:50 cps/templates/index.xml:75 cps/ub.py:92 -#: cps/web.py:1204 +#: cps/web.py:1207 msgid "Categories" msgstr "Catégories" @@ -799,7 +799,7 @@ msgstr "Montrer la sélection par catégories" #: cps/templates/book_edit.html:84 cps/templates/book_table.html:51 #: cps/templates/index.xml:82 cps/templates/search_form.html:54 cps/ub.py:95 -#: cps/web.py:1108 cps/web.py:1118 +#: cps/web.py:1111 cps/web.py:1121 msgid "Series" msgstr "Séries" @@ -816,7 +816,7 @@ msgid "Show author selection" msgstr "Montrer la sélection par auteur" #: cps/templates/book_table.html:55 cps/templates/index.xml:68 cps/ub.py:102 -#: cps/web.py:1087 +#: cps/web.py:1090 msgid "Publishers" msgstr "Éditeurs" @@ -825,7 +825,7 @@ msgid "Show publisher selection" msgstr "Montrer la sélection par éditeur" #: cps/templates/book_table.html:53 cps/templates/index.xml:89 -#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1183 +#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1186 msgid "Languages" msgstr "Langues" @@ -849,7 +849,7 @@ msgstr "Formats de fichier" msgid "Show file formats selection" msgstr "Afficher la sélection des formats de fichiers" -#: cps/ub.py:116 cps/web.py:927 +#: cps/ub.py:116 cps/web.py:930 msgid "Archived Books" msgstr "Livres archivés" @@ -894,225 +894,225 @@ msgstr "Une nouvelle mise à jour est disponible. Cliquez sur le bouton ci-desso msgid "Click on the button below to update to the latest stable version." msgstr "Téléchargez la dernière version en cliquant sur le bouton ci-dessous." -#: cps/web.py:316 +#: cps/web.py:319 #, python-format msgid "Error: %(ldaperror)s" msgstr "Erreur : %(ldaperror)s" -#: cps/web.py:320 +#: cps/web.py:323 msgid "Error: No user returned in response of LDAP server" msgstr "Erreur : Aucun utilisateur renvoyé dans la réponse LDAP du serveur" -#: cps/web.py:368 +#: cps/web.py:371 msgid "Failed to Create at Least One LDAP User" msgstr "Impossible de créer au moins un utilisateur LDAP" -#: cps/web.py:371 +#: cps/web.py:374 msgid "At Least One LDAP User Not Found in Database" msgstr "Au moins un utilisateur LDAP n'a pas été trouvé dans la base de données" -#: cps/web.py:373 +#: cps/web.py:376 msgid "User Successfully Imported" msgstr "L'utilisateur a été importé avec succès" -#: cps/templates/index.html:5 cps/web.py:647 +#: cps/templates/index.html:5 cps/web.py:650 msgid "Discover (Random Books)" msgstr "Découvrir (Livres au hasard)" -#: cps/web.py:686 +#: cps/web.py:689 msgid "Books" msgstr "Livres" -#: cps/web.py:713 +#: cps/web.py:716 msgid "Hot Books (Most Downloaded)" msgstr "Livres populaires (les plus téléchargés)" -#: cps/web.py:748 +#: cps/web.py:751 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:762 +#: cps/web.py:765 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Erreur d'ouverture du livre numérique. Le fichier n'existe pas ou n'est pas accessible" -#: cps/web.py:776 +#: cps/web.py:779 #, python-format msgid "Author: %(name)s" msgstr "Auteur : %(name)s" -#: cps/web.py:790 +#: cps/web.py:793 #, python-format msgid "Publisher: %(name)s" msgstr "Éditeur : '%(name)s'" -#: cps/web.py:803 +#: cps/web.py:806 #, python-format msgid "Series: %(serie)s" msgstr "Séries : %(serie)s" -#: cps/web.py:816 +#: cps/web.py:819 #, python-format msgid "Rating: %(rating)s stars" msgstr "Évaluation : %(rating)s étoiles" -#: cps/web.py:829 +#: cps/web.py:832 #, python-format msgid "File format: %(format)s" msgstr "Format de fichier : %(format)s" -#: cps/web.py:843 +#: cps/web.py:846 #, python-format msgid "Category: %(name)s" msgstr "Catégorie : %(name)s" -#: cps/web.py:862 +#: cps/web.py:865 #, python-format msgid "Language: %(name)s" msgstr "Langue : %(name)s" -#: cps/web.py:891 +#: cps/web.py:894 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "La colonne personnalisée No.%(column)d n'existe pas dans la base de données calibre" -#: cps/templates/layout.html:56 cps/web.py:958 cps/web.py:1407 +#: cps/templates/layout.html:56 cps/web.py:961 cps/web.py:1410 msgid "Advanced Search" msgstr "Recherche avancée" #: cps/templates/book_edit.html:213 cps/templates/feed.xml:33 #: cps/templates/layout.html:45 cps/templates/layout.html:48 -#: cps/templates/search_form.html:175 cps/web.py:970 cps/web.py:1241 +#: cps/templates/search_form.html:175 cps/web.py:973 cps/web.py:1244 msgid "Search" msgstr "Chercher" -#: cps/web.py:998 +#: cps/web.py:1001 msgid "Books list" msgstr "" -#: cps/web.py:1136 +#: cps/web.py:1139 msgid "Ratings list" msgstr "Liste des évaluations" -#: cps/web.py:1155 +#: cps/web.py:1158 msgid "File formats list" msgstr "Liste de formats de fichiers" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1218 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1221 msgid "Tasks" msgstr "Tâches" -#: cps/web.py:1303 +#: cps/web.py:1306 msgid "Published after " msgstr "Publié après le " -#: cps/web.py:1310 +#: cps/web.py:1313 msgid "Published before " msgstr "Publié avant le " -#: cps/web.py:1325 +#: cps/web.py:1328 #, python-format msgid "Rating <= %(rating)s" msgstr "Évaluation <= %(rating)s" -#: cps/web.py:1327 +#: cps/web.py:1330 #, python-format msgid "Rating >= %(rating)s" msgstr "Évaluation >= %(rating)s" -#: cps/web.py:1472 +#: cps/web.py:1475 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Le livre a été mis en file de traitement avec succès pour un envoi vers %(kindlemail)s" -#: cps/web.py:1476 +#: cps/web.py:1479 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Il y a eu une erreur en envoyant ce livre : %(res)s" -#: cps/web.py:1478 +#: cps/web.py:1481 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Veuillez mettre à jour votre profil avec une adresse de courriel Kindle valide." -#: cps/web.py:1495 +#: cps/web.py:1498 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "Le serveur de courriel n'est pas configuré, veuillez contacter votre administrateur!" -#: cps/web.py:1496 cps/web.py:1506 cps/web.py:1530 cps/web.py:1534 -#: cps/web.py:1539 cps/web.py:1543 +#: cps/web.py:1499 cps/web.py:1509 cps/web.py:1533 cps/web.py:1537 +#: cps/web.py:1542 cps/web.py:1546 msgid "register" msgstr "s’enregistrer" -#: cps/web.py:1532 +#: cps/web.py:1535 msgid "Your e-mail is not allowed to register" msgstr "Votre adresse de courriel n’est pas autorisé pour une inscription" -#: cps/web.py:1535 +#: cps/web.py:1538 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Le courriel de confirmation a été envoyé à votre adresse." -#: cps/web.py:1538 +#: cps/web.py:1541 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:1555 +#: cps/web.py:1558 msgid "Cannot activate LDAP authentication" msgstr "Impossible d’activer l’authentification LDAP" -#: cps/web.py:1572 +#: cps/web.py:1575 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "Connexion de secours comme: '%(nickname)s', le serveur LDAP est indisponible, ou l'utilisateur est inconnu" -#: cps/web.py:1578 +#: cps/web.py:1581 #, python-format msgid "Could not login: %(message)s" msgstr "Impossible de se connecter: %(message)s" -#: cps/web.py:1582 cps/web.py:1606 +#: cps/web.py:1585 cps/web.py:1609 msgid "Wrong Username or Password" msgstr "Mauvais nom d'utilisateur ou mot de passe" -#: cps/web.py:1589 +#: cps/web.py:1592 msgid "New Password was send to your email address" msgstr "Le nouveau mot de passe a été envoyé vers votre adresse de courriel" -#: cps/web.py:1595 +#: cps/web.py:1598 msgid "Please enter valid username to reset password" msgstr "Veuillez entrer un nom d'utilisateur valide pour réinitialiser le mot de passe" -#: cps/web.py:1601 +#: cps/web.py:1604 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Vous êtes maintenant connecté en tant que : ‘%(nickname)s’" -#: cps/web.py:1612 cps/web.py:1639 +#: cps/web.py:1615 cps/web.py:1642 msgid "login" msgstr "connexion" -#: cps/web.py:1651 cps/web.py:1685 +#: cps/web.py:1654 cps/web.py:1688 msgid "Token not found" msgstr "Jeton non trouvé" -#: cps/web.py:1660 cps/web.py:1693 +#: cps/web.py:1663 cps/web.py:1696 msgid "Token has expired" msgstr "Jeton expiré" -#: cps/web.py:1669 +#: cps/web.py:1672 msgid "Success! Please return to your device" msgstr "Réussite! Merci de vous tourner vers votre appareil" -#: cps/web.py:1753 cps/web.py:1809 +#: cps/web.py:1756 cps/web.py:1812 #, python-format msgid "%(name)s's profile" msgstr "Profil de %(name)s" -#: cps/web.py:1789 +#: cps/web.py:1792 msgid "Profile updated" msgstr "Profil mis à jour" -#: cps/web.py:1836 cps/web.py:1839 cps/web.py:1842 cps/web.py:1849 -#: cps/web.py:1854 +#: cps/web.py:1839 cps/web.py:1842 cps/web.py:1845 cps/web.py:1852 +#: cps/web.py:1857 msgid "Read a Book" msgstr "Lire un livre" @@ -1233,7 +1233,7 @@ msgstr "Port du serveur SMTP" #: cps/templates/admin.html:59 cps/templates/email_edit.html:19 msgid "Encryption" -msgstr "Cryptage" +msgstr "Chiffrement" #: cps/templates/admin.html:60 cps/templates/email_edit.html:27 msgid "SMTP Login" @@ -1817,7 +1817,7 @@ msgstr "Port du serveur LDAP" #: cps/templates/config_edit.html:259 msgid "LDAP Encryption" -msgstr "Cryptage LDAP" +msgstr "Chiffrement LDAP" #: cps/templates/config_edit.html:261 cps/templates/config_view_edit.html:61 #: cps/templates/email_edit.html:21 @@ -1874,7 +1874,7 @@ msgstr "Est-ce que le serveur LDAP est OpenLDAP?" #: cps/templates/config_edit.html:304 msgid "Following Settings are Needed For User Import" -msgstr "Les paramètres suivant sont nécessaire pour importer un utilisateur" +msgstr "Les paramètres suivant sont nécessaires pour importer un utilisateur" #: cps/templates/config_edit.html:306 msgid "LDAP Group Object Filter" diff --git a/cps/translations/hu/LC_MESSAGES/messages.po b/cps/translations/hu/LC_MESSAGES/messages.po index a93f9c44..71d16452 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: 2020-10-31 19:17+0100\n" +"POT-Creation-Date: 2020-11-14 13:11+0100\n" "PO-Revision-Date: 2019-04-06 23:36+0200\n" "Last-Translator: \n" "Language: hu\n" @@ -22,7 +22,7 @@ msgstr "" msgid "installed" msgstr "" -#: cps/about.py:44 cps/converter.py:33 +#: cps/about.py:44 cps/converter.py:32 msgid "not installed" msgstr "nincs telepítve" @@ -46,351 +46,351 @@ msgstr "" msgid "Unknown command" msgstr "" -#: cps/admin.py:116 cps/editbooks.py:612 cps/editbooks.py:624 -#: cps/editbooks.py:724 cps/editbooks.py:726 cps/editbooks.py:787 -#: cps/editbooks.py:803 cps/updater.py:510 cps/uploader.py:98 +#: cps/admin.py:116 cps/editbooks.py:611 cps/editbooks.py:623 +#: cps/editbooks.py:723 cps/editbooks.py:725 cps/editbooks.py:786 +#: cps/editbooks.py:802 cps/updater.py:510 cps/uploader.py:98 #: cps/uploader.py:108 msgid "Unknown" msgstr "Ismeretlen" -#: cps/admin.py:136 +#: cps/admin.py:137 msgid "Admin page" msgstr "Rendszergazda oldala" -#: cps/admin.py:158 +#: cps/admin.py:159 msgid "UI Configuration" msgstr "Felhasználói felület beállításai" -#: cps/admin.py:190 cps/admin.py:717 +#: cps/admin.py:191 cps/admin.py:718 msgid "Calibre-Web configuration updated" msgstr "A Calibre-Web konfigurációja frissítve." -#: cps/admin.py:435 cps/admin.py:441 cps/admin.py:452 cps/admin.py:463 +#: cps/admin.py:436 cps/admin.py:442 cps/admin.py:453 cps/admin.py:464 #: cps/templates/modal_dialogs.html:29 msgid "Deny" msgstr "" -#: cps/admin.py:437 cps/admin.py:443 cps/admin.py:454 cps/admin.py:465 +#: cps/admin.py:438 cps/admin.py:444 cps/admin.py:455 cps/admin.py:466 #: cps/templates/modal_dialogs.html:28 msgid "Allow" msgstr "" -#: cps/admin.py:511 +#: cps/admin.py:512 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "" -#: cps/admin.py:550 +#: cps/admin.py:551 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:555 +#: cps/admin.py:556 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:581 +#: cps/admin.py:582 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "" -#: cps/admin.py:594 +#: cps/admin.py:595 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:597 +#: cps/admin.py:598 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:601 +#: cps/admin.py:602 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:604 +#: cps/admin.py:605 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:608 +#: cps/admin.py:609 msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:630 +#: cps/admin.py:631 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:634 +#: cps/admin.py:635 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:700 cps/admin.py:799 cps/admin.py:889 cps/admin.py:938 +#: cps/admin.py:701 cps/admin.py:800 cps/admin.py:890 cps/admin.py:939 #: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260 #: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:712 +#: cps/admin.py:713 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:714 +#: cps/admin.py:715 msgid "DB is not Writeable" msgstr "" -#: cps/admin.py:747 +#: cps/admin.py:748 msgid "Basic Configuration" msgstr "Alapvető beállítások" -#: cps/admin.py:762 cps/web.py:1505 +#: cps/admin.py:763 cps/web.py:1507 msgid "Please fill out all fields!" msgstr "Az összes mezőt ki kell tölteni!" -#: cps/admin.py:765 cps/admin.py:777 cps/admin.py:783 cps/admin.py:907 +#: cps/admin.py:766 cps/admin.py:778 cps/admin.py:784 cps/admin.py:908 msgid "Add new user" msgstr "Új felhasználó hozzáadása" -#: cps/admin.py:774 cps/web.py:1751 +#: cps/admin.py:775 cps/web.py:1753 msgid "E-mail is not from valid domain" msgstr "Az e-mail tartománya nem érvényes." -#: cps/admin.py:781 cps/admin.py:796 +#: cps/admin.py:782 cps/admin.py:797 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:792 +#: cps/admin.py:793 #, python-format msgid "User '%(user)s' created" msgstr "A következő felhasználó létrehozva: %(user)s" -#: cps/admin.py:808 +#: cps/admin.py:809 #, python-format msgid "User '%(nick)s' deleted" msgstr "A felhasználó törölve: %(nick)s" -#: cps/admin.py:811 +#: cps/admin.py:812 msgid "No admin user remaining, can't delete user" msgstr "" -#: cps/admin.py:817 +#: cps/admin.py:818 msgid "No admin user remaining, can't remove admin role" msgstr "" -#: cps/admin.py:853 cps/web.py:1793 +#: cps/admin.py:854 cps/web.py:1795 msgid "Found an existing account for this e-mail address." msgstr "Már létezik felhasználó ehhez az e-mail címhez." -#: cps/admin.py:862 cps/admin.py:876 cps/admin.py:979 cps/web.py:1769 +#: cps/admin.py:863 cps/admin.py:877 cps/admin.py:980 cps/web.py:1771 #, python-format msgid "Edit User %(nick)s" msgstr " A felhasználó szerkesztése: %(nick)s" -#: cps/admin.py:868 cps/web.py:1762 +#: cps/admin.py:869 cps/web.py:1764 msgid "This username is already taken" msgstr "" -#: cps/admin.py:883 +#: cps/admin.py:884 #, python-format msgid "User '%(nick)s' updated" msgstr "A felhasználó frissítve: %(nick)s" -#: cps/admin.py:886 +#: cps/admin.py:887 msgid "An unknown error occured." msgstr "Ismeretlen hiba történt." -#: cps/admin.py:916 cps/templates/admin.html:71 +#: cps/admin.py:917 cps/templates/admin.html:71 msgid "Edit E-mail Server Settings" msgstr "SMTP beállítások változtatása" -#: cps/admin.py:945 +#: cps/admin.py:946 #, 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:948 +#: cps/admin.py:949 #, 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:950 +#: cps/admin.py:951 msgid "Please configure your e-mail address first..." msgstr "" -#: cps/admin.py:952 +#: cps/admin.py:953 msgid "E-mail server settings updated" msgstr "Az e-mail kiszolgáló beállításai frissítve." -#: cps/admin.py:963 +#: cps/admin.py:964 msgid "User not found" msgstr "" -#: cps/admin.py:990 +#: cps/admin.py:991 #, 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:993 cps/web.py:1529 cps/web.py:1593 +#: cps/admin.py:994 cps/web.py:1531 cps/web.py:1595 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:996 cps/web.py:1467 +#: cps/admin.py:997 cps/web.py:1469 msgid "Please configure the SMTP mail settings first..." msgstr "Először be kell állítani az SMTP levelező beállításokat..." -#: cps/admin.py:1008 +#: cps/admin.py:1009 msgid "Logfile viewer" msgstr "" -#: cps/admin.py:1047 +#: cps/admin.py:1049 msgid "Requesting update package" msgstr "Frissítési csomag kérése" -#: cps/admin.py:1048 +#: cps/admin.py:1050 msgid "Downloading update package" msgstr "Frissítési csomag letöltése" -#: cps/admin.py:1049 +#: cps/admin.py:1051 msgid "Unzipping update package" msgstr "Frissítési csomag kitömörítése" -#: cps/admin.py:1050 +#: cps/admin.py:1052 msgid "Replacing files" msgstr "Fájlok cserélése" -#: cps/admin.py:1051 +#: cps/admin.py:1053 msgid "Database connections are closed" msgstr "Adatbázis kapcsolatok lezárva" -#: cps/admin.py:1052 +#: cps/admin.py:1054 msgid "Stopping server" msgstr "Szerver leállítása" -#: cps/admin.py:1053 +#: cps/admin.py:1055 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:1054 cps/admin.py:1055 cps/admin.py:1056 cps/admin.py:1057 -#: cps/admin.py:1058 +#: cps/admin.py:1056 cps/admin.py:1057 cps/admin.py:1058 cps/admin.py:1059 +#: cps/admin.py:1060 msgid "Update failed:" msgstr "A frissítés nem sikerült:" -#: cps/admin.py:1054 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 +#: cps/admin.py:1056 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 msgid "HTTP Error" msgstr "HTTP hiba" -#: cps/admin.py:1055 cps/updater.py:322 cps/updater.py:525 +#: cps/admin.py:1057 cps/updater.py:322 cps/updater.py:525 msgid "Connection error" msgstr "Kapcsolódási hiba" -#: cps/admin.py:1056 cps/updater.py:324 cps/updater.py:527 +#: cps/admin.py:1058 cps/updater.py:324 cps/updater.py:527 msgid "Timeout while establishing connection" msgstr "Időtúllépés a kapcsolódás során" -#: cps/admin.py:1057 cps/updater.py:326 cps/updater.py:529 +#: cps/admin.py:1059 cps/updater.py:326 cps/updater.py:529 msgid "General error" msgstr "Általános hiba" -#: cps/admin.py:1058 +#: cps/admin.py:1060 msgid "Update File Could Not be Saved in Temp Dir" msgstr "" -#: cps/converter.py:32 +#: cps/converter.py:31 msgid "not configured" msgstr "" -#: cps/converter.py:34 +#: cps/converter.py:33 msgid "Execution permissions missing" msgstr "" -#: cps/editbooks.py:273 cps/editbooks.py:275 +#: cps/editbooks.py:272 cps/editbooks.py:274 msgid "Book Format Successfully Deleted" msgstr "" -#: cps/editbooks.py:282 cps/editbooks.py:284 +#: cps/editbooks.py:281 cps/editbooks.py:283 msgid "Book Successfully Deleted" msgstr "" -#: cps/editbooks.py:293 cps/editbooks.py:596 cps/web.py:1824 cps/web.py:1865 -#: cps/web.py:1927 +#: cps/editbooks.py:292 cps/editbooks.py:595 cps/web.py:1826 cps/web.py:1867 +#: cps/web.py:1929 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:327 +#: cps/editbooks.py:326 msgid "edit metadata" msgstr "Metaadatok szerkesztése" -#: cps/editbooks.py:402 +#: cps/editbooks.py:401 #, python-format msgid "%(langname)s is not a valid language" msgstr "A(z) %(langname)s nem érvényes nyelv" -#: cps/editbooks.py:513 cps/editbooks.py:769 +#: cps/editbooks.py:512 cps/editbooks.py:768 #, 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:517 cps/editbooks.py:773 +#: cps/editbooks.py:516 cps/editbooks.py:772 msgid "File to be uploaded must have an extension" msgstr "A feltöltendő fájlnak kiterjesztéssel kell rendelkeznie!" -#: cps/editbooks.py:529 +#: cps/editbooks.py:528 #, 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:534 +#: cps/editbooks.py:533 #, python-format msgid "Failed to store file %(file)s." msgstr "Nem sikerült elmenteni a %(file)s fájlt." -#: cps/editbooks.py:552 cps/editbooks.py:904 +#: cps/editbooks.py:551 cps/editbooks.py:903 #, python-format msgid "Database error: %(error)s." msgstr "" -#: cps/editbooks.py:556 +#: cps/editbooks.py:555 #, 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:673 +#: cps/editbooks.py:672 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:710 +#: cps/editbooks.py:709 msgid "Metadata successfully updated" msgstr "A metaadatok sikeresen frissültek" -#: cps/editbooks.py:719 +#: cps/editbooks.py:718 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:781 +#: cps/editbooks.py:780 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "" -#: cps/editbooks.py:791 +#: cps/editbooks.py:790 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "" -#: cps/editbooks.py:879 +#: cps/editbooks.py:878 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "" -#: cps/editbooks.py:890 +#: cps/editbooks.py:889 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:916 +#: cps/editbooks.py:915 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:924 +#: cps/editbooks.py:923 #, 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:928 +#: cps/editbooks.py:927 #, 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" @@ -580,7 +580,7 @@ msgstr "" msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:225 cps/web.py:1565 cps/web.py:1707 +#: cps/oauth_bb.py:225 cps/web.py:1567 cps/web.py:1709 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "Be vagy jelentkezve mint: %(nickname)s" @@ -740,7 +740,7 @@ msgstr "" msgid "Show Downloaded Books" msgstr "" -#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:639 +#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:641 msgid "Top Rated Books" msgstr "Legjobb könyvek" @@ -749,7 +749,7 @@ msgid "Show Top Rated Books" msgstr "Legjobbra értékelt könyvek mutatása" #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:82 -#: cps/web.py:900 +#: cps/web.py:902 msgid "Read Books" msgstr "Olvasott könyvek" @@ -758,7 +758,7 @@ msgid "Show read and unread" msgstr "Mutassa az olvasva/olvasatlan állapotot" #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:86 -#: cps/web.py:903 +#: cps/web.py:905 msgid "Unread Books" msgstr "Olvasatlan könyvek" @@ -775,7 +775,7 @@ msgid "Show random books" msgstr "Könyvek találomra mutatása" #: cps/templates/book_table.html:50 cps/templates/index.xml:75 cps/ub.py:92 -#: cps/web.py:1204 +#: cps/web.py:1206 msgid "Categories" msgstr "Címkék" @@ -785,7 +785,7 @@ msgstr "Címke választó mutatása" #: cps/templates/book_edit.html:84 cps/templates/book_table.html:51 #: cps/templates/index.xml:82 cps/templates/search_form.html:54 cps/ub.py:95 -#: cps/web.py:1108 cps/web.py:1118 +#: cps/web.py:1110 cps/web.py:1120 msgid "Series" msgstr "Sorozatok" @@ -802,7 +802,7 @@ msgid "Show author selection" msgstr "Szerző választó mutatása" #: cps/templates/book_table.html:55 cps/templates/index.xml:68 cps/ub.py:102 -#: cps/web.py:1087 +#: cps/web.py:1089 msgid "Publishers" msgstr "Kiadók" @@ -811,7 +811,7 @@ msgid "Show publisher selection" msgstr "Kiadó választó mutatása" #: cps/templates/book_table.html:53 cps/templates/index.xml:89 -#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1183 +#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1185 msgid "Languages" msgstr "Nyelvek" @@ -835,7 +835,7 @@ msgstr "" msgid "Show file formats selection" msgstr "" -#: cps/ub.py:116 cps/web.py:927 +#: cps/ub.py:116 cps/web.py:929 msgid "Archived Books" msgstr "" @@ -880,225 +880,225 @@ msgstr "Új frissítés érhető el. Kattints az alábbi gombra a frissítéshez msgid "Click on the button below to update to the latest stable version." msgstr "" -#: cps/web.py:316 +#: cps/web.py:318 #, python-format msgid "Error: %(ldaperror)s" msgstr "" -#: cps/web.py:320 +#: cps/web.py:322 msgid "Error: No user returned in response of LDAP server" msgstr "" -#: cps/web.py:368 +#: cps/web.py:370 msgid "Failed to Create at Least One LDAP User" msgstr "" -#: cps/web.py:371 +#: cps/web.py:373 msgid "At Least One LDAP User Not Found in Database" msgstr "" -#: cps/web.py:373 +#: cps/web.py:375 msgid "User Successfully Imported" msgstr "" -#: cps/templates/index.html:5 cps/web.py:647 +#: cps/templates/index.html:5 cps/web.py:649 msgid "Discover (Random Books)" msgstr "Felfedezés (könyvek találomra)" -#: cps/web.py:686 +#: cps/web.py:688 msgid "Books" msgstr "" -#: cps/web.py:713 +#: cps/web.py:715 msgid "Hot Books (Most Downloaded)" msgstr "Kelendő könyvek (legtöbbet letöltöttek)" -#: cps/web.py:748 +#: cps/web.py:750 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:762 +#: cps/web.py:764 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Hiba történt az e-könyv megnyitásakor. A fájl nem létezik vagy nem érhető el:" -#: cps/web.py:776 +#: cps/web.py:778 #, python-format msgid "Author: %(name)s" msgstr "" -#: cps/web.py:790 +#: cps/web.py:792 #, python-format msgid "Publisher: %(name)s" msgstr "Kiadó: %(name)s" -#: cps/web.py:803 +#: cps/web.py:805 #, python-format msgid "Series: %(serie)s" msgstr "Sorozat: %(serie)s" -#: cps/web.py:816 +#: cps/web.py:818 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:829 +#: cps/web.py:831 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:843 +#: cps/web.py:845 #, python-format msgid "Category: %(name)s" msgstr "Címke: %(name)s" -#: cps/web.py:862 +#: cps/web.py:864 #, python-format msgid "Language: %(name)s" msgstr "Nyelv: %(name)s" -#: cps/web.py:891 +#: cps/web.py:893 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:958 cps/web.py:1407 +#: cps/templates/layout.html:56 cps/web.py:960 cps/web.py:1409 msgid "Advanced Search" msgstr "Részletes keresés" #: cps/templates/book_edit.html:213 cps/templates/feed.xml:33 #: cps/templates/layout.html:45 cps/templates/layout.html:48 -#: cps/templates/search_form.html:175 cps/web.py:970 cps/web.py:1241 +#: cps/templates/search_form.html:175 cps/web.py:972 cps/web.py:1243 msgid "Search" msgstr "Keresés" -#: cps/web.py:998 +#: cps/web.py:1000 msgid "Books list" msgstr "" -#: cps/web.py:1136 +#: cps/web.py:1138 msgid "Ratings list" msgstr "" -#: cps/web.py:1155 +#: cps/web.py:1157 msgid "File formats list" msgstr "" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1218 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1220 msgid "Tasks" msgstr "Feladatok" -#: cps/web.py:1303 +#: cps/web.py:1305 msgid "Published after " msgstr "Kiadva ezután: " -#: cps/web.py:1310 +#: cps/web.py:1312 msgid "Published before " msgstr "Kiadva ezelőtt: " -#: cps/web.py:1325 +#: cps/web.py:1327 #, python-format msgid "Rating <= %(rating)s" msgstr "Értékelés <= %(rating)s" -#: cps/web.py:1327 +#: cps/web.py:1329 #, python-format msgid "Rating >= %(rating)s" msgstr "Értékelés <= %(rating)s" -#: cps/web.py:1472 +#: cps/web.py:1474 #, 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:1476 +#: cps/web.py:1478 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Hiba történt a könyv küldésekor: %(res)s" -#: cps/web.py:1478 +#: cps/web.py:1480 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Először be kell állítani a kindle e-mail címet..." -#: cps/web.py:1495 +#: cps/web.py:1497 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "" -#: cps/web.py:1496 cps/web.py:1506 cps/web.py:1530 cps/web.py:1534 -#: cps/web.py:1539 cps/web.py:1543 +#: cps/web.py:1498 cps/web.py:1508 cps/web.py:1532 cps/web.py:1536 +#: cps/web.py:1541 cps/web.py:1545 msgid "register" msgstr "regisztrálás" -#: cps/web.py:1532 +#: cps/web.py:1534 msgid "Your e-mail is not allowed to register" msgstr "Nem engedélyezett a megadott e-mail cím bejegyzése" -#: cps/web.py:1535 +#: cps/web.py:1537 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:1538 +#: cps/web.py:1540 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:1555 +#: cps/web.py:1557 msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1572 +#: cps/web.py:1574 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "" -#: cps/web.py:1578 +#: cps/web.py:1580 #, python-format msgid "Could not login: %(message)s" msgstr "" -#: cps/web.py:1582 cps/web.py:1606 +#: cps/web.py:1584 cps/web.py:1608 msgid "Wrong Username or Password" msgstr "Rossz felhasználó név vagy jelszó!" -#: cps/web.py:1589 +#: cps/web.py:1591 msgid "New Password was send to your email address" msgstr "" -#: cps/web.py:1595 +#: cps/web.py:1597 msgid "Please enter valid username to reset password" msgstr "" -#: cps/web.py:1601 +#: cps/web.py:1603 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "" -#: cps/web.py:1612 cps/web.py:1639 +#: cps/web.py:1614 cps/web.py:1641 msgid "login" msgstr "belépés" -#: cps/web.py:1651 cps/web.py:1685 +#: cps/web.py:1653 cps/web.py:1687 msgid "Token not found" msgstr "A token nem található." -#: cps/web.py:1660 cps/web.py:1693 +#: cps/web.py:1662 cps/web.py:1695 msgid "Token has expired" msgstr "A token érvényessége lejárt." -#: cps/web.py:1669 +#: cps/web.py:1671 msgid "Success! Please return to your device" msgstr "Sikerült! Újra használható az eszköz." -#: cps/web.py:1753 cps/web.py:1809 +#: cps/web.py:1755 cps/web.py:1811 #, python-format msgid "%(name)s's profile" msgstr "%(name)s profilja" -#: cps/web.py:1789 +#: cps/web.py:1791 msgid "Profile updated" msgstr "A profil frissítve." -#: cps/web.py:1836 cps/web.py:1839 cps/web.py:1842 cps/web.py:1849 -#: cps/web.py:1854 +#: cps/web.py:1838 cps/web.py:1841 cps/web.py:1844 cps/web.py:1851 +#: cps/web.py:1856 msgid "Read a Book" msgstr "Egy olvasott könyv" diff --git a/cps/translations/it/LC_MESSAGES/messages.mo b/cps/translations/it/LC_MESSAGES/messages.mo index 8d4227a2..a45088d1 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 a8a35372..460ab18b 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: 2020-10-31 19:17+0100\n" +"POT-Creation-Date: 2020-11-14 13:11+0100\n" "PO-Revision-Date: 2017-04-04 15:09+0200\n" "Last-Translator: ElQuimm \n" "Language: it\n" @@ -21,7 +21,7 @@ msgstr "" msgid "installed" msgstr "installato" -#: cps/about.py:44 cps/converter.py:33 +#: cps/about.py:44 cps/converter.py:32 msgid "not installed" msgstr "non installato" @@ -45,351 +45,351 @@ msgstr "Ricollegato con successo" msgid "Unknown command" msgstr "Comando sconosciuto" -#: cps/admin.py:116 cps/editbooks.py:612 cps/editbooks.py:624 -#: cps/editbooks.py:724 cps/editbooks.py:726 cps/editbooks.py:787 -#: cps/editbooks.py:803 cps/updater.py:510 cps/uploader.py:98 +#: cps/admin.py:116 cps/editbooks.py:611 cps/editbooks.py:623 +#: cps/editbooks.py:723 cps/editbooks.py:725 cps/editbooks.py:786 +#: cps/editbooks.py:802 cps/updater.py:510 cps/uploader.py:98 #: cps/uploader.py:108 msgid "Unknown" msgstr "Sconosciuto" -#: cps/admin.py:136 +#: cps/admin.py:137 msgid "Admin page" msgstr "Pagina di amministrazione" -#: cps/admin.py:158 +#: cps/admin.py:159 msgid "UI Configuration" msgstr "Configurazione dell'interfaccia utente" -#: cps/admin.py:190 cps/admin.py:717 +#: cps/admin.py:191 cps/admin.py:718 msgid "Calibre-Web configuration updated" msgstr "La configurazione di Calibre-Web è stata aggiornata" -#: cps/admin.py:435 cps/admin.py:441 cps/admin.py:452 cps/admin.py:463 +#: cps/admin.py:436 cps/admin.py:442 cps/admin.py:453 cps/admin.py:464 #: cps/templates/modal_dialogs.html:29 msgid "Deny" msgstr "Nega" -#: cps/admin.py:437 cps/admin.py:443 cps/admin.py:454 cps/admin.py:465 +#: cps/admin.py:438 cps/admin.py:444 cps/admin.py:455 cps/admin.py:466 #: cps/templates/modal_dialogs.html:28 msgid "Allow" msgstr "Permetti" -#: cps/admin.py:511 +#: cps/admin.py:512 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json non è configurato per Web Application" -#: cps/admin.py:550 +#: cps/admin.py:551 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "La posizione del Logfile non è valida, per favore indica il percorso corretto" -#: cps/admin.py:555 +#: cps/admin.py:556 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "La posizione dell'Access Logfile non è valida, per favore indica il percorso corretto" -#: cps/admin.py:581 +#: cps/admin.py:582 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "Per favore digita un Provider LDAP, porta, DN e User Object Identifier" -#: cps/admin.py:594 +#: cps/admin.py:595 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "LDAP Group Object Filter deve avere un \"%s\" Format Identifier" -#: cps/admin.py:597 +#: cps/admin.py:598 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "LDAP Group Object Filter contiene una parentesi senza la corrispettiva" -#: cps/admin.py:601 +#: cps/admin.py:602 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "LDAP User Object Filter deve avere un \"%s\" Format Identifier" -#: cps/admin.py:604 +#: cps/admin.py:605 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "LDAP User Object Filter contiene una parentesi senza la corrispettiva" -#: cps/admin.py:608 +#: cps/admin.py:609 msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path" msgstr "La posizione del certificato LDAP non è valida, per favore indica il percorso corretto" -#: cps/admin.py:630 +#: cps/admin.py:631 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "La posizione del Keyfile non è valida, per favore indica il percorso corretto" -#: cps/admin.py:634 +#: cps/admin.py:635 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "La posizione del Certfile non è valida, per favore indica il percorso corretto" -#: cps/admin.py:700 cps/admin.py:799 cps/admin.py:889 cps/admin.py:938 +#: cps/admin.py:701 cps/admin.py:800 cps/admin.py:890 cps/admin.py:939 #: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260 #: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392 msgid "Settings DB is not Writeable" msgstr "I parametri del DB non sono scrivibili" -#: cps/admin.py:712 +#: cps/admin.py:713 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "La posizione del DB non è valida, per favore indica il percorso corretto" -#: cps/admin.py:714 +#: cps/admin.py:715 msgid "DB is not Writeable" msgstr "Il DB non è scrivibile" -#: cps/admin.py:747 +#: cps/admin.py:748 msgid "Basic Configuration" msgstr "Configurazione di base" -#: cps/admin.py:762 cps/web.py:1505 +#: cps/admin.py:763 cps/web.py:1507 msgid "Please fill out all fields!" msgstr "Per favore compila tutti i campi!" -#: cps/admin.py:765 cps/admin.py:777 cps/admin.py:783 cps/admin.py:907 +#: cps/admin.py:766 cps/admin.py:778 cps/admin.py:784 cps/admin.py:908 msgid "Add new user" msgstr "Aggiungi un nuovo utente" -#: cps/admin.py:774 cps/web.py:1751 +#: cps/admin.py:775 cps/web.py:1753 msgid "E-mail is not from valid domain" msgstr "L'e-mail non proviene da un dominio valido" -#: cps/admin.py:781 cps/admin.py:796 +#: cps/admin.py:782 cps/admin.py:797 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:792 +#: cps/admin.py:793 #, python-format msgid "User '%(user)s' created" msgstr "Creato l'utente '%(user)s'" -#: cps/admin.py:808 +#: cps/admin.py:809 #, python-format msgid "User '%(nick)s' deleted" msgstr "Utente '%(nick)s' eliminato" -#: cps/admin.py:811 +#: cps/admin.py:812 msgid "No admin user remaining, can't delete user" msgstr "Non rimarrebbe nessun utente amministratore, non posso eliminare l'utente" -#: cps/admin.py:817 +#: cps/admin.py:818 msgid "No admin user remaining, can't remove admin role" msgstr "Non rimarrebbe nessun utente amministratore, non posso rimuovere il ruolo di amministratore" -#: cps/admin.py:853 cps/web.py:1793 +#: cps/admin.py:854 cps/web.py:1795 msgid "Found an existing account for this e-mail address." -msgstr "Ho trovato un account creato in precedenza con questo e-mail." +msgstr "Ho trovato un account creato in precedenza con questa e-mail." -#: cps/admin.py:862 cps/admin.py:876 cps/admin.py:979 cps/web.py:1769 +#: cps/admin.py:863 cps/admin.py:877 cps/admin.py:980 cps/web.py:1771 #, python-format msgid "Edit User %(nick)s" msgstr "Modifica l'utente %(nick)s" -#: cps/admin.py:868 cps/web.py:1762 +#: cps/admin.py:869 cps/web.py:1764 msgid "This username is already taken" msgstr "Questo nome di utente è già utilizzato" -#: cps/admin.py:883 +#: cps/admin.py:884 #, python-format msgid "User '%(nick)s' updated" msgstr "Utente '%(nick)s' aggiornato" -#: cps/admin.py:886 +#: cps/admin.py:887 msgid "An unknown error occured." msgstr "Si è verificato un errore imprevisto." -#: cps/admin.py:916 cps/templates/admin.html:71 +#: cps/admin.py:917 cps/templates/admin.html:71 msgid "Edit E-mail Server Settings" msgstr "Modifica le impostazioni SMTP" -#: cps/admin.py:945 +#: cps/admin.py:946 #, 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:948 +#: cps/admin.py:949 #, 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:950 +#: cps/admin.py:951 msgid "Please configure your e-mail address first..." msgstr "Per favore prima configura il tuo indirizzo e-mail..." -#: cps/admin.py:952 +#: cps/admin.py:953 msgid "E-mail server settings updated" msgstr "Configurazione del server e-mail aggiornata" -#: cps/admin.py:963 +#: cps/admin.py:964 msgid "User not found" msgstr "Utente non trovato" -#: cps/admin.py:990 +#: cps/admin.py:991 #, python-format msgid "Password for user %(user)s reset" msgstr "La password dell'utente %(user)s è stata resettata" -#: cps/admin.py:993 cps/web.py:1529 cps/web.py:1593 +#: cps/admin.py:994 cps/web.py:1531 cps/web.py:1595 msgid "An unknown error occurred. Please try again later." msgstr "Si è verificato un errore sconosciuto: per favore riprova." -#: cps/admin.py:996 cps/web.py:1467 +#: cps/admin.py:997 cps/web.py:1469 msgid "Please configure the SMTP mail settings first..." msgstr "Configura dapprima le impostazioni del server SMTP..." -#: cps/admin.py:1008 +#: cps/admin.py:1009 msgid "Logfile viewer" msgstr "Visualizzatore del Logfile" -#: cps/admin.py:1047 +#: cps/admin.py:1049 msgid "Requesting update package" msgstr "Richiedo il pacchetto di aggiornamento" -#: cps/admin.py:1048 +#: cps/admin.py:1050 msgid "Downloading update package" msgstr "Scarico il pacchetto di aggiornamento" -#: cps/admin.py:1049 +#: cps/admin.py:1051 msgid "Unzipping update package" msgstr "Decomprimo il pacchetto di aggiornamento" -#: cps/admin.py:1050 +#: cps/admin.py:1052 msgid "Replacing files" msgstr "Sostituisco i file" -#: cps/admin.py:1051 +#: cps/admin.py:1053 msgid "Database connections are closed" msgstr "Le connessioni al database sono chiuse" -#: cps/admin.py:1052 +#: cps/admin.py:1054 msgid "Stopping server" msgstr "Arresto il server" -#: cps/admin.py:1053 +#: cps/admin.py:1055 msgid "Update finished, please press okay and reload page" msgstr "Aggiornamento completato, per favore premi ok e ricarica la pagina" -#: cps/admin.py:1054 cps/admin.py:1055 cps/admin.py:1056 cps/admin.py:1057 -#: cps/admin.py:1058 +#: cps/admin.py:1056 cps/admin.py:1057 cps/admin.py:1058 cps/admin.py:1059 +#: cps/admin.py:1060 msgid "Update failed:" msgstr "Aggiornamento non riuscito:" -#: cps/admin.py:1054 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 +#: cps/admin.py:1056 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 msgid "HTTP Error" msgstr "Errore HTTP" -#: cps/admin.py:1055 cps/updater.py:322 cps/updater.py:525 +#: cps/admin.py:1057 cps/updater.py:322 cps/updater.py:525 msgid "Connection error" msgstr "Errore di connessione" -#: cps/admin.py:1056 cps/updater.py:324 cps/updater.py:527 +#: cps/admin.py:1058 cps/updater.py:324 cps/updater.py:527 msgid "Timeout while establishing connection" msgstr "Tempo scaduto nello stabilire la connessione" -#: cps/admin.py:1057 cps/updater.py:326 cps/updater.py:529 +#: cps/admin.py:1059 cps/updater.py:326 cps/updater.py:529 msgid "General error" msgstr "Errore generale" -#: cps/admin.py:1058 +#: cps/admin.py:1060 msgid "Update File Could Not be Saved in Temp Dir" msgstr "Il file di aggiornamento non può essere salvato nella cartella temporanea" -#: cps/converter.py:32 +#: cps/converter.py:31 msgid "not configured" msgstr "non configurato" -#: cps/converter.py:34 +#: cps/converter.py:33 msgid "Execution permissions missing" msgstr "Mancano i permessi di esecuzione" -#: cps/editbooks.py:273 cps/editbooks.py:275 +#: cps/editbooks.py:272 cps/editbooks.py:274 msgid "Book Format Successfully Deleted" msgstr "Il formato del libro è stato eliminato con successo" -#: cps/editbooks.py:282 cps/editbooks.py:284 +#: cps/editbooks.py:281 cps/editbooks.py:283 msgid "Book Successfully Deleted" msgstr "Il libro é stato eliminato con successo" -#: cps/editbooks.py:293 cps/editbooks.py:596 cps/web.py:1824 cps/web.py:1865 -#: cps/web.py:1927 +#: cps/editbooks.py:292 cps/editbooks.py:595 cps/web.py:1826 cps/web.py:1867 +#: cps/web.py:1929 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:327 +#: cps/editbooks.py:326 msgid "edit metadata" -msgstr "Modifica i metadati" +msgstr "modifica i metadati" -#: cps/editbooks.py:402 +#: cps/editbooks.py:401 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s non è una lingua valida" -#: cps/editbooks.py:513 cps/editbooks.py:769 +#: cps/editbooks.py:512 cps/editbooks.py:768 #, 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:517 cps/editbooks.py:773 +#: cps/editbooks.py:516 cps/editbooks.py:772 msgid "File to be uploaded must have an extension" msgstr "Il file da caricare deve avere un'estensione" -#: cps/editbooks.py:529 +#: cps/editbooks.py:528 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Impossibile creare la cartella %(path)s (autorizzazione negata)." -#: cps/editbooks.py:534 +#: cps/editbooks.py:533 #, python-format msgid "Failed to store file %(file)s." msgstr "Il salvataggio del file %(file)s non è riuscito." -#: cps/editbooks.py:552 cps/editbooks.py:904 +#: cps/editbooks.py:551 cps/editbooks.py:903 #, python-format msgid "Database error: %(error)s." msgstr "Errore nel database: %(error)s." -#: cps/editbooks.py:556 +#: cps/editbooks.py:555 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Ho aggiunto il formato %(ext)s al libro %(book)s" -#: cps/editbooks.py:673 +#: cps/editbooks.py:672 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "Gli identificatori non tengono conto delle lettere maiuscole o minuscole, sovrascrivo l'identificatore precedente" -#: cps/editbooks.py:710 +#: cps/editbooks.py:709 msgid "Metadata successfully updated" msgstr "I metadati sono stati aggiornati con successo" -#: cps/editbooks.py:719 +#: cps/editbooks.py:718 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:781 +#: cps/editbooks.py:780 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "Il file %(filename)s non può essere salvato nella cartella temporanea" -#: cps/editbooks.py:791 +#: cps/editbooks.py:790 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Probabilmente il libro caricato esiste già nella libreria; considera di cambiare prima di sottoporlo nuovamente: " -#: cps/editbooks.py:879 +#: cps/editbooks.py:878 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "Impossibile spostare il file della copertina %(file)s: %(error)s" -#: cps/editbooks.py:890 +#: cps/editbooks.py:889 #, python-format msgid "File %(file)s uploaded" msgstr "Il file %(file)s è stato caricato" -#: cps/editbooks.py:916 +#: cps/editbooks.py:915 msgid "Source or destination format for conversion missing" msgstr "Mancano o il formato sorgente o quello di destinazione, entrambi necessari alla conversione" -#: cps/editbooks.py:924 +#: cps/editbooks.py:923 #, 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:928 +#: cps/editbooks.py:927 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Si è verificato un errore durante la conversione del libro: %(res)s" @@ -579,7 +579,7 @@ msgstr "L'accesso con Google non è riuscito." msgid "Failed to fetch user info from Google." msgstr "Il recupero delle informazioni dell'utente da Google non è riuscito." -#: cps/oauth_bb.py:225 cps/web.py:1565 cps/web.py:1707 +#: cps/oauth_bb.py:225 cps/web.py:1567 cps/web.py:1709 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "ora sei connesso come: '%(nickname)s'" @@ -610,11 +610,11 @@ msgstr "Non collegato a %(oauth)s" #: cps/oauth_bb.py:318 msgid "GitHub Oauth error, please retry later." -msgstr "GitHub errore Oauth, per favore riprova più tardi." +msgstr "GitHub, errore Oauth: per favore riprova più tardi." #: cps/oauth_bb.py:337 msgid "Google Oauth error, please retry later." -msgstr "Google errore Oauth, per favore riprova più tardi." +msgstr "Google, errore Oauth: per favore riprova più tardi." #: cps/shelf.py:67 cps/shelf.py:120 msgid "Invalid shelf specified" @@ -739,7 +739,7 @@ msgstr "Libri scaricati" msgid "Show Downloaded Books" msgstr "Mostra l'opzione per la visualizzazione dei libri scaricati" -#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:639 +#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:641 msgid "Top Rated Books" msgstr "Libri meglio valutati" @@ -748,7 +748,7 @@ msgid "Show Top Rated Books" msgstr "Mostra l'opzione per la selezione dei libri meglio valutati" #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:82 -#: cps/web.py:900 +#: cps/web.py:902 msgid "Read Books" msgstr "Libri da leggere" @@ -757,7 +757,7 @@ msgid "Show read and unread" msgstr "Mostra l'opzione per la selezione letto e non letto" #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:86 -#: cps/web.py:903 +#: cps/web.py:905 msgid "Unread Books" msgstr "Libri non letti" @@ -774,7 +774,7 @@ msgid "Show random books" msgstr "Mostra l'opzione per presentare libri aleatoriamente" #: cps/templates/book_table.html:50 cps/templates/index.xml:75 cps/ub.py:92 -#: cps/web.py:1204 +#: cps/web.py:1206 msgid "Categories" msgstr "Categorie" @@ -784,7 +784,7 @@ msgstr "Mostra l'opzione per la selezione delle categorie" #: cps/templates/book_edit.html:84 cps/templates/book_table.html:51 #: cps/templates/index.xml:82 cps/templates/search_form.html:54 cps/ub.py:95 -#: cps/web.py:1108 cps/web.py:1118 +#: cps/web.py:1110 cps/web.py:1120 msgid "Series" msgstr "Serie" @@ -801,7 +801,7 @@ msgid "Show author selection" msgstr "Mostra l'opzione per la selezione degli autori" #: cps/templates/book_table.html:55 cps/templates/index.xml:68 cps/ub.py:102 -#: cps/web.py:1087 +#: cps/web.py:1089 msgid "Publishers" msgstr "Editori" @@ -810,7 +810,7 @@ msgid "Show publisher selection" msgstr "Mostra l'opzione per la selezione degli editori" #: cps/templates/book_table.html:53 cps/templates/index.xml:89 -#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1183 +#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1185 msgid "Languages" msgstr "Lingue" @@ -834,7 +834,7 @@ msgstr "Formati file" msgid "Show file formats selection" msgstr "Mostra la selezione del formato dei file" -#: cps/ub.py:116 cps/web.py:927 +#: cps/ub.py:116 cps/web.py:929 msgid "Archived Books" msgstr "Libri archiviati" @@ -879,225 +879,225 @@ msgstr "Nuovo aggiornamento disponibile. Clicca sul pulsante sottostante per agg msgid "Click on the button below to update to the latest stable version." msgstr "Clicca sul pulsante per aggiornare all'ultima versione stabile." -#: cps/web.py:316 +#: cps/web.py:318 #, python-format msgid "Error: %(ldaperror)s" msgstr "Errore: %(ldaperror)s" -#: cps/web.py:320 +#: cps/web.py:322 msgid "Error: No user returned in response of LDAP server" msgstr "Errore: nessun utente restituito in risposta dal server LDAP" -#: cps/web.py:368 +#: cps/web.py:370 msgid "Failed to Create at Least One LDAP User" msgstr "Fallita la creazione di almeno un utente LDAP" -#: cps/web.py:371 +#: cps/web.py:373 msgid "At Least One LDAP User Not Found in Database" msgstr "Almeno un utente LDAP non è stato trovato nel database" -#: cps/web.py:373 +#: cps/web.py:375 msgid "User Successfully Imported" msgstr "Utente importato con successo" -#: cps/templates/index.html:5 cps/web.py:647 +#: cps/templates/index.html:5 cps/web.py:649 msgid "Discover (Random Books)" msgstr "Scopri (libri casuali)" -#: cps/web.py:686 +#: cps/web.py:688 msgid "Books" msgstr "Libri" -#: cps/web.py:713 +#: cps/web.py:715 msgid "Hot Books (Most Downloaded)" msgstr "I libri più richiesti" -#: cps/web.py:748 +#: cps/web.py:750 #, python-format msgid "Downloaded books by %(user)s" msgstr "Libri scaricati da %(user)s" -#: cps/web.py:762 +#: cps/web.py:764 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Errore durante l'apertura del libro selezionato. Il file non esiste o il file non è accessibile" -#: cps/web.py:776 +#: cps/web.py:778 #, python-format msgid "Author: %(name)s" msgstr "Autore: %(name)s" -#: cps/web.py:790 +#: cps/web.py:792 #, python-format msgid "Publisher: %(name)s" msgstr "Editore: %(name)s" -#: cps/web.py:803 +#: cps/web.py:805 #, python-format msgid "Series: %(serie)s" msgstr "Serie: %(serie)s" -#: cps/web.py:816 +#: cps/web.py:818 #, python-format msgid "Rating: %(rating)s stars" msgstr "Valutazione: %(rating)s stelle" -#: cps/web.py:829 +#: cps/web.py:831 #, python-format msgid "File format: %(format)s" msgstr "Formato del file: %(format)s" -#: cps/web.py:843 +#: cps/web.py:845 #, python-format msgid "Category: %(name)s" msgstr "Categoria: %(name)s" -#: cps/web.py:862 +#: cps/web.py:864 #, python-format msgid "Language: %(name)s" msgstr "Lingua: %(name)s" -#: cps/web.py:891 +#: cps/web.py:893 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "La colonna personale no.%(column)d non esiste nel database di Calibre" -#: cps/templates/layout.html:56 cps/web.py:958 cps/web.py:1407 +#: cps/templates/layout.html:56 cps/web.py:960 cps/web.py:1409 msgid "Advanced Search" msgstr "Ricerca avanzata" #: cps/templates/book_edit.html:213 cps/templates/feed.xml:33 #: cps/templates/layout.html:45 cps/templates/layout.html:48 -#: cps/templates/search_form.html:175 cps/web.py:970 cps/web.py:1241 +#: cps/templates/search_form.html:175 cps/web.py:972 cps/web.py:1243 msgid "Search" msgstr "Cerca" -#: cps/web.py:998 +#: cps/web.py:1000 msgid "Books list" msgstr "Elenco dei libri" -#: cps/web.py:1136 +#: cps/web.py:1138 msgid "Ratings list" msgstr "Elenco delle valutazioni" -#: cps/web.py:1155 +#: cps/web.py:1157 msgid "File formats list" msgstr "Elenco dei formati" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1218 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1220 msgid "Tasks" msgstr "Compito" -#: cps/web.py:1303 +#: cps/web.py:1305 msgid "Published after " msgstr "Pubblicato dopo " -#: cps/web.py:1310 +#: cps/web.py:1312 msgid "Published before " msgstr "Pubblicato prima " -#: cps/web.py:1325 +#: cps/web.py:1327 #, python-format msgid "Rating <= %(rating)s" msgstr "Valutazione <= %(rating)s" -#: cps/web.py:1327 +#: cps/web.py:1329 #, python-format msgid "Rating >= %(rating)s" msgstr "Valutazione >= %(rating)s" -#: cps/web.py:1472 +#: cps/web.py:1474 #, 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:1476 +#: cps/web.py:1478 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Si è verificato un errore durante l'invio di questo libro: %(res)s" -#: cps/web.py:1478 +#: cps/web.py:1480 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Per favore aggiorna il tuo profilo con un indirizzo e-mail Kindle a cui inviare i libri." -#: cps/web.py:1495 +#: cps/web.py:1497 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "Il server e-mail non è configurato, per favore contatta l'amministratore" -#: cps/web.py:1496 cps/web.py:1506 cps/web.py:1530 cps/web.py:1534 -#: cps/web.py:1539 cps/web.py:1543 +#: cps/web.py:1498 cps/web.py:1508 cps/web.py:1532 cps/web.py:1536 +#: cps/web.py:1541 cps/web.py:1545 msgid "register" msgstr "registra" -#: cps/web.py:1532 +#: cps/web.py:1534 msgid "Your e-mail is not allowed to register" msgstr "Il tuo e-mail non è autorizzato alla registrazione" -#: cps/web.py:1535 +#: cps/web.py:1537 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:1538 +#: cps/web.py:1540 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:1555 +#: cps/web.py:1557 msgid "Cannot activate LDAP authentication" msgstr "Non posso attivare l'autenticazione LDAP" -#: cps/web.py:1572 +#: cps/web.py:1574 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" -msgstr "Login come: '%(nickname)s', il server LDAP non è raggiungibile o l'utente è sconosciuto" +msgstr "Fallback login come: '%(nickname)s', il server LDAP non è raggiungibile o l'utente è sconosciuto" -#: cps/web.py:1578 +#: cps/web.py:1580 #, python-format msgid "Could not login: %(message)s" msgstr "Non posso accedere: %(message)s" -#: cps/web.py:1582 cps/web.py:1606 +#: cps/web.py:1584 cps/web.py:1608 msgid "Wrong Username or Password" msgstr "Nome utente o password errati" -#: cps/web.py:1589 +#: cps/web.py:1591 msgid "New Password was send to your email address" msgstr "Una nuova password è stata inviata al tuo recapito e-mail" -#: cps/web.py:1595 +#: cps/web.py:1597 msgid "Please enter valid username to reset password" msgstr "Per favore digita un nome di utente valido per resettare la password" -#: cps/web.py:1601 +#: cps/web.py:1603 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Ora sei connesso come '%(nickname)s'" -#: cps/web.py:1612 cps/web.py:1639 +#: cps/web.py:1614 cps/web.py:1641 msgid "login" msgstr "accedi" -#: cps/web.py:1651 cps/web.py:1685 +#: cps/web.py:1653 cps/web.py:1687 msgid "Token not found" msgstr "Token non trovato" -#: cps/web.py:1660 cps/web.py:1693 +#: cps/web.py:1662 cps/web.py:1695 msgid "Token has expired" msgstr "Il token è scaduto" -#: cps/web.py:1669 +#: cps/web.py:1671 msgid "Success! Please return to your device" msgstr "Riuscito! Torna al tuo dispositivo" -#: cps/web.py:1753 cps/web.py:1809 +#: cps/web.py:1755 cps/web.py:1811 #, python-format msgid "%(name)s's profile" msgstr "Profilo di %(name)s" -#: cps/web.py:1789 +#: cps/web.py:1791 msgid "Profile updated" msgstr "Profilo aggiornato" -#: cps/web.py:1836 cps/web.py:1839 cps/web.py:1842 cps/web.py:1849 -#: cps/web.py:1854 +#: cps/web.py:1838 cps/web.py:1841 cps/web.py:1844 cps/web.py:1851 +#: cps/web.py:1856 msgid "Read a Book" msgstr "Leggi un libro" @@ -1218,7 +1218,7 @@ msgstr "Porta SMTP" #: cps/templates/admin.html:59 cps/templates/email_edit.html:19 msgid "Encryption" -msgstr "SSL" +msgstr "Crittografia" #: cps/templates/admin.html:60 cps/templates/email_edit.html:27 msgid "SMTP Login" @@ -1294,7 +1294,7 @@ msgstr "Visualizza Logfile" #: cps/templates/admin.html:139 msgid "Reconnect Calibre Database" -msgstr "Ricollega al database di Calibre" +msgstr "Ricollega il database di Calibre" #: cps/templates/admin.html:140 msgid "Restart" @@ -1454,7 +1454,7 @@ msgstr "Valutazione" #: cps/templates/book_edit.html:98 msgid "Fetch Cover from URL (JPEG - Image will be downloaded and stored in database)" -msgstr "Carica la copertina da URL (jpg, l'immagine della copertina viene caricata e salvata nel database)" +msgstr "Carica la copertina da URL (jpg, l'immagine della copertina viene scaricata e salvata nel database)" #: cps/templates/book_edit.html:102 msgid "Upload Cover from Local Disk" @@ -1489,7 +1489,7 @@ msgstr "Carica formato" #: cps/templates/book_edit.html:187 msgid "View Book on Save" -msgstr "visualizza il libro dopo la modifica" +msgstr "Visualizza il libro dopo la modifica" #: cps/templates/book_edit.html:190 cps/templates/book_edit.html:207 msgid "Fetch Metadata" @@ -1511,7 +1511,7 @@ msgstr " ricerca parola chiave " #: cps/templates/book_edit.html:217 msgid "Click the cover to load metadata to the form" -msgstr "Fai clic sulla copertina per caricare i metadati presenti nel modulo" +msgstr "Fai clic sulla copertina per caricare i metadati nel modulo" #: cps/templates/book_edit.html:232 cps/templates/book_edit.html:272 msgid "Loading..." @@ -1549,11 +1549,11 @@ msgstr "Rimuovi le selezioni" #: cps/templates/book_table.html:30 msgid "Update Title Sort automatically" -msgstr "Aggiorna l'ordinamento dei titoli automaticamente" +msgstr "Aggiorna automaticamente l'ordinamento dei titoli" #: cps/templates/book_table.html:34 msgid "Update Author Sort automatically" -msgstr "Aggiorna l'ordinamento degli autori automaticamente" +msgstr "Aggiorna automaticamente l'ordinamento degli autori" #: cps/templates/book_table.html:46 msgid "Enter Title" @@ -1718,7 +1718,7 @@ msgstr "Ulteriori opzioni" #: cps/templates/config_edit.html:165 msgid "Enable Uploads" -msgstr "Abilita l'upload /il caricamento" +msgstr "Abilita l'upload/il caricamento" #: cps/templates/config_edit.html:169 msgid "Allowed Upload Fileformats" @@ -1802,7 +1802,7 @@ msgstr "Porta del server LDAP" #: cps/templates/config_edit.html:259 msgid "LDAP Encryption" -msgstr "Cifratura LDAP" +msgstr "Crittografia LDAP" #: cps/templates/config_edit.html:261 cps/templates/config_view_edit.html:61 #: cps/templates/email_edit.html:21 @@ -2327,7 +2327,7 @@ msgstr "e dal disco rigido" #: cps/templates/modal_dialogs.html:56 msgid "Important Kobo Note: deleted books will remain on any paired Kobo device." -msgstr "Oservazione importante riguardo Kobo: i libri eliminati, rimarranno in ogni lettore Kobo accoppiato." +msgstr "Oservazione importante riguardo a Kobo: i libri eliminati, rimarranno in ogni lettore Kobo accoppiato." #: cps/templates/modal_dialogs.html:57 msgid "Books must first be archived and the device synced before a book can safely be deleted." @@ -2355,7 +2355,7 @@ msgstr "Pagina successiva" #: cps/templates/readcbr.html:98 msgid "Scale to Best" -msgstr "Adatta al migliore" +msgstr "Adatta al meglio" #: cps/templates/readcbr.html:99 msgid "Scale to Width" @@ -2367,7 +2367,7 @@ msgstr "Adatta all'altezza" #: cps/templates/readcbr.html:101 msgid "Scale to Native" -msgstr "Dimensione originale" +msgstr "Scala alla dimensione originale" #: cps/templates/readcbr.html:102 msgid "Rotate Right" @@ -2483,7 +2483,7 @@ msgstr "Termine di ricerca:" #: cps/templates/search.html:8 msgid "Results for:" -msgstr "risultati per:" +msgstr "Risultati per:" #: cps/templates/search_form.html:20 msgid "Published Date From" @@ -2539,7 +2539,7 @@ msgstr "Vuoi davvero eliminare questo scaffale?" #: cps/templates/shelf.html:78 msgid "Shelf will be deleted for all users" -msgstr "Lo scaffale sarà perso per tutti e per sempre!" +msgstr "Lo scaffale verrà eliminato per tutti gli utenti" #: cps/templates/shelf_edit.html:13 msgid "Share with Everyone" diff --git a/cps/translations/ja/LC_MESSAGES/messages.po b/cps/translations/ja/LC_MESSAGES/messages.po index f57213c2..47e23bdb 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: 2020-10-31 19:17+0100\n" +"POT-Creation-Date: 2020-11-14 13:11+0100\n" "PO-Revision-Date: 2018-02-07 02:20-0500\n" "Last-Translator: white \n" "Language: ja\n" @@ -22,7 +22,7 @@ msgstr "" msgid "installed" msgstr "" -#: cps/about.py:44 cps/converter.py:33 +#: cps/about.py:44 cps/converter.py:32 msgid "not installed" msgstr "インストールされていません" @@ -46,351 +46,351 @@ msgstr "" msgid "Unknown command" msgstr "" -#: cps/admin.py:116 cps/editbooks.py:612 cps/editbooks.py:624 -#: cps/editbooks.py:724 cps/editbooks.py:726 cps/editbooks.py:787 -#: cps/editbooks.py:803 cps/updater.py:510 cps/uploader.py:98 +#: cps/admin.py:116 cps/editbooks.py:611 cps/editbooks.py:623 +#: cps/editbooks.py:723 cps/editbooks.py:725 cps/editbooks.py:786 +#: cps/editbooks.py:802 cps/updater.py:510 cps/uploader.py:98 #: cps/uploader.py:108 msgid "Unknown" msgstr "不明" -#: cps/admin.py:136 +#: cps/admin.py:137 msgid "Admin page" msgstr "管理者ページ" -#: cps/admin.py:158 +#: cps/admin.py:159 msgid "UI Configuration" msgstr "UI設定" -#: cps/admin.py:190 cps/admin.py:717 +#: cps/admin.py:191 cps/admin.py:718 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web の設定を更新しました" -#: cps/admin.py:435 cps/admin.py:441 cps/admin.py:452 cps/admin.py:463 +#: cps/admin.py:436 cps/admin.py:442 cps/admin.py:453 cps/admin.py:464 #: cps/templates/modal_dialogs.html:29 msgid "Deny" msgstr "" -#: cps/admin.py:437 cps/admin.py:443 cps/admin.py:454 cps/admin.py:465 +#: cps/admin.py:438 cps/admin.py:444 cps/admin.py:455 cps/admin.py:466 #: cps/templates/modal_dialogs.html:28 msgid "Allow" msgstr "" -#: cps/admin.py:511 +#: cps/admin.py:512 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "" -#: cps/admin.py:550 +#: cps/admin.py:551 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:555 +#: cps/admin.py:556 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:581 +#: cps/admin.py:582 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "" -#: cps/admin.py:594 +#: cps/admin.py:595 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:597 +#: cps/admin.py:598 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:601 +#: cps/admin.py:602 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:604 +#: cps/admin.py:605 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:608 +#: cps/admin.py:609 msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:630 +#: cps/admin.py:631 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:634 +#: cps/admin.py:635 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:700 cps/admin.py:799 cps/admin.py:889 cps/admin.py:938 +#: cps/admin.py:701 cps/admin.py:800 cps/admin.py:890 cps/admin.py:939 #: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260 #: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:712 +#: cps/admin.py:713 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:714 +#: cps/admin.py:715 msgid "DB is not Writeable" msgstr "" -#: cps/admin.py:747 +#: cps/admin.py:748 msgid "Basic Configuration" msgstr "基本設定" -#: cps/admin.py:762 cps/web.py:1505 +#: cps/admin.py:763 cps/web.py:1507 msgid "Please fill out all fields!" msgstr "全ての項目を入力してください" -#: cps/admin.py:765 cps/admin.py:777 cps/admin.py:783 cps/admin.py:907 +#: cps/admin.py:766 cps/admin.py:778 cps/admin.py:784 cps/admin.py:908 msgid "Add new user" msgstr "新規ユーザ追加" -#: cps/admin.py:774 cps/web.py:1751 +#: cps/admin.py:775 cps/web.py:1753 msgid "E-mail is not from valid domain" msgstr "このメールは有効なドメインからのものではありません" -#: cps/admin.py:781 cps/admin.py:796 +#: cps/admin.py:782 cps/admin.py:797 msgid "Found an existing account for this e-mail address or nickname." msgstr "このメールアドレスかニックネームで登録されたアカウントが見つかりました" -#: cps/admin.py:792 +#: cps/admin.py:793 #, python-format msgid "User '%(user)s' created" msgstr "ユーザ '%(user)s' を作成しました" -#: cps/admin.py:808 +#: cps/admin.py:809 #, python-format msgid "User '%(nick)s' deleted" msgstr "ユーザ '%(nick)s' を削除しました" -#: cps/admin.py:811 +#: cps/admin.py:812 msgid "No admin user remaining, can't delete user" msgstr "" -#: cps/admin.py:817 +#: cps/admin.py:818 msgid "No admin user remaining, can't remove admin role" msgstr "" -#: cps/admin.py:853 cps/web.py:1793 +#: cps/admin.py:854 cps/web.py:1795 msgid "Found an existing account for this e-mail address." msgstr "このメールアドレスで登録されたアカウントがあります" -#: cps/admin.py:862 cps/admin.py:876 cps/admin.py:979 cps/web.py:1769 +#: cps/admin.py:863 cps/admin.py:877 cps/admin.py:980 cps/web.py:1771 #, python-format msgid "Edit User %(nick)s" msgstr "%(nick)s を編集" -#: cps/admin.py:868 cps/web.py:1762 +#: cps/admin.py:869 cps/web.py:1764 msgid "This username is already taken" msgstr "" -#: cps/admin.py:883 +#: cps/admin.py:884 #, python-format msgid "User '%(nick)s' updated" msgstr "ユーザ '%(nick)s' を更新しました" -#: cps/admin.py:886 +#: cps/admin.py:887 msgid "An unknown error occured." msgstr "不明なエラーが発生しました。" -#: cps/admin.py:916 cps/templates/admin.html:71 +#: cps/admin.py:917 cps/templates/admin.html:71 msgid "Edit E-mail Server Settings" msgstr "SMTP設定を変更" -#: cps/admin.py:945 +#: cps/admin.py:946 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "テストメールが %(kindlemail)s に送信されました" -#: cps/admin.py:948 +#: cps/admin.py:949 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "テストメールを %(res)s に送信中にエラーが発生しました" -#: cps/admin.py:950 +#: cps/admin.py:951 msgid "Please configure your e-mail address first..." msgstr "" -#: cps/admin.py:952 +#: cps/admin.py:953 msgid "E-mail server settings updated" msgstr "メールサーバの設定を更新しました" -#: cps/admin.py:963 +#: cps/admin.py:964 msgid "User not found" msgstr "" -#: cps/admin.py:990 +#: cps/admin.py:991 #, python-format msgid "Password for user %(user)s reset" msgstr "%(user)s 用のパスワードをリセット" -#: cps/admin.py:993 cps/web.py:1529 cps/web.py:1593 +#: cps/admin.py:994 cps/web.py:1531 cps/web.py:1595 msgid "An unknown error occurred. Please try again later." msgstr "不明なエラーが発生しました。あとで再試行してください。" -#: cps/admin.py:996 cps/web.py:1467 +#: cps/admin.py:997 cps/web.py:1469 msgid "Please configure the SMTP mail settings first..." msgstr "初めにSMTPメールの設定をしてください" -#: cps/admin.py:1008 +#: cps/admin.py:1009 msgid "Logfile viewer" msgstr "" -#: cps/admin.py:1047 +#: cps/admin.py:1049 msgid "Requesting update package" msgstr "更新データを要求中" -#: cps/admin.py:1048 +#: cps/admin.py:1050 msgid "Downloading update package" msgstr "更新データをダウンロード中" -#: cps/admin.py:1049 +#: cps/admin.py:1051 msgid "Unzipping update package" msgstr "更新データを展開中" -#: cps/admin.py:1050 +#: cps/admin.py:1052 msgid "Replacing files" msgstr "ファイルを置換中" -#: cps/admin.py:1051 +#: cps/admin.py:1053 msgid "Database connections are closed" msgstr "データベースの接続を切断完了" -#: cps/admin.py:1052 +#: cps/admin.py:1054 msgid "Stopping server" msgstr "サーバ停止中" -#: cps/admin.py:1053 +#: cps/admin.py:1055 msgid "Update finished, please press okay and reload page" msgstr "アップデート完了、OKを押してページをリロードしてください" -#: cps/admin.py:1054 cps/admin.py:1055 cps/admin.py:1056 cps/admin.py:1057 -#: cps/admin.py:1058 +#: cps/admin.py:1056 cps/admin.py:1057 cps/admin.py:1058 cps/admin.py:1059 +#: cps/admin.py:1060 msgid "Update failed:" msgstr "アップデート失敗:" -#: cps/admin.py:1054 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 +#: cps/admin.py:1056 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 msgid "HTTP Error" msgstr "HTTPエラー" -#: cps/admin.py:1055 cps/updater.py:322 cps/updater.py:525 +#: cps/admin.py:1057 cps/updater.py:322 cps/updater.py:525 msgid "Connection error" msgstr "接続エラー" -#: cps/admin.py:1056 cps/updater.py:324 cps/updater.py:527 +#: cps/admin.py:1058 cps/updater.py:324 cps/updater.py:527 msgid "Timeout while establishing connection" msgstr "接続を確立中にタイムアウトしました" -#: cps/admin.py:1057 cps/updater.py:326 cps/updater.py:529 +#: cps/admin.py:1059 cps/updater.py:326 cps/updater.py:529 msgid "General error" msgstr "エラー発生" -#: cps/admin.py:1058 +#: cps/admin.py:1060 msgid "Update File Could Not be Saved in Temp Dir" msgstr "" -#: cps/converter.py:32 +#: cps/converter.py:31 msgid "not configured" msgstr "" -#: cps/converter.py:34 +#: cps/converter.py:33 msgid "Execution permissions missing" msgstr "" -#: cps/editbooks.py:273 cps/editbooks.py:275 +#: cps/editbooks.py:272 cps/editbooks.py:274 msgid "Book Format Successfully Deleted" msgstr "" -#: cps/editbooks.py:282 cps/editbooks.py:284 +#: cps/editbooks.py:281 cps/editbooks.py:283 msgid "Book Successfully Deleted" msgstr "" -#: cps/editbooks.py:293 cps/editbooks.py:596 cps/web.py:1824 cps/web.py:1865 -#: cps/web.py:1927 +#: cps/editbooks.py:292 cps/editbooks.py:595 cps/web.py:1826 cps/web.py:1867 +#: cps/web.py:1929 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "電子書籍を開けません。ファイルが存在しないかアクセスできません" -#: cps/editbooks.py:327 +#: cps/editbooks.py:326 msgid "edit metadata" msgstr "メタデータを編集" -#: cps/editbooks.py:402 +#: cps/editbooks.py:401 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s は有効な言語ではありません" -#: cps/editbooks.py:513 cps/editbooks.py:769 +#: cps/editbooks.py:512 cps/editbooks.py:768 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "ファイル拡張子 '%(ext)s' をこのサーバにアップロードすることは許可されていません" -#: cps/editbooks.py:517 cps/editbooks.py:773 +#: cps/editbooks.py:516 cps/editbooks.py:772 msgid "File to be uploaded must have an extension" msgstr "アップロードするファイルには拡張子が必要です" -#: cps/editbooks.py:529 +#: cps/editbooks.py:528 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "%(path)s の作成に失敗しました (Permission denied)。" -#: cps/editbooks.py:534 +#: cps/editbooks.py:533 #, python-format msgid "Failed to store file %(file)s." msgstr "%(file)s を保存できません。" -#: cps/editbooks.py:552 cps/editbooks.py:904 +#: cps/editbooks.py:551 cps/editbooks.py:903 #, python-format msgid "Database error: %(error)s." msgstr "" -#: cps/editbooks.py:556 +#: cps/editbooks.py:555 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "ファイル形式 %(ext)s が %(book)s に追加されました" -#: cps/editbooks.py:673 +#: cps/editbooks.py:672 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:710 +#: cps/editbooks.py:709 msgid "Metadata successfully updated" msgstr "メタデータを更新しました" -#: cps/editbooks.py:719 +#: cps/editbooks.py:718 msgid "Error editing book, please check logfile for details" msgstr "本の編集でエラーが発生しました。詳細はログファイルを確認してください" -#: cps/editbooks.py:781 +#: cps/editbooks.py:780 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "" -#: cps/editbooks.py:791 +#: cps/editbooks.py:790 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "" -#: cps/editbooks.py:879 +#: cps/editbooks.py:878 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "" -#: cps/editbooks.py:890 +#: cps/editbooks.py:889 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:916 +#: cps/editbooks.py:915 msgid "Source or destination format for conversion missing" msgstr "変換元の形式または変換後の形式が指定されていません" -#: cps/editbooks.py:924 +#: cps/editbooks.py:923 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "本の %(book_format)s への変換がキューに追加されました" -#: cps/editbooks.py:928 +#: cps/editbooks.py:927 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "この本の変換中にエラーが発生しました: %(res)s" @@ -580,7 +580,7 @@ msgstr "" msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:225 cps/web.py:1565 cps/web.py:1707 +#: cps/oauth_bb.py:225 cps/web.py:1567 cps/web.py:1709 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "%(nickname)s としてログイン中" @@ -740,7 +740,7 @@ msgstr "" msgid "Show Downloaded Books" msgstr "" -#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:639 +#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:641 msgid "Top Rated Books" msgstr "" @@ -749,7 +749,7 @@ msgid "Show Top Rated Books" msgstr "" #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:82 -#: cps/web.py:900 +#: cps/web.py:902 msgid "Read Books" msgstr "読んだ本" @@ -758,7 +758,7 @@ msgid "Show read and unread" msgstr "既読の本と未読の本を表示" #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:86 -#: cps/web.py:903 +#: cps/web.py:905 msgid "Unread Books" msgstr "未読の本" @@ -775,7 +775,7 @@ msgid "Show random books" msgstr "ランダムで本を表示" #: cps/templates/book_table.html:50 cps/templates/index.xml:75 cps/ub.py:92 -#: cps/web.py:1204 +#: cps/web.py:1206 msgid "Categories" msgstr "カテゴリ" @@ -785,7 +785,7 @@ msgstr "カテゴリ選択を表示" #: cps/templates/book_edit.html:84 cps/templates/book_table.html:51 #: cps/templates/index.xml:82 cps/templates/search_form.html:54 cps/ub.py:95 -#: cps/web.py:1108 cps/web.py:1118 +#: cps/web.py:1110 cps/web.py:1120 msgid "Series" msgstr "シリーズ" @@ -802,7 +802,7 @@ msgid "Show author selection" msgstr "著者選択を表示" #: cps/templates/book_table.html:55 cps/templates/index.xml:68 cps/ub.py:102 -#: cps/web.py:1087 +#: cps/web.py:1089 msgid "Publishers" msgstr "出版社" @@ -811,7 +811,7 @@ msgid "Show publisher selection" msgstr "出版社選択を表示" #: cps/templates/book_table.html:53 cps/templates/index.xml:89 -#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1183 +#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1185 msgid "Languages" msgstr "言語" @@ -835,7 +835,7 @@ msgstr "" msgid "Show file formats selection" msgstr "" -#: cps/ub.py:116 cps/web.py:927 +#: cps/ub.py:116 cps/web.py:929 msgid "Archived Books" msgstr "" @@ -880,225 +880,225 @@ msgstr "アップデートが利用可能です。下のボタンをクリック msgid "Click on the button below to update to the latest stable version." msgstr "" -#: cps/web.py:316 +#: cps/web.py:318 #, python-format msgid "Error: %(ldaperror)s" msgstr "" -#: cps/web.py:320 +#: cps/web.py:322 msgid "Error: No user returned in response of LDAP server" msgstr "" -#: cps/web.py:368 +#: cps/web.py:370 msgid "Failed to Create at Least One LDAP User" msgstr "" -#: cps/web.py:371 +#: cps/web.py:373 msgid "At Least One LDAP User Not Found in Database" msgstr "" -#: cps/web.py:373 +#: cps/web.py:375 msgid "User Successfully Imported" msgstr "" -#: cps/templates/index.html:5 cps/web.py:647 +#: cps/templates/index.html:5 cps/web.py:649 msgid "Discover (Random Books)" msgstr "本を見つける (ランダムで表示)" -#: cps/web.py:686 +#: cps/web.py:688 msgid "Books" msgstr "" -#: cps/web.py:713 +#: cps/web.py:715 msgid "Hot Books (Most Downloaded)" msgstr "" -#: cps/web.py:748 +#: cps/web.py:750 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:762 +#: cps/web.py:764 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "" -#: cps/web.py:776 +#: cps/web.py:778 #, python-format msgid "Author: %(name)s" msgstr "" -#: cps/web.py:790 +#: cps/web.py:792 #, python-format msgid "Publisher: %(name)s" msgstr "出版社: %(name)s" -#: cps/web.py:803 +#: cps/web.py:805 #, python-format msgid "Series: %(serie)s" msgstr "シリーズ: %(serie)s" -#: cps/web.py:816 +#: cps/web.py:818 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:829 +#: cps/web.py:831 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:843 +#: cps/web.py:845 #, python-format msgid "Category: %(name)s" msgstr "カテゴリ: %(name)s" -#: cps/web.py:862 +#: cps/web.py:864 #, python-format msgid "Language: %(name)s" msgstr "言語: %(name)s" -#: cps/web.py:891 +#: cps/web.py:893 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:958 cps/web.py:1407 +#: cps/templates/layout.html:56 cps/web.py:960 cps/web.py:1409 msgid "Advanced Search" msgstr "詳細検索" #: cps/templates/book_edit.html:213 cps/templates/feed.xml:33 #: cps/templates/layout.html:45 cps/templates/layout.html:48 -#: cps/templates/search_form.html:175 cps/web.py:970 cps/web.py:1241 +#: cps/templates/search_form.html:175 cps/web.py:972 cps/web.py:1243 msgid "Search" msgstr "検索" -#: cps/web.py:998 +#: cps/web.py:1000 msgid "Books list" msgstr "" -#: cps/web.py:1136 +#: cps/web.py:1138 msgid "Ratings list" msgstr "" -#: cps/web.py:1155 +#: cps/web.py:1157 msgid "File formats list" msgstr "" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1218 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1220 msgid "Tasks" msgstr "タスク" -#: cps/web.py:1303 +#: cps/web.py:1305 msgid "Published after " msgstr "これ以降に出版 " -#: cps/web.py:1310 +#: cps/web.py:1312 msgid "Published before " msgstr "これ以前に出版 " -#: cps/web.py:1325 +#: cps/web.py:1327 #, python-format msgid "Rating <= %(rating)s" msgstr "評価 <= %(rating)s" -#: cps/web.py:1327 +#: cps/web.py:1329 #, python-format msgid "Rating >= %(rating)s" msgstr "評価 >= %(rating)s" -#: cps/web.py:1472 +#: cps/web.py:1474 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "本の %(kindlemail)s への送信がキューに追加されました" -#: cps/web.py:1476 +#: cps/web.py:1478 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "%(res)s を送信中にエラーが発生しました" -#: cps/web.py:1478 +#: cps/web.py:1480 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "初めにKindleのメールアドレスを設定してください" -#: cps/web.py:1495 +#: cps/web.py:1497 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "" -#: cps/web.py:1496 cps/web.py:1506 cps/web.py:1530 cps/web.py:1534 -#: cps/web.py:1539 cps/web.py:1543 +#: cps/web.py:1498 cps/web.py:1508 cps/web.py:1532 cps/web.py:1536 +#: cps/web.py:1541 cps/web.py:1545 msgid "register" msgstr "登録" -#: cps/web.py:1532 +#: cps/web.py:1534 msgid "Your e-mail is not allowed to register" msgstr "このメールアドレスは登録が許可されていません" -#: cps/web.py:1535 +#: cps/web.py:1537 msgid "Confirmation e-mail was send to your e-mail account." msgstr "確認メールがこのメールアドレスに送信されました。" -#: cps/web.py:1538 +#: cps/web.py:1540 msgid "This username or e-mail address is already in use." msgstr "このユーザ名またはメールアドレスはすでに使われています。" -#: cps/web.py:1555 +#: cps/web.py:1557 msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1572 +#: cps/web.py:1574 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "" -#: cps/web.py:1578 +#: cps/web.py:1580 #, python-format msgid "Could not login: %(message)s" msgstr "" -#: cps/web.py:1582 cps/web.py:1606 +#: cps/web.py:1584 cps/web.py:1608 msgid "Wrong Username or Password" msgstr "ユーザ名またはパスワードが違います" -#: cps/web.py:1589 +#: cps/web.py:1591 msgid "New Password was send to your email address" msgstr "" -#: cps/web.py:1595 +#: cps/web.py:1597 msgid "Please enter valid username to reset password" msgstr "" -#: cps/web.py:1601 +#: cps/web.py:1603 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "" -#: cps/web.py:1612 cps/web.py:1639 +#: cps/web.py:1614 cps/web.py:1641 msgid "login" msgstr "ログイン" -#: cps/web.py:1651 cps/web.py:1685 +#: cps/web.py:1653 cps/web.py:1687 msgid "Token not found" msgstr "トークンが見つかりません" -#: cps/web.py:1660 cps/web.py:1693 +#: cps/web.py:1662 cps/web.py:1695 msgid "Token has expired" msgstr "トークンが無効です" -#: cps/web.py:1669 +#: cps/web.py:1671 msgid "Success! Please return to your device" msgstr "成功です!端末に戻ってください" -#: cps/web.py:1753 cps/web.py:1809 +#: cps/web.py:1755 cps/web.py:1811 #, python-format msgid "%(name)s's profile" msgstr "%(name)s のプロフィール" -#: cps/web.py:1789 +#: cps/web.py:1791 msgid "Profile updated" msgstr "プロフィールを更新しました" -#: cps/web.py:1836 cps/web.py:1839 cps/web.py:1842 cps/web.py:1849 -#: cps/web.py:1854 +#: cps/web.py:1838 cps/web.py:1841 cps/web.py:1844 cps/web.py:1851 +#: cps/web.py:1856 msgid "Read a Book" msgstr "本を読む" diff --git a/cps/translations/km/LC_MESSAGES/messages.po b/cps/translations/km/LC_MESSAGES/messages.po index 8dd365b6..9829200d 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: 2020-10-31 19:17+0100\n" +"POT-Creation-Date: 2020-11-14 13:11+0100\n" "PO-Revision-Date: 2018-08-27 17:06+0700\n" "Last-Translator: \n" "Language: km_KH\n" @@ -23,7 +23,7 @@ msgstr "" msgid "installed" msgstr "" -#: cps/about.py:44 cps/converter.py:33 +#: cps/about.py:44 cps/converter.py:32 msgid "not installed" msgstr "មិនបានតម្លើង" @@ -47,351 +47,351 @@ msgstr "" msgid "Unknown command" msgstr "" -#: cps/admin.py:116 cps/editbooks.py:612 cps/editbooks.py:624 -#: cps/editbooks.py:724 cps/editbooks.py:726 cps/editbooks.py:787 -#: cps/editbooks.py:803 cps/updater.py:510 cps/uploader.py:98 +#: cps/admin.py:116 cps/editbooks.py:611 cps/editbooks.py:623 +#: cps/editbooks.py:723 cps/editbooks.py:725 cps/editbooks.py:786 +#: cps/editbooks.py:802 cps/updater.py:510 cps/uploader.py:98 #: cps/uploader.py:108 msgid "Unknown" msgstr "មិនដឹង" -#: cps/admin.py:136 +#: cps/admin.py:137 msgid "Admin page" msgstr "ទំព័ររដ្ឋបាល" -#: cps/admin.py:158 +#: cps/admin.py:159 msgid "UI Configuration" msgstr "ការកំណត់ផ្ទាំងប្រើប្រាស់" -#: cps/admin.py:190 cps/admin.py:717 +#: cps/admin.py:191 cps/admin.py:718 msgid "Calibre-Web configuration updated" msgstr "" -#: cps/admin.py:435 cps/admin.py:441 cps/admin.py:452 cps/admin.py:463 +#: cps/admin.py:436 cps/admin.py:442 cps/admin.py:453 cps/admin.py:464 #: cps/templates/modal_dialogs.html:29 msgid "Deny" msgstr "" -#: cps/admin.py:437 cps/admin.py:443 cps/admin.py:454 cps/admin.py:465 +#: cps/admin.py:438 cps/admin.py:444 cps/admin.py:455 cps/admin.py:466 #: cps/templates/modal_dialogs.html:28 msgid "Allow" msgstr "" -#: cps/admin.py:511 +#: cps/admin.py:512 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "" -#: cps/admin.py:550 +#: cps/admin.py:551 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:555 +#: cps/admin.py:556 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:581 +#: cps/admin.py:582 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "" -#: cps/admin.py:594 +#: cps/admin.py:595 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:597 +#: cps/admin.py:598 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:601 +#: cps/admin.py:602 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:604 +#: cps/admin.py:605 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:608 +#: cps/admin.py:609 msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:630 +#: cps/admin.py:631 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:634 +#: cps/admin.py:635 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:700 cps/admin.py:799 cps/admin.py:889 cps/admin.py:938 +#: cps/admin.py:701 cps/admin.py:800 cps/admin.py:890 cps/admin.py:939 #: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260 #: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:712 +#: cps/admin.py:713 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:714 +#: cps/admin.py:715 msgid "DB is not Writeable" msgstr "" -#: cps/admin.py:747 +#: cps/admin.py:748 msgid "Basic Configuration" msgstr "ការកំណត់សាមញ្ញ" -#: cps/admin.py:762 cps/web.py:1505 +#: cps/admin.py:763 cps/web.py:1507 msgid "Please fill out all fields!" msgstr "សូមបំពេញចន្លោះទាំងអស់!" -#: cps/admin.py:765 cps/admin.py:777 cps/admin.py:783 cps/admin.py:907 +#: cps/admin.py:766 cps/admin.py:778 cps/admin.py:784 cps/admin.py:908 msgid "Add new user" msgstr "បន្ថែមអ្នកប្រើប្រាស់ថ្មី" -#: cps/admin.py:774 cps/web.py:1751 +#: cps/admin.py:775 cps/web.py:1753 msgid "E-mail is not from valid domain" msgstr "" -#: cps/admin.py:781 cps/admin.py:796 +#: cps/admin.py:782 cps/admin.py:797 msgid "Found an existing account for this e-mail address or nickname." msgstr "" -#: cps/admin.py:792 +#: cps/admin.py:793 #, python-format msgid "User '%(user)s' created" msgstr "បានបង្កើតអ្នកប្រើប្រាស់ ‘%(user)s’" -#: cps/admin.py:808 +#: cps/admin.py:809 #, python-format msgid "User '%(nick)s' deleted" msgstr "អ្នកប្រើប្រាស់ ‘%(nick)s’ ត្រូវបានលុប" -#: cps/admin.py:811 +#: cps/admin.py:812 msgid "No admin user remaining, can't delete user" msgstr "" -#: cps/admin.py:817 +#: cps/admin.py:818 msgid "No admin user remaining, can't remove admin role" msgstr "" -#: cps/admin.py:853 cps/web.py:1793 +#: cps/admin.py:854 cps/web.py:1795 msgid "Found an existing account for this e-mail address." msgstr "" -#: cps/admin.py:862 cps/admin.py:876 cps/admin.py:979 cps/web.py:1769 +#: cps/admin.py:863 cps/admin.py:877 cps/admin.py:980 cps/web.py:1771 #, python-format msgid "Edit User %(nick)s" msgstr "កែប្រែអ្នកប្រើប្រាស់ %(nick)s" -#: cps/admin.py:868 cps/web.py:1762 +#: cps/admin.py:869 cps/web.py:1764 msgid "This username is already taken" msgstr "" -#: cps/admin.py:883 +#: cps/admin.py:884 #, python-format msgid "User '%(nick)s' updated" msgstr "អ្នកប្រើប្រាស់ ‘%(nick)s’ ត្រូវបានកែប្រែ" -#: cps/admin.py:886 +#: cps/admin.py:887 msgid "An unknown error occured." msgstr "បញ្ហាដែលមិនដឹងបានកើតឡើង។" -#: cps/admin.py:916 cps/templates/admin.html:71 +#: cps/admin.py:917 cps/templates/admin.html:71 msgid "Edit E-mail Server Settings" msgstr "ប្តូរការកំណត់ SMTP" -#: cps/admin.py:945 +#: cps/admin.py:946 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "" -#: cps/admin.py:948 +#: cps/admin.py:949 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "" -#: cps/admin.py:950 +#: cps/admin.py:951 msgid "Please configure your e-mail address first..." msgstr "" -#: cps/admin.py:952 +#: cps/admin.py:953 msgid "E-mail server settings updated" msgstr "" -#: cps/admin.py:963 +#: cps/admin.py:964 msgid "User not found" msgstr "" -#: cps/admin.py:990 +#: cps/admin.py:991 #, python-format msgid "Password for user %(user)s reset" msgstr "" -#: cps/admin.py:993 cps/web.py:1529 cps/web.py:1593 +#: cps/admin.py:994 cps/web.py:1531 cps/web.py:1595 msgid "An unknown error occurred. Please try again later." msgstr "" -#: cps/admin.py:996 cps/web.py:1467 +#: cps/admin.py:997 cps/web.py:1469 msgid "Please configure the SMTP mail settings first..." msgstr "សូមកំណត់អ៊ីមែល SMTP ជាមុនសិន" -#: cps/admin.py:1008 +#: cps/admin.py:1009 msgid "Logfile viewer" msgstr "" -#: cps/admin.py:1047 +#: cps/admin.py:1049 msgid "Requesting update package" msgstr "កំពុងស្នើសុំឯកសារបច្ចុប្បន្នភាព" -#: cps/admin.py:1048 +#: cps/admin.py:1050 msgid "Downloading update package" msgstr "កំពុងទាញយកឯកសារបច្ចុប្បន្នភាព" -#: cps/admin.py:1049 +#: cps/admin.py:1051 msgid "Unzipping update package" msgstr "កំពុងពន្លាឯកសារបច្ចុប្បន្នភាព" -#: cps/admin.py:1050 +#: cps/admin.py:1052 msgid "Replacing files" msgstr "" -#: cps/admin.py:1051 +#: cps/admin.py:1053 msgid "Database connections are closed" msgstr "ទំនាក់ទំនងទៅមូលដ្ឋានទិន្នន័យត្រូវបានផ្តាច់" -#: cps/admin.py:1052 +#: cps/admin.py:1054 msgid "Stopping server" msgstr "" -#: cps/admin.py:1053 +#: cps/admin.py:1055 msgid "Update finished, please press okay and reload page" msgstr "ការធ្វើបច្ចុប្បន្នភាពបានបញ្ចប់ សូមចុច okay រួចបើកទំព័រជាថ្មី" -#: cps/admin.py:1054 cps/admin.py:1055 cps/admin.py:1056 cps/admin.py:1057 -#: cps/admin.py:1058 +#: cps/admin.py:1056 cps/admin.py:1057 cps/admin.py:1058 cps/admin.py:1059 +#: cps/admin.py:1060 msgid "Update failed:" msgstr "" -#: cps/admin.py:1054 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 +#: cps/admin.py:1056 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 msgid "HTTP Error" msgstr "" -#: cps/admin.py:1055 cps/updater.py:322 cps/updater.py:525 +#: cps/admin.py:1057 cps/updater.py:322 cps/updater.py:525 msgid "Connection error" msgstr "" -#: cps/admin.py:1056 cps/updater.py:324 cps/updater.py:527 +#: cps/admin.py:1058 cps/updater.py:324 cps/updater.py:527 msgid "Timeout while establishing connection" msgstr "" -#: cps/admin.py:1057 cps/updater.py:326 cps/updater.py:529 +#: cps/admin.py:1059 cps/updater.py:326 cps/updater.py:529 msgid "General error" msgstr "" -#: cps/admin.py:1058 +#: cps/admin.py:1060 msgid "Update File Could Not be Saved in Temp Dir" msgstr "" -#: cps/converter.py:32 +#: cps/converter.py:31 msgid "not configured" msgstr "" -#: cps/converter.py:34 +#: cps/converter.py:33 msgid "Execution permissions missing" msgstr "" -#: cps/editbooks.py:273 cps/editbooks.py:275 +#: cps/editbooks.py:272 cps/editbooks.py:274 msgid "Book Format Successfully Deleted" msgstr "" -#: cps/editbooks.py:282 cps/editbooks.py:284 +#: cps/editbooks.py:281 cps/editbooks.py:283 msgid "Book Successfully Deleted" msgstr "" -#: cps/editbooks.py:293 cps/editbooks.py:596 cps/web.py:1824 cps/web.py:1865 -#: cps/web.py:1927 +#: cps/editbooks.py:292 cps/editbooks.py:595 cps/web.py:1826 cps/web.py:1867 +#: cps/web.py:1929 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "មានបញ្ហាពេលបើកឯកសារ eBook ។ ពុំមានឯកសារ ឬឯកសារនេះមិនអាចបើកបាន" -#: cps/editbooks.py:327 +#: cps/editbooks.py:326 msgid "edit metadata" msgstr "កែប្រែទិន្នន័យមេតា" -#: cps/editbooks.py:402 +#: cps/editbooks.py:401 #, python-format msgid "%(langname)s is not a valid language" msgstr "" -#: cps/editbooks.py:513 cps/editbooks.py:769 +#: cps/editbooks.py:512 cps/editbooks.py:768 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "ឯកសារប្រភេទ '%(ext)s' មិនត្រូវបានអនុញ្ញាតឲអាប់ឡូដទៅម៉ាស៊ីន server នេះទេ" -#: cps/editbooks.py:517 cps/editbooks.py:773 +#: cps/editbooks.py:516 cps/editbooks.py:772 msgid "File to be uploaded must have an extension" msgstr "ឯកសារដែលត្រូវអាប់ឡូដត្រូវមានកន្ទុយឯកសារ" -#: cps/editbooks.py:529 +#: cps/editbooks.py:528 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "មិនអាចបង្កើតទីតាំង %(path)s (ពុំមានសិទ្ធិ)។" -#: cps/editbooks.py:534 +#: cps/editbooks.py:533 #, python-format msgid "Failed to store file %(file)s." msgstr "មិនអាចរក្សាទុកឯកសារ %(file)s ។" -#: cps/editbooks.py:552 cps/editbooks.py:904 +#: cps/editbooks.py:551 cps/editbooks.py:903 #, python-format msgid "Database error: %(error)s." msgstr "" -#: cps/editbooks.py:556 +#: cps/editbooks.py:555 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "ឯកសារទម្រង់ %(ext)s ត្រូវបានបន្ថែមទៅ %(book)s" -#: cps/editbooks.py:673 +#: cps/editbooks.py:672 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:710 +#: cps/editbooks.py:709 msgid "Metadata successfully updated" msgstr "" -#: cps/editbooks.py:719 +#: cps/editbooks.py:718 msgid "Error editing book, please check logfile for details" msgstr "មានបញ្ហាពេលកែប្រែសៀវភៅ សូមពិនិត្យមើល logfile សម្រាប់ព័ត៌មានបន្ថែម" -#: cps/editbooks.py:781 +#: cps/editbooks.py:780 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "" -#: cps/editbooks.py:791 +#: cps/editbooks.py:790 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "" -#: cps/editbooks.py:879 +#: cps/editbooks.py:878 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "" -#: cps/editbooks.py:890 +#: cps/editbooks.py:889 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:916 +#: cps/editbooks.py:915 msgid "Source or destination format for conversion missing" msgstr "" -#: cps/editbooks.py:924 +#: cps/editbooks.py:923 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "" -#: cps/editbooks.py:928 +#: cps/editbooks.py:927 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "" @@ -581,7 +581,7 @@ msgstr "" msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:225 cps/web.py:1565 cps/web.py:1707 +#: cps/oauth_bb.py:225 cps/web.py:1567 cps/web.py:1709 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "ឥឡូវអ្នកបានចូលដោយមានឈ្មោះថា៖ ‘%(nickname)s’" @@ -741,7 +741,7 @@ msgstr "" msgid "Show Downloaded Books" msgstr "" -#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:639 +#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:641 msgid "Top Rated Books" msgstr "សៀវភៅដែលមានការវាយតម្លៃល្អជាងគេ" @@ -750,7 +750,7 @@ msgid "Show Top Rated Books" msgstr "បង្ហាញសៀវភៅដែលមានការវាយតម្លៃល្អជាងគេ" #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:82 -#: cps/web.py:900 +#: cps/web.py:902 msgid "Read Books" msgstr "សៀវភៅដែលបានអានរួច" @@ -759,7 +759,7 @@ msgid "Show read and unread" msgstr "បង្ហាញអានរួច និងមិនទាន់អាន" #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:86 -#: cps/web.py:903 +#: cps/web.py:905 msgid "Unread Books" msgstr "សៀវភៅដែលមិនទាន់បានអាន" @@ -776,7 +776,7 @@ msgid "Show random books" msgstr "បង្ហាញសៀវភៅចៃដន្យ" #: cps/templates/book_table.html:50 cps/templates/index.xml:75 cps/ub.py:92 -#: cps/web.py:1204 +#: cps/web.py:1206 msgid "Categories" msgstr "ប្រភេទនានា" @@ -786,7 +786,7 @@ msgstr "បង្ហាញជម្រើសប្រភេទ" #: cps/templates/book_edit.html:84 cps/templates/book_table.html:51 #: cps/templates/index.xml:82 cps/templates/search_form.html:54 cps/ub.py:95 -#: cps/web.py:1108 cps/web.py:1118 +#: cps/web.py:1110 cps/web.py:1120 msgid "Series" msgstr "ស៊េរី" @@ -803,7 +803,7 @@ msgid "Show author selection" msgstr "បង្ហាញជម្រើសអ្នកនិពន្ធ" #: cps/templates/book_table.html:55 cps/templates/index.xml:68 cps/ub.py:102 -#: cps/web.py:1087 +#: cps/web.py:1089 msgid "Publishers" msgstr "" @@ -812,7 +812,7 @@ msgid "Show publisher selection" msgstr "" #: cps/templates/book_table.html:53 cps/templates/index.xml:89 -#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1183 +#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1185 msgid "Languages" msgstr "ភាសានានា" @@ -836,7 +836,7 @@ msgstr "" msgid "Show file formats selection" msgstr "" -#: cps/ub.py:116 cps/web.py:927 +#: cps/ub.py:116 cps/web.py:929 msgid "Archived Books" msgstr "" @@ -881,225 +881,225 @@ msgstr "" msgid "Click on the button below to update to the latest stable version." msgstr "" -#: cps/web.py:316 +#: cps/web.py:318 #, python-format msgid "Error: %(ldaperror)s" msgstr "" -#: cps/web.py:320 +#: cps/web.py:322 msgid "Error: No user returned in response of LDAP server" msgstr "" -#: cps/web.py:368 +#: cps/web.py:370 msgid "Failed to Create at Least One LDAP User" msgstr "" -#: cps/web.py:371 +#: cps/web.py:373 msgid "At Least One LDAP User Not Found in Database" msgstr "" -#: cps/web.py:373 +#: cps/web.py:375 msgid "User Successfully Imported" msgstr "" -#: cps/templates/index.html:5 cps/web.py:647 +#: cps/templates/index.html:5 cps/web.py:649 msgid "Discover (Random Books)" msgstr "ស្រាវជ្រាវ (សៀវភៅចៃដន្យ)" -#: cps/web.py:686 +#: cps/web.py:688 msgid "Books" msgstr "" -#: cps/web.py:713 +#: cps/web.py:715 msgid "Hot Books (Most Downloaded)" msgstr "សៀវភៅដែលត្រូវបានទាញយកច្រើនជាងគេ" -#: cps/web.py:748 +#: cps/web.py:750 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:762 +#: cps/web.py:764 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "" -#: cps/web.py:776 +#: cps/web.py:778 #, python-format msgid "Author: %(name)s" msgstr "" -#: cps/web.py:790 +#: cps/web.py:792 #, python-format msgid "Publisher: %(name)s" msgstr "" -#: cps/web.py:803 +#: cps/web.py:805 #, python-format msgid "Series: %(serie)s" msgstr "ស៊េរី៖ %(serie)s" -#: cps/web.py:816 +#: cps/web.py:818 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:829 +#: cps/web.py:831 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:843 +#: cps/web.py:845 #, python-format msgid "Category: %(name)s" msgstr "ប្រភេទ៖ %(name)s" -#: cps/web.py:862 +#: cps/web.py:864 #, python-format msgid "Language: %(name)s" msgstr "ភាសា៖ %(name)s" -#: cps/web.py:891 +#: cps/web.py:893 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:958 cps/web.py:1407 +#: cps/templates/layout.html:56 cps/web.py:960 cps/web.py:1409 msgid "Advanced Search" msgstr "ស្វែងរកកម្រិតខ្ពស់" #: cps/templates/book_edit.html:213 cps/templates/feed.xml:33 #: cps/templates/layout.html:45 cps/templates/layout.html:48 -#: cps/templates/search_form.html:175 cps/web.py:970 cps/web.py:1241 +#: cps/templates/search_form.html:175 cps/web.py:972 cps/web.py:1243 msgid "Search" msgstr "ស្វែងរក" -#: cps/web.py:998 +#: cps/web.py:1000 msgid "Books list" msgstr "" -#: cps/web.py:1136 +#: cps/web.py:1138 msgid "Ratings list" msgstr "" -#: cps/web.py:1155 +#: cps/web.py:1157 msgid "File formats list" msgstr "" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1218 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1220 msgid "Tasks" msgstr "កិច្ចការនានា" -#: cps/web.py:1303 +#: cps/web.py:1305 msgid "Published after " msgstr "បានបោះពុម្ភក្រោយ " -#: cps/web.py:1310 +#: cps/web.py:1312 msgid "Published before " msgstr "បានបោះពុម្ភមុន " -#: cps/web.py:1325 +#: cps/web.py:1327 #, python-format msgid "Rating <= %(rating)s" msgstr "ការវាយតម្លៃ <= %(rating)s" -#: cps/web.py:1327 +#: cps/web.py:1329 #, python-format msgid "Rating >= %(rating)s" msgstr "ការវាយតម្លៃ >= %(rating)s" -#: cps/web.py:1472 +#: cps/web.py:1474 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "សៀវភៅបានចូលជួរសម្រាប់ផ្ញើទៅ %(kindlemail)s ដោយជោគជ័យ" -#: cps/web.py:1476 +#: cps/web.py:1478 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "មានបញ្ហានៅពេលផ្ញើសៀវភៅនេះ៖ %(res)s" -#: cps/web.py:1478 +#: cps/web.py:1480 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "" -#: cps/web.py:1495 +#: cps/web.py:1497 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "" -#: cps/web.py:1496 cps/web.py:1506 cps/web.py:1530 cps/web.py:1534 -#: cps/web.py:1539 cps/web.py:1543 +#: cps/web.py:1498 cps/web.py:1508 cps/web.py:1532 cps/web.py:1536 +#: cps/web.py:1541 cps/web.py:1545 msgid "register" msgstr "ចុះឈ្មោះ" -#: cps/web.py:1532 +#: cps/web.py:1534 msgid "Your e-mail is not allowed to register" msgstr "" -#: cps/web.py:1535 +#: cps/web.py:1537 msgid "Confirmation e-mail was send to your e-mail account." msgstr "" -#: cps/web.py:1538 +#: cps/web.py:1540 msgid "This username or e-mail address is already in use." msgstr "" -#: cps/web.py:1555 +#: cps/web.py:1557 msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1572 +#: cps/web.py:1574 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "" -#: cps/web.py:1578 +#: cps/web.py:1580 #, python-format msgid "Could not login: %(message)s" msgstr "" -#: cps/web.py:1582 cps/web.py:1606 +#: cps/web.py:1584 cps/web.py:1608 msgid "Wrong Username or Password" msgstr "ខុសឈ្មោះអ្នកប្រើប្រាស់ ឬលេខសម្ងាត់" -#: cps/web.py:1589 +#: cps/web.py:1591 msgid "New Password was send to your email address" msgstr "" -#: cps/web.py:1595 +#: cps/web.py:1597 msgid "Please enter valid username to reset password" msgstr "" -#: cps/web.py:1601 +#: cps/web.py:1603 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "" -#: cps/web.py:1612 cps/web.py:1639 +#: cps/web.py:1614 cps/web.py:1641 msgid "login" msgstr "ចូលប្រើ" -#: cps/web.py:1651 cps/web.py:1685 +#: cps/web.py:1653 cps/web.py:1687 msgid "Token not found" msgstr "រកមិនឃើញវត្ថុតាង" -#: cps/web.py:1660 cps/web.py:1693 +#: cps/web.py:1662 cps/web.py:1695 msgid "Token has expired" msgstr "វត្ថុតាងហួសពេលកំណត់" -#: cps/web.py:1669 +#: cps/web.py:1671 msgid "Success! Please return to your device" msgstr "ជោគជ័យ! សូមវិលមកឧបករណ៍អ្នកវិញ" -#: cps/web.py:1753 cps/web.py:1809 +#: cps/web.py:1755 cps/web.py:1811 #, python-format msgid "%(name)s's profile" msgstr "ព័ត៌មានសង្ខេបរបស់ %(name)s" -#: cps/web.py:1789 +#: cps/web.py:1791 msgid "Profile updated" msgstr "ព័ត៌មានសង្ខេបបានកែប្រែ" -#: cps/web.py:1836 cps/web.py:1839 cps/web.py:1842 cps/web.py:1849 -#: cps/web.py:1854 +#: cps/web.py:1838 cps/web.py:1841 cps/web.py:1844 cps/web.py:1851 +#: cps/web.py:1856 msgid "Read a Book" msgstr "អានសៀវភៅ" diff --git a/cps/translations/nl/LC_MESSAGES/messages.po b/cps/translations/nl/LC_MESSAGES/messages.po index e08d0de6..f05aa8a7 100644 --- a/cps/translations/nl/LC_MESSAGES/messages.po +++ b/cps/translations/nl/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web (GPLV3)\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2020-10-31 19:17+0100\n" +"POT-Creation-Date: 2020-11-14 13:11+0100\n" "PO-Revision-Date: 2020-05-10 21:00+0200\n" "Last-Translator: Marcel Maas \n" "Language: nl\n" @@ -23,7 +23,7 @@ msgstr "" msgid "installed" msgstr "geïnstalleerd" -#: cps/about.py:44 cps/converter.py:33 +#: cps/about.py:44 cps/converter.py:32 msgid "not installed" msgstr "niet geïnstalleerd" @@ -47,351 +47,351 @@ msgstr "Opnieuw verbinden gelukt" msgid "Unknown command" msgstr "Onbekende opdracht" -#: cps/admin.py:116 cps/editbooks.py:612 cps/editbooks.py:624 -#: cps/editbooks.py:724 cps/editbooks.py:726 cps/editbooks.py:787 -#: cps/editbooks.py:803 cps/updater.py:510 cps/uploader.py:98 +#: cps/admin.py:116 cps/editbooks.py:611 cps/editbooks.py:623 +#: cps/editbooks.py:723 cps/editbooks.py:725 cps/editbooks.py:786 +#: cps/editbooks.py:802 cps/updater.py:510 cps/uploader.py:98 #: cps/uploader.py:108 msgid "Unknown" msgstr "Onbekend" -#: cps/admin.py:136 +#: cps/admin.py:137 msgid "Admin page" msgstr "Systeembeheer" -#: cps/admin.py:158 +#: cps/admin.py:159 msgid "UI Configuration" msgstr "Uiterlijk aanpassen" -#: cps/admin.py:190 cps/admin.py:717 +#: cps/admin.py:191 cps/admin.py:718 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web-configuratie bijgewerkt" -#: cps/admin.py:435 cps/admin.py:441 cps/admin.py:452 cps/admin.py:463 +#: cps/admin.py:436 cps/admin.py:442 cps/admin.py:453 cps/admin.py:464 #: cps/templates/modal_dialogs.html:29 msgid "Deny" msgstr "Weigeren" -#: cps/admin.py:437 cps/admin.py:443 cps/admin.py:454 cps/admin.py:465 +#: cps/admin.py:438 cps/admin.py:444 cps/admin.py:455 cps/admin.py:466 #: cps/templates/modal_dialogs.html:28 msgid "Allow" msgstr "Toestaan" -#: cps/admin.py:511 +#: cps/admin.py:512 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json is niet geconfigureerd voor webapplicatie" -#: cps/admin.py:550 +#: cps/admin.py:551 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "De locatie van het logbestand is onjuist, voer een geldige locatie in" -#: cps/admin.py:555 +#: cps/admin.py:556 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "De locatie vam het toegangslog is onjuist, voer een geldige locatie in" -#: cps/admin.py:581 +#: cps/admin.py:582 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "" -#: cps/admin.py:594 +#: cps/admin.py:595 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:597 +#: cps/admin.py:598 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:601 +#: cps/admin.py:602 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:604 +#: cps/admin.py:605 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:608 +#: cps/admin.py:609 msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path" msgstr "LDAP certificaatlocatie is onjuist, voer een geldige locatie in" -#: cps/admin.py:630 +#: cps/admin.py:631 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "SSL-sleutellocatie is niet geldig, voer een geldige locatie in" -#: cps/admin.py:634 +#: cps/admin.py:635 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "SSL-certificaatlocatie is niet geldig, voer een geldige locatie in" -#: cps/admin.py:700 cps/admin.py:799 cps/admin.py:889 cps/admin.py:938 +#: cps/admin.py:701 cps/admin.py:800 cps/admin.py:890 cps/admin.py:939 #: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260 #: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:712 +#: cps/admin.py:713 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "Database niet gevonden, voer de juiste locatie in" -#: cps/admin.py:714 +#: cps/admin.py:715 msgid "DB is not Writeable" msgstr "" -#: cps/admin.py:747 +#: cps/admin.py:748 msgid "Basic Configuration" msgstr "Basis configuratie" -#: cps/admin.py:762 cps/web.py:1505 +#: cps/admin.py:763 cps/web.py:1507 msgid "Please fill out all fields!" msgstr "Vul alle velden in!" -#: cps/admin.py:765 cps/admin.py:777 cps/admin.py:783 cps/admin.py:907 +#: cps/admin.py:766 cps/admin.py:778 cps/admin.py:784 cps/admin.py:908 msgid "Add new user" msgstr "Gebruiker toevoegen" -#: cps/admin.py:774 cps/web.py:1751 +#: cps/admin.py:775 cps/web.py:1753 msgid "E-mail is not from valid domain" msgstr "Het e-mailadres bevat geen geldige domeinnaam" -#: cps/admin.py:781 cps/admin.py:796 +#: cps/admin.py:782 cps/admin.py:797 msgid "Found an existing account for this e-mail address or nickname." msgstr "Bestaand account met dit e-mailadres of deze gebruikersnaam aangetroffen." -#: cps/admin.py:792 +#: cps/admin.py:793 #, python-format msgid "User '%(user)s' created" msgstr "Gebruiker '%(user)s' aangemaakt" -#: cps/admin.py:808 +#: cps/admin.py:809 #, python-format msgid "User '%(nick)s' deleted" msgstr "Gebruiker '%(nick)s' verwijderd" -#: cps/admin.py:811 +#: cps/admin.py:812 msgid "No admin user remaining, can't delete user" msgstr "Kan laatste systeembeheerder niet verwijderen" -#: cps/admin.py:817 +#: cps/admin.py:818 msgid "No admin user remaining, can't remove admin role" msgstr "Kan systeembeheerder rol niet verwijderen van de laatste systeembeheerder" -#: cps/admin.py:853 cps/web.py:1793 +#: cps/admin.py:854 cps/web.py:1795 msgid "Found an existing account for this e-mail address." msgstr "Bestaand account met dit e-mailadres aangetroffen." -#: cps/admin.py:862 cps/admin.py:876 cps/admin.py:979 cps/web.py:1769 +#: cps/admin.py:863 cps/admin.py:877 cps/admin.py:980 cps/web.py:1771 #, python-format msgid "Edit User %(nick)s" msgstr "Gebruiker '%(nick)s' bewerken" -#: cps/admin.py:868 cps/web.py:1762 +#: cps/admin.py:869 cps/web.py:1764 msgid "This username is already taken" msgstr "Deze gebruikersnaam is al in gebruik" -#: cps/admin.py:883 +#: cps/admin.py:884 #, python-format msgid "User '%(nick)s' updated" msgstr "Gebruiker '%(nick)s' bijgewerkt" -#: cps/admin.py:886 +#: cps/admin.py:887 msgid "An unknown error occured." msgstr "Er is een onbekende fout opgetreden." -#: cps/admin.py:916 cps/templates/admin.html:71 +#: cps/admin.py:917 cps/templates/admin.html:71 msgid "Edit E-mail Server Settings" msgstr "SMTP-instellingen bewerken" -#: cps/admin.py:945 +#: cps/admin.py:946 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "Test-e-mail verstuurd naar %(kindlemail)s" -#: cps/admin.py:948 +#: cps/admin.py:949 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Fout opgetreden bij het versturen van de test-e-mail: %(res)s" -#: cps/admin.py:950 +#: cps/admin.py:951 msgid "Please configure your e-mail address first..." msgstr "Gelieve eerst je e-mail adres configureren..." -#: cps/admin.py:952 +#: cps/admin.py:953 msgid "E-mail server settings updated" msgstr "E-mailserver-instellingen bijgewerkt" -#: cps/admin.py:963 +#: cps/admin.py:964 msgid "User not found" msgstr "Gebruiker niet gevonden" -#: cps/admin.py:990 +#: cps/admin.py:991 #, python-format msgid "Password for user %(user)s reset" msgstr "Wachtwoord voor gebruiker %(user)s is hersteld" -#: cps/admin.py:993 cps/web.py:1529 cps/web.py:1593 +#: cps/admin.py:994 cps/web.py:1531 cps/web.py:1595 msgid "An unknown error occurred. Please try again later." msgstr "Onbekende fout opgetreden. Probeer het later nog eens." -#: cps/admin.py:996 cps/web.py:1467 +#: cps/admin.py:997 cps/web.py:1469 msgid "Please configure the SMTP mail settings first..." msgstr "Stel eerst SMTP-mail in..." -#: cps/admin.py:1008 +#: cps/admin.py:1009 msgid "Logfile viewer" msgstr "Logbestand lezer" -#: cps/admin.py:1047 +#: cps/admin.py:1049 msgid "Requesting update package" msgstr "Update opvragen" -#: cps/admin.py:1048 +#: cps/admin.py:1050 msgid "Downloading update package" msgstr "Update downloaden" -#: cps/admin.py:1049 +#: cps/admin.py:1051 msgid "Unzipping update package" msgstr "Update uitpakken" -#: cps/admin.py:1050 +#: cps/admin.py:1052 msgid "Replacing files" msgstr "Update toepassen" -#: cps/admin.py:1051 +#: cps/admin.py:1053 msgid "Database connections are closed" msgstr "Databaseverbindingen zijn gesloten" -#: cps/admin.py:1052 +#: cps/admin.py:1054 msgid "Stopping server" msgstr "Bezig met stoppen van Calibre-Web" -#: cps/admin.py:1053 +#: cps/admin.py:1055 msgid "Update finished, please press okay and reload page" msgstr "Update voltooid, klik op 'Oké' en vernieuw de pagina" -#: cps/admin.py:1054 cps/admin.py:1055 cps/admin.py:1056 cps/admin.py:1057 -#: cps/admin.py:1058 +#: cps/admin.py:1056 cps/admin.py:1057 cps/admin.py:1058 cps/admin.py:1059 +#: cps/admin.py:1060 msgid "Update failed:" msgstr "Update mislukt:" -#: cps/admin.py:1054 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 +#: cps/admin.py:1056 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 msgid "HTTP Error" msgstr "HTTP-fout" -#: cps/admin.py:1055 cps/updater.py:322 cps/updater.py:525 +#: cps/admin.py:1057 cps/updater.py:322 cps/updater.py:525 msgid "Connection error" msgstr "Verbindingsfout" -#: cps/admin.py:1056 cps/updater.py:324 cps/updater.py:527 +#: cps/admin.py:1058 cps/updater.py:324 cps/updater.py:527 msgid "Timeout while establishing connection" msgstr "Time-out tijdens maken van verbinding" -#: cps/admin.py:1057 cps/updater.py:326 cps/updater.py:529 +#: cps/admin.py:1059 cps/updater.py:326 cps/updater.py:529 msgid "General error" msgstr "Algemene fout" -#: cps/admin.py:1058 +#: cps/admin.py:1060 msgid "Update File Could Not be Saved in Temp Dir" msgstr "Geüpload bestand kon niet opgeslagen worden in de tijdelijke map" -#: cps/converter.py:32 +#: cps/converter.py:31 msgid "not configured" msgstr "niet geconfigureerd" -#: cps/converter.py:34 +#: cps/converter.py:33 msgid "Execution permissions missing" msgstr "" -#: cps/editbooks.py:273 cps/editbooks.py:275 +#: cps/editbooks.py:272 cps/editbooks.py:274 msgid "Book Format Successfully Deleted" msgstr "Het boekformaat is verwijderd" -#: cps/editbooks.py:282 cps/editbooks.py:284 +#: cps/editbooks.py:281 cps/editbooks.py:283 msgid "Book Successfully Deleted" msgstr "Het boek is verwijderd" -#: cps/editbooks.py:293 cps/editbooks.py:596 cps/web.py:1824 cps/web.py:1865 -#: cps/web.py:1927 +#: cps/editbooks.py:292 cps/editbooks.py:595 cps/web.py:1826 cps/web.py:1867 +#: cps/web.py:1929 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Kan e-boek niet openen: het bestand bestaat niet of is ontoegankelijk" -#: cps/editbooks.py:327 +#: cps/editbooks.py:326 msgid "edit metadata" msgstr "metagegevens bewerken" -#: cps/editbooks.py:402 +#: cps/editbooks.py:401 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s is geen geldige taal" -#: cps/editbooks.py:513 cps/editbooks.py:769 +#: cps/editbooks.py:512 cps/editbooks.py:768 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "De bestandsextensie '%(ext)s' is niet toegestaan op deze server" -#: cps/editbooks.py:517 cps/editbooks.py:773 +#: cps/editbooks.py:516 cps/editbooks.py:772 msgid "File to be uploaded must have an extension" msgstr "Het te uploaden bestand moet voorzien zijn van een extensie" -#: cps/editbooks.py:529 +#: cps/editbooks.py:528 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Kan de locatie '%(path)s' niet aanmaken (niet gemachtigd)." -#: cps/editbooks.py:534 +#: cps/editbooks.py:533 #, python-format msgid "Failed to store file %(file)s." msgstr "Kan %(file)s niet opslaan." -#: cps/editbooks.py:552 cps/editbooks.py:904 +#: cps/editbooks.py:551 cps/editbooks.py:903 #, python-format msgid "Database error: %(error)s." msgstr "" -#: cps/editbooks.py:556 +#: cps/editbooks.py:555 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Bestandsformaat %(ext)s toegevoegd aan %(book)s" -#: cps/editbooks.py:673 +#: cps/editbooks.py:672 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:710 +#: cps/editbooks.py:709 msgid "Metadata successfully updated" msgstr "De metagegevens zijn bijgewerkt" -#: cps/editbooks.py:719 +#: cps/editbooks.py:718 msgid "Error editing book, please check logfile for details" msgstr "Kan het boek niet bewerken, controleer het logbestand" -#: cps/editbooks.py:781 +#: cps/editbooks.py:780 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "Bestand %(filename)s kon niet opgeslagen worden in de tijdelijke map" -#: cps/editbooks.py:791 +#: cps/editbooks.py:790 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Geüpload boek staat mogelijk al in de bibliotheek, controleer alvorens door te gaan: " -#: cps/editbooks.py:879 +#: cps/editbooks.py:878 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "Omslag %(file)s niet verplaatst: %(error)s" -#: cps/editbooks.py:890 +#: cps/editbooks.py:889 #, python-format msgid "File %(file)s uploaded" msgstr "Bestand %(file)s geüpload" -#: cps/editbooks.py:916 +#: cps/editbooks.py:915 msgid "Source or destination format for conversion missing" msgstr "Bron- of doelformaat ontbreekt voor conversie" -#: cps/editbooks.py:924 +#: cps/editbooks.py:923 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Het boek is in de wachtrij geplaatst voor conversie naar %(book_format)s" -#: cps/editbooks.py:928 +#: cps/editbooks.py:927 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Er is een fout opgetreden bij het converteren van dit boek: %(res)s" @@ -581,7 +581,7 @@ msgstr "Inloggen bij Google mislukt." msgid "Failed to fetch user info from Google." msgstr "Opvragen gebruikersinfo bij Google mislukt." -#: cps/oauth_bb.py:225 cps/web.py:1565 cps/web.py:1707 +#: cps/oauth_bb.py:225 cps/web.py:1567 cps/web.py:1709 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "je bent ingelogd als: '%(nickname)s'" @@ -741,7 +741,7 @@ msgstr "" msgid "Show Downloaded Books" msgstr "" -#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:639 +#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:641 msgid "Top Rated Books" msgstr "Best beoordeelde boeken" @@ -750,7 +750,7 @@ msgid "Show Top Rated Books" msgstr "Best beoordeelde boeken tonen" #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:82 -#: cps/web.py:900 +#: cps/web.py:902 msgid "Read Books" msgstr "Gelezen boeken" @@ -759,7 +759,7 @@ msgid "Show read and unread" msgstr "Gelezen/Ongelezen boeken tonen" #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:86 -#: cps/web.py:903 +#: cps/web.py:905 msgid "Unread Books" msgstr "Ongelezen boeken" @@ -776,7 +776,7 @@ msgid "Show random books" msgstr "Willekeurige boeken tonen" #: cps/templates/book_table.html:50 cps/templates/index.xml:75 cps/ub.py:92 -#: cps/web.py:1204 +#: cps/web.py:1206 msgid "Categories" msgstr "Categorieën" @@ -786,7 +786,7 @@ msgstr "Categoriekeuze tonen" #: cps/templates/book_edit.html:84 cps/templates/book_table.html:51 #: cps/templates/index.xml:82 cps/templates/search_form.html:54 cps/ub.py:95 -#: cps/web.py:1108 cps/web.py:1118 +#: cps/web.py:1110 cps/web.py:1120 msgid "Series" msgstr "Boekenreeksen" @@ -803,7 +803,7 @@ msgid "Show author selection" msgstr "Auteurkeuze tonen" #: cps/templates/book_table.html:55 cps/templates/index.xml:68 cps/ub.py:102 -#: cps/web.py:1087 +#: cps/web.py:1089 msgid "Publishers" msgstr "Uitgevers" @@ -812,7 +812,7 @@ msgid "Show publisher selection" msgstr "Uitgeverskeuze tonen" #: cps/templates/book_table.html:53 cps/templates/index.xml:89 -#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1183 +#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1185 msgid "Languages" msgstr "Talen" @@ -836,7 +836,7 @@ msgstr "Bestandsformaten" msgid "Show file formats selection" msgstr "Bestandsformaten tonen" -#: cps/ub.py:116 cps/web.py:927 +#: cps/ub.py:116 cps/web.py:929 msgid "Archived Books" msgstr "Gearchiveerde boeken" @@ -881,225 +881,225 @@ msgstr "Er is een update beschikbaar. Klik op de knop hieronder om te updaten na msgid "Click on the button below to update to the latest stable version." msgstr "Klik op onderstaande knop om de laatste stabiele versie te installeren." -#: cps/web.py:316 +#: cps/web.py:318 #, python-format msgid "Error: %(ldaperror)s" msgstr "Fout: %(ldaperror)s" -#: cps/web.py:320 +#: cps/web.py:322 msgid "Error: No user returned in response of LDAP server" msgstr "Fout: No user returned in response of LDAP server" -#: cps/web.py:368 +#: cps/web.py:370 msgid "Failed to Create at Least One LDAP User" msgstr "" -#: cps/web.py:371 +#: cps/web.py:373 msgid "At Least One LDAP User Not Found in Database" msgstr "" -#: cps/web.py:373 +#: cps/web.py:375 msgid "User Successfully Imported" msgstr "Gebruiker is geïmporteerd" -#: cps/templates/index.html:5 cps/web.py:647 +#: cps/templates/index.html:5 cps/web.py:649 msgid "Discover (Random Books)" msgstr "Verkennen (willekeurige boeken)" -#: cps/web.py:686 +#: cps/web.py:688 msgid "Books" msgstr "Boeken" -#: cps/web.py:713 +#: cps/web.py:715 msgid "Hot Books (Most Downloaded)" msgstr "Populaire boeken (meest gedownload)" -#: cps/web.py:748 +#: cps/web.py:750 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:762 +#: cps/web.py:764 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Oeps! Geselecteerd boek is niet beschikbaar. Bestand bestaat niet of is niet toegankelijk" -#: cps/web.py:776 +#: cps/web.py:778 #, python-format msgid "Author: %(name)s" msgstr "Auteur: %(name)s" -#: cps/web.py:790 +#: cps/web.py:792 #, python-format msgid "Publisher: %(name)s" msgstr "Uitgever: %(name)s" -#: cps/web.py:803 +#: cps/web.py:805 #, python-format msgid "Series: %(serie)s" msgstr "Reeks: %(serie)s" -#: cps/web.py:816 +#: cps/web.py:818 #, python-format msgid "Rating: %(rating)s stars" msgstr "Beoordeling: %(rating)s sterren" -#: cps/web.py:829 +#: cps/web.py:831 #, python-format msgid "File format: %(format)s" msgstr "Bestandsformaat: %(format)s" -#: cps/web.py:843 +#: cps/web.py:845 #, python-format msgid "Category: %(name)s" msgstr "Categorie: %(name)s" -#: cps/web.py:862 +#: cps/web.py:864 #, python-format msgid "Language: %(name)s" msgstr "Taal: %(name)s" -#: cps/web.py:891 +#: cps/web.py:893 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:958 cps/web.py:1407 +#: cps/templates/layout.html:56 cps/web.py:960 cps/web.py:1409 msgid "Advanced Search" msgstr "Geavanceerd zoeken" #: cps/templates/book_edit.html:213 cps/templates/feed.xml:33 #: cps/templates/layout.html:45 cps/templates/layout.html:48 -#: cps/templates/search_form.html:175 cps/web.py:970 cps/web.py:1241 +#: cps/templates/search_form.html:175 cps/web.py:972 cps/web.py:1243 msgid "Search" msgstr "Zoeken" -#: cps/web.py:998 +#: cps/web.py:1000 msgid "Books list" msgstr "" -#: cps/web.py:1136 +#: cps/web.py:1138 msgid "Ratings list" msgstr "Beoordelingen" -#: cps/web.py:1155 +#: cps/web.py:1157 msgid "File formats list" msgstr "Alle bestandsformaten" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1218 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1220 msgid "Tasks" msgstr "Taken" -#: cps/web.py:1303 +#: cps/web.py:1305 msgid "Published after " msgstr "Gepubliceerd na " -#: cps/web.py:1310 +#: cps/web.py:1312 msgid "Published before " msgstr "Gepubliceerd vóór " -#: cps/web.py:1325 +#: cps/web.py:1327 #, python-format msgid "Rating <= %(rating)s" msgstr "Beoordeling <= %(rating)s" -#: cps/web.py:1327 +#: cps/web.py:1329 #, python-format msgid "Rating >= %(rating)s" msgstr "Beoordeling >= %(rating)s" -#: cps/web.py:1472 +#: cps/web.py:1474 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Het boek is in de wachtrij geplaatst om te worden verstuurd aan %(kindlemail)s" -#: cps/web.py:1476 +#: cps/web.py:1478 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Fout opgetreden bij het versturen van dit boek: %(res)s" -#: cps/web.py:1478 +#: cps/web.py:1480 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Stel je kindle-e-mailadres in..." -#: cps/web.py:1495 +#: cps/web.py:1497 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "E-mailserver is niet geconfigureerd, neem contact op met de beheerder!" -#: cps/web.py:1496 cps/web.py:1506 cps/web.py:1530 cps/web.py:1534 -#: cps/web.py:1539 cps/web.py:1543 +#: cps/web.py:1498 cps/web.py:1508 cps/web.py:1532 cps/web.py:1536 +#: cps/web.py:1541 cps/web.py:1545 msgid "register" msgstr "registreren" -#: cps/web.py:1532 +#: cps/web.py:1534 msgid "Your e-mail is not allowed to register" msgstr "Dit e-mailadres mag niet worden gebruikt voor registratie" -#: cps/web.py:1535 +#: cps/web.py:1537 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Er is een bevestigings-e-mail verstuurd naar je e-mailadres." -#: cps/web.py:1538 +#: cps/web.py:1540 msgid "This username or e-mail address is already in use." msgstr "Gebruikersnaam of e-mailadres is al in gebruik." -#: cps/web.py:1555 +#: cps/web.py:1557 msgid "Cannot activate LDAP authentication" msgstr "Kan de LDAP authenticatie niet activeren" -#: cps/web.py:1572 +#: cps/web.py:1574 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "" -#: cps/web.py:1578 +#: cps/web.py:1580 #, python-format msgid "Could not login: %(message)s" msgstr "Inloggen mislukt: %(message)s" -#: cps/web.py:1582 cps/web.py:1606 +#: cps/web.py:1584 cps/web.py:1608 msgid "Wrong Username or Password" msgstr "Verkeerde gebruikersnaam of wachtwoord" -#: cps/web.py:1589 +#: cps/web.py:1591 msgid "New Password was send to your email address" msgstr "Een nieuw wachtwoord is verzonden naar je e-mailadres" -#: cps/web.py:1595 +#: cps/web.py:1597 msgid "Please enter valid username to reset password" msgstr "Geef een geldige gebruikersnaam op om je wachtwoord te herstellen" -#: cps/web.py:1601 +#: cps/web.py:1603 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Je bent ingelogd als: '%(nickname)s'" -#: cps/web.py:1612 cps/web.py:1639 +#: cps/web.py:1614 cps/web.py:1641 msgid "login" msgstr "inloggen" -#: cps/web.py:1651 cps/web.py:1685 +#: cps/web.py:1653 cps/web.py:1687 msgid "Token not found" msgstr "Toegangssleutel niet gevonden" -#: cps/web.py:1660 cps/web.py:1693 +#: cps/web.py:1662 cps/web.py:1695 msgid "Token has expired" msgstr "Toegangssleutel is verlopen" -#: cps/web.py:1669 +#: cps/web.py:1671 msgid "Success! Please return to your device" msgstr "Gelukt! Ga terug naar je apparaat" -#: cps/web.py:1753 cps/web.py:1809 +#: cps/web.py:1755 cps/web.py:1811 #, python-format msgid "%(name)s's profile" msgstr "%(name)s's profiel" -#: cps/web.py:1789 +#: cps/web.py:1791 msgid "Profile updated" msgstr "Profiel bijgewerkt" -#: cps/web.py:1836 cps/web.py:1839 cps/web.py:1842 cps/web.py:1849 -#: cps/web.py:1854 +#: cps/web.py:1838 cps/web.py:1841 cps/web.py:1844 cps/web.py:1851 +#: cps/web.py:1856 msgid "Read a Book" msgstr "Lees een boek" diff --git a/cps/translations/pl/LC_MESSAGES/messages.po b/cps/translations/pl/LC_MESSAGES/messages.po index e5350b16..6e0b0404 100644 --- a/cps/translations/pl/LC_MESSAGES/messages.po +++ b/cps/translations/pl/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre Web - polski (POT: 2019-08-06 18:35)\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2020-10-31 19:17+0100\n" +"POT-Creation-Date: 2020-11-14 13:11+0100\n" "PO-Revision-Date: 2020-08-30 21:05+0200\n" "Last-Translator: Jerzy Piątek \n" "Language: pl\n" @@ -23,7 +23,7 @@ msgstr "" msgid "installed" msgstr "zainstalowane" -#: cps/about.py:44 cps/converter.py:33 +#: cps/about.py:44 cps/converter.py:32 msgid "not installed" msgstr "nie zainstalowane" @@ -48,353 +48,353 @@ msgid "Unknown command" msgstr "Nieznane polecenie" # ??? -#: cps/admin.py:116 cps/editbooks.py:612 cps/editbooks.py:624 -#: cps/editbooks.py:724 cps/editbooks.py:726 cps/editbooks.py:787 -#: cps/editbooks.py:803 cps/updater.py:510 cps/uploader.py:98 +#: cps/admin.py:116 cps/editbooks.py:611 cps/editbooks.py:623 +#: cps/editbooks.py:723 cps/editbooks.py:725 cps/editbooks.py:786 +#: cps/editbooks.py:802 cps/updater.py:510 cps/uploader.py:98 #: cps/uploader.py:108 msgid "Unknown" msgstr "Nieznany" -#: cps/admin.py:136 +#: cps/admin.py:137 msgid "Admin page" msgstr "Panel administratora" -#: cps/admin.py:158 +#: cps/admin.py:159 msgid "UI Configuration" msgstr "Konfiguracja Interfejsu" -#: cps/admin.py:190 cps/admin.py:717 +#: cps/admin.py:191 cps/admin.py:718 msgid "Calibre-Web configuration updated" msgstr "Konfiguracja Calibre-Web została zaktualizowana" -#: cps/admin.py:435 cps/admin.py:441 cps/admin.py:452 cps/admin.py:463 +#: cps/admin.py:436 cps/admin.py:442 cps/admin.py:453 cps/admin.py:464 #: cps/templates/modal_dialogs.html:29 msgid "Deny" msgstr "Zabroń" -#: cps/admin.py:437 cps/admin.py:443 cps/admin.py:454 cps/admin.py:465 +#: cps/admin.py:438 cps/admin.py:444 cps/admin.py:455 cps/admin.py:466 #: cps/templates/modal_dialogs.html:28 msgid "Allow" msgstr "Zezwalaj" -#: cps/admin.py:511 +#: cps/admin.py:512 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json nie został skonfigurowany dla aplikacji webowej" -#: cps/admin.py:550 +#: cps/admin.py:551 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "Lokalizacja pliku dziennika jest nieprawidłowa, wprowadź poprawną ścieżkę" -#: cps/admin.py:555 +#: cps/admin.py:556 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "Lokalizacja pliku dziennika dostępu jest nieprawidłowa, wprowadź poprawną ścieżkę" -#: cps/admin.py:581 +#: cps/admin.py:582 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "Wprowadź dostawcę LDAP, port, nazwę wyróżniającą i identyfikator obiektu użytkownika" -#: cps/admin.py:594 +#: cps/admin.py:595 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "Filtr obiektów grupy LDAP musi mieć jeden identyfikator formatu \"% s\"" -#: cps/admin.py:597 +#: cps/admin.py:598 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "Filtr obiektów grupy LDAP ma niedopasowany nawias" -#: cps/admin.py:601 +#: cps/admin.py:602 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "Filtr obiektów użytkownika LDAP musi mieć jeden identyfikator formatu \"% s\"" -#: cps/admin.py:604 +#: cps/admin.py:605 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "Filtr obiektów użytkownika LDAP ma niedopasowany nawias" -#: cps/admin.py:608 +#: cps/admin.py:609 msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path" msgstr "Lokalizacja certyfikatu LDAP jest nieprawidłowa, wprowadź poprawną ścieżkę" -#: cps/admin.py:630 +#: cps/admin.py:631 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "Lokalizacja pliku klucza jest nieprawidłowa, wprowadź poprawną ścieżkę" -#: cps/admin.py:634 +#: cps/admin.py:635 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "Lokalizacja pliku certyfikatu jest nieprawidłowa, wprowadź poprawną ścieżkę" -#: cps/admin.py:700 cps/admin.py:799 cps/admin.py:889 cps/admin.py:938 +#: cps/admin.py:701 cps/admin.py:800 cps/admin.py:890 cps/admin.py:939 #: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260 #: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392 msgid "Settings DB is not Writeable" msgstr "Baza danych ustawień nie jest zapisywalna" -#: cps/admin.py:712 +#: cps/admin.py:713 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "Lokalizacja bazy danych jest nieprawidłowa, wprowadź poprawną ścieżkę" -#: cps/admin.py:714 +#: cps/admin.py:715 msgid "DB is not Writeable" msgstr "Baza danych nie jest zapisywalna" -#: cps/admin.py:747 +#: cps/admin.py:748 msgid "Basic Configuration" msgstr "Konfiguracja podstawowa" -#: cps/admin.py:762 cps/web.py:1505 +#: cps/admin.py:763 cps/web.py:1507 msgid "Please fill out all fields!" msgstr "Proszę wypełnić wszystkie pola!" -#: cps/admin.py:765 cps/admin.py:777 cps/admin.py:783 cps/admin.py:907 +#: cps/admin.py:766 cps/admin.py:778 cps/admin.py:784 cps/admin.py:908 msgid "Add new user" msgstr "Dodaj nowego użytkownika" -#: cps/admin.py:774 cps/web.py:1751 +#: cps/admin.py:775 cps/web.py:1753 msgid "E-mail is not from valid domain" msgstr "E-mail nie pochodzi z prawidłowej domeny" -#: cps/admin.py:781 cps/admin.py:796 +#: cps/admin.py:782 cps/admin.py:797 msgid "Found an existing account for this e-mail address or nickname." msgstr "Znaleziono istniejące konto dla tego adresu e-mail lub pseudonimu." -#: cps/admin.py:792 +#: cps/admin.py:793 #, python-format msgid "User '%(user)s' created" msgstr "Użytkownik '%(user)s' został utworzony" -#: cps/admin.py:808 +#: cps/admin.py:809 #, python-format msgid "User '%(nick)s' deleted" msgstr "Użytkownik '%(nick)s' został usunięty" -#: cps/admin.py:811 +#: cps/admin.py:812 msgid "No admin user remaining, can't delete user" msgstr "Nie można usunąć użytkownika. Brak na serwerze innego konta z prawami administratora" -#: cps/admin.py:817 +#: cps/admin.py:818 msgid "No admin user remaining, can't remove admin role" msgstr "Nie można odebrać praw administratora. Brak na serwerze innego konta z prawami administratora" -#: cps/admin.py:853 cps/web.py:1793 +#: cps/admin.py:854 cps/web.py:1795 msgid "Found an existing account for this e-mail address." msgstr "Znaleziono istniejące konto dla tego adresu e-mail." -#: cps/admin.py:862 cps/admin.py:876 cps/admin.py:979 cps/web.py:1769 +#: cps/admin.py:863 cps/admin.py:877 cps/admin.py:980 cps/web.py:1771 #, python-format msgid "Edit User %(nick)s" msgstr "Edytuj użytkownika %(nick)s" -#: cps/admin.py:868 cps/web.py:1762 +#: cps/admin.py:869 cps/web.py:1764 msgid "This username is already taken" msgstr "Nazwa użytkownika jest już zajęta" -#: cps/admin.py:883 +#: cps/admin.py:884 #, python-format msgid "User '%(nick)s' updated" msgstr "Użytkownik '%(nick)s' został zaktualizowany" -#: cps/admin.py:886 +#: cps/admin.py:887 msgid "An unknown error occured." msgstr "Wystąpił nieznany błąd." -#: cps/admin.py:916 cps/templates/admin.html:71 +#: cps/admin.py:917 cps/templates/admin.html:71 msgid "Edit E-mail Server Settings" msgstr "Zmień ustawienia SMTP" -#: cps/admin.py:945 +#: cps/admin.py:946 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "Testowy e-mail pomyślnie przesłany do %(kindlemail)s" -#: cps/admin.py:948 +#: cps/admin.py:949 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Wystąpił błąd podczas wysyłania e-maila testowego: %(res)s" -#: cps/admin.py:950 +#: cps/admin.py:951 msgid "Please configure your e-mail address first..." msgstr "Najpierw skonfiguruj swój adres e-mail..." -#: cps/admin.py:952 +#: cps/admin.py:953 msgid "E-mail server settings updated" msgstr "Zaktualizowano ustawienia serwera poczty e-mail" -#: cps/admin.py:963 +#: cps/admin.py:964 msgid "User not found" msgstr "Nie znaleziono użytkownika" # ??? -#: cps/admin.py:990 +#: cps/admin.py:991 #, python-format msgid "Password for user %(user)s reset" msgstr "Zrestartowano hasło użytkownika %(user)s" -#: cps/admin.py:993 cps/web.py:1529 cps/web.py:1593 +#: cps/admin.py:994 cps/web.py:1531 cps/web.py:1595 msgid "An unknown error occurred. Please try again later." msgstr "Wystąpił nieznany błąd. Spróbuj ponownie później." -#: cps/admin.py:996 cps/web.py:1467 +#: cps/admin.py:997 cps/web.py:1469 msgid "Please configure the SMTP mail settings first..." msgstr "Proszę najpierw skonfigurować ustawienia SMTP poczty e-mail..." -#: cps/admin.py:1008 +#: cps/admin.py:1009 msgid "Logfile viewer" msgstr "Przeglądanie dziennika" -#: cps/admin.py:1047 +#: cps/admin.py:1049 msgid "Requesting update package" msgstr "Żądanie o pakiet aktualizacji" -#: cps/admin.py:1048 +#: cps/admin.py:1050 msgid "Downloading update package" msgstr "Pobieranie pakietu aktualizacji" -#: cps/admin.py:1049 +#: cps/admin.py:1051 msgid "Unzipping update package" msgstr "Rozpakowywanie pakietu aktualizacji" # ??? -#: cps/admin.py:1050 +#: cps/admin.py:1052 msgid "Replacing files" msgstr "Zastępowanie plików" -#: cps/admin.py:1051 +#: cps/admin.py:1053 msgid "Database connections are closed" msgstr "Połączenia z bazą danych zostały zakończone" -#: cps/admin.py:1052 +#: cps/admin.py:1054 msgid "Stopping server" msgstr "Zatrzymywanie serwera" -#: cps/admin.py:1053 +#: cps/admin.py:1055 msgid "Update finished, please press okay and reload page" msgstr "Aktualizacja zakończona, proszę nacisnąć OK i odświeżyć stronę" -#: cps/admin.py:1054 cps/admin.py:1055 cps/admin.py:1056 cps/admin.py:1057 -#: cps/admin.py:1058 +#: cps/admin.py:1056 cps/admin.py:1057 cps/admin.py:1058 cps/admin.py:1059 +#: cps/admin.py:1060 msgid "Update failed:" msgstr "Aktualizacja nieudana:" -#: cps/admin.py:1054 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 +#: cps/admin.py:1056 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 msgid "HTTP Error" msgstr "Błąd HTTP" -#: cps/admin.py:1055 cps/updater.py:322 cps/updater.py:525 +#: cps/admin.py:1057 cps/updater.py:322 cps/updater.py:525 msgid "Connection error" msgstr "Błąd połączenia" -#: cps/admin.py:1056 cps/updater.py:324 cps/updater.py:527 +#: cps/admin.py:1058 cps/updater.py:324 cps/updater.py:527 msgid "Timeout while establishing connection" msgstr "Przekroczono limit czasu podczas nawiązywania połączenia" -#: cps/admin.py:1057 cps/updater.py:326 cps/updater.py:529 +#: cps/admin.py:1059 cps/updater.py:326 cps/updater.py:529 msgid "General error" msgstr "Błąd ogólny" -#: cps/admin.py:1058 +#: cps/admin.py:1060 msgid "Update File Could Not be Saved in Temp Dir" msgstr "Plik aktualizacji nie mógł zostać zapisany w katalogu tymczasowym" -#: cps/converter.py:32 +#: cps/converter.py:31 msgid "not configured" msgstr "nie skonfigurowane" -#: cps/converter.py:34 +#: cps/converter.py:33 msgid "Execution permissions missing" msgstr "Brak uprawnienia do wykonywania pliku" -#: cps/editbooks.py:273 cps/editbooks.py:275 +#: cps/editbooks.py:272 cps/editbooks.py:274 msgid "Book Format Successfully Deleted" msgstr "Plik książki w wybranym formacie został usunięty" -#: cps/editbooks.py:282 cps/editbooks.py:284 +#: cps/editbooks.py:281 cps/editbooks.py:283 msgid "Book Successfully Deleted" msgstr "Książka została usunięta" -#: cps/editbooks.py:293 cps/editbooks.py:596 cps/web.py:1824 cps/web.py:1865 -#: cps/web.py:1927 +#: cps/editbooks.py:292 cps/editbooks.py:595 cps/web.py:1826 cps/web.py:1867 +#: cps/web.py:1929 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Błąd podczas otwierania e-booka. Plik nie istnieje lub jest niedostępny" -#: cps/editbooks.py:327 +#: cps/editbooks.py:326 msgid "edit metadata" msgstr "edytuj metadane" -#: cps/editbooks.py:402 +#: cps/editbooks.py:401 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s nie jest prawidłowym językiem" -#: cps/editbooks.py:513 cps/editbooks.py:769 +#: cps/editbooks.py:512 cps/editbooks.py:768 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Rozszerzenie pliku '%(ext)s' nie jest dozwolone do wysłania na ten serwer" -#: cps/editbooks.py:517 cps/editbooks.py:773 +#: cps/editbooks.py:516 cps/editbooks.py:772 msgid "File to be uploaded must have an extension" msgstr "Plik do wysłania musi mieć rozszerzenie" -#: cps/editbooks.py:529 +#: cps/editbooks.py:528 #, 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:534 +#: cps/editbooks.py:533 #, python-format msgid "Failed to store file %(file)s." msgstr "Nie można zapisać pliku %(file)s." -#: cps/editbooks.py:552 cps/editbooks.py:904 +#: cps/editbooks.py:551 cps/editbooks.py:903 #, python-format msgid "Database error: %(error)s." msgstr "Błąd bazy danych: %(error)s." -#: cps/editbooks.py:556 +#: cps/editbooks.py:555 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Format pliku %(ext)s dodany do %(book)s" -#: cps/editbooks.py:673 +#: cps/editbooks.py:672 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:710 +#: cps/editbooks.py:709 msgid "Metadata successfully updated" msgstr "Metadane zostały pomyślnie zaktualizowane" -#: cps/editbooks.py:719 +#: cps/editbooks.py:718 msgid "Error editing book, please check logfile for details" msgstr "Błąd podczas edycji książki, sprawdź plik dziennika, aby uzyskać szczegółowe informacje" -#: cps/editbooks.py:781 +#: cps/editbooks.py:780 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "Nie można zapisać pliku %(filename)s w katalogu tymczasowym" -#: cps/editbooks.py:791 +#: cps/editbooks.py:790 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Wysłana książka prawdopodobnie istnieje w bibliotece, rozważ zmianę przed przesłaniem nowej: " -#: cps/editbooks.py:879 +#: cps/editbooks.py:878 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "Nie udało się przenieść pliku okładki %(file)s:%(error)s" -#: cps/editbooks.py:890 +#: cps/editbooks.py:889 #, python-format msgid "File %(file)s uploaded" msgstr "Wysłano plik %(file)s" -#: cps/editbooks.py:916 +#: cps/editbooks.py:915 msgid "Source or destination format for conversion missing" msgstr "Brak formatu źródłowego lub docelowego do konwersji" -#: cps/editbooks.py:924 +#: cps/editbooks.py:923 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Książka została pomyślnie umieszczona w zadaniach do konwersji %(book_format)s" -#: cps/editbooks.py:928 +#: cps/editbooks.py:927 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Podczas konwersji książki wystąpił błąd: %(res)s" @@ -587,7 +587,7 @@ msgstr "Nie udało się zalogować do Google." msgid "Failed to fetch user info from Google." msgstr "Nie udało się pobrać informacji o użytkowniku z Google." -#: cps/oauth_bb.py:225 cps/web.py:1565 cps/web.py:1707 +#: cps/oauth_bb.py:225 cps/web.py:1567 cps/web.py:1709 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "zalogowałeś się jako: '%(nickname)s'" @@ -747,7 +747,7 @@ msgstr "" msgid "Show Downloaded Books" msgstr "" -#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:639 +#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:641 msgid "Top Rated Books" msgstr "Najwyżej ocenione" @@ -756,7 +756,7 @@ msgid "Show Top Rated Books" msgstr "Pokaż menu najwyżej ocenionych książek" #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:82 -#: cps/web.py:900 +#: cps/web.py:902 msgid "Read Books" msgstr "Przeczytane" @@ -765,7 +765,7 @@ msgid "Show read and unread" msgstr "Pokaż menu przeczytane i nieprzeczytane" #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:86 -#: cps/web.py:903 +#: cps/web.py:905 msgid "Unread Books" msgstr "Nieprzeczytane" @@ -782,7 +782,7 @@ msgid "Show random books" msgstr "Pokaż menu losowych książek" #: cps/templates/book_table.html:50 cps/templates/index.xml:75 cps/ub.py:92 -#: cps/web.py:1204 +#: cps/web.py:1206 msgid "Categories" msgstr "Kategorie" @@ -792,7 +792,7 @@ msgstr "Pokaż menu wyboru kategorii" #: cps/templates/book_edit.html:84 cps/templates/book_table.html:51 #: cps/templates/index.xml:82 cps/templates/search_form.html:54 cps/ub.py:95 -#: cps/web.py:1108 cps/web.py:1118 +#: cps/web.py:1110 cps/web.py:1120 msgid "Series" msgstr "Cykle" @@ -809,7 +809,7 @@ msgid "Show author selection" msgstr "Pokaż menu wyboru autora" #: cps/templates/book_table.html:55 cps/templates/index.xml:68 cps/ub.py:102 -#: cps/web.py:1087 +#: cps/web.py:1089 msgid "Publishers" msgstr "Wydawcy" @@ -818,7 +818,7 @@ msgid "Show publisher selection" msgstr "Pokaż menu wyboru wydawcy" #: cps/templates/book_table.html:53 cps/templates/index.xml:89 -#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1183 +#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1185 msgid "Languages" msgstr "Języki" @@ -842,7 +842,7 @@ msgstr "Formaty plików" msgid "Show file formats selection" msgstr "Pokaż menu formatu plików" -#: cps/ub.py:116 cps/web.py:927 +#: cps/ub.py:116 cps/web.py:929 msgid "Archived Books" msgstr "Zarchiwizowane książki" @@ -887,225 +887,225 @@ msgstr "Dostępna jest nowa aktualizacja. Kliknij przycisk poniżej, aby zaktual msgid "Click on the button below to update to the latest stable version." msgstr "Kliknij przycisk poniżej, aby zaktualizować do najnowszej stabilnej wersji." -#: cps/web.py:316 +#: cps/web.py:318 #, python-format msgid "Error: %(ldaperror)s" msgstr "Błąd: %(ldaperror)s" -#: cps/web.py:320 +#: cps/web.py:322 msgid "Error: No user returned in response of LDAP server" msgstr "Błąd. LDAP nie zwrócił żadnego użytkownika" -#: cps/web.py:368 +#: cps/web.py:370 msgid "Failed to Create at Least One LDAP User" msgstr "Błąd przy tworzeniu przynajmniej jednego użytkownika LDAP" -#: cps/web.py:371 +#: cps/web.py:373 msgid "At Least One LDAP User Not Found in Database" msgstr "Przynajmniej jeden użytkownik LDAP nie został znaleziony w bazie danych" -#: cps/web.py:373 +#: cps/web.py:375 msgid "User Successfully Imported" msgstr "Użytkownik pomyślnie zaimportowany" -#: cps/templates/index.html:5 cps/web.py:647 +#: cps/templates/index.html:5 cps/web.py:649 msgid "Discover (Random Books)" msgstr "Odkrywaj (losowe książki)" -#: cps/web.py:686 +#: cps/web.py:688 msgid "Books" msgstr "Książki" -#: cps/web.py:713 +#: cps/web.py:715 msgid "Hot Books (Most Downloaded)" msgstr "Najpopularniejsze książki (najczęściej pobierane)" -#: cps/web.py:748 +#: cps/web.py:750 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:762 +#: cps/web.py:764 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Błąd otwierania e-booka. Plik nie istnieje lub jest niedostępny" -#: cps/web.py:776 +#: cps/web.py:778 #, python-format msgid "Author: %(name)s" msgstr "Autor: %(name)s" -#: cps/web.py:790 +#: cps/web.py:792 #, python-format msgid "Publisher: %(name)s" msgstr "Wydawca: %(name)s" -#: cps/web.py:803 +#: cps/web.py:805 #, python-format msgid "Series: %(serie)s" msgstr "Cykl: %(serie)s" -#: cps/web.py:816 +#: cps/web.py:818 #, python-format msgid "Rating: %(rating)s stars" msgstr "Ocena: %(rating)s gwiazdek" -#: cps/web.py:829 +#: cps/web.py:831 #, python-format msgid "File format: %(format)s" msgstr "Format pliku: %(format)s" -#: cps/web.py:843 +#: cps/web.py:845 #, python-format msgid "Category: %(name)s" msgstr "Kategoria: %(name)s" -#: cps/web.py:862 +#: cps/web.py:864 #, python-format msgid "Language: %(name)s" msgstr "Język: %(name)s" -#: cps/web.py:891 +#: cps/web.py:893 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "Niestandardowa kolumna No.%(column)d nie istnieje w bazie calibre" -#: cps/templates/layout.html:56 cps/web.py:958 cps/web.py:1407 +#: cps/templates/layout.html:56 cps/web.py:960 cps/web.py:1409 msgid "Advanced Search" msgstr "Wyszukiwanie" #: cps/templates/book_edit.html:213 cps/templates/feed.xml:33 #: cps/templates/layout.html:45 cps/templates/layout.html:48 -#: cps/templates/search_form.html:175 cps/web.py:970 cps/web.py:1241 +#: cps/templates/search_form.html:175 cps/web.py:972 cps/web.py:1243 msgid "Search" msgstr "Szukaj" -#: cps/web.py:998 +#: cps/web.py:1000 msgid "Books list" msgstr "" -#: cps/web.py:1136 +#: cps/web.py:1138 msgid "Ratings list" msgstr "Lista z ocenami" -#: cps/web.py:1155 +#: cps/web.py:1157 msgid "File formats list" msgstr "Lista formatów" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1218 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1220 msgid "Tasks" msgstr "Zadania" -#: cps/web.py:1303 +#: cps/web.py:1305 msgid "Published after " msgstr "Opublikowane po " -#: cps/web.py:1310 +#: cps/web.py:1312 msgid "Published before " msgstr "Opublikowane przed " -#: cps/web.py:1325 +#: cps/web.py:1327 #, python-format msgid "Rating <= %(rating)s" msgstr "Ocena <= %(rating)s" -#: cps/web.py:1327 +#: cps/web.py:1329 #, python-format msgid "Rating >= %(rating)s" msgstr "Ocena >= %(rating)s" -#: cps/web.py:1472 +#: cps/web.py:1474 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Książka została umieszczona w kolejce do wysłania do %(kindlemail)s" -#: cps/web.py:1476 +#: cps/web.py:1478 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Wystąpił błąd podczas wysyłania tej książki: %(res)s" -#: cps/web.py:1478 +#: cps/web.py:1480 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Najpierw skonfiguruj adres e-mail Kindle..." -#: cps/web.py:1495 +#: cps/web.py:1497 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "Serwer e-mail nie jest skonfigurowany, skontaktuj się z administratorem!" -#: cps/web.py:1496 cps/web.py:1506 cps/web.py:1530 cps/web.py:1534 -#: cps/web.py:1539 cps/web.py:1543 +#: cps/web.py:1498 cps/web.py:1508 cps/web.py:1532 cps/web.py:1536 +#: cps/web.py:1541 cps/web.py:1545 msgid "register" msgstr "rejestracja" -#: cps/web.py:1532 +#: cps/web.py:1534 msgid "Your e-mail is not allowed to register" msgstr "Twój e-mail nie może się zarejestrować" -#: cps/web.py:1535 +#: cps/web.py:1537 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Wiadomość e-mail z potwierdzeniem została wysłana na Twoje konto e-mail." -#: cps/web.py:1538 +#: cps/web.py:1540 msgid "This username or e-mail address is already in use." msgstr "Ta nazwa użytkownika lub adres e-mail jest już używany." -#: cps/web.py:1555 +#: cps/web.py:1557 msgid "Cannot activate LDAP authentication" msgstr "Nie można aktywować uwierzytelniania LDAP" -#: cps/web.py:1572 +#: cps/web.py:1574 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" -#: cps/web.py:1578 +#: cps/web.py:1580 #, python-format msgid "Could not login: %(message)s" msgstr "Nie można zalogować: %(message)s" -#: cps/web.py:1582 cps/web.py:1606 +#: cps/web.py:1584 cps/web.py:1608 msgid "Wrong Username or Password" msgstr "Błędna nazwa użytkownika lub hasło" -#: cps/web.py:1589 +#: cps/web.py:1591 msgid "New Password was send to your email address" msgstr "Nowe hasło zostało wysłane na Twój adres e-mail" -#: cps/web.py:1595 +#: cps/web.py:1597 msgid "Please enter valid username to reset password" msgstr "Wprowadź prawidłową nazwę użytkownika, aby zresetować hasło" -#: cps/web.py:1601 +#: cps/web.py:1603 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Jesteś teraz zalogowany jako: '%(nickname)s'" -#: cps/web.py:1612 cps/web.py:1639 +#: cps/web.py:1614 cps/web.py:1641 msgid "login" msgstr "logowanie" -#: cps/web.py:1651 cps/web.py:1685 +#: cps/web.py:1653 cps/web.py:1687 msgid "Token not found" msgstr "Nie znaleziono tokenu" -#: cps/web.py:1660 cps/web.py:1693 +#: cps/web.py:1662 cps/web.py:1695 msgid "Token has expired" msgstr "Token wygasł" -#: cps/web.py:1669 +#: cps/web.py:1671 msgid "Success! Please return to your device" msgstr "Powodzenie! Wróć do swojego urządzenia" -#: cps/web.py:1753 cps/web.py:1809 +#: cps/web.py:1755 cps/web.py:1811 #, python-format msgid "%(name)s's profile" msgstr "Profil użytkownika %(name)s" -#: cps/web.py:1789 +#: cps/web.py:1791 msgid "Profile updated" msgstr "Zaktualizowano profil" -#: cps/web.py:1836 cps/web.py:1839 cps/web.py:1842 cps/web.py:1849 -#: cps/web.py:1854 +#: cps/web.py:1838 cps/web.py:1841 cps/web.py:1844 cps/web.py:1851 +#: cps/web.py:1856 msgid "Read a Book" msgstr "Czytaj książkę" diff --git a/cps/translations/ru/LC_MESSAGES/messages.po b/cps/translations/ru/LC_MESSAGES/messages.po index a104b76f..4de0c67c 100644 --- a/cps/translations/ru/LC_MESSAGES/messages.po +++ b/cps/translations/ru/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2020-10-31 19:17+0100\n" +"POT-Creation-Date: 2020-11-14 13:11+0100\n" "PO-Revision-Date: 2020-04-29 01:20+0400\n" "Last-Translator: ZIZA\n" "Language: ru\n" @@ -23,7 +23,7 @@ msgstr "" msgid "installed" msgstr "установлено" -#: cps/about.py:44 cps/converter.py:33 +#: cps/about.py:44 cps/converter.py:32 msgid "not installed" msgstr "не установлено" @@ -47,351 +47,351 @@ msgstr "Успешно переподключено" msgid "Unknown command" msgstr "Неизвестная команда" -#: cps/admin.py:116 cps/editbooks.py:612 cps/editbooks.py:624 -#: cps/editbooks.py:724 cps/editbooks.py:726 cps/editbooks.py:787 -#: cps/editbooks.py:803 cps/updater.py:510 cps/uploader.py:98 +#: cps/admin.py:116 cps/editbooks.py:611 cps/editbooks.py:623 +#: cps/editbooks.py:723 cps/editbooks.py:725 cps/editbooks.py:786 +#: cps/editbooks.py:802 cps/updater.py:510 cps/uploader.py:98 #: cps/uploader.py:108 msgid "Unknown" msgstr "Неизвестно" -#: cps/admin.py:136 +#: cps/admin.py:137 msgid "Admin page" msgstr "Администрирование" -#: cps/admin.py:158 +#: cps/admin.py:159 msgid "UI Configuration" msgstr "Настройка интерфейса" -#: cps/admin.py:190 cps/admin.py:717 +#: cps/admin.py:191 cps/admin.py:718 msgid "Calibre-Web configuration updated" msgstr "Конфигурация Calibre-Web обновлена" -#: cps/admin.py:435 cps/admin.py:441 cps/admin.py:452 cps/admin.py:463 +#: cps/admin.py:436 cps/admin.py:442 cps/admin.py:453 cps/admin.py:464 #: cps/templates/modal_dialogs.html:29 msgid "Deny" msgstr "Запретить" -#: cps/admin.py:437 cps/admin.py:443 cps/admin.py:454 cps/admin.py:465 +#: cps/admin.py:438 cps/admin.py:444 cps/admin.py:455 cps/admin.py:466 #: cps/templates/modal_dialogs.html:28 msgid "Allow" msgstr "Разрешить" -#: cps/admin.py:511 +#: cps/admin.py:512 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json не настроен для веб-приложения" -#: cps/admin.py:550 +#: cps/admin.py:551 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "Неправильное расположение файла журнала, пожалуйста, введите правильный путь." -#: cps/admin.py:555 +#: cps/admin.py:556 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "Недопустимое расположение файла журнала доступа, пожалуйста, введите правильный путь" -#: cps/admin.py:581 +#: cps/admin.py:582 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "Пожалуйста, введите провайдера LDAP, порт, DN и идентификатор объекта пользователя" -#: cps/admin.py:594 +#: cps/admin.py:595 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "Фильтр объектов группы LDAP должен иметь один идентификатор формата \"%s\"" -#: cps/admin.py:597 +#: cps/admin.py:598 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "Фильтр объектов группы LDAP имеет незавершённые круглые скобки" -#: cps/admin.py:601 +#: cps/admin.py:602 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "Фильтр объектов пользователя LDAP должен иметь один идентификатор формата \"%s\"" -#: cps/admin.py:604 +#: cps/admin.py:605 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "Фильтр объектов пользователя LDAP имеет незавершенную круглую скобку" -#: cps/admin.py:608 +#: cps/admin.py:609 msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path" msgstr "Неверное расположение сертификата LDAP, пожалуйста, введите правильный путь" -#: cps/admin.py:630 +#: cps/admin.py:631 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "Расположение ключевого файла неверно, пожалуйста, введите правильный путь" -#: cps/admin.py:634 +#: cps/admin.py:635 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "Расположение Certfile не является действительным, пожалуйста, введите правильный путь" -#: cps/admin.py:700 cps/admin.py:799 cps/admin.py:889 cps/admin.py:938 +#: cps/admin.py:701 cps/admin.py:800 cps/admin.py:890 cps/admin.py:939 #: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260 #: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:712 +#: cps/admin.py:713 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "Расположение Базы Данных неверно, пожалуйста, введите правильный путь." -#: cps/admin.py:714 +#: cps/admin.py:715 msgid "DB is not Writeable" msgstr "" -#: cps/admin.py:747 +#: cps/admin.py:748 msgid "Basic Configuration" msgstr "Настройки сервера" -#: cps/admin.py:762 cps/web.py:1505 +#: cps/admin.py:763 cps/web.py:1507 msgid "Please fill out all fields!" msgstr "Пожалуйста, заполните все поля!" -#: cps/admin.py:765 cps/admin.py:777 cps/admin.py:783 cps/admin.py:907 +#: cps/admin.py:766 cps/admin.py:778 cps/admin.py:784 cps/admin.py:908 msgid "Add new user" msgstr "Добавить пользователя" -#: cps/admin.py:774 cps/web.py:1751 +#: cps/admin.py:775 cps/web.py:1753 msgid "E-mail is not from valid domain" msgstr "E-mail не из существующей доменной зоны" -#: cps/admin.py:781 cps/admin.py:796 +#: cps/admin.py:782 cps/admin.py:797 msgid "Found an existing account for this e-mail address or nickname." msgstr "Для этого адреса электронной почты или логина уже есть учётная запись." -#: cps/admin.py:792 +#: cps/admin.py:793 #, python-format msgid "User '%(user)s' created" msgstr "Пользователь '%(user)s' добавлен" -#: cps/admin.py:808 +#: cps/admin.py:809 #, python-format msgid "User '%(nick)s' deleted" msgstr "Пользователь '%(nick)s' удалён" -#: cps/admin.py:811 +#: cps/admin.py:812 msgid "No admin user remaining, can't delete user" msgstr "Это последний администратор, невозможно удалить пользователя" -#: cps/admin.py:817 +#: cps/admin.py:818 msgid "No admin user remaining, can't remove admin role" msgstr "" -#: cps/admin.py:853 cps/web.py:1793 +#: cps/admin.py:854 cps/web.py:1795 msgid "Found an existing account for this e-mail address." msgstr "Этот адрес электронной почты уже зарегистрирован." -#: cps/admin.py:862 cps/admin.py:876 cps/admin.py:979 cps/web.py:1769 +#: cps/admin.py:863 cps/admin.py:877 cps/admin.py:980 cps/web.py:1771 #, python-format msgid "Edit User %(nick)s" msgstr "Изменить пользователя %(nick)s" -#: cps/admin.py:868 cps/web.py:1762 +#: cps/admin.py:869 cps/web.py:1764 msgid "This username is already taken" msgstr "Это имя пользователя уже занято" -#: cps/admin.py:883 +#: cps/admin.py:884 #, python-format msgid "User '%(nick)s' updated" msgstr "Пользователь '%(nick)s' обновлён" -#: cps/admin.py:886 +#: cps/admin.py:887 msgid "An unknown error occured." msgstr "Произошла неизвестная ошибка." -#: cps/admin.py:916 cps/templates/admin.html:71 +#: cps/admin.py:917 cps/templates/admin.html:71 msgid "Edit E-mail Server Settings" msgstr "Изменить настройки SMTP" -#: cps/admin.py:945 +#: cps/admin.py:946 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "Тестовое письмо успешно отправлено на %(kindlemail)s" -#: cps/admin.py:948 +#: cps/admin.py:949 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Произошла ошибка при отправке тестового письма на: %(res)s" -#: cps/admin.py:950 +#: cps/admin.py:951 msgid "Please configure your e-mail address first..." msgstr "Пожалуйста, сначала настройте свой адрес электронной почты ..." -#: cps/admin.py:952 +#: cps/admin.py:953 msgid "E-mail server settings updated" msgstr "Настройки E-mail сервера обновлены" -#: cps/admin.py:963 +#: cps/admin.py:964 msgid "User not found" msgstr "" -#: cps/admin.py:990 +#: cps/admin.py:991 #, python-format msgid "Password for user %(user)s reset" msgstr "Пароль для пользователя %(user)s сброшен" -#: cps/admin.py:993 cps/web.py:1529 cps/web.py:1593 +#: cps/admin.py:994 cps/web.py:1531 cps/web.py:1595 msgid "An unknown error occurred. Please try again later." msgstr "Неизвестная ошибка. Попробуйте позже." -#: cps/admin.py:996 cps/web.py:1467 +#: cps/admin.py:997 cps/web.py:1469 msgid "Please configure the SMTP mail settings first..." msgstr "Пожалуйста, сперва настройте параметры SMTP....." -#: cps/admin.py:1008 +#: cps/admin.py:1009 msgid "Logfile viewer" msgstr "Просмотр лога" -#: cps/admin.py:1047 +#: cps/admin.py:1049 msgid "Requesting update package" msgstr "Проверка обновлений" -#: cps/admin.py:1048 +#: cps/admin.py:1050 msgid "Downloading update package" msgstr "Загрузка обновлений" -#: cps/admin.py:1049 +#: cps/admin.py:1051 msgid "Unzipping update package" msgstr "Распаковка обновлений" -#: cps/admin.py:1050 +#: cps/admin.py:1052 msgid "Replacing files" msgstr "Замена файлов" -#: cps/admin.py:1051 +#: cps/admin.py:1053 msgid "Database connections are closed" msgstr "Соединения с базой данных закрыты" -#: cps/admin.py:1052 +#: cps/admin.py:1054 msgid "Stopping server" msgstr "Остановка сервера" -#: cps/admin.py:1053 +#: cps/admin.py:1055 msgid "Update finished, please press okay and reload page" msgstr "Обновления установлены, нажмите ок и перезагрузите страницу" -#: cps/admin.py:1054 cps/admin.py:1055 cps/admin.py:1056 cps/admin.py:1057 -#: cps/admin.py:1058 +#: cps/admin.py:1056 cps/admin.py:1057 cps/admin.py:1058 cps/admin.py:1059 +#: cps/admin.py:1060 msgid "Update failed:" msgstr "Ошибка обновления:" -#: cps/admin.py:1054 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 +#: cps/admin.py:1056 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 msgid "HTTP Error" msgstr "Ошибка HTTP" -#: cps/admin.py:1055 cps/updater.py:322 cps/updater.py:525 +#: cps/admin.py:1057 cps/updater.py:322 cps/updater.py:525 msgid "Connection error" msgstr "Ошибка соединения" -#: cps/admin.py:1056 cps/updater.py:324 cps/updater.py:527 +#: cps/admin.py:1058 cps/updater.py:324 cps/updater.py:527 msgid "Timeout while establishing connection" msgstr "Тайм-аут при установлении соединения" -#: cps/admin.py:1057 cps/updater.py:326 cps/updater.py:529 +#: cps/admin.py:1059 cps/updater.py:326 cps/updater.py:529 msgid "General error" msgstr "Общая ошибка" -#: cps/admin.py:1058 +#: cps/admin.py:1060 msgid "Update File Could Not be Saved in Temp Dir" msgstr "Не удалось сохранить файл обновления во временной папке." -#: cps/converter.py:32 +#: cps/converter.py:31 msgid "not configured" msgstr "не настроено" -#: cps/converter.py:34 +#: cps/converter.py:33 msgid "Execution permissions missing" msgstr "" -#: cps/editbooks.py:273 cps/editbooks.py:275 +#: cps/editbooks.py:272 cps/editbooks.py:274 msgid "Book Format Successfully Deleted" msgstr "" -#: cps/editbooks.py:282 cps/editbooks.py:284 +#: cps/editbooks.py:281 cps/editbooks.py:283 msgid "Book Successfully Deleted" msgstr "" -#: cps/editbooks.py:293 cps/editbooks.py:596 cps/web.py:1824 cps/web.py:1865 -#: cps/web.py:1927 +#: cps/editbooks.py:292 cps/editbooks.py:595 cps/web.py:1826 cps/web.py:1867 +#: cps/web.py:1929 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Ошибка при открытии eBook. Файл не существует или файл недоступен" -#: cps/editbooks.py:327 +#: cps/editbooks.py:326 msgid "edit metadata" msgstr "изменить метаданные" -#: cps/editbooks.py:402 +#: cps/editbooks.py:401 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s не допустимый язык" -#: cps/editbooks.py:513 cps/editbooks.py:769 +#: cps/editbooks.py:512 cps/editbooks.py:768 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Запрещена загрузка файлов с расширением '%(ext)s'" -#: cps/editbooks.py:517 cps/editbooks.py:773 +#: cps/editbooks.py:516 cps/editbooks.py:772 msgid "File to be uploaded must have an extension" msgstr "Загружаемый файл должен иметь расширение" -#: cps/editbooks.py:529 +#: cps/editbooks.py:528 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Ошибка при создании пути %(path)s (Доступ запрещён)." -#: cps/editbooks.py:534 +#: cps/editbooks.py:533 #, python-format msgid "Failed to store file %(file)s." msgstr "Не удалось сохранить файл %(file)s." -#: cps/editbooks.py:552 cps/editbooks.py:904 +#: cps/editbooks.py:551 cps/editbooks.py:903 #, python-format msgid "Database error: %(error)s." msgstr "" -#: cps/editbooks.py:556 +#: cps/editbooks.py:555 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Формат файла %(ext)s добавлен в %(book)s" -#: cps/editbooks.py:673 +#: cps/editbooks.py:672 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:710 +#: cps/editbooks.py:709 msgid "Metadata successfully updated" msgstr "Метаданные обновлены" -#: cps/editbooks.py:719 +#: cps/editbooks.py:718 msgid "Error editing book, please check logfile for details" msgstr "Ошибка редактирования книги. Пожалуйста, проверьте лог-файл для дополнительной информации" -#: cps/editbooks.py:781 +#: cps/editbooks.py:780 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "Файл %(filename)s не удалось сохранить во временную папку" -#: cps/editbooks.py:791 +#: cps/editbooks.py:790 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Загруженная книга, вероятно, существует в библиотеке, перед тем как загрузить новую, рассмотрите возможность изменения: " -#: cps/editbooks.py:879 +#: cps/editbooks.py:878 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "" -#: cps/editbooks.py:890 +#: cps/editbooks.py:889 #, python-format msgid "File %(file)s uploaded" msgstr "Файл %(file)s загружен" -#: cps/editbooks.py:916 +#: cps/editbooks.py:915 msgid "Source or destination format for conversion missing" msgstr "Исходный или целевой формат для конвертирования отсутствует" -#: cps/editbooks.py:924 +#: cps/editbooks.py:923 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Книга успешно поставлена в очередь для конвертирования в %(book_format)s" -#: cps/editbooks.py:928 +#: cps/editbooks.py:927 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Произошла ошибка при конвертирования этой книги: %(res)s" @@ -581,7 +581,7 @@ msgstr "Не удалось войти в систему с помощью Googl msgid "Failed to fetch user info from Google." msgstr "Не удалось получить информацию о пользователе из Google." -#: cps/oauth_bb.py:225 cps/web.py:1565 cps/web.py:1707 +#: cps/oauth_bb.py:225 cps/web.py:1567 cps/web.py:1709 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "вы вошли как пользователь '%(nickname)s'" @@ -741,7 +741,7 @@ msgstr "" msgid "Show Downloaded Books" msgstr "" -#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:639 +#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:641 msgid "Top Rated Books" msgstr "Книги с наилучшим рейтингом" @@ -750,7 +750,7 @@ msgid "Show Top Rated Books" msgstr "Показывать книги с наивысшим рейтингом" #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:82 -#: cps/web.py:900 +#: cps/web.py:902 msgid "Read Books" msgstr "Прочитанные Книги" @@ -759,7 +759,7 @@ msgid "Show read and unread" msgstr "Показывать прочитанные и непрочитанные" #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:86 -#: cps/web.py:903 +#: cps/web.py:905 msgid "Unread Books" msgstr "Непрочитанные Книги" @@ -776,7 +776,7 @@ msgid "Show random books" msgstr "Показывать случайные книги" #: cps/templates/book_table.html:50 cps/templates/index.xml:75 cps/ub.py:92 -#: cps/web.py:1204 +#: cps/web.py:1206 msgid "Categories" msgstr "Категории" @@ -786,7 +786,7 @@ msgstr "Показывать выбор категории" #: cps/templates/book_edit.html:84 cps/templates/book_table.html:51 #: cps/templates/index.xml:82 cps/templates/search_form.html:54 cps/ub.py:95 -#: cps/web.py:1108 cps/web.py:1118 +#: cps/web.py:1110 cps/web.py:1120 msgid "Series" msgstr "Серии" @@ -803,7 +803,7 @@ msgid "Show author selection" msgstr "Показывать выбор автора" #: cps/templates/book_table.html:55 cps/templates/index.xml:68 cps/ub.py:102 -#: cps/web.py:1087 +#: cps/web.py:1089 msgid "Publishers" msgstr "Издатели" @@ -812,7 +812,7 @@ msgid "Show publisher selection" msgstr "Показать выбор издателя" #: cps/templates/book_table.html:53 cps/templates/index.xml:89 -#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1183 +#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1185 msgid "Languages" msgstr "Языки" @@ -836,7 +836,7 @@ msgstr "Форматы файлов" msgid "Show file formats selection" msgstr "Показать выбор форматов файлов" -#: cps/ub.py:116 cps/web.py:927 +#: cps/ub.py:116 cps/web.py:929 msgid "Archived Books" msgstr "" @@ -881,225 +881,225 @@ msgstr "Новое обновление доступно. Нажмите на к msgid "Click on the button below to update to the latest stable version." msgstr "Нажмите на кнопку ниже для обновления до последней стабильной версии." -#: cps/web.py:316 +#: cps/web.py:318 #, python-format msgid "Error: %(ldaperror)s" msgstr "Ошибка: %(ldaperror)s" -#: cps/web.py:320 +#: cps/web.py:322 msgid "Error: No user returned in response of LDAP server" msgstr "Ошибка: ни одного пользователя не найдено в ответ на запрос сервер LDAP" -#: cps/web.py:368 +#: cps/web.py:370 msgid "Failed to Create at Least One LDAP User" msgstr "Не удалось создать хотя бы одного пользователя LDAP" -#: cps/web.py:371 +#: cps/web.py:373 msgid "At Least One LDAP User Not Found in Database" msgstr "По крайней мере, один пользователь LDAP не найден в базе данных" -#: cps/web.py:373 +#: cps/web.py:375 msgid "User Successfully Imported" msgstr "Пользователь успешно импортирован" -#: cps/templates/index.html:5 cps/web.py:647 +#: cps/templates/index.html:5 cps/web.py:649 msgid "Discover (Random Books)" msgstr "Обзор (Случайные Книги)" -#: cps/web.py:686 +#: cps/web.py:688 msgid "Books" msgstr "Книги" -#: cps/web.py:713 +#: cps/web.py:715 msgid "Hot Books (Most Downloaded)" msgstr "Популярные книги (часто загружаемые)" -#: cps/web.py:748 +#: cps/web.py:750 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:762 +#: cps/web.py:764 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Невозможно открыть книгу. Файл не существует или недоступен" -#: cps/web.py:776 +#: cps/web.py:778 #, python-format msgid "Author: %(name)s" msgstr "Автор: %(name)s" -#: cps/web.py:790 +#: cps/web.py:792 #, python-format msgid "Publisher: %(name)s" msgstr "Издатель: %(name)s" -#: cps/web.py:803 +#: cps/web.py:805 #, python-format msgid "Series: %(serie)s" msgstr "Серии: %(serie)s" -#: cps/web.py:816 +#: cps/web.py:818 #, python-format msgid "Rating: %(rating)s stars" msgstr "Оценка: %(rating)s звезды(а)" -#: cps/web.py:829 +#: cps/web.py:831 #, python-format msgid "File format: %(format)s" msgstr "Формат файла: %(format)s" -#: cps/web.py:843 +#: cps/web.py:845 #, python-format msgid "Category: %(name)s" msgstr "Категория: %(name)s" -#: cps/web.py:862 +#: cps/web.py:864 #, python-format msgid "Language: %(name)s" msgstr "Язык: %(name)s" -#: cps/web.py:891 +#: cps/web.py:893 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:958 cps/web.py:1407 +#: cps/templates/layout.html:56 cps/web.py:960 cps/web.py:1409 msgid "Advanced Search" msgstr "Расширенный поиск" #: cps/templates/book_edit.html:213 cps/templates/feed.xml:33 #: cps/templates/layout.html:45 cps/templates/layout.html:48 -#: cps/templates/search_form.html:175 cps/web.py:970 cps/web.py:1241 +#: cps/templates/search_form.html:175 cps/web.py:972 cps/web.py:1243 msgid "Search" msgstr "Поиск" -#: cps/web.py:998 +#: cps/web.py:1000 msgid "Books list" msgstr "" -#: cps/web.py:1136 +#: cps/web.py:1138 msgid "Ratings list" msgstr "Список рейтингов" -#: cps/web.py:1155 +#: cps/web.py:1157 msgid "File formats list" msgstr "Список форматов файлов" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1218 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1220 msgid "Tasks" msgstr "Задания" -#: cps/web.py:1303 +#: cps/web.py:1305 msgid "Published after " msgstr "Опубликовано после " -#: cps/web.py:1310 +#: cps/web.py:1312 msgid "Published before " msgstr "Опубликовано до " -#: cps/web.py:1325 +#: cps/web.py:1327 #, python-format msgid "Rating <= %(rating)s" msgstr "Рейтинг <= %(rating)s" -#: cps/web.py:1327 +#: cps/web.py:1329 #, python-format msgid "Rating >= %(rating)s" msgstr "Рейтинг >= %(rating)s" -#: cps/web.py:1472 +#: cps/web.py:1474 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Книга успешно поставлена в очередь для отправки на %(kindlemail)s" -#: cps/web.py:1476 +#: cps/web.py:1478 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "При отправке этой книги произошла ошибка: %(res)s" -#: cps/web.py:1478 +#: cps/web.py:1480 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Пожалуйста, сначала настройте e-mail на вашем kindle..." -#: cps/web.py:1495 +#: cps/web.py:1497 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "Сервер электронной почты не настроен, обратитесь к администратору !" -#: cps/web.py:1496 cps/web.py:1506 cps/web.py:1530 cps/web.py:1534 -#: cps/web.py:1539 cps/web.py:1543 +#: cps/web.py:1498 cps/web.py:1508 cps/web.py:1532 cps/web.py:1536 +#: cps/web.py:1541 cps/web.py:1545 msgid "register" msgstr "регистрация" -#: cps/web.py:1532 +#: cps/web.py:1534 msgid "Your e-mail is not allowed to register" msgstr "Ваш e-mail не подходит для регистрации" -#: cps/web.py:1535 +#: cps/web.py:1537 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Письмо с подтверждением отправлено вам на e-mail." -#: cps/web.py:1538 +#: cps/web.py:1540 msgid "This username or e-mail address is already in use." msgstr "Этот никнейм или e-mail уже используются." -#: cps/web.py:1555 +#: cps/web.py:1557 msgid "Cannot activate LDAP authentication" msgstr "Не удается активировать LDAP аутентификацию" -#: cps/web.py:1572 +#: cps/web.py:1574 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "Резервный вход в систему как: '%(nickname)s', LDAP-сервер недоступен или пользователь не известен" -#: cps/web.py:1578 +#: cps/web.py:1580 #, python-format msgid "Could not login: %(message)s" msgstr "Не удалось войти: %(message)s" -#: cps/web.py:1582 cps/web.py:1606 +#: cps/web.py:1584 cps/web.py:1608 msgid "Wrong Username or Password" msgstr "Ошибка в имени пользователя или пароле" -#: cps/web.py:1589 +#: cps/web.py:1591 msgid "New Password was send to your email address" msgstr "Новый пароль был отправлен на ваш адрес электронной почты" -#: cps/web.py:1595 +#: cps/web.py:1597 msgid "Please enter valid username to reset password" msgstr "Пожалуйста, введите действительное имя пользователя для сброса пароля" -#: cps/web.py:1601 +#: cps/web.py:1603 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Вы вошли как: '%(nickname)s'" -#: cps/web.py:1612 cps/web.py:1639 +#: cps/web.py:1614 cps/web.py:1641 msgid "login" msgstr "войти" -#: cps/web.py:1651 cps/web.py:1685 +#: cps/web.py:1653 cps/web.py:1687 msgid "Token not found" msgstr "Ключ не найден" -#: cps/web.py:1660 cps/web.py:1693 +#: cps/web.py:1662 cps/web.py:1695 msgid "Token has expired" msgstr "Ключ просрочен" -#: cps/web.py:1669 +#: cps/web.py:1671 msgid "Success! Please return to your device" msgstr "Успешно! Пожалуйста, проверьте свое устройство" -#: cps/web.py:1753 cps/web.py:1809 +#: cps/web.py:1755 cps/web.py:1811 #, python-format msgid "%(name)s's profile" msgstr "Профиль %(name)s's" -#: cps/web.py:1789 +#: cps/web.py:1791 msgid "Profile updated" msgstr "Профиль обновлён" -#: cps/web.py:1836 cps/web.py:1839 cps/web.py:1842 cps/web.py:1849 -#: cps/web.py:1854 +#: cps/web.py:1838 cps/web.py:1841 cps/web.py:1844 cps/web.py:1851 +#: cps/web.py:1856 msgid "Read a Book" msgstr "Читать Книгу" diff --git a/cps/translations/sv/LC_MESSAGES/messages.po b/cps/translations/sv/LC_MESSAGES/messages.po index 2a5e4f0a..5478c031 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: 2020-10-31 19:17+0100\n" +"POT-Creation-Date: 2020-11-14 13:11+0100\n" "PO-Revision-Date: 2020-03-14 09:30+0100\n" "Last-Translator: Jonatan Nyberg \n" "Language: sv\n" @@ -22,7 +22,7 @@ msgstr "" msgid "installed" msgstr "installerad" -#: cps/about.py:44 cps/converter.py:33 +#: cps/about.py:44 cps/converter.py:32 msgid "not installed" msgstr "inte installerad" @@ -46,351 +46,351 @@ msgstr "" msgid "Unknown command" msgstr "" -#: cps/admin.py:116 cps/editbooks.py:612 cps/editbooks.py:624 -#: cps/editbooks.py:724 cps/editbooks.py:726 cps/editbooks.py:787 -#: cps/editbooks.py:803 cps/updater.py:510 cps/uploader.py:98 +#: cps/admin.py:116 cps/editbooks.py:611 cps/editbooks.py:623 +#: cps/editbooks.py:723 cps/editbooks.py:725 cps/editbooks.py:786 +#: cps/editbooks.py:802 cps/updater.py:510 cps/uploader.py:98 #: cps/uploader.py:108 msgid "Unknown" msgstr "Okänd" -#: cps/admin.py:136 +#: cps/admin.py:137 msgid "Admin page" msgstr "Administrationssida" -#: cps/admin.py:158 +#: cps/admin.py:159 msgid "UI Configuration" msgstr "Användargränssnitt konfiguration" -#: cps/admin.py:190 cps/admin.py:717 +#: cps/admin.py:191 cps/admin.py:718 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web konfiguration uppdaterad" -#: cps/admin.py:435 cps/admin.py:441 cps/admin.py:452 cps/admin.py:463 +#: cps/admin.py:436 cps/admin.py:442 cps/admin.py:453 cps/admin.py:464 #: cps/templates/modal_dialogs.html:29 msgid "Deny" msgstr "Förneka" -#: cps/admin.py:437 cps/admin.py:443 cps/admin.py:454 cps/admin.py:465 +#: cps/admin.py:438 cps/admin.py:444 cps/admin.py:455 cps/admin.py:466 #: cps/templates/modal_dialogs.html:28 msgid "Allow" msgstr "Tillåt" -#: cps/admin.py:511 +#: cps/admin.py:512 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "" -#: cps/admin.py:550 +#: cps/admin.py:551 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:555 +#: cps/admin.py:556 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:581 +#: cps/admin.py:582 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "" -#: cps/admin.py:594 +#: cps/admin.py:595 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:597 +#: cps/admin.py:598 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:601 +#: cps/admin.py:602 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:604 +#: cps/admin.py:605 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:608 +#: cps/admin.py:609 msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:630 +#: cps/admin.py:631 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:634 +#: cps/admin.py:635 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:700 cps/admin.py:799 cps/admin.py:889 cps/admin.py:938 +#: cps/admin.py:701 cps/admin.py:800 cps/admin.py:890 cps/admin.py:939 #: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260 #: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:712 +#: cps/admin.py:713 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:714 +#: cps/admin.py:715 msgid "DB is not Writeable" msgstr "" -#: cps/admin.py:747 +#: cps/admin.py:748 msgid "Basic Configuration" msgstr "Grundläggande konfiguration" -#: cps/admin.py:762 cps/web.py:1505 +#: cps/admin.py:763 cps/web.py:1507 msgid "Please fill out all fields!" msgstr "Fyll i alla fält!" -#: cps/admin.py:765 cps/admin.py:777 cps/admin.py:783 cps/admin.py:907 +#: cps/admin.py:766 cps/admin.py:778 cps/admin.py:784 cps/admin.py:908 msgid "Add new user" msgstr "Lägg till ny användare" -#: cps/admin.py:774 cps/web.py:1751 +#: cps/admin.py:775 cps/web.py:1753 msgid "E-mail is not from valid domain" msgstr "E-posten är inte från giltig domän" -#: cps/admin.py:781 cps/admin.py:796 +#: cps/admin.py:782 cps/admin.py:797 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:792 +#: cps/admin.py:793 #, python-format msgid "User '%(user)s' created" msgstr "Användaren '%(user)s' skapad" -#: cps/admin.py:808 +#: cps/admin.py:809 #, python-format msgid "User '%(nick)s' deleted" msgstr "Användaren '%(nick)s' borttagen" -#: cps/admin.py:811 +#: cps/admin.py:812 msgid "No admin user remaining, can't delete user" msgstr "Ingen adminstratörsanvändare kvar, kan inte ta bort användaren" -#: cps/admin.py:817 +#: cps/admin.py:818 msgid "No admin user remaining, can't remove admin role" msgstr "" -#: cps/admin.py:853 cps/web.py:1793 +#: cps/admin.py:854 cps/web.py:1795 msgid "Found an existing account for this e-mail address." msgstr "Hittade ett befintligt konto för den här e-postadressen." -#: cps/admin.py:862 cps/admin.py:876 cps/admin.py:979 cps/web.py:1769 +#: cps/admin.py:863 cps/admin.py:877 cps/admin.py:980 cps/web.py:1771 #, python-format msgid "Edit User %(nick)s" msgstr "Redigera användaren %(nick)s" -#: cps/admin.py:868 cps/web.py:1762 +#: cps/admin.py:869 cps/web.py:1764 msgid "This username is already taken" msgstr "Detta användarnamn är redan taget" -#: cps/admin.py:883 +#: cps/admin.py:884 #, python-format msgid "User '%(nick)s' updated" msgstr "Användaren '%(nick)s' uppdaterad" -#: cps/admin.py:886 +#: cps/admin.py:887 msgid "An unknown error occured." msgstr "Ett okänt fel uppstod." -#: cps/admin.py:916 cps/templates/admin.html:71 +#: cps/admin.py:917 cps/templates/admin.html:71 msgid "Edit E-mail Server Settings" msgstr "Ändra SMTP-inställningar" -#: cps/admin.py:945 +#: cps/admin.py:946 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "Test-e-post skicka till %(kindlemail)s" -#: cps/admin.py:948 +#: cps/admin.py:949 #, 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:950 +#: cps/admin.py:951 msgid "Please configure your e-mail address first..." msgstr "Vänligen konfigurera din e-postadress först..." -#: cps/admin.py:952 +#: cps/admin.py:953 msgid "E-mail server settings updated" msgstr "E-postserverinställningar uppdaterade" -#: cps/admin.py:963 +#: cps/admin.py:964 msgid "User not found" msgstr "" -#: cps/admin.py:990 +#: cps/admin.py:991 #, python-format msgid "Password for user %(user)s reset" msgstr "Lösenord för användaren %(user)s återställd" -#: cps/admin.py:993 cps/web.py:1529 cps/web.py:1593 +#: cps/admin.py:994 cps/web.py:1531 cps/web.py:1595 msgid "An unknown error occurred. Please try again later." msgstr "Ett okänt fel uppstod. Försök igen senare." -#: cps/admin.py:996 cps/web.py:1467 +#: cps/admin.py:997 cps/web.py:1469 msgid "Please configure the SMTP mail settings first..." msgstr "Konfigurera SMTP-postinställningarna först..." -#: cps/admin.py:1008 +#: cps/admin.py:1009 msgid "Logfile viewer" msgstr "Visaren för loggfil" -#: cps/admin.py:1047 +#: cps/admin.py:1049 msgid "Requesting update package" msgstr "Begär uppdateringspaketet" -#: cps/admin.py:1048 +#: cps/admin.py:1050 msgid "Downloading update package" msgstr "Hämtar uppdateringspaketet" -#: cps/admin.py:1049 +#: cps/admin.py:1051 msgid "Unzipping update package" msgstr "Packar upp uppdateringspaketet" -#: cps/admin.py:1050 +#: cps/admin.py:1052 msgid "Replacing files" msgstr "Ersätta filer" -#: cps/admin.py:1051 +#: cps/admin.py:1053 msgid "Database connections are closed" msgstr "Databasanslutningarna är stängda" -#: cps/admin.py:1052 +#: cps/admin.py:1054 msgid "Stopping server" msgstr "Stoppar server" -#: cps/admin.py:1053 +#: cps/admin.py:1055 msgid "Update finished, please press okay and reload page" msgstr "Uppdatering klar, tryck på okej och uppdatera sidan" -#: cps/admin.py:1054 cps/admin.py:1055 cps/admin.py:1056 cps/admin.py:1057 -#: cps/admin.py:1058 +#: cps/admin.py:1056 cps/admin.py:1057 cps/admin.py:1058 cps/admin.py:1059 +#: cps/admin.py:1060 msgid "Update failed:" msgstr "Uppdateringen misslyckades:" -#: cps/admin.py:1054 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 +#: cps/admin.py:1056 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 msgid "HTTP Error" msgstr "HTTP-fel" -#: cps/admin.py:1055 cps/updater.py:322 cps/updater.py:525 +#: cps/admin.py:1057 cps/updater.py:322 cps/updater.py:525 msgid "Connection error" msgstr "Anslutningsfel" -#: cps/admin.py:1056 cps/updater.py:324 cps/updater.py:527 +#: cps/admin.py:1058 cps/updater.py:324 cps/updater.py:527 msgid "Timeout while establishing connection" msgstr "Tiden ute när du etablerade anslutning" -#: cps/admin.py:1057 cps/updater.py:326 cps/updater.py:529 +#: cps/admin.py:1059 cps/updater.py:326 cps/updater.py:529 msgid "General error" msgstr "Allmänt fel" -#: cps/admin.py:1058 +#: cps/admin.py:1060 msgid "Update File Could Not be Saved in Temp Dir" msgstr "" -#: cps/converter.py:32 +#: cps/converter.py:31 msgid "not configured" msgstr "inte konfigurerad" -#: cps/converter.py:34 +#: cps/converter.py:33 msgid "Execution permissions missing" msgstr "" -#: cps/editbooks.py:273 cps/editbooks.py:275 +#: cps/editbooks.py:272 cps/editbooks.py:274 msgid "Book Format Successfully Deleted" msgstr "" -#: cps/editbooks.py:282 cps/editbooks.py:284 +#: cps/editbooks.py:281 cps/editbooks.py:283 msgid "Book Successfully Deleted" msgstr "" -#: cps/editbooks.py:293 cps/editbooks.py:596 cps/web.py:1824 cps/web.py:1865 -#: cps/web.py:1927 +#: cps/editbooks.py:292 cps/editbooks.py:595 cps/web.py:1826 cps/web.py:1867 +#: cps/web.py:1929 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:327 +#: cps/editbooks.py:326 msgid "edit metadata" msgstr "redigera metadata" -#: cps/editbooks.py:402 +#: cps/editbooks.py:401 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s är inte ett giltigt språk" -#: cps/editbooks.py:513 cps/editbooks.py:769 +#: cps/editbooks.py:512 cps/editbooks.py:768 #, 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:517 cps/editbooks.py:773 +#: cps/editbooks.py:516 cps/editbooks.py:772 msgid "File to be uploaded must have an extension" msgstr "Filen som ska laddas upp måste ha en ändelse" -#: cps/editbooks.py:529 +#: cps/editbooks.py:528 #, 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:534 +#: cps/editbooks.py:533 #, python-format msgid "Failed to store file %(file)s." msgstr "Det gick inte att lagra filen %(file)s." -#: cps/editbooks.py:552 cps/editbooks.py:904 +#: cps/editbooks.py:551 cps/editbooks.py:903 #, python-format msgid "Database error: %(error)s." msgstr "" -#: cps/editbooks.py:556 +#: cps/editbooks.py:555 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Filformatet %(ext)s lades till %(book)s" -#: cps/editbooks.py:673 +#: cps/editbooks.py:672 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:710 +#: cps/editbooks.py:709 msgid "Metadata successfully updated" msgstr "Metadata uppdaterades" -#: cps/editbooks.py:719 +#: cps/editbooks.py:718 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:781 +#: cps/editbooks.py:780 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "Filen %(filename)s kunde inte sparas i temp dir" -#: cps/editbooks.py:791 +#: cps/editbooks.py:790 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Uppladdad bok finns förmodligen i biblioteket, överväg att ändra innan du laddar upp nya: " -#: cps/editbooks.py:879 +#: cps/editbooks.py:878 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "" -#: cps/editbooks.py:890 +#: cps/editbooks.py:889 #, python-format msgid "File %(file)s uploaded" msgstr "Filen %(file)s uppladdad" -#: cps/editbooks.py:916 +#: cps/editbooks.py:915 msgid "Source or destination format for conversion missing" msgstr "Källa eller målformat för konvertering saknas" -#: cps/editbooks.py:924 +#: cps/editbooks.py:923 #, 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:928 +#: cps/editbooks.py:927 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Det gick inte att konvertera den här boken: %(res)s" @@ -580,7 +580,7 @@ msgstr "Det gick inte att logga in med Google." msgid "Failed to fetch user info from Google." msgstr "Det gick inte att hämta användarinformation från Google." -#: cps/oauth_bb.py:225 cps/web.py:1565 cps/web.py:1707 +#: cps/oauth_bb.py:225 cps/web.py:1567 cps/web.py:1709 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "du är nu inloggad som: \"%(nickname)s\"" @@ -740,7 +740,7 @@ msgstr "" msgid "Show Downloaded Books" msgstr "" -#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:639 +#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:641 msgid "Top Rated Books" msgstr "Bäst rankade böcker" @@ -749,7 +749,7 @@ msgid "Show Top Rated Books" msgstr "Visa böcker med bästa betyg" #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:82 -#: cps/web.py:900 +#: cps/web.py:902 msgid "Read Books" msgstr "Lästa böcker" @@ -758,7 +758,7 @@ 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:86 -#: cps/web.py:903 +#: cps/web.py:905 msgid "Unread Books" msgstr "Olästa böcker" @@ -775,7 +775,7 @@ msgid "Show random books" msgstr "Visa slumpmässiga böcker" #: cps/templates/book_table.html:50 cps/templates/index.xml:75 cps/ub.py:92 -#: cps/web.py:1204 +#: cps/web.py:1206 msgid "Categories" msgstr "Kategorier" @@ -785,7 +785,7 @@ msgstr "Visa kategorival" #: cps/templates/book_edit.html:84 cps/templates/book_table.html:51 #: cps/templates/index.xml:82 cps/templates/search_form.html:54 cps/ub.py:95 -#: cps/web.py:1108 cps/web.py:1118 +#: cps/web.py:1110 cps/web.py:1120 msgid "Series" msgstr "Serier" @@ -802,7 +802,7 @@ msgid "Show author selection" msgstr "Visa författarval" #: cps/templates/book_table.html:55 cps/templates/index.xml:68 cps/ub.py:102 -#: cps/web.py:1087 +#: cps/web.py:1089 msgid "Publishers" msgstr "Förlag" @@ -811,7 +811,7 @@ msgid "Show publisher selection" msgstr "Visa urval av förlag" #: cps/templates/book_table.html:53 cps/templates/index.xml:89 -#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1183 +#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1185 msgid "Languages" msgstr "Språk" @@ -835,7 +835,7 @@ msgstr "Filformat" msgid "Show file formats selection" msgstr "Visa val av filformat" -#: cps/ub.py:116 cps/web.py:927 +#: cps/ub.py:116 cps/web.py:929 msgid "Archived Books" msgstr "" @@ -880,225 +880,225 @@ msgstr "En ny uppdatering är tillgänglig. Klicka på knappen nedan för att up msgid "Click on the button below to update to the latest stable version." msgstr "Klicka på knappen nedan för att uppdatera till den senaste stabila versionen." -#: cps/web.py:316 +#: cps/web.py:318 #, python-format msgid "Error: %(ldaperror)s" msgstr "" -#: cps/web.py:320 +#: cps/web.py:322 msgid "Error: No user returned in response of LDAP server" msgstr "" -#: cps/web.py:368 +#: cps/web.py:370 msgid "Failed to Create at Least One LDAP User" msgstr "" -#: cps/web.py:371 +#: cps/web.py:373 msgid "At Least One LDAP User Not Found in Database" msgstr "" -#: cps/web.py:373 +#: cps/web.py:375 msgid "User Successfully Imported" msgstr "" -#: cps/templates/index.html:5 cps/web.py:647 +#: cps/templates/index.html:5 cps/web.py:649 msgid "Discover (Random Books)" msgstr "Upptäck (slumpmässiga böcker)" -#: cps/web.py:686 +#: cps/web.py:688 msgid "Books" msgstr "Böcker" -#: cps/web.py:713 +#: cps/web.py:715 msgid "Hot Books (Most Downloaded)" msgstr "Heta böcker (mest hämtade)" -#: cps/web.py:748 +#: cps/web.py:750 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:762 +#: cps/web.py:764 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Hoppsan! Vald boktitel är inte tillgänglig. Filen finns inte eller är inte tillgänglig" -#: cps/web.py:776 +#: cps/web.py:778 #, python-format msgid "Author: %(name)s" msgstr "Författare: %(name)s" -#: cps/web.py:790 +#: cps/web.py:792 #, python-format msgid "Publisher: %(name)s" msgstr "Förlag: %(name)s" -#: cps/web.py:803 +#: cps/web.py:805 #, python-format msgid "Series: %(serie)s" msgstr "Serier: %(serie)s" -#: cps/web.py:816 +#: cps/web.py:818 #, python-format msgid "Rating: %(rating)s stars" msgstr "Betyg: %(rating)s stars" -#: cps/web.py:829 +#: cps/web.py:831 #, python-format msgid "File format: %(format)s" msgstr "Filformat: %(format)s" -#: cps/web.py:843 +#: cps/web.py:845 #, python-format msgid "Category: %(name)s" msgstr "Kategori: %(name)s" -#: cps/web.py:862 +#: cps/web.py:864 #, python-format msgid "Language: %(name)s" msgstr "Språk: %(name)s" -#: cps/web.py:891 +#: cps/web.py:893 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:958 cps/web.py:1407 +#: cps/templates/layout.html:56 cps/web.py:960 cps/web.py:1409 msgid "Advanced Search" msgstr "Avancerad sökning" #: cps/templates/book_edit.html:213 cps/templates/feed.xml:33 #: cps/templates/layout.html:45 cps/templates/layout.html:48 -#: cps/templates/search_form.html:175 cps/web.py:970 cps/web.py:1241 +#: cps/templates/search_form.html:175 cps/web.py:972 cps/web.py:1243 msgid "Search" msgstr "Sök" -#: cps/web.py:998 +#: cps/web.py:1000 msgid "Books list" msgstr "" -#: cps/web.py:1136 +#: cps/web.py:1138 msgid "Ratings list" msgstr "Betygslista" -#: cps/web.py:1155 +#: cps/web.py:1157 msgid "File formats list" msgstr "Lista över filformat" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1218 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1220 msgid "Tasks" msgstr "Uppgifter" -#: cps/web.py:1303 +#: cps/web.py:1305 msgid "Published after " msgstr "Publicerad efter " -#: cps/web.py:1310 +#: cps/web.py:1312 msgid "Published before " msgstr "Publicerad före " -#: cps/web.py:1325 +#: cps/web.py:1327 #, python-format msgid "Rating <= %(rating)s" msgstr "Betyg <= %(rating)s" -#: cps/web.py:1327 +#: cps/web.py:1329 #, python-format msgid "Rating >= %(rating)s" msgstr "Betyg >= %(rating)s" -#: cps/web.py:1472 +#: cps/web.py:1474 #, 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:1476 +#: cps/web.py:1478 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Det gick inte att skicka den här boken: %(res)s" -#: cps/web.py:1478 +#: cps/web.py:1480 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "Konfigurera din kindle-e-postadress först..." -#: cps/web.py:1495 +#: cps/web.py:1497 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "E-postservern är inte konfigurerad, kontakta din administratör!" -#: cps/web.py:1496 cps/web.py:1506 cps/web.py:1530 cps/web.py:1534 -#: cps/web.py:1539 cps/web.py:1543 +#: cps/web.py:1498 cps/web.py:1508 cps/web.py:1532 cps/web.py:1536 +#: cps/web.py:1541 cps/web.py:1545 msgid "register" msgstr "registrera" -#: cps/web.py:1532 +#: cps/web.py:1534 msgid "Your e-mail is not allowed to register" msgstr "Din e-post är inte tillåten att registrera" -#: cps/web.py:1535 +#: cps/web.py:1537 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Bekräftelsemail skickades till ditt e-postkonto." -#: cps/web.py:1538 +#: cps/web.py:1540 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:1555 +#: cps/web.py:1557 msgid "Cannot activate LDAP authentication" msgstr "Det går inte att aktivera LDAP-autentisering" -#: cps/web.py:1572 +#: cps/web.py:1574 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "" -#: cps/web.py:1578 +#: cps/web.py:1580 #, python-format msgid "Could not login: %(message)s" msgstr "" -#: cps/web.py:1582 cps/web.py:1606 +#: cps/web.py:1584 cps/web.py:1608 msgid "Wrong Username or Password" msgstr "Fel användarnamn eller lösenord" -#: cps/web.py:1589 +#: cps/web.py:1591 msgid "New Password was send to your email address" msgstr "Nytt lösenord skickades till din e-postadress" -#: cps/web.py:1595 +#: cps/web.py:1597 msgid "Please enter valid username to reset password" msgstr "Ange giltigt användarnamn för att återställa lösenordet" -#: cps/web.py:1601 +#: cps/web.py:1603 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Du är nu inloggad som: \"%(nickname)s\"" -#: cps/web.py:1612 cps/web.py:1639 +#: cps/web.py:1614 cps/web.py:1641 msgid "login" msgstr "logga in" -#: cps/web.py:1651 cps/web.py:1685 +#: cps/web.py:1653 cps/web.py:1687 msgid "Token not found" msgstr "Token hittades inte" -#: cps/web.py:1660 cps/web.py:1693 +#: cps/web.py:1662 cps/web.py:1695 msgid "Token has expired" msgstr "Token har löpt ut" -#: cps/web.py:1669 +#: cps/web.py:1671 msgid "Success! Please return to your device" msgstr "Lyckades! Vänligen återvänd till din enhet" -#: cps/web.py:1753 cps/web.py:1809 +#: cps/web.py:1755 cps/web.py:1811 #, python-format msgid "%(name)s's profile" msgstr "%(name)ss profil" -#: cps/web.py:1789 +#: cps/web.py:1791 msgid "Profile updated" msgstr "Profilen uppdaterad" -#: cps/web.py:1836 cps/web.py:1839 cps/web.py:1842 cps/web.py:1849 -#: cps/web.py:1854 +#: cps/web.py:1838 cps/web.py:1841 cps/web.py:1844 cps/web.py:1851 +#: cps/web.py:1856 msgid "Read a Book" msgstr "Läs en bok" diff --git a/cps/translations/tr/LC_MESSAGES/messages.po b/cps/translations/tr/LC_MESSAGES/messages.po index 57298986..70a11c27 100644 --- a/cps/translations/tr/LC_MESSAGES/messages.po +++ b/cps/translations/tr/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2020-10-31 19:17+0100\n" +"POT-Creation-Date: 2020-11-14 13:11+0100\n" "PO-Revision-Date: 2020-04-23 22:47+0300\n" "Last-Translator: iz \n" "Language: tr\n" @@ -22,7 +22,7 @@ msgstr "" msgid "installed" msgstr "yüklü" -#: cps/about.py:44 cps/converter.py:33 +#: cps/about.py:44 cps/converter.py:32 msgid "not installed" msgstr "yüklü değil" @@ -46,351 +46,351 @@ msgstr "" msgid "Unknown command" msgstr "" -#: cps/admin.py:116 cps/editbooks.py:612 cps/editbooks.py:624 -#: cps/editbooks.py:724 cps/editbooks.py:726 cps/editbooks.py:787 -#: cps/editbooks.py:803 cps/updater.py:510 cps/uploader.py:98 +#: cps/admin.py:116 cps/editbooks.py:611 cps/editbooks.py:623 +#: cps/editbooks.py:723 cps/editbooks.py:725 cps/editbooks.py:786 +#: cps/editbooks.py:802 cps/updater.py:510 cps/uploader.py:98 #: cps/uploader.py:108 msgid "Unknown" msgstr "Bilinmeyen" -#: cps/admin.py:136 +#: cps/admin.py:137 msgid "Admin page" msgstr "Yönetim sayfası" -#: cps/admin.py:158 +#: cps/admin.py:159 msgid "UI Configuration" msgstr "Arayüz Ayarları" -#: cps/admin.py:190 cps/admin.py:717 +#: cps/admin.py:191 cps/admin.py:718 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web yapılandırması güncellendi" -#: cps/admin.py:435 cps/admin.py:441 cps/admin.py:452 cps/admin.py:463 +#: cps/admin.py:436 cps/admin.py:442 cps/admin.py:453 cps/admin.py:464 #: cps/templates/modal_dialogs.html:29 msgid "Deny" msgstr "" -#: cps/admin.py:437 cps/admin.py:443 cps/admin.py:454 cps/admin.py:465 +#: cps/admin.py:438 cps/admin.py:444 cps/admin.py:455 cps/admin.py:466 #: cps/templates/modal_dialogs.html:28 msgid "Allow" msgstr "" -#: cps/admin.py:511 +#: cps/admin.py:512 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "" -#: cps/admin.py:550 +#: cps/admin.py:551 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:555 +#: cps/admin.py:556 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:581 +#: cps/admin.py:582 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "" -#: cps/admin.py:594 +#: cps/admin.py:595 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:597 +#: cps/admin.py:598 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:601 +#: cps/admin.py:602 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:604 +#: cps/admin.py:605 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:608 +#: cps/admin.py:609 msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:630 +#: cps/admin.py:631 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:634 +#: cps/admin.py:635 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:700 cps/admin.py:799 cps/admin.py:889 cps/admin.py:938 +#: cps/admin.py:701 cps/admin.py:800 cps/admin.py:890 cps/admin.py:939 #: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260 #: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:712 +#: cps/admin.py:713 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:714 +#: cps/admin.py:715 msgid "DB is not Writeable" msgstr "" -#: cps/admin.py:747 +#: cps/admin.py:748 msgid "Basic Configuration" msgstr "Temel Ayarlar" -#: cps/admin.py:762 cps/web.py:1505 +#: cps/admin.py:763 cps/web.py:1507 msgid "Please fill out all fields!" msgstr "Lütfen tüm alanları doldurun!" -#: cps/admin.py:765 cps/admin.py:777 cps/admin.py:783 cps/admin.py:907 +#: cps/admin.py:766 cps/admin.py:778 cps/admin.py:784 cps/admin.py:908 msgid "Add new user" msgstr "Yeni kullanıcı ekle" -#: cps/admin.py:774 cps/web.py:1751 +#: cps/admin.py:775 cps/web.py:1753 msgid "E-mail is not from valid domain" msgstr "E-posta izin verilen bir servisten değil" -#: cps/admin.py:781 cps/admin.py:796 +#: cps/admin.py:782 cps/admin.py:797 msgid "Found an existing account for this e-mail address or nickname." msgstr "Bu e-posta adresi veya kullanıcı adı için zaten bir hesap var." -#: cps/admin.py:792 +#: cps/admin.py:793 #, python-format msgid "User '%(user)s' created" msgstr "'%(user)s' kullanıcısı oluşturuldu" -#: cps/admin.py:808 +#: cps/admin.py:809 #, python-format msgid "User '%(nick)s' deleted" msgstr "Kullanıcı '%(nick)s' silindi" -#: cps/admin.py:811 +#: cps/admin.py:812 msgid "No admin user remaining, can't delete user" msgstr "Başka yönetici kullanıcı olmadığından silinemedi" -#: cps/admin.py:817 +#: cps/admin.py:818 msgid "No admin user remaining, can't remove admin role" msgstr "" -#: cps/admin.py:853 cps/web.py:1793 +#: cps/admin.py:854 cps/web.py:1795 msgid "Found an existing account for this e-mail address." msgstr "Bu e-posta adresi için bir hesap mevcut." -#: cps/admin.py:862 cps/admin.py:876 cps/admin.py:979 cps/web.py:1769 +#: cps/admin.py:863 cps/admin.py:877 cps/admin.py:980 cps/web.py:1771 #, python-format msgid "Edit User %(nick)s" msgstr "%(nick)s kullanıcısını düzenle" -#: cps/admin.py:868 cps/web.py:1762 +#: cps/admin.py:869 cps/web.py:1764 msgid "This username is already taken" msgstr "Bu kullanıcı adı zaten alındı" -#: cps/admin.py:883 +#: cps/admin.py:884 #, python-format msgid "User '%(nick)s' updated" msgstr "'%(nick)s' kullanıcısı güncellendi" -#: cps/admin.py:886 +#: cps/admin.py:887 msgid "An unknown error occured." msgstr "Bilinmeyen bir hata oluştu." -#: cps/admin.py:916 cps/templates/admin.html:71 +#: cps/admin.py:917 cps/templates/admin.html:71 msgid "Edit E-mail Server Settings" msgstr "" -#: cps/admin.py:945 +#: cps/admin.py:946 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "Deneme e-postası başarıyla %(kindlemail)s adresine gönderildi" -#: cps/admin.py:948 +#: cps/admin.py:949 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Deneme e-postası gönderilirken bir hata oluştu: %(res)s" -#: cps/admin.py:950 +#: cps/admin.py:951 msgid "Please configure your e-mail address first..." msgstr "Lütfen önce e-posta adresinizi ayarlayın..." -#: cps/admin.py:952 +#: cps/admin.py:953 msgid "E-mail server settings updated" msgstr "E-posta sunucusu ayarları güncellendi" -#: cps/admin.py:963 +#: cps/admin.py:964 msgid "User not found" msgstr "" -#: cps/admin.py:990 +#: cps/admin.py:991 #, python-format msgid "Password for user %(user)s reset" msgstr "%(user)s kullanıcısının şifresi sıfırlandı" -#: cps/admin.py:993 cps/web.py:1529 cps/web.py:1593 +#: cps/admin.py:994 cps/web.py:1531 cps/web.py:1595 msgid "An unknown error occurred. Please try again later." msgstr "Bilinmeyen bir hata oluştu. Lütfen daha sonra tekrar deneyiniz." -#: cps/admin.py:996 cps/web.py:1467 +#: cps/admin.py:997 cps/web.py:1469 msgid "Please configure the SMTP mail settings first..." msgstr "Lütfen önce SMTP e-posta ayarlarını ayarlayın..." -#: cps/admin.py:1008 +#: cps/admin.py:1009 msgid "Logfile viewer" msgstr "Log dosyası görüntüleyici" -#: cps/admin.py:1047 +#: cps/admin.py:1049 msgid "Requesting update package" msgstr "Güncelleme paketi isteniyor" -#: cps/admin.py:1048 +#: cps/admin.py:1050 msgid "Downloading update package" msgstr "Güncelleme paketi indiriliyor" -#: cps/admin.py:1049 +#: cps/admin.py:1051 msgid "Unzipping update package" msgstr "Güncelleme paketi ayıklanıyor" -#: cps/admin.py:1050 +#: cps/admin.py:1052 msgid "Replacing files" msgstr "Dosyalar değiştiriliyor" -#: cps/admin.py:1051 +#: cps/admin.py:1053 msgid "Database connections are closed" msgstr "Veritabanı bağlantıları kapalı" -#: cps/admin.py:1052 +#: cps/admin.py:1054 msgid "Stopping server" msgstr "Sunucu durduruyor" -#: cps/admin.py:1053 +#: cps/admin.py:1055 msgid "Update finished, please press okay and reload page" msgstr "Güncelleme tamamlandı, sayfayı yenilemek için lütfen Tamam'a tıklayınız" -#: cps/admin.py:1054 cps/admin.py:1055 cps/admin.py:1056 cps/admin.py:1057 -#: cps/admin.py:1058 +#: cps/admin.py:1056 cps/admin.py:1057 cps/admin.py:1058 cps/admin.py:1059 +#: cps/admin.py:1060 msgid "Update failed:" msgstr "Güncelleme başarısız:" -#: cps/admin.py:1054 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 +#: cps/admin.py:1056 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 msgid "HTTP Error" msgstr "HTTP Hatası" -#: cps/admin.py:1055 cps/updater.py:322 cps/updater.py:525 +#: cps/admin.py:1057 cps/updater.py:322 cps/updater.py:525 msgid "Connection error" msgstr "Bağlantı hatası" -#: cps/admin.py:1056 cps/updater.py:324 cps/updater.py:527 +#: cps/admin.py:1058 cps/updater.py:324 cps/updater.py:527 msgid "Timeout while establishing connection" msgstr "Bağlantı kurulmaya çalışırken zaman aşımına uğradı" -#: cps/admin.py:1057 cps/updater.py:326 cps/updater.py:529 +#: cps/admin.py:1059 cps/updater.py:326 cps/updater.py:529 msgid "General error" msgstr "Genel hata" -#: cps/admin.py:1058 +#: cps/admin.py:1060 msgid "Update File Could Not be Saved in Temp Dir" msgstr "" -#: cps/converter.py:32 +#: cps/converter.py:31 msgid "not configured" msgstr "ayarlanmadı" -#: cps/converter.py:34 +#: cps/converter.py:33 msgid "Execution permissions missing" msgstr "" -#: cps/editbooks.py:273 cps/editbooks.py:275 +#: cps/editbooks.py:272 cps/editbooks.py:274 msgid "Book Format Successfully Deleted" msgstr "" -#: cps/editbooks.py:282 cps/editbooks.py:284 +#: cps/editbooks.py:281 cps/editbooks.py:283 msgid "Book Successfully Deleted" msgstr "" -#: cps/editbooks.py:293 cps/editbooks.py:596 cps/web.py:1824 cps/web.py:1865 -#: cps/web.py:1927 +#: cps/editbooks.py:292 cps/editbooks.py:595 cps/web.py:1826 cps/web.py:1867 +#: cps/web.py:1929 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "eKitap açılırken hata oluştu. Dosya mevcut değil veya erişilemiyor" -#: cps/editbooks.py:327 +#: cps/editbooks.py:326 msgid "edit metadata" msgstr "metaveri düzenle" -#: cps/editbooks.py:402 +#: cps/editbooks.py:401 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s geçerli bir dil değil" -#: cps/editbooks.py:513 cps/editbooks.py:769 +#: cps/editbooks.py:512 cps/editbooks.py:768 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "'%(ext)s' uzantılı dosyaların bu sunucuya yüklenmesine izin verilmiyor" -#: cps/editbooks.py:517 cps/editbooks.py:773 +#: cps/editbooks.py:516 cps/editbooks.py:772 msgid "File to be uploaded must have an extension" msgstr "Yüklenecek dosyanın mutlaka bir uzantısı olması gerekli" -#: cps/editbooks.py:529 +#: cps/editbooks.py:528 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "%(path)s dizini oluşturulamadı. (İzin reddedildi)" -#: cps/editbooks.py:534 +#: cps/editbooks.py:533 #, python-format msgid "Failed to store file %(file)s." msgstr "%(file)s dosyası kaydedilemedi." -#: cps/editbooks.py:552 cps/editbooks.py:904 +#: cps/editbooks.py:551 cps/editbooks.py:903 #, python-format msgid "Database error: %(error)s." msgstr "" -#: cps/editbooks.py:556 +#: cps/editbooks.py:555 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "%(book)s kitabına %(ext)s dosya biçimi eklendi" -#: cps/editbooks.py:673 +#: cps/editbooks.py:672 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:710 +#: cps/editbooks.py:709 msgid "Metadata successfully updated" msgstr "Metaveri başarıyla güncellendi" -#: cps/editbooks.py:719 +#: cps/editbooks.py:718 msgid "Error editing book, please check logfile for details" msgstr "eKitap düzenlenirken hata oluştu, detaylar için lütfen log dosyasını kontrol edin" -#: cps/editbooks.py:781 +#: cps/editbooks.py:780 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "%(filename)s dosyası geçici dizine kaydedilemedi" -#: cps/editbooks.py:791 +#: cps/editbooks.py:790 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "Yüklenen eKitap muhtemelen kitaplıkta zaten var. Yenisini yüklemeden değiştirmeyi düşünün: " -#: cps/editbooks.py:879 +#: cps/editbooks.py:878 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "" -#: cps/editbooks.py:890 +#: cps/editbooks.py:889 #, python-format msgid "File %(file)s uploaded" msgstr "%(file)s dosyası yüklendi" -#: cps/editbooks.py:916 +#: cps/editbooks.py:915 msgid "Source or destination format for conversion missing" msgstr "Dönüştürme için kaynak ya da hedef biçimi eksik" -#: cps/editbooks.py:924 +#: cps/editbooks.py:923 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "eKitap %(book_format)s formatlarına dönüştürülmek üzere başarıyla sıraya alındı" -#: cps/editbooks.py:928 +#: cps/editbooks.py:927 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Bu eKitabı dönüştürürken bir hata oluştu: %(res)s" @@ -580,7 +580,7 @@ msgstr "Google ile giriş yapılamadı." msgid "Failed to fetch user info from Google." msgstr "Google'dan kullanıcı bilgileri alınamadı." -#: cps/oauth_bb.py:225 cps/web.py:1565 cps/web.py:1707 +#: cps/oauth_bb.py:225 cps/web.py:1567 cps/web.py:1709 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "giriş yaptınız: '%(nickname)s'" @@ -740,7 +740,7 @@ msgstr "" msgid "Show Downloaded Books" msgstr "" -#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:639 +#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:641 msgid "Top Rated Books" msgstr "" @@ -749,7 +749,7 @@ msgid "Show Top Rated Books" msgstr "" #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:82 -#: cps/web.py:900 +#: cps/web.py:902 msgid "Read Books" msgstr "Okunanlar" @@ -758,7 +758,7 @@ msgid "Show read and unread" msgstr "Okunan ve okunmayanları göster" #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:86 -#: cps/web.py:903 +#: cps/web.py:905 msgid "Unread Books" msgstr "Okunmamışlar" @@ -775,7 +775,7 @@ msgid "Show random books" msgstr "Rastgele eKitap göster" #: cps/templates/book_table.html:50 cps/templates/index.xml:75 cps/ub.py:92 -#: cps/web.py:1204 +#: cps/web.py:1206 msgid "Categories" msgstr "Kategoriler" @@ -785,7 +785,7 @@ msgstr "Kategori seçimini göster" #: cps/templates/book_edit.html:84 cps/templates/book_table.html:51 #: cps/templates/index.xml:82 cps/templates/search_form.html:54 cps/ub.py:95 -#: cps/web.py:1108 cps/web.py:1118 +#: cps/web.py:1110 cps/web.py:1120 msgid "Series" msgstr "Seriler" @@ -802,7 +802,7 @@ msgid "Show author selection" msgstr "Yazar seçimini göster" #: cps/templates/book_table.html:55 cps/templates/index.xml:68 cps/ub.py:102 -#: cps/web.py:1087 +#: cps/web.py:1089 msgid "Publishers" msgstr "Yayıncılar" @@ -811,7 +811,7 @@ msgid "Show publisher selection" msgstr "Yayıncı seçimini göster" #: cps/templates/book_table.html:53 cps/templates/index.xml:89 -#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1183 +#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1185 msgid "Languages" msgstr "Diller" @@ -835,7 +835,7 @@ msgstr "Biçimler" msgid "Show file formats selection" msgstr "Dosya biçimi seçimini göster" -#: cps/ub.py:116 cps/web.py:927 +#: cps/ub.py:116 cps/web.py:929 msgid "Archived Books" msgstr "" @@ -880,225 +880,225 @@ msgstr "Yeni bir güncelleme mevcut. Son sürüme güncellemek için aşağıdak msgid "Click on the button below to update to the latest stable version." msgstr "Son kararlı sürüme güncellemek için aşağıdaki düğmeye tıklayın." -#: cps/web.py:316 +#: cps/web.py:318 #, python-format msgid "Error: %(ldaperror)s" msgstr "" -#: cps/web.py:320 +#: cps/web.py:322 msgid "Error: No user returned in response of LDAP server" msgstr "" -#: cps/web.py:368 +#: cps/web.py:370 msgid "Failed to Create at Least One LDAP User" msgstr "" -#: cps/web.py:371 +#: cps/web.py:373 msgid "At Least One LDAP User Not Found in Database" msgstr "" -#: cps/web.py:373 +#: cps/web.py:375 msgid "User Successfully Imported" msgstr "" -#: cps/templates/index.html:5 cps/web.py:647 +#: cps/templates/index.html:5 cps/web.py:649 msgid "Discover (Random Books)" msgstr "Keşfet (Rastgele)" -#: cps/web.py:686 +#: cps/web.py:688 msgid "Books" msgstr "eKitaplar" -#: cps/web.py:713 +#: cps/web.py:715 msgid "Hot Books (Most Downloaded)" msgstr "" -#: cps/web.py:748 +#: cps/web.py:750 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:762 +#: cps/web.py:764 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "" -#: cps/web.py:776 +#: cps/web.py:778 #, python-format msgid "Author: %(name)s" msgstr "Yazar: %(name)s" -#: cps/web.py:790 +#: cps/web.py:792 #, python-format msgid "Publisher: %(name)s" msgstr "Yayınevi: %(name)s" -#: cps/web.py:803 +#: cps/web.py:805 #, python-format msgid "Series: %(serie)s" msgstr "Seri: %(serie)s" -#: cps/web.py:816 +#: cps/web.py:818 #, python-format msgid "Rating: %(rating)s stars" msgstr "Değerlendirme: %(rating)s yıldız" -#: cps/web.py:829 +#: cps/web.py:831 #, python-format msgid "File format: %(format)s" msgstr "Biçim: %(format)s" -#: cps/web.py:843 +#: cps/web.py:845 #, python-format msgid "Category: %(name)s" msgstr "Kategori: %(name)s" -#: cps/web.py:862 +#: cps/web.py:864 #, python-format msgid "Language: %(name)s" msgstr "Dil: %(name)s" -#: cps/web.py:891 +#: cps/web.py:893 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:958 cps/web.py:1407 +#: cps/templates/layout.html:56 cps/web.py:960 cps/web.py:1409 msgid "Advanced Search" msgstr "Gelişmiş Arama" #: cps/templates/book_edit.html:213 cps/templates/feed.xml:33 #: cps/templates/layout.html:45 cps/templates/layout.html:48 -#: cps/templates/search_form.html:175 cps/web.py:970 cps/web.py:1241 +#: cps/templates/search_form.html:175 cps/web.py:972 cps/web.py:1243 msgid "Search" msgstr "Ara" -#: cps/web.py:998 +#: cps/web.py:1000 msgid "Books list" msgstr "" -#: cps/web.py:1136 +#: cps/web.py:1138 msgid "Ratings list" msgstr "Değerlendirme listesi" -#: cps/web.py:1155 +#: cps/web.py:1157 msgid "File formats list" msgstr "Biçim listesi" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1218 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1220 msgid "Tasks" msgstr "Görevler" -#: cps/web.py:1303 +#: cps/web.py:1305 msgid "Published after " msgstr "Yayınlanma (sonra)" -#: cps/web.py:1310 +#: cps/web.py:1312 msgid "Published before " msgstr "Yayınlanma (önce)" -#: cps/web.py:1325 +#: cps/web.py:1327 #, python-format msgid "Rating <= %(rating)s" msgstr "Değerlendirme <= %(rating)s" -#: cps/web.py:1327 +#: cps/web.py:1329 #, python-format msgid "Rating >= %(rating)s" msgstr "Değerlendirme >= %(rating)s" -#: cps/web.py:1472 +#: cps/web.py:1474 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "%(kindlemail)s'a gönderilmek üzere başarıyla sıraya alındı" -#: cps/web.py:1476 +#: cps/web.py:1478 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "" -#: cps/web.py:1478 +#: cps/web.py:1480 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "" -#: cps/web.py:1495 +#: cps/web.py:1497 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "E-Posta sunucusu ayarlanmadı, lütfen yöneticinizle iletişime geçin!" -#: cps/web.py:1496 cps/web.py:1506 cps/web.py:1530 cps/web.py:1534 -#: cps/web.py:1539 cps/web.py:1543 +#: cps/web.py:1498 cps/web.py:1508 cps/web.py:1532 cps/web.py:1536 +#: cps/web.py:1541 cps/web.py:1545 msgid "register" msgstr "kaydol" -#: cps/web.py:1532 +#: cps/web.py:1534 msgid "Your e-mail is not allowed to register" msgstr "E-posta adresinizle kaydolunmasına izin verilmiyor" -#: cps/web.py:1535 +#: cps/web.py:1537 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Onay e-Postası hesabınıza gönderildi." -#: cps/web.py:1538 +#: cps/web.py:1540 msgid "This username or e-mail address is already in use." msgstr "Kullanıcı adı ya da e-Posta adresi zaten kullanımda." -#: cps/web.py:1555 +#: cps/web.py:1557 msgid "Cannot activate LDAP authentication" msgstr "LDAP Kimlik Doğrulaması etkinleştirilemiyor" -#: cps/web.py:1572 +#: cps/web.py:1574 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "" -#: cps/web.py:1578 +#: cps/web.py:1580 #, python-format msgid "Could not login: %(message)s" msgstr "" -#: cps/web.py:1582 cps/web.py:1606 +#: cps/web.py:1584 cps/web.py:1608 msgid "Wrong Username or Password" msgstr "Yanlış Kullanıcı adı ya da Şifre" -#: cps/web.py:1589 +#: cps/web.py:1591 msgid "New Password was send to your email address" msgstr "Yeni şifre e-Posta adresinize gönderildi" -#: cps/web.py:1595 +#: cps/web.py:1597 msgid "Please enter valid username to reset password" msgstr "Şifrenizi sıfırlayabilmek için lütfen geçerli bir kullanıcı adı giriniz" -#: cps/web.py:1601 +#: cps/web.py:1603 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "Giriş yaptınız: '%(nickname)s'" -#: cps/web.py:1612 cps/web.py:1639 +#: cps/web.py:1614 cps/web.py:1641 msgid "login" msgstr "giriş" -#: cps/web.py:1651 cps/web.py:1685 +#: cps/web.py:1653 cps/web.py:1687 msgid "Token not found" msgstr "Token bulunamadı" -#: cps/web.py:1660 cps/web.py:1693 +#: cps/web.py:1662 cps/web.py:1695 msgid "Token has expired" msgstr "Token süresi doldu" -#: cps/web.py:1669 +#: cps/web.py:1671 msgid "Success! Please return to your device" msgstr "Başarılı! Lütfen cihazınıza dönün" -#: cps/web.py:1753 cps/web.py:1809 +#: cps/web.py:1755 cps/web.py:1811 #, python-format msgid "%(name)s's profile" msgstr "%(name)s Profili" -#: cps/web.py:1789 +#: cps/web.py:1791 msgid "Profile updated" msgstr "Profil güncellendi" -#: cps/web.py:1836 cps/web.py:1839 cps/web.py:1842 cps/web.py:1849 -#: cps/web.py:1854 +#: cps/web.py:1838 cps/web.py:1841 cps/web.py:1844 cps/web.py:1851 +#: cps/web.py:1856 msgid "Read a Book" msgstr "Kitap Oku" diff --git a/cps/translations/uk/LC_MESSAGES/messages.po b/cps/translations/uk/LC_MESSAGES/messages.po index 080cf579..ac378ae4 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: 2020-10-31 19:17+0100\n" +"POT-Creation-Date: 2020-11-14 13:11+0100\n" "PO-Revision-Date: 2017-04-30 00:47+0300\n" "Last-Translator: ABIS Team \n" "Language: uk\n" @@ -21,7 +21,7 @@ msgstr "" msgid "installed" msgstr "" -#: cps/about.py:44 cps/converter.py:33 +#: cps/about.py:44 cps/converter.py:32 msgid "not installed" msgstr "не встановлено" @@ -45,351 +45,351 @@ msgstr "" msgid "Unknown command" msgstr "" -#: cps/admin.py:116 cps/editbooks.py:612 cps/editbooks.py:624 -#: cps/editbooks.py:724 cps/editbooks.py:726 cps/editbooks.py:787 -#: cps/editbooks.py:803 cps/updater.py:510 cps/uploader.py:98 +#: cps/admin.py:116 cps/editbooks.py:611 cps/editbooks.py:623 +#: cps/editbooks.py:723 cps/editbooks.py:725 cps/editbooks.py:786 +#: cps/editbooks.py:802 cps/updater.py:510 cps/uploader.py:98 #: cps/uploader.py:108 msgid "Unknown" msgstr "Невідомий" -#: cps/admin.py:136 +#: cps/admin.py:137 msgid "Admin page" msgstr "Сторінка адміністратора" -#: cps/admin.py:158 +#: cps/admin.py:159 msgid "UI Configuration" msgstr "Конфігурація інтерфейсу" -#: cps/admin.py:190 cps/admin.py:717 +#: cps/admin.py:191 cps/admin.py:718 msgid "Calibre-Web configuration updated" msgstr "" -#: cps/admin.py:435 cps/admin.py:441 cps/admin.py:452 cps/admin.py:463 +#: cps/admin.py:436 cps/admin.py:442 cps/admin.py:453 cps/admin.py:464 #: cps/templates/modal_dialogs.html:29 msgid "Deny" msgstr "" -#: cps/admin.py:437 cps/admin.py:443 cps/admin.py:454 cps/admin.py:465 +#: cps/admin.py:438 cps/admin.py:444 cps/admin.py:455 cps/admin.py:466 #: cps/templates/modal_dialogs.html:28 msgid "Allow" msgstr "" -#: cps/admin.py:511 +#: cps/admin.py:512 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "" -#: cps/admin.py:550 +#: cps/admin.py:551 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:555 +#: cps/admin.py:556 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:581 +#: cps/admin.py:582 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "" -#: cps/admin.py:594 +#: cps/admin.py:595 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:597 +#: cps/admin.py:598 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:601 +#: cps/admin.py:602 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:604 +#: cps/admin.py:605 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:608 +#: cps/admin.py:609 msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:630 +#: cps/admin.py:631 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:634 +#: cps/admin.py:635 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:700 cps/admin.py:799 cps/admin.py:889 cps/admin.py:938 +#: cps/admin.py:701 cps/admin.py:800 cps/admin.py:890 cps/admin.py:939 #: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260 #: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:712 +#: cps/admin.py:713 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:714 +#: cps/admin.py:715 msgid "DB is not Writeable" msgstr "" -#: cps/admin.py:747 +#: cps/admin.py:748 msgid "Basic Configuration" msgstr "Настройки сервера" -#: cps/admin.py:762 cps/web.py:1505 +#: cps/admin.py:763 cps/web.py:1507 msgid "Please fill out all fields!" msgstr "Будь-ласка, заповніть всі поля!" -#: cps/admin.py:765 cps/admin.py:777 cps/admin.py:783 cps/admin.py:907 +#: cps/admin.py:766 cps/admin.py:778 cps/admin.py:784 cps/admin.py:908 msgid "Add new user" msgstr "Додати користувача" -#: cps/admin.py:774 cps/web.py:1751 +#: cps/admin.py:775 cps/web.py:1753 msgid "E-mail is not from valid domain" msgstr "" -#: cps/admin.py:781 cps/admin.py:796 +#: cps/admin.py:782 cps/admin.py:797 msgid "Found an existing account for this e-mail address or nickname." msgstr "" -#: cps/admin.py:792 +#: cps/admin.py:793 #, python-format msgid "User '%(user)s' created" msgstr "Користувач '%(user)s' додан" -#: cps/admin.py:808 +#: cps/admin.py:809 #, python-format msgid "User '%(nick)s' deleted" msgstr "Користувача '%(nick)s' видалено" -#: cps/admin.py:811 +#: cps/admin.py:812 msgid "No admin user remaining, can't delete user" msgstr "" -#: cps/admin.py:817 +#: cps/admin.py:818 msgid "No admin user remaining, can't remove admin role" msgstr "" -#: cps/admin.py:853 cps/web.py:1793 +#: cps/admin.py:854 cps/web.py:1795 msgid "Found an existing account for this e-mail address." msgstr "" -#: cps/admin.py:862 cps/admin.py:876 cps/admin.py:979 cps/web.py:1769 +#: cps/admin.py:863 cps/admin.py:877 cps/admin.py:980 cps/web.py:1771 #, python-format msgid "Edit User %(nick)s" msgstr "Змінити користувача %(nick)s" -#: cps/admin.py:868 cps/web.py:1762 +#: cps/admin.py:869 cps/web.py:1764 msgid "This username is already taken" msgstr "" -#: cps/admin.py:883 +#: cps/admin.py:884 #, python-format msgid "User '%(nick)s' updated" msgstr "Користувача '%(nick)s' оновлено" -#: cps/admin.py:886 +#: cps/admin.py:887 msgid "An unknown error occured." msgstr "Сталась невідома помилка" -#: cps/admin.py:916 cps/templates/admin.html:71 +#: cps/admin.py:917 cps/templates/admin.html:71 msgid "Edit E-mail Server Settings" msgstr "Змінити налаштування SMTP" -#: cps/admin.py:945 +#: cps/admin.py:946 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "" -#: cps/admin.py:948 +#: cps/admin.py:949 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "" -#: cps/admin.py:950 +#: cps/admin.py:951 msgid "Please configure your e-mail address first..." msgstr "" -#: cps/admin.py:952 +#: cps/admin.py:953 msgid "E-mail server settings updated" msgstr "" -#: cps/admin.py:963 +#: cps/admin.py:964 msgid "User not found" msgstr "" -#: cps/admin.py:990 +#: cps/admin.py:991 #, python-format msgid "Password for user %(user)s reset" msgstr "" -#: cps/admin.py:993 cps/web.py:1529 cps/web.py:1593 +#: cps/admin.py:994 cps/web.py:1531 cps/web.py:1595 msgid "An unknown error occurred. Please try again later." msgstr "" -#: cps/admin.py:996 cps/web.py:1467 +#: cps/admin.py:997 cps/web.py:1469 msgid "Please configure the SMTP mail settings first..." msgstr "Будь-ласка, спочатку сконфігуруйте параметри SMTP" -#: cps/admin.py:1008 +#: cps/admin.py:1009 msgid "Logfile viewer" msgstr "" -#: cps/admin.py:1047 +#: cps/admin.py:1049 msgid "Requesting update package" msgstr "Перевірка оновлень" -#: cps/admin.py:1048 +#: cps/admin.py:1050 msgid "Downloading update package" msgstr "Завантаження оновлень" -#: cps/admin.py:1049 +#: cps/admin.py:1051 msgid "Unzipping update package" msgstr "Розпакування оновлення" -#: cps/admin.py:1050 +#: cps/admin.py:1052 msgid "Replacing files" msgstr "" -#: cps/admin.py:1051 +#: cps/admin.py:1053 msgid "Database connections are closed" msgstr "З'єднання з базою даних закрите" -#: cps/admin.py:1052 +#: cps/admin.py:1054 msgid "Stopping server" msgstr "" -#: cps/admin.py:1053 +#: cps/admin.py:1055 msgid "Update finished, please press okay and reload page" msgstr "Оновлення встановлені, натисніть ok і перезавантажте сторінку" -#: cps/admin.py:1054 cps/admin.py:1055 cps/admin.py:1056 cps/admin.py:1057 -#: cps/admin.py:1058 +#: cps/admin.py:1056 cps/admin.py:1057 cps/admin.py:1058 cps/admin.py:1059 +#: cps/admin.py:1060 msgid "Update failed:" msgstr "" -#: cps/admin.py:1054 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 +#: cps/admin.py:1056 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 msgid "HTTP Error" msgstr "" -#: cps/admin.py:1055 cps/updater.py:322 cps/updater.py:525 +#: cps/admin.py:1057 cps/updater.py:322 cps/updater.py:525 msgid "Connection error" msgstr "" -#: cps/admin.py:1056 cps/updater.py:324 cps/updater.py:527 +#: cps/admin.py:1058 cps/updater.py:324 cps/updater.py:527 msgid "Timeout while establishing connection" msgstr "" -#: cps/admin.py:1057 cps/updater.py:326 cps/updater.py:529 +#: cps/admin.py:1059 cps/updater.py:326 cps/updater.py:529 msgid "General error" msgstr "" -#: cps/admin.py:1058 +#: cps/admin.py:1060 msgid "Update File Could Not be Saved in Temp Dir" msgstr "" -#: cps/converter.py:32 +#: cps/converter.py:31 msgid "not configured" msgstr "" -#: cps/converter.py:34 +#: cps/converter.py:33 msgid "Execution permissions missing" msgstr "" -#: cps/editbooks.py:273 cps/editbooks.py:275 +#: cps/editbooks.py:272 cps/editbooks.py:274 msgid "Book Format Successfully Deleted" msgstr "" -#: cps/editbooks.py:282 cps/editbooks.py:284 +#: cps/editbooks.py:281 cps/editbooks.py:283 msgid "Book Successfully Deleted" msgstr "" -#: cps/editbooks.py:293 cps/editbooks.py:596 cps/web.py:1824 cps/web.py:1865 -#: cps/web.py:1927 +#: cps/editbooks.py:292 cps/editbooks.py:595 cps/web.py:1826 cps/web.py:1867 +#: cps/web.py:1929 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Сталась помилка при відкриванні eBook. Файл не існує або відсутній доступ до нього" -#: cps/editbooks.py:327 +#: cps/editbooks.py:326 msgid "edit metadata" msgstr "змінити метадані" -#: cps/editbooks.py:402 +#: cps/editbooks.py:401 #, python-format msgid "%(langname)s is not a valid language" msgstr "" -#: cps/editbooks.py:513 cps/editbooks.py:769 +#: cps/editbooks.py:512 cps/editbooks.py:768 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "" -#: cps/editbooks.py:517 cps/editbooks.py:773 +#: cps/editbooks.py:516 cps/editbooks.py:772 msgid "File to be uploaded must have an extension" msgstr "Завантажувальний файл повинен мати розширення" -#: cps/editbooks.py:529 +#: cps/editbooks.py:528 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "" -#: cps/editbooks.py:534 +#: cps/editbooks.py:533 #, python-format msgid "Failed to store file %(file)s." msgstr "" -#: cps/editbooks.py:552 cps/editbooks.py:904 +#: cps/editbooks.py:551 cps/editbooks.py:903 #, python-format msgid "Database error: %(error)s." msgstr "" -#: cps/editbooks.py:556 +#: cps/editbooks.py:555 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "" -#: cps/editbooks.py:673 +#: cps/editbooks.py:672 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:710 +#: cps/editbooks.py:709 msgid "Metadata successfully updated" msgstr "" -#: cps/editbooks.py:719 +#: cps/editbooks.py:718 msgid "Error editing book, please check logfile for details" msgstr "Сталась помилка при редагуванні книги. Будь-ласка, перевірте лог-файл для деталей" -#: cps/editbooks.py:781 +#: cps/editbooks.py:780 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "" -#: cps/editbooks.py:791 +#: cps/editbooks.py:790 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "" -#: cps/editbooks.py:879 +#: cps/editbooks.py:878 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "" -#: cps/editbooks.py:890 +#: cps/editbooks.py:889 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:916 +#: cps/editbooks.py:915 msgid "Source or destination format for conversion missing" msgstr "" -#: cps/editbooks.py:924 +#: cps/editbooks.py:923 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "" -#: cps/editbooks.py:928 +#: cps/editbooks.py:927 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "" @@ -579,7 +579,7 @@ msgstr "" msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:225 cps/web.py:1565 cps/web.py:1707 +#: cps/oauth_bb.py:225 cps/web.py:1567 cps/web.py:1709 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "Ви увійшли як користувач: '%(nickname)s'" @@ -739,7 +739,7 @@ msgstr "" msgid "Show Downloaded Books" msgstr "" -#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:639 +#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:641 msgid "Top Rated Books" msgstr "Книги з найкращим рейтингом" @@ -748,7 +748,7 @@ msgid "Show Top Rated Books" msgstr "Показувати книги з найвищим рейтингом" #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:82 -#: cps/web.py:900 +#: cps/web.py:902 msgid "Read Books" msgstr "Прочитані книги" @@ -757,7 +757,7 @@ msgid "Show read and unread" msgstr "Показувати прочитані та непрочитані книги" #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:86 -#: cps/web.py:903 +#: cps/web.py:905 msgid "Unread Books" msgstr "Непрочитані книги" @@ -774,7 +774,7 @@ msgid "Show random books" msgstr "Показувати випадкові книги" #: cps/templates/book_table.html:50 cps/templates/index.xml:75 cps/ub.py:92 -#: cps/web.py:1204 +#: cps/web.py:1206 msgid "Categories" msgstr "Категорії" @@ -784,7 +784,7 @@ msgstr "Показувати вибір категорії" #: cps/templates/book_edit.html:84 cps/templates/book_table.html:51 #: cps/templates/index.xml:82 cps/templates/search_form.html:54 cps/ub.py:95 -#: cps/web.py:1108 cps/web.py:1118 +#: cps/web.py:1110 cps/web.py:1120 msgid "Series" msgstr "Серії" @@ -801,7 +801,7 @@ msgid "Show author selection" msgstr "Показувати вибір автора" #: cps/templates/book_table.html:55 cps/templates/index.xml:68 cps/ub.py:102 -#: cps/web.py:1087 +#: cps/web.py:1089 msgid "Publishers" msgstr "" @@ -810,7 +810,7 @@ msgid "Show publisher selection" msgstr "" #: cps/templates/book_table.html:53 cps/templates/index.xml:89 -#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1183 +#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1185 msgid "Languages" msgstr "Мови" @@ -834,7 +834,7 @@ msgstr "" msgid "Show file formats selection" msgstr "" -#: cps/ub.py:116 cps/web.py:927 +#: cps/ub.py:116 cps/web.py:929 msgid "Archived Books" msgstr "" @@ -879,225 +879,225 @@ msgstr "" msgid "Click on the button below to update to the latest stable version." msgstr "" -#: cps/web.py:316 +#: cps/web.py:318 #, python-format msgid "Error: %(ldaperror)s" msgstr "" -#: cps/web.py:320 +#: cps/web.py:322 msgid "Error: No user returned in response of LDAP server" msgstr "" -#: cps/web.py:368 +#: cps/web.py:370 msgid "Failed to Create at Least One LDAP User" msgstr "" -#: cps/web.py:371 +#: cps/web.py:373 msgid "At Least One LDAP User Not Found in Database" msgstr "" -#: cps/web.py:373 +#: cps/web.py:375 msgid "User Successfully Imported" msgstr "" -#: cps/templates/index.html:5 cps/web.py:647 +#: cps/templates/index.html:5 cps/web.py:649 msgid "Discover (Random Books)" msgstr "Огляд (випадкові книги)" -#: cps/web.py:686 +#: cps/web.py:688 msgid "Books" msgstr "" -#: cps/web.py:713 +#: cps/web.py:715 msgid "Hot Books (Most Downloaded)" msgstr "Популярні книги (найбільш завантажувані)" -#: cps/web.py:748 +#: cps/web.py:750 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:762 +#: cps/web.py:764 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "Неможливо відкрити книгу. Файл не існує або немає доступу." -#: cps/web.py:776 +#: cps/web.py:778 #, python-format msgid "Author: %(name)s" msgstr "" -#: cps/web.py:790 +#: cps/web.py:792 #, python-format msgid "Publisher: %(name)s" msgstr "" -#: cps/web.py:803 +#: cps/web.py:805 #, python-format msgid "Series: %(serie)s" msgstr "Серії: %(serie)s" -#: cps/web.py:816 +#: cps/web.py:818 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:829 +#: cps/web.py:831 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:843 +#: cps/web.py:845 #, python-format msgid "Category: %(name)s" msgstr "Категорія: %(name)s" -#: cps/web.py:862 +#: cps/web.py:864 #, python-format msgid "Language: %(name)s" msgstr "Мова: %(name)s" -#: cps/web.py:891 +#: cps/web.py:893 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:958 cps/web.py:1407 +#: cps/templates/layout.html:56 cps/web.py:960 cps/web.py:1409 msgid "Advanced Search" msgstr "Розширений пошук" #: cps/templates/book_edit.html:213 cps/templates/feed.xml:33 #: cps/templates/layout.html:45 cps/templates/layout.html:48 -#: cps/templates/search_form.html:175 cps/web.py:970 cps/web.py:1241 +#: cps/templates/search_form.html:175 cps/web.py:972 cps/web.py:1243 msgid "Search" msgstr "Пошук" -#: cps/web.py:998 +#: cps/web.py:1000 msgid "Books list" msgstr "" -#: cps/web.py:1136 +#: cps/web.py:1138 msgid "Ratings list" msgstr "" -#: cps/web.py:1155 +#: cps/web.py:1157 msgid "File formats list" msgstr "" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1218 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1220 msgid "Tasks" msgstr "" -#: cps/web.py:1303 +#: cps/web.py:1305 msgid "Published after " msgstr "" -#: cps/web.py:1310 +#: cps/web.py:1312 msgid "Published before " msgstr "Опубліковано до" -#: cps/web.py:1325 +#: cps/web.py:1327 #, python-format msgid "Rating <= %(rating)s" msgstr "" -#: cps/web.py:1327 +#: cps/web.py:1329 #, python-format msgid "Rating >= %(rating)s" msgstr "" -#: cps/web.py:1472 +#: cps/web.py:1474 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "" -#: cps/web.py:1476 +#: cps/web.py:1478 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "Помилка при відправці книги: %(res)s" -#: cps/web.py:1478 +#: cps/web.py:1480 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "" -#: cps/web.py:1495 +#: cps/web.py:1497 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "" -#: cps/web.py:1496 cps/web.py:1506 cps/web.py:1530 cps/web.py:1534 -#: cps/web.py:1539 cps/web.py:1543 +#: cps/web.py:1498 cps/web.py:1508 cps/web.py:1532 cps/web.py:1536 +#: cps/web.py:1541 cps/web.py:1545 msgid "register" msgstr "зареєструватись" -#: cps/web.py:1532 +#: cps/web.py:1534 msgid "Your e-mail is not allowed to register" msgstr "" -#: cps/web.py:1535 +#: cps/web.py:1537 msgid "Confirmation e-mail was send to your e-mail account." msgstr "" -#: cps/web.py:1538 +#: cps/web.py:1540 msgid "This username or e-mail address is already in use." msgstr "" -#: cps/web.py:1555 +#: cps/web.py:1557 msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1572 +#: cps/web.py:1574 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "" -#: cps/web.py:1578 +#: cps/web.py:1580 #, python-format msgid "Could not login: %(message)s" msgstr "" -#: cps/web.py:1582 cps/web.py:1606 +#: cps/web.py:1584 cps/web.py:1608 msgid "Wrong Username or Password" msgstr "Помилка в імені користувача або паролі" -#: cps/web.py:1589 +#: cps/web.py:1591 msgid "New Password was send to your email address" msgstr "" -#: cps/web.py:1595 +#: cps/web.py:1597 msgid "Please enter valid username to reset password" msgstr "" -#: cps/web.py:1601 +#: cps/web.py:1603 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "" -#: cps/web.py:1612 cps/web.py:1639 +#: cps/web.py:1614 cps/web.py:1641 msgid "login" msgstr "увійти" -#: cps/web.py:1651 cps/web.py:1685 +#: cps/web.py:1653 cps/web.py:1687 msgid "Token not found" msgstr "Токен не знайдено" -#: cps/web.py:1660 cps/web.py:1693 +#: cps/web.py:1662 cps/web.py:1695 msgid "Token has expired" msgstr "Час дії токено вичерпано" -#: cps/web.py:1669 +#: cps/web.py:1671 msgid "Success! Please return to your device" msgstr "Вдалося! Будь-ласка, поверніться до вашого пристрою" -#: cps/web.py:1753 cps/web.py:1809 +#: cps/web.py:1755 cps/web.py:1811 #, python-format msgid "%(name)s's profile" msgstr "Профіль %(name)s" -#: cps/web.py:1789 +#: cps/web.py:1791 msgid "Profile updated" msgstr "Профіль оновлено" -#: cps/web.py:1836 cps/web.py:1839 cps/web.py:1842 cps/web.py:1849 -#: cps/web.py:1854 +#: cps/web.py:1838 cps/web.py:1841 cps/web.py:1844 cps/web.py:1851 +#: cps/web.py:1856 msgid "Read a Book" msgstr "Читати книгу" diff --git a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po index b20addab..05f9bfc4 100644 --- a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po +++ b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2020-10-31 19:17+0100\n" +"POT-Creation-Date: 2020-11-14 13:11+0100\n" "PO-Revision-Date: 2020-09-27 22:18+0800\n" "Last-Translator: dalin \n" "Language: zh_CN\n" @@ -22,7 +22,7 @@ msgstr "" msgid "installed" msgstr "已安装" -#: cps/about.py:44 cps/converter.py:33 +#: cps/about.py:44 cps/converter.py:32 msgid "not installed" msgstr "未安装" @@ -46,351 +46,351 @@ msgstr "重新连接成功" msgid "Unknown command" msgstr "未知命令" -#: cps/admin.py:116 cps/editbooks.py:612 cps/editbooks.py:624 -#: cps/editbooks.py:724 cps/editbooks.py:726 cps/editbooks.py:787 -#: cps/editbooks.py:803 cps/updater.py:510 cps/uploader.py:98 +#: cps/admin.py:116 cps/editbooks.py:611 cps/editbooks.py:623 +#: cps/editbooks.py:723 cps/editbooks.py:725 cps/editbooks.py:786 +#: cps/editbooks.py:802 cps/updater.py:510 cps/uploader.py:98 #: cps/uploader.py:108 msgid "Unknown" msgstr "未知" -#: cps/admin.py:136 +#: cps/admin.py:137 msgid "Admin page" msgstr "管理页" -#: cps/admin.py:158 +#: cps/admin.py:159 msgid "UI Configuration" msgstr "界面配置" -#: cps/admin.py:190 cps/admin.py:717 +#: cps/admin.py:191 cps/admin.py:718 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web配置已更新" -#: cps/admin.py:435 cps/admin.py:441 cps/admin.py:452 cps/admin.py:463 +#: cps/admin.py:436 cps/admin.py:442 cps/admin.py:453 cps/admin.py:464 #: cps/templates/modal_dialogs.html:29 msgid "Deny" msgstr "隐藏" -#: cps/admin.py:437 cps/admin.py:443 cps/admin.py:454 cps/admin.py:465 +#: cps/admin.py:438 cps/admin.py:444 cps/admin.py:455 cps/admin.py:466 #: cps/templates/modal_dialogs.html:28 msgid "Allow" msgstr "显示" -#: cps/admin.py:511 +#: cps/admin.py:512 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "client_secrets.json 未为 Web 应用程序配置" -#: cps/admin.py:550 +#: cps/admin.py:551 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "日志文件路径无效,请输入正确的路径" -#: cps/admin.py:555 +#: cps/admin.py:556 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "访问日志路径无效,请输入正确的路径" -#: cps/admin.py:581 +#: cps/admin.py:582 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "请输入LDAP主机、端口、DN和用户对象标识符" -#: cps/admin.py:594 +#: cps/admin.py:595 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "LDAP组对象过滤器需要一个具有“%s”格式标识符" -#: cps/admin.py:597 +#: cps/admin.py:598 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "LDAP组对象过滤器的括号不匹配" -#: cps/admin.py:601 +#: cps/admin.py:602 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "LDAP用户对象过滤器需要一个具有“%s”格式标识符" -#: cps/admin.py:604 +#: cps/admin.py:605 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "LDAP用户对象过滤器的括号不匹配" -#: cps/admin.py:608 +#: cps/admin.py:609 msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path" msgstr "LDAP证书路径无效,请输入正确的路径" -#: cps/admin.py:630 +#: cps/admin.py:631 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "密钥文件路径无效,请输入正确的路径" -#: cps/admin.py:634 +#: cps/admin.py:635 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "证书文件路径无效,请输入正确的路径" -#: cps/admin.py:700 cps/admin.py:799 cps/admin.py:889 cps/admin.py:938 +#: cps/admin.py:701 cps/admin.py:800 cps/admin.py:890 cps/admin.py:939 #: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260 #: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392 msgid "Settings DB is not Writeable" msgstr "设置数据库不可写入" -#: cps/admin.py:712 +#: cps/admin.py:713 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "数据库路径无效,请输入正确的路径" -#: cps/admin.py:714 +#: cps/admin.py:715 msgid "DB is not Writeable" msgstr "数据库不可写入" -#: cps/admin.py:747 +#: cps/admin.py:748 msgid "Basic Configuration" msgstr "基本配置" -#: cps/admin.py:762 cps/web.py:1505 +#: cps/admin.py:763 cps/web.py:1507 msgid "Please fill out all fields!" msgstr "请填写所有字段!" -#: cps/admin.py:765 cps/admin.py:777 cps/admin.py:783 cps/admin.py:907 +#: cps/admin.py:766 cps/admin.py:778 cps/admin.py:784 cps/admin.py:908 msgid "Add new user" msgstr "添加新用户" -#: cps/admin.py:774 cps/web.py:1751 +#: cps/admin.py:775 cps/web.py:1753 msgid "E-mail is not from valid domain" msgstr "邮箱不在有效域中" -#: cps/admin.py:781 cps/admin.py:796 +#: cps/admin.py:782 cps/admin.py:797 msgid "Found an existing account for this e-mail address or nickname." msgstr "此邮箱或用户名的账号已经存在。" -#: cps/admin.py:792 +#: cps/admin.py:793 #, python-format msgid "User '%(user)s' created" msgstr "用户“%(user)s”已创建" -#: cps/admin.py:808 +#: cps/admin.py:809 #, python-format msgid "User '%(nick)s' deleted" msgstr "用户“%(nick)s”已删除" -#: cps/admin.py:811 +#: cps/admin.py:812 msgid "No admin user remaining, can't delete user" msgstr "管理员账户不存在,无法删除用户" -#: cps/admin.py:817 +#: cps/admin.py:818 msgid "No admin user remaining, can't remove admin role" msgstr "理员账户不存在,无法删除管理员角色" -#: cps/admin.py:853 cps/web.py:1793 +#: cps/admin.py:854 cps/web.py:1795 msgid "Found an existing account for this e-mail address." msgstr "此邮箱的账号已经存在。" -#: cps/admin.py:862 cps/admin.py:876 cps/admin.py:979 cps/web.py:1769 +#: cps/admin.py:863 cps/admin.py:877 cps/admin.py:980 cps/web.py:1771 #, python-format msgid "Edit User %(nick)s" msgstr "编辑用户 %(nick)s" -#: cps/admin.py:868 cps/web.py:1762 +#: cps/admin.py:869 cps/web.py:1764 msgid "This username is already taken" msgstr "此用户名已被使用" -#: cps/admin.py:883 +#: cps/admin.py:884 #, python-format msgid "User '%(nick)s' updated" msgstr "用户“%(nick)s”已更新" -#: cps/admin.py:886 +#: cps/admin.py:887 msgid "An unknown error occured." msgstr "发生未知错误。" -#: cps/admin.py:916 cps/templates/admin.html:71 +#: cps/admin.py:917 cps/templates/admin.html:71 msgid "Edit E-mail Server Settings" msgstr "编辑邮件服务器设置" -#: cps/admin.py:945 +#: cps/admin.py:946 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "测试邮件已经被成功发到 %(kindlemail)s" -#: cps/admin.py:948 +#: cps/admin.py:949 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "发送测试邮件时出错:%(res)s" -#: cps/admin.py:950 +#: cps/admin.py:951 msgid "Please configure your e-mail address first..." msgstr "请先配置您的邮箱地址..." -#: cps/admin.py:952 +#: cps/admin.py:953 msgid "E-mail server settings updated" msgstr "邮件服务器设置已更新" -#: cps/admin.py:963 +#: cps/admin.py:964 msgid "User not found" msgstr "找不到用户" -#: cps/admin.py:990 +#: cps/admin.py:991 #, python-format msgid "Password for user %(user)s reset" msgstr "用户 %(user)s 的密码已重置" -#: cps/admin.py:993 cps/web.py:1529 cps/web.py:1593 +#: cps/admin.py:994 cps/web.py:1531 cps/web.py:1595 msgid "An unknown error occurred. Please try again later." msgstr "发生一个未知错误,请稍后再试。" -#: cps/admin.py:996 cps/web.py:1467 +#: cps/admin.py:997 cps/web.py:1469 msgid "Please configure the SMTP mail settings first..." msgstr "请先配置SMTP邮箱设置..." -#: cps/admin.py:1008 +#: cps/admin.py:1009 msgid "Logfile viewer" msgstr "日志文件查看器" -#: cps/admin.py:1047 +#: cps/admin.py:1049 msgid "Requesting update package" msgstr "正在请求更新包" -#: cps/admin.py:1048 +#: cps/admin.py:1050 msgid "Downloading update package" msgstr "正在下载更新包" -#: cps/admin.py:1049 +#: cps/admin.py:1051 msgid "Unzipping update package" msgstr "正在解压更新包" -#: cps/admin.py:1050 +#: cps/admin.py:1052 msgid "Replacing files" msgstr "正在替换文件" -#: cps/admin.py:1051 +#: cps/admin.py:1053 msgid "Database connections are closed" msgstr "数据库连接已关闭" -#: cps/admin.py:1052 +#: cps/admin.py:1054 msgid "Stopping server" msgstr "正在停止服务器" -#: cps/admin.py:1053 +#: cps/admin.py:1055 msgid "Update finished, please press okay and reload page" msgstr "更新完成,请点击确定并刷新页面" -#: cps/admin.py:1054 cps/admin.py:1055 cps/admin.py:1056 cps/admin.py:1057 -#: cps/admin.py:1058 +#: cps/admin.py:1056 cps/admin.py:1057 cps/admin.py:1058 cps/admin.py:1059 +#: cps/admin.py:1060 msgid "Update failed:" msgstr "更新失败:" -#: cps/admin.py:1054 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 +#: cps/admin.py:1056 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 msgid "HTTP Error" msgstr "HTTP错误" -#: cps/admin.py:1055 cps/updater.py:322 cps/updater.py:525 +#: cps/admin.py:1057 cps/updater.py:322 cps/updater.py:525 msgid "Connection error" msgstr "连接错误" -#: cps/admin.py:1056 cps/updater.py:324 cps/updater.py:527 +#: cps/admin.py:1058 cps/updater.py:324 cps/updater.py:527 msgid "Timeout while establishing connection" msgstr "建立连接超时" -#: cps/admin.py:1057 cps/updater.py:326 cps/updater.py:529 +#: cps/admin.py:1059 cps/updater.py:326 cps/updater.py:529 msgid "General error" msgstr "一般错误" -#: cps/admin.py:1058 +#: cps/admin.py:1060 msgid "Update File Could Not be Saved in Temp Dir" msgstr "更新文件无法保存在临时目录中" -#: cps/converter.py:32 +#: cps/converter.py:31 msgid "not configured" msgstr "未配置" -#: cps/converter.py:34 +#: cps/converter.py:33 msgid "Execution permissions missing" msgstr "缺少执行权限" -#: cps/editbooks.py:273 cps/editbooks.py:275 +#: cps/editbooks.py:272 cps/editbooks.py:274 msgid "Book Format Successfully Deleted" msgstr "书籍格式已成功删除" -#: cps/editbooks.py:282 cps/editbooks.py:284 +#: cps/editbooks.py:281 cps/editbooks.py:283 msgid "Book Successfully Deleted" msgstr "书籍已成功删除" -#: cps/editbooks.py:293 cps/editbooks.py:596 cps/web.py:1824 cps/web.py:1865 -#: cps/web.py:1927 +#: cps/editbooks.py:292 cps/editbooks.py:595 cps/web.py:1826 cps/web.py:1867 +#: cps/web.py:1929 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "打开电子书出错。文件不存在或不可访问" -#: cps/editbooks.py:327 +#: cps/editbooks.py:326 msgid "edit metadata" msgstr "编辑元数据" -#: cps/editbooks.py:402 +#: cps/editbooks.py:401 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s 不是一种有效语言" -#: cps/editbooks.py:513 cps/editbooks.py:769 +#: cps/editbooks.py:512 cps/editbooks.py:768 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "不能上传文件扩展名为“%(ext)s”的文件到此服务器" -#: cps/editbooks.py:517 cps/editbooks.py:773 +#: cps/editbooks.py:516 cps/editbooks.py:772 msgid "File to be uploaded must have an extension" msgstr "要上传的文件必须具有扩展名" -#: cps/editbooks.py:529 +#: cps/editbooks.py:528 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "创建路径 %(path)s 失败(权限拒绝)。" -#: cps/editbooks.py:534 +#: cps/editbooks.py:533 #, python-format msgid "Failed to store file %(file)s." msgstr "保存文件 %(file)s 失败。" -#: cps/editbooks.py:552 cps/editbooks.py:904 +#: cps/editbooks.py:551 cps/editbooks.py:903 #, python-format msgid "Database error: %(error)s." msgstr "数据库错误:%(error)s。" -#: cps/editbooks.py:556 +#: cps/editbooks.py:555 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "已添加 %(ext)s 格式到 %(book)s" -#: cps/editbooks.py:673 +#: cps/editbooks.py:672 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "标识符不区分大小写,覆盖旧标识符" -#: cps/editbooks.py:710 +#: cps/editbooks.py:709 msgid "Metadata successfully updated" msgstr "已成功更新元数据" -#: cps/editbooks.py:719 +#: cps/editbooks.py:718 msgid "Error editing book, please check logfile for details" msgstr "编辑书籍出错,请检查日志文件以获取详细信息" -#: cps/editbooks.py:781 +#: cps/editbooks.py:780 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "文件 %(filename)s 无法保存到临时目录" -#: cps/editbooks.py:791 +#: cps/editbooks.py:790 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "上传的书籍可能已经存在,建议修改后重新上传: " -#: cps/editbooks.py:879 +#: cps/editbooks.py:878 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "移动封面文件失败 %(file)s:%(error)s" -#: cps/editbooks.py:890 +#: cps/editbooks.py:889 #, python-format msgid "File %(file)s uploaded" msgstr "文件 %(file)s 已上传" -#: cps/editbooks.py:916 +#: cps/editbooks.py:915 msgid "Source or destination format for conversion missing" msgstr "转换的源或目的格式缺失" -#: cps/editbooks.py:924 +#: cps/editbooks.py:923 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "书籍已经被成功加入到 %(book_format)s 格式转换队列" -#: cps/editbooks.py:928 +#: cps/editbooks.py:927 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "转换此书籍时出现错误: %(res)s" @@ -580,7 +580,7 @@ msgstr "使用Google登录失败。" msgid "Failed to fetch user info from Google." msgstr "从Google获取用户信息失败。" -#: cps/oauth_bb.py:225 cps/web.py:1565 cps/web.py:1707 +#: cps/oauth_bb.py:225 cps/web.py:1567 cps/web.py:1709 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "您现在已以“%(nickname)s”身份登录" @@ -740,7 +740,7 @@ msgstr "下载历史" msgid "Show Downloaded Books" msgstr "显示下载过的书籍" -#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:639 +#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:641 msgid "Top Rated Books" msgstr "最高评分书籍" @@ -749,7 +749,7 @@ msgid "Show Top Rated Books" msgstr "显示最高评分书籍" #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:82 -#: cps/web.py:900 +#: cps/web.py:902 msgid "Read Books" msgstr "已读书籍" @@ -758,7 +758,7 @@ msgid "Show read and unread" msgstr "显示阅读状态" #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:86 -#: cps/web.py:903 +#: cps/web.py:905 msgid "Unread Books" msgstr "未读书籍" @@ -775,7 +775,7 @@ msgid "Show random books" msgstr "显示随机书籍" #: cps/templates/book_table.html:50 cps/templates/index.xml:75 cps/ub.py:92 -#: cps/web.py:1204 +#: cps/web.py:1206 msgid "Categories" msgstr "分类" @@ -785,7 +785,7 @@ msgstr "显示分类选择" #: cps/templates/book_edit.html:84 cps/templates/book_table.html:51 #: cps/templates/index.xml:82 cps/templates/search_form.html:54 cps/ub.py:95 -#: cps/web.py:1108 cps/web.py:1118 +#: cps/web.py:1110 cps/web.py:1120 msgid "Series" msgstr "丛书" @@ -802,7 +802,7 @@ msgid "Show author selection" msgstr "显示作者选择" #: cps/templates/book_table.html:55 cps/templates/index.xml:68 cps/ub.py:102 -#: cps/web.py:1087 +#: cps/web.py:1089 msgid "Publishers" msgstr "出版社" @@ -811,7 +811,7 @@ msgid "Show publisher selection" msgstr "显示出版社选择" #: cps/templates/book_table.html:53 cps/templates/index.xml:89 -#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1183 +#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1185 msgid "Languages" msgstr "语言" @@ -835,7 +835,7 @@ msgstr "文件格式" msgid "Show file formats selection" msgstr "显示文件格式选择" -#: cps/ub.py:116 cps/web.py:927 +#: cps/ub.py:116 cps/web.py:929 msgid "Archived Books" msgstr "归档书籍" @@ -880,225 +880,225 @@ msgstr "有新的更新。单击下面的按钮以更新到版本: %(version)s" msgid "Click on the button below to update to the latest stable version." msgstr "点击下面按钮更新到最新稳定版本。" -#: cps/web.py:316 +#: cps/web.py:318 #, python-format msgid "Error: %(ldaperror)s" msgstr "错误:%(ldaperror)s" -#: cps/web.py:320 +#: cps/web.py:322 msgid "Error: No user returned in response of LDAP server" msgstr "错误:在LDAP服务器的响应中没有返回用户" -#: cps/web.py:368 +#: cps/web.py:370 msgid "Failed to Create at Least One LDAP User" msgstr "创建至少一个LDAP用户失败" -#: cps/web.py:371 +#: cps/web.py:373 msgid "At Least One LDAP User Not Found in Database" msgstr "数据库中没有找到至少一个LDAP用户" -#: cps/web.py:373 +#: cps/web.py:375 msgid "User Successfully Imported" msgstr "用户成功导入" -#: cps/templates/index.html:5 cps/web.py:647 +#: cps/templates/index.html:5 cps/web.py:649 msgid "Discover (Random Books)" msgstr "发现(随机书籍)" -#: cps/web.py:686 +#: cps/web.py:688 msgid "Books" msgstr "书籍" -#: cps/web.py:713 +#: cps/web.py:715 msgid "Hot Books (Most Downloaded)" msgstr "热门书籍(最多下载)" -#: cps/web.py:748 +#: cps/web.py:750 #, python-format msgid "Downloaded books by %(user)s" msgstr "%(user)s 下载过的书籍" -#: cps/web.py:762 +#: cps/web.py:764 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "糟糕!选择书名无法打开。文件不存在或者文件不可访问" -#: cps/web.py:776 +#: cps/web.py:778 #, python-format msgid "Author: %(name)s" msgstr "作者:%(name)s" -#: cps/web.py:790 +#: cps/web.py:792 #, python-format msgid "Publisher: %(name)s" msgstr "出版社:%(name)s" -#: cps/web.py:803 +#: cps/web.py:805 #, python-format msgid "Series: %(serie)s" msgstr "丛书:%(serie)s" -#: cps/web.py:816 +#: cps/web.py:818 #, python-format msgid "Rating: %(rating)s stars" msgstr "评分:%(rating)s 星" -#: cps/web.py:829 +#: cps/web.py:831 #, python-format msgid "File format: %(format)s" msgstr "文件格式:%(format)s" -#: cps/web.py:843 +#: cps/web.py:845 #, python-format msgid "Category: %(name)s" msgstr "分类:%(name)s" -#: cps/web.py:862 +#: cps/web.py:864 #, python-format msgid "Language: %(name)s" msgstr "语言:%(name)s" -#: cps/web.py:891 +#: cps/web.py:893 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "自定义列号:%(column)d在Calibre数据库中不存在" -#: cps/templates/layout.html:56 cps/web.py:958 cps/web.py:1407 +#: cps/templates/layout.html:56 cps/web.py:960 cps/web.py:1409 msgid "Advanced Search" msgstr "高级搜索" #: cps/templates/book_edit.html:213 cps/templates/feed.xml:33 #: cps/templates/layout.html:45 cps/templates/layout.html:48 -#: cps/templates/search_form.html:175 cps/web.py:970 cps/web.py:1241 +#: cps/templates/search_form.html:175 cps/web.py:972 cps/web.py:1243 msgid "Search" msgstr "搜索" -#: cps/web.py:998 +#: cps/web.py:1000 msgid "Books list" msgstr "书籍列表" -#: cps/web.py:1136 +#: cps/web.py:1138 msgid "Ratings list" msgstr "评分列表" -#: cps/web.py:1155 +#: cps/web.py:1157 msgid "File formats list" msgstr "文件格式列表" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1218 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1220 msgid "Tasks" msgstr "任务列表" -#: cps/web.py:1303 +#: cps/web.py:1305 msgid "Published after " msgstr "出版时间晚于 " -#: cps/web.py:1310 +#: cps/web.py:1312 msgid "Published before " msgstr "出版时间早于 " -#: cps/web.py:1325 +#: cps/web.py:1327 #, python-format msgid "Rating <= %(rating)s" msgstr "评分 <= %(rating)s" -#: cps/web.py:1327 +#: cps/web.py:1329 #, python-format msgid "Rating >= %(rating)s" msgstr "评分 >= %(rating)s" -#: cps/web.py:1472 +#: cps/web.py:1474 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "书籍已经成功加入 %(kindlemail)s 的发送队列" -#: cps/web.py:1476 +#: cps/web.py:1478 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "糟糕!发送这本书籍的时候出现错误:%(res)s" -#: cps/web.py:1478 +#: cps/web.py:1480 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "请先配置您的kindle邮箱。" -#: cps/web.py:1495 +#: cps/web.py:1497 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "邮件服务未配置,请联系网站管理员!" -#: cps/web.py:1496 cps/web.py:1506 cps/web.py:1530 cps/web.py:1534 -#: cps/web.py:1539 cps/web.py:1543 +#: cps/web.py:1498 cps/web.py:1508 cps/web.py:1532 cps/web.py:1536 +#: cps/web.py:1541 cps/web.py:1545 msgid "register" msgstr "注册" -#: cps/web.py:1532 +#: cps/web.py:1534 msgid "Your e-mail is not allowed to register" msgstr "您的电子邮件不允许注册" -#: cps/web.py:1535 +#: cps/web.py:1537 msgid "Confirmation e-mail was send to your e-mail account." msgstr "确认邮件已经发送到您的邮箱。" -#: cps/web.py:1538 +#: cps/web.py:1540 msgid "This username or e-mail address is already in use." msgstr "这个用户名或者邮箱已被使用。" -#: cps/web.py:1555 +#: cps/web.py:1557 msgid "Cannot activate LDAP authentication" msgstr "无法激活LDAP认证" -#: cps/web.py:1572 +#: cps/web.py:1574 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "后备登录“%(nickname)s”:无法访问LDAP服务器,或用户未知" -#: cps/web.py:1578 +#: cps/web.py:1580 #, python-format msgid "Could not login: %(message)s" msgstr "无法登录:%(message)s" -#: cps/web.py:1582 cps/web.py:1606 +#: cps/web.py:1584 cps/web.py:1608 msgid "Wrong Username or Password" msgstr "用户名或密码错误" -#: cps/web.py:1589 +#: cps/web.py:1591 msgid "New Password was send to your email address" msgstr "新密码已发送到您的邮箱" -#: cps/web.py:1595 +#: cps/web.py:1597 msgid "Please enter valid username to reset password" msgstr "请输入有效的用户名进行密码重置" -#: cps/web.py:1601 +#: cps/web.py:1603 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "您现在已以“%(nickname)s”登录" -#: cps/web.py:1612 cps/web.py:1639 +#: cps/web.py:1614 cps/web.py:1641 msgid "login" msgstr "登录" -#: cps/web.py:1651 cps/web.py:1685 +#: cps/web.py:1653 cps/web.py:1687 msgid "Token not found" msgstr "找不到Token" -#: cps/web.py:1660 cps/web.py:1693 +#: cps/web.py:1662 cps/web.py:1695 msgid "Token has expired" msgstr "Token已过期" -#: cps/web.py:1669 +#: cps/web.py:1671 msgid "Success! Please return to your device" msgstr "成功!请返回您的设备" -#: cps/web.py:1753 cps/web.py:1809 +#: cps/web.py:1755 cps/web.py:1811 #, python-format msgid "%(name)s's profile" msgstr "%(name)s 的用户配置" -#: cps/web.py:1789 +#: cps/web.py:1791 msgid "Profile updated" msgstr "资料已更新" -#: cps/web.py:1836 cps/web.py:1839 cps/web.py:1842 cps/web.py:1849 -#: cps/web.py:1854 +#: cps/web.py:1838 cps/web.py:1841 cps/web.py:1844 cps/web.py:1851 +#: cps/web.py:1856 msgid "Read a Book" msgstr "阅读一本书" diff --git a/cps/updater.py b/cps/updater.py index 4a37f688..b720c885 100644 --- a/cps/updater.py +++ b/cps/updater.py @@ -227,7 +227,7 @@ class Updater(threading.Thread): os.sep + 'vendor', os.sep + 'calibre-web.log', os.sep + '.git', os.sep + 'client_secrets.json', os.sep + 'gdrive_credentials', os.sep + 'settings.yaml', os.sep + 'venv', os.sep + 'virtualenv', os.sep + 'access.log', os.sep + 'access.log1', os.sep + 'access.log2', - os.sep + '.calibre-web.log.swp' + os.sep + '.calibre-web.log.swp', os.sep + '_sqlite3.so' ) additional_path = self.is_venv() if additional_path: diff --git a/cps/web.py b/cps/web.py index 34cfe90b..a5844f69 100644 --- a/cps/web.py +++ b/cps/web.py @@ -293,6 +293,7 @@ def edit_required(f): def before_request(): if current_user.is_authenticated: confirm_login() + g.constants = constants g.user = current_user g.allow_registration = config.config_public_reg g.allow_anonymous = config.config_anonbrowse @@ -314,7 +315,7 @@ def import_ldap_users(): try: new_users = services.ldap.get_group_members(config.config_ldap_group_name) except (services.ldap.LDAPException, TypeError, AttributeError, KeyError) as e: - log.debug(e) + log.exception(e) showtext['text'] = _(u'Error: %(ldaperror)s', ldaperror=e) return json.dumps(showtext) if not new_users: diff --git a/messages.pot b/messages.pot index e8205c05..0e15a545 100644 --- a/messages.pot +++ b/messages.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2020-10-31 19:17+0100\n" +"POT-Creation-Date: 2020-11-14 13:11+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -21,7 +21,7 @@ msgstr "" msgid "installed" msgstr "" -#: cps/about.py:44 cps/converter.py:33 +#: cps/about.py:44 cps/converter.py:32 msgid "not installed" msgstr "" @@ -45,351 +45,351 @@ msgstr "" msgid "Unknown command" msgstr "" -#: cps/admin.py:116 cps/editbooks.py:612 cps/editbooks.py:624 -#: cps/editbooks.py:724 cps/editbooks.py:726 cps/editbooks.py:787 -#: cps/editbooks.py:803 cps/updater.py:510 cps/uploader.py:98 +#: cps/admin.py:116 cps/editbooks.py:611 cps/editbooks.py:623 +#: cps/editbooks.py:723 cps/editbooks.py:725 cps/editbooks.py:786 +#: cps/editbooks.py:802 cps/updater.py:510 cps/uploader.py:98 #: cps/uploader.py:108 msgid "Unknown" msgstr "" -#: cps/admin.py:136 +#: cps/admin.py:137 msgid "Admin page" msgstr "" -#: cps/admin.py:158 +#: cps/admin.py:159 msgid "UI Configuration" msgstr "" -#: cps/admin.py:190 cps/admin.py:717 +#: cps/admin.py:191 cps/admin.py:718 msgid "Calibre-Web configuration updated" msgstr "" -#: cps/admin.py:435 cps/admin.py:441 cps/admin.py:452 cps/admin.py:463 +#: cps/admin.py:436 cps/admin.py:442 cps/admin.py:453 cps/admin.py:464 #: cps/templates/modal_dialogs.html:29 msgid "Deny" msgstr "" -#: cps/admin.py:437 cps/admin.py:443 cps/admin.py:454 cps/admin.py:465 +#: cps/admin.py:438 cps/admin.py:444 cps/admin.py:455 cps/admin.py:466 #: cps/templates/modal_dialogs.html:28 msgid "Allow" msgstr "" -#: cps/admin.py:511 +#: cps/admin.py:512 msgid "client_secrets.json Is Not Configured For Web Application" msgstr "" -#: cps/admin.py:550 +#: cps/admin.py:551 msgid "Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:555 +#: cps/admin.py:556 msgid "Access Logfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:581 +#: cps/admin.py:582 msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier" msgstr "" -#: cps/admin.py:594 +#: cps/admin.py:595 #, python-format msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:597 +#: cps/admin.py:598 msgid "LDAP Group Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:601 +#: cps/admin.py:602 #, python-format msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier" msgstr "" -#: cps/admin.py:604 +#: cps/admin.py:605 msgid "LDAP User Object Filter Has Unmatched Parenthesis" msgstr "" -#: cps/admin.py:608 +#: cps/admin.py:609 msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:630 +#: cps/admin.py:631 msgid "Keyfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:634 +#: cps/admin.py:635 msgid "Certfile Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:700 cps/admin.py:799 cps/admin.py:889 cps/admin.py:938 +#: cps/admin.py:701 cps/admin.py:800 cps/admin.py:890 cps/admin.py:939 #: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260 #: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392 msgid "Settings DB is not Writeable" msgstr "" -#: cps/admin.py:712 +#: cps/admin.py:713 msgid "DB Location is not Valid, Please Enter Correct Path" msgstr "" -#: cps/admin.py:714 +#: cps/admin.py:715 msgid "DB is not Writeable" msgstr "" -#: cps/admin.py:747 +#: cps/admin.py:748 msgid "Basic Configuration" msgstr "" -#: cps/admin.py:762 cps/web.py:1505 +#: cps/admin.py:763 cps/web.py:1507 msgid "Please fill out all fields!" msgstr "" -#: cps/admin.py:765 cps/admin.py:777 cps/admin.py:783 cps/admin.py:907 +#: cps/admin.py:766 cps/admin.py:778 cps/admin.py:784 cps/admin.py:908 msgid "Add new user" msgstr "" -#: cps/admin.py:774 cps/web.py:1751 +#: cps/admin.py:775 cps/web.py:1753 msgid "E-mail is not from valid domain" msgstr "" -#: cps/admin.py:781 cps/admin.py:796 +#: cps/admin.py:782 cps/admin.py:797 msgid "Found an existing account for this e-mail address or nickname." msgstr "" -#: cps/admin.py:792 +#: cps/admin.py:793 #, python-format msgid "User '%(user)s' created" msgstr "" -#: cps/admin.py:808 +#: cps/admin.py:809 #, python-format msgid "User '%(nick)s' deleted" msgstr "" -#: cps/admin.py:811 +#: cps/admin.py:812 msgid "No admin user remaining, can't delete user" msgstr "" -#: cps/admin.py:817 +#: cps/admin.py:818 msgid "No admin user remaining, can't remove admin role" msgstr "" -#: cps/admin.py:853 cps/web.py:1793 +#: cps/admin.py:854 cps/web.py:1795 msgid "Found an existing account for this e-mail address." msgstr "" -#: cps/admin.py:862 cps/admin.py:876 cps/admin.py:979 cps/web.py:1769 +#: cps/admin.py:863 cps/admin.py:877 cps/admin.py:980 cps/web.py:1771 #, python-format msgid "Edit User %(nick)s" msgstr "" -#: cps/admin.py:868 cps/web.py:1762 +#: cps/admin.py:869 cps/web.py:1764 msgid "This username is already taken" msgstr "" -#: cps/admin.py:883 +#: cps/admin.py:884 #, python-format msgid "User '%(nick)s' updated" msgstr "" -#: cps/admin.py:886 +#: cps/admin.py:887 msgid "An unknown error occured." msgstr "" -#: cps/admin.py:916 cps/templates/admin.html:71 +#: cps/admin.py:917 cps/templates/admin.html:71 msgid "Edit E-mail Server Settings" msgstr "" -#: cps/admin.py:945 +#: cps/admin.py:946 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "" -#: cps/admin.py:948 +#: cps/admin.py:949 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "" -#: cps/admin.py:950 +#: cps/admin.py:951 msgid "Please configure your e-mail address first..." msgstr "" -#: cps/admin.py:952 +#: cps/admin.py:953 msgid "E-mail server settings updated" msgstr "" -#: cps/admin.py:963 +#: cps/admin.py:964 msgid "User not found" msgstr "" -#: cps/admin.py:990 +#: cps/admin.py:991 #, python-format msgid "Password for user %(user)s reset" msgstr "" -#: cps/admin.py:993 cps/web.py:1529 cps/web.py:1593 +#: cps/admin.py:994 cps/web.py:1531 cps/web.py:1595 msgid "An unknown error occurred. Please try again later." msgstr "" -#: cps/admin.py:996 cps/web.py:1467 +#: cps/admin.py:997 cps/web.py:1469 msgid "Please configure the SMTP mail settings first..." msgstr "" -#: cps/admin.py:1008 +#: cps/admin.py:1009 msgid "Logfile viewer" msgstr "" -#: cps/admin.py:1047 +#: cps/admin.py:1049 msgid "Requesting update package" msgstr "" -#: cps/admin.py:1048 +#: cps/admin.py:1050 msgid "Downloading update package" msgstr "" -#: cps/admin.py:1049 +#: cps/admin.py:1051 msgid "Unzipping update package" msgstr "" -#: cps/admin.py:1050 +#: cps/admin.py:1052 msgid "Replacing files" msgstr "" -#: cps/admin.py:1051 +#: cps/admin.py:1053 msgid "Database connections are closed" msgstr "" -#: cps/admin.py:1052 +#: cps/admin.py:1054 msgid "Stopping server" msgstr "" -#: cps/admin.py:1053 +#: cps/admin.py:1055 msgid "Update finished, please press okay and reload page" msgstr "" -#: cps/admin.py:1054 cps/admin.py:1055 cps/admin.py:1056 cps/admin.py:1057 -#: cps/admin.py:1058 +#: cps/admin.py:1056 cps/admin.py:1057 cps/admin.py:1058 cps/admin.py:1059 +#: cps/admin.py:1060 msgid "Update failed:" msgstr "" -#: cps/admin.py:1054 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 +#: cps/admin.py:1056 cps/updater.py:320 cps/updater.py:521 cps/updater.py:523 msgid "HTTP Error" msgstr "" -#: cps/admin.py:1055 cps/updater.py:322 cps/updater.py:525 +#: cps/admin.py:1057 cps/updater.py:322 cps/updater.py:525 msgid "Connection error" msgstr "" -#: cps/admin.py:1056 cps/updater.py:324 cps/updater.py:527 +#: cps/admin.py:1058 cps/updater.py:324 cps/updater.py:527 msgid "Timeout while establishing connection" msgstr "" -#: cps/admin.py:1057 cps/updater.py:326 cps/updater.py:529 +#: cps/admin.py:1059 cps/updater.py:326 cps/updater.py:529 msgid "General error" msgstr "" -#: cps/admin.py:1058 +#: cps/admin.py:1060 msgid "Update File Could Not be Saved in Temp Dir" msgstr "" -#: cps/converter.py:32 +#: cps/converter.py:31 msgid "not configured" msgstr "" -#: cps/converter.py:34 +#: cps/converter.py:33 msgid "Execution permissions missing" msgstr "" -#: cps/editbooks.py:273 cps/editbooks.py:275 +#: cps/editbooks.py:272 cps/editbooks.py:274 msgid "Book Format Successfully Deleted" msgstr "" -#: cps/editbooks.py:282 cps/editbooks.py:284 +#: cps/editbooks.py:281 cps/editbooks.py:283 msgid "Book Successfully Deleted" msgstr "" -#: cps/editbooks.py:293 cps/editbooks.py:596 cps/web.py:1824 cps/web.py:1865 -#: cps/web.py:1927 +#: cps/editbooks.py:292 cps/editbooks.py:595 cps/web.py:1826 cps/web.py:1867 +#: cps/web.py:1929 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "" -#: cps/editbooks.py:327 +#: cps/editbooks.py:326 msgid "edit metadata" msgstr "" -#: cps/editbooks.py:402 +#: cps/editbooks.py:401 #, python-format msgid "%(langname)s is not a valid language" msgstr "" -#: cps/editbooks.py:513 cps/editbooks.py:769 +#: cps/editbooks.py:512 cps/editbooks.py:768 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "" -#: cps/editbooks.py:517 cps/editbooks.py:773 +#: cps/editbooks.py:516 cps/editbooks.py:772 msgid "File to be uploaded must have an extension" msgstr "" -#: cps/editbooks.py:529 +#: cps/editbooks.py:528 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "" -#: cps/editbooks.py:534 +#: cps/editbooks.py:533 #, python-format msgid "Failed to store file %(file)s." msgstr "" -#: cps/editbooks.py:552 cps/editbooks.py:904 +#: cps/editbooks.py:551 cps/editbooks.py:903 #, python-format msgid "Database error: %(error)s." msgstr "" -#: cps/editbooks.py:556 +#: cps/editbooks.py:555 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "" -#: cps/editbooks.py:673 +#: cps/editbooks.py:672 msgid "Identifiers are not Case Sensitive, Overwriting Old Identifier" msgstr "" -#: cps/editbooks.py:710 +#: cps/editbooks.py:709 msgid "Metadata successfully updated" msgstr "" -#: cps/editbooks.py:719 +#: cps/editbooks.py:718 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/editbooks.py:781 +#: cps/editbooks.py:780 #, python-format msgid "File %(filename)s could not saved to temp dir" msgstr "" -#: cps/editbooks.py:791 +#: cps/editbooks.py:790 msgid "Uploaded book probably exists in the library, consider to change before upload new: " msgstr "" -#: cps/editbooks.py:879 +#: cps/editbooks.py:878 #, python-format msgid "Failed to Move Cover File %(file)s: %(error)s" msgstr "" -#: cps/editbooks.py:890 +#: cps/editbooks.py:889 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/editbooks.py:916 +#: cps/editbooks.py:915 msgid "Source or destination format for conversion missing" msgstr "" -#: cps/editbooks.py:924 +#: cps/editbooks.py:923 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "" -#: cps/editbooks.py:928 +#: cps/editbooks.py:927 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "" @@ -579,7 +579,7 @@ msgstr "" msgid "Failed to fetch user info from Google." msgstr "" -#: cps/oauth_bb.py:225 cps/web.py:1565 cps/web.py:1707 +#: cps/oauth_bb.py:225 cps/web.py:1567 cps/web.py:1709 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "" @@ -739,7 +739,7 @@ msgstr "" msgid "Show Downloaded Books" msgstr "" -#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:639 +#: cps/templates/index.xml:24 cps/ub.py:79 cps/web.py:641 msgid "Top Rated Books" msgstr "" @@ -748,7 +748,7 @@ msgid "Show Top Rated Books" msgstr "" #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:82 -#: cps/web.py:900 +#: cps/web.py:902 msgid "Read Books" msgstr "" @@ -757,7 +757,7 @@ msgid "Show read and unread" msgstr "" #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:86 -#: cps/web.py:903 +#: cps/web.py:905 msgid "Unread Books" msgstr "" @@ -774,7 +774,7 @@ msgid "Show random books" msgstr "" #: cps/templates/book_table.html:50 cps/templates/index.xml:75 cps/ub.py:92 -#: cps/web.py:1204 +#: cps/web.py:1206 msgid "Categories" msgstr "" @@ -784,7 +784,7 @@ msgstr "" #: cps/templates/book_edit.html:84 cps/templates/book_table.html:51 #: cps/templates/index.xml:82 cps/templates/search_form.html:54 cps/ub.py:95 -#: cps/web.py:1108 cps/web.py:1118 +#: cps/web.py:1110 cps/web.py:1120 msgid "Series" msgstr "" @@ -801,7 +801,7 @@ msgid "Show author selection" msgstr "" #: cps/templates/book_table.html:55 cps/templates/index.xml:68 cps/ub.py:102 -#: cps/web.py:1087 +#: cps/web.py:1089 msgid "Publishers" msgstr "" @@ -810,7 +810,7 @@ msgid "Show publisher selection" msgstr "" #: cps/templates/book_table.html:53 cps/templates/index.xml:89 -#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1183 +#: cps/templates/search_form.html:75 cps/ub.py:105 cps/web.py:1185 msgid "Languages" msgstr "" @@ -834,7 +834,7 @@ msgstr "" msgid "Show file formats selection" msgstr "" -#: cps/ub.py:116 cps/web.py:927 +#: cps/ub.py:116 cps/web.py:929 msgid "Archived Books" msgstr "" @@ -879,225 +879,225 @@ msgstr "" msgid "Click on the button below to update to the latest stable version." msgstr "" -#: cps/web.py:316 +#: cps/web.py:318 #, python-format msgid "Error: %(ldaperror)s" msgstr "" -#: cps/web.py:320 +#: cps/web.py:322 msgid "Error: No user returned in response of LDAP server" msgstr "" -#: cps/web.py:368 +#: cps/web.py:370 msgid "Failed to Create at Least One LDAP User" msgstr "" -#: cps/web.py:371 +#: cps/web.py:373 msgid "At Least One LDAP User Not Found in Database" msgstr "" -#: cps/web.py:373 +#: cps/web.py:375 msgid "User Successfully Imported" msgstr "" -#: cps/templates/index.html:5 cps/web.py:647 +#: cps/templates/index.html:5 cps/web.py:649 msgid "Discover (Random Books)" msgstr "" -#: cps/web.py:686 +#: cps/web.py:688 msgid "Books" msgstr "" -#: cps/web.py:713 +#: cps/web.py:715 msgid "Hot Books (Most Downloaded)" msgstr "" -#: cps/web.py:748 +#: cps/web.py:750 #, python-format msgid "Downloaded books by %(user)s" msgstr "" -#: cps/web.py:762 +#: cps/web.py:764 msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible" msgstr "" -#: cps/web.py:776 +#: cps/web.py:778 #, python-format msgid "Author: %(name)s" msgstr "" -#: cps/web.py:790 +#: cps/web.py:792 #, python-format msgid "Publisher: %(name)s" msgstr "" -#: cps/web.py:803 +#: cps/web.py:805 #, python-format msgid "Series: %(serie)s" msgstr "" -#: cps/web.py:816 +#: cps/web.py:818 #, python-format msgid "Rating: %(rating)s stars" msgstr "" -#: cps/web.py:829 +#: cps/web.py:831 #, python-format msgid "File format: %(format)s" msgstr "" -#: cps/web.py:843 +#: cps/web.py:845 #, python-format msgid "Category: %(name)s" msgstr "" -#: cps/web.py:862 +#: cps/web.py:864 #, python-format msgid "Language: %(name)s" msgstr "" -#: cps/web.py:891 +#: cps/web.py:893 #, python-format msgid "Custom Column No.%(column)d is not existing in calibre database" msgstr "" -#: cps/templates/layout.html:56 cps/web.py:958 cps/web.py:1407 +#: cps/templates/layout.html:56 cps/web.py:960 cps/web.py:1409 msgid "Advanced Search" msgstr "" #: cps/templates/book_edit.html:213 cps/templates/feed.xml:33 #: cps/templates/layout.html:45 cps/templates/layout.html:48 -#: cps/templates/search_form.html:175 cps/web.py:970 cps/web.py:1241 +#: cps/templates/search_form.html:175 cps/web.py:972 cps/web.py:1243 msgid "Search" msgstr "" -#: cps/web.py:998 +#: cps/web.py:1000 msgid "Books list" msgstr "" -#: cps/web.py:1136 +#: cps/web.py:1138 msgid "Ratings list" msgstr "" -#: cps/web.py:1155 +#: cps/web.py:1157 msgid "File formats list" msgstr "" -#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1218 +#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:1220 msgid "Tasks" msgstr "" -#: cps/web.py:1303 +#: cps/web.py:1305 msgid "Published after " msgstr "" -#: cps/web.py:1310 +#: cps/web.py:1312 msgid "Published before " msgstr "" -#: cps/web.py:1325 +#: cps/web.py:1327 #, python-format msgid "Rating <= %(rating)s" msgstr "" -#: cps/web.py:1327 +#: cps/web.py:1329 #, python-format msgid "Rating >= %(rating)s" msgstr "" -#: cps/web.py:1472 +#: cps/web.py:1474 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "" -#: cps/web.py:1476 +#: cps/web.py:1478 #, python-format msgid "Oops! There was an error sending this book: %(res)s" msgstr "" -#: cps/web.py:1478 +#: cps/web.py:1480 msgid "Please update your profile with a valid Send to Kindle E-mail Address." msgstr "" -#: cps/web.py:1495 +#: cps/web.py:1497 msgid "E-Mail server is not configured, please contact your administrator!" msgstr "" -#: cps/web.py:1496 cps/web.py:1506 cps/web.py:1530 cps/web.py:1534 -#: cps/web.py:1539 cps/web.py:1543 +#: cps/web.py:1498 cps/web.py:1508 cps/web.py:1532 cps/web.py:1536 +#: cps/web.py:1541 cps/web.py:1545 msgid "register" msgstr "" -#: cps/web.py:1532 +#: cps/web.py:1534 msgid "Your e-mail is not allowed to register" msgstr "" -#: cps/web.py:1535 +#: cps/web.py:1537 msgid "Confirmation e-mail was send to your e-mail account." msgstr "" -#: cps/web.py:1538 +#: cps/web.py:1540 msgid "This username or e-mail address is already in use." msgstr "" -#: cps/web.py:1555 +#: cps/web.py:1557 msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1572 +#: cps/web.py:1574 #, python-format msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known" msgstr "" -#: cps/web.py:1578 +#: cps/web.py:1580 #, python-format msgid "Could not login: %(message)s" msgstr "" -#: cps/web.py:1582 cps/web.py:1606 +#: cps/web.py:1584 cps/web.py:1608 msgid "Wrong Username or Password" msgstr "" -#: cps/web.py:1589 +#: cps/web.py:1591 msgid "New Password was send to your email address" msgstr "" -#: cps/web.py:1595 +#: cps/web.py:1597 msgid "Please enter valid username to reset password" msgstr "" -#: cps/web.py:1601 +#: cps/web.py:1603 #, python-format msgid "You are now logged in as: '%(nickname)s'" msgstr "" -#: cps/web.py:1612 cps/web.py:1639 +#: cps/web.py:1614 cps/web.py:1641 msgid "login" msgstr "" -#: cps/web.py:1651 cps/web.py:1685 +#: cps/web.py:1653 cps/web.py:1687 msgid "Token not found" msgstr "" -#: cps/web.py:1660 cps/web.py:1693 +#: cps/web.py:1662 cps/web.py:1695 msgid "Token has expired" msgstr "" -#: cps/web.py:1669 +#: cps/web.py:1671 msgid "Success! Please return to your device" msgstr "" -#: cps/web.py:1753 cps/web.py:1809 +#: cps/web.py:1755 cps/web.py:1811 #, python-format msgid "%(name)s's profile" msgstr "" -#: cps/web.py:1789 +#: cps/web.py:1791 msgid "Profile updated" msgstr "" -#: cps/web.py:1836 cps/web.py:1839 cps/web.py:1842 cps/web.py:1849 -#: cps/web.py:1854 +#: cps/web.py:1838 cps/web.py:1841 cps/web.py:1844 cps/web.py:1851 +#: cps/web.py:1856 msgid "Read a Book" msgstr "" diff --git a/requirements.txt b/requirements.txt index 70359568..16e5844a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,8 +8,8 @@ Flask>=1.0.2,<1.2.0 iso-639>=0.4.5,<0.5.0 PyPDF2==1.26.0,<1.27.0 pytz>=2016.10 -requests>=2.11.1,<2.24.0 +requests>=2.11.1,<2.26.0 SQLAlchemy>=1.3.0,<1.4.0 -tornado>=4.1,<6.1 +tornado>=4.1,<6.2 Wand>=0.4.4,<0.6.0 unidecode>=0.04.19,<1.2.0 diff --git a/test/Calibre-Web TestSummary_Linux.html b/test/Calibre-Web TestSummary_Linux.html index 41225306..e2fa7bee 100644 --- a/test/Calibre-Web TestSummary_Linux.html +++ b/test/Calibre-Web TestSummary_Linux.html @@ -37,20 +37,20 @@
-

Start Time: 2020-10-10 07:47:35

+

Start Time: 2020-10-31 14:09:56

-

Stop Time: 2020-10-10 09:47:24

+

Stop Time: 2020-10-31 16:09:08

-

Duration: 1h 37 min

+

Duration: 1h 36 min

@@ -102,12 +102,12 @@ - + TestAnonymous 13 - 12 + 13 + 0 0 - 1 0 Detail @@ -215,31 +215,11 @@ - +
TestAnonymous - test_guest_restricted_settings_visibility
- -
- ERROR -
- - - - + PASS @@ -1107,7 +1087,7 @@ AssertionError: False is not true : Browser-Cache Problem: Old Cover is displaye - TestEditBooks + TestEditBooksList 3 3 0 @@ -1122,7 +1102,7 @@ AssertionError: False is not true : Browser-Cache Problem: Old Cover is displaye -
TestEditBooks - test_edit_books_list
+
TestEditBooksList - test_edit_books_list
PASS @@ -1131,7 +1111,7 @@ AssertionError: False is not true : Browser-Cache Problem: Old Cover is displaye -
TestEditBooks - test_list_visibility
+
TestEditBooksList - test_list_visibility
PASS @@ -1140,7 +1120,7 @@ AssertionError: False is not true : Browser-Cache Problem: Old Cover is displaye -
TestEditBooks - test_merge_book
+
TestEditBooksList - test_merge_book
PASS @@ -1341,7 +1321,7 @@ AssertionError: False is not true : Browser-Cache Problem: Old Cover is displaye
Traceback (most recent call last):
-  File "/home/matthias/Entwicklung/calibre-web-test/test/test_edit_ebooks_gdrive.py", line 719, in test_upload_cover_hdd
+  File "/home/matthias/Entwicklung/calibre-web-test/test/test_edit_ebooks_gdrive.py", line 721, in test_upload_cover_hdd
     self.assertTrue(False, "Browser-Cache Problem: Old Cover is displayed instead of New Cover")
 AssertionError: False is not true : Browser-Cache Problem: Old Cover is displayed instead of New Cover
@@ -1522,165 +1502,6 @@ AssertionError: False is not true : Browser-Cache Problem: Old Cover is displaye - - TestCalibreHelper - 16 - 16 - 0 - 0 - 0 - - Detail - - - - - - - -
TestCalibreHelper - test_author_sort
- - PASS - - - - - - -
TestCalibreHelper - test_author_sort_comma
- - PASS - - - - - - -
TestCalibreHelper - test_author_sort_junior
- - PASS - - - - - - -
TestCalibreHelper - test_author_sort_oneword
- - PASS - - - - - - -
TestCalibreHelper - test_author_sort_roman
- - PASS - - - - - - -
TestCalibreHelper - test_check_Limit_Length
- - PASS - - - - - - -
TestCalibreHelper - test_check_char_replacement
- - PASS - - - - - - -
TestCalibreHelper - test_check_chinese_Characters
- - PASS - - - - - - -
TestCalibreHelper - test_check_deg_eur_replacement
- - PASS - - - - - - -
TestCalibreHelper - test_check_doubleS
- - PASS - - - - - - -
TestCalibreHelper - test_check_finish_Dot
- - PASS - - - - - - -
TestCalibreHelper - test_check_high23
- - PASS - - - - - - -
TestCalibreHelper - test_check_umlauts
- - PASS - - - - - - -
TestCalibreHelper - test_random_password
- - PASS - - - - - - -
TestCalibreHelper - test_split_authors
- - PASS - - - - - - -
TestCalibreHelper - test_whitespaces
- - PASS - - - - - TestKoboSync 8 @@ -1689,13 +1510,13 @@ AssertionError: False is not true : Browser-Cache Problem: Old Cover is displaye 0 0 - Detail + Detail - +
TestKoboSync - test_kobo_about
@@ -1704,7 +1525,7 @@ AssertionError: False is not true : Browser-Cache Problem: Old Cover is displaye - +
TestKoboSync - test_shelves_add_remove_books
@@ -1713,7 +1534,7 @@ AssertionError: False is not true : Browser-Cache Problem: Old Cover is displaye - +
TestKoboSync - test_sync_changed_book
@@ -1722,7 +1543,7 @@ AssertionError: False is not true : Browser-Cache Problem: Old Cover is displaye - +
TestKoboSync - test_sync_invalid
@@ -1731,7 +1552,7 @@ AssertionError: False is not true : Browser-Cache Problem: Old Cover is displaye - +
TestKoboSync - test_sync_reading_state
@@ -1740,7 +1561,7 @@ AssertionError: False is not true : Browser-Cache Problem: Old Cover is displaye - +
TestKoboSync - test_sync_shelf
@@ -1749,7 +1570,7 @@ AssertionError: False is not true : Browser-Cache Problem: Old Cover is displaye - +
TestKoboSync - test_sync_unchanged
@@ -1758,7 +1579,7 @@ AssertionError: False is not true : Browser-Cache Problem: Old Cover is displaye - +
TestKoboSync - test_sync_upload
@@ -1776,13 +1597,13 @@ AssertionError: False is not true : Browser-Cache Problem: Old Cover is displaye 0 1 - Detail + Detail - +
TestLdapLogin - test_LDAP_SSL
@@ -1791,19 +1612,19 @@ AssertionError: False is not true : Browser-Cache Problem: Old Cover is displaye - +
TestLdapLogin - test_LDAP_SSL_CERTIFICATE
- SKIP + SKIP
-