Merge branch 'master' into kobo

pull/1138/head
Michael Shavit 5 years ago
commit 0b709f7dfb

@ -10,12 +10,12 @@ Calibre-Web is a web app providing a clean interface for browsing, reading and d
- Bootstrap 3 HTML5 interface - Bootstrap 3 HTML5 interface
- full graphical setup - full graphical setup
- User management with fine grained per-user permissions - User management with fine-grained per-user permissions
- Admin interface - Admin interface
- User Interface in dutch, english, french, german, hungarian, italian, japanese, khmer, polish, russian, simplified chinese, spanish, swedish, ukrainian - User Interface in dutch, english, french, german, hungarian, italian, japanese, khmer, polish, russian, simplified chinese, spanish, swedish, ukrainian
- OPDS feed for eBook reader apps - OPDS feed for eBook reader apps
- Filter and search by titles, authors, tags, series and language - Filter and search by titles, authors, tags, series and language
- Create custom book collection (shelves) - Create a custom book collection (shelves)
- Support for editing eBook metadata and deleting eBooks from Calibre library - Support for editing eBook metadata and deleting eBooks from Calibre library
- Support for converting eBooks through Calibre binaries - Support for converting eBooks through Calibre binaries
- Restrict eBook download to logged-in users - Restrict eBook download to logged-in users
@ -25,7 +25,7 @@ Calibre-Web is a web app providing a clean interface for browsing, reading and d
- Upload new books in many formats - Upload new books in many formats
- Support for Calibre custom columns - Support for Calibre custom columns
- Ability to hide content based on categories for certain users - Ability to hide content based on categories for certain users
- Self update capability - Self-update capability
- "Magic Link" login to make it easy to log on eReaders - "Magic Link" login to make it easy to log on eReaders
## Quick start ## Quick start
@ -50,11 +50,11 @@ Python 2.7+, python 3.x+
Optionally, to enable on-the-fly conversion from one ebook format to another when using the send-to-kindle feature, or during editing of ebooks metadata: Optionally, to enable on-the-fly conversion from one ebook format to another when using the send-to-kindle feature, or during editing of ebooks metadata:
[Download and install](https://calibre-ebook.com/download) the Calibre desktop program for your platform and enter the folder including programm 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 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.
\*** DEPRECATED \*** Support will be removed in future releases \*** DEPRECATED \*** Support will be removed in future releases
[Download](http://www.amazon.com/gp/feature.html?docId=1000765211) Amazon's KindleGen tool for your platform and place the binary named as `kindlegen` in the `vendor` folder. [Download](http://www.amazon.com/gp/feature.html?docId=1000765211) Amazon's KindleGen tool for your platform and place the binary named `kindlegen` in the `vendor` folder.
## Docker Images ## Docker Images
@ -82,4 +82,4 @@ Pre-built Docker images are available in these Docker Hub repositories:
# Wiki # Wiki
For further informations, How To's and FAQ please check the [Wiki](https://github.com/janeczku/calibre-web/wiki) For further information, How To's and FAQ please check the [Wiki](https://github.com/janeczku/calibre-web/wiki)

@ -37,6 +37,7 @@ except ImportError:
from flask_login.__about__ import __version__ as flask_loginVersion from flask_login.__about__ import __version__ as flask_loginVersion
try: try:
import unidecode import unidecode
# _() necessary to make babel aware of string for translation
unidecode_version = _(u'installed') unidecode_version = _(u'installed')
except ImportError: except ImportError:
unidecode_version = _(u'not installed') unidecode_version = _(u'not installed')
@ -62,8 +63,8 @@ _VERSIONS = OrderedDict(
iso639=isoLanguages.__version__, iso639=isoLanguages.__version__,
pytz=pytz.__version__, pytz=pytz.__version__,
Unidecode = unidecode_version, Unidecode = unidecode_version,
Flask_SimpleLDAP = _(u'installed') if bool(services.ldap) else _(u'not installed'), Flask_SimpleLDAP = u'installed' if bool(services.ldap) else u'not installed',
Goodreads = _(u'installed') if bool(services.goodreads_support) else _(u'not installed'), Goodreads = u'installed' if bool(services.goodreads_support) else u'not installed',
) )
_VERSIONS.update(uploader.get_versions()) _VERSIONS.update(uploader.get_versions())

@ -272,6 +272,8 @@ def _configuration_update_helper():
gdrive_secrets = {} gdrive_secrets = {}
gdriveError = gdriveutils.get_error_text(gdrive_secrets) gdriveError = gdriveutils.get_error_text(gdrive_secrets)
if "config_use_google_drive" in to_save and not config.config_use_google_drive and not gdriveError: if "config_use_google_drive" in to_save and not config.config_use_google_drive and not gdriveError:
with open(gdriveutils.CLIENT_SECRETS, 'r') as settings:
gdrive_secrets = json.load(settings)['web']
if not gdrive_secrets: if not gdrive_secrets:
return _configuration_result('client_secrets.json is not configured for web application') return _configuration_result('client_secrets.json is not configured for web application')
gdriveutils.update_settings( gdriveutils.update_settings(
@ -415,7 +417,8 @@ def _configuration_result(error_flash=None, gdriveError=None):
if gdriveError: if gdriveError:
gdriveError = _(gdriveError) gdriveError = _(gdriveError)
else: else:
gdrivefolders = gdriveutils.listRootFolders() if config.config_use_google_drive and not gdrive_authenticate:
gdrivefolders = gdriveutils.listRootFolders()
show_back_button = current_user.is_authenticated show_back_button = current_user.is_authenticated
show_login_button = config.db_configured and not current_user.is_authenticated show_login_button = config.db_configured and not current_user.is_authenticated
@ -614,6 +617,21 @@ def edit_user(user_id):
return render_title_template("user_edit.html", translations=translations, languages=languages, return render_title_template("user_edit.html", translations=translations, languages=languages,
new_user=0, content=content, downloads=downloads, registered_oauth=oauth_check, new_user=0, content=content, downloads=downloads, registered_oauth=oauth_check,
title=_(u"Edit User %(nick)s", nick=content.nickname), page="edituser") title=_(u"Edit User %(nick)s", nick=content.nickname), page="edituser")
if "nickname" in to_save and to_save["nickname"] != content.nickname:
# Query User nickname, if not existing, change
if not ub.session.query(ub.User).filter(ub.User.nickname == to_save["nickname"]).scalar():
content.nickname = to_save["nickname"]
else:
flash(_(u"This username is already taken"), category="error")
return render_title_template("user_edit.html",
translations=translations,
languages=languages,
new_user=0, content=content,
downloads=downloads,
registered_oauth=oauth_check,
title=_(u"Edit User %(nick)s",
nick=content.nickname),
page="edituser")
if "kindle_mail" in to_save and to_save["kindle_mail"] != content.kindle_mail: if "kindle_mail" in to_save and to_save["kindle_mail"] != content.kindle_mail:
content.kindle_mail = to_save["kindle_mail"] content.kindle_mail = to_save["kindle_mail"]

@ -19,6 +19,7 @@
from __future__ import division, print_function, unicode_literals from __future__ import division, print_function, unicode_literals
import os import os
import re import re
from flask_babel import gettext as _
from . import config, logger from . import config, logger
from .subproc_wrapper import process_wait from .subproc_wrapper import process_wait
@ -26,7 +27,8 @@ from .subproc_wrapper import process_wait
log = logger.create() log = logger.create()
_NOT_CONFIGURED = 'not configured' # _() necessary to make babel aware of string for translation
_NOT_CONFIGURED = _('not configured')
_NOT_INSTALLED = 'not installed' _NOT_INSTALLED = 'not installed'
_EXECUTION_ERROR = 'Execution permissions missing' _EXECUTION_ERROR = 'Execution permissions missing'

@ -567,6 +567,12 @@ def upload():
filepath = os.path.join(config.config_calibre_dir, author_dir, title_dir) filepath = os.path.join(config.config_calibre_dir, author_dir, title_dir)
saved_filename = os.path.join(filepath, title_dir + meta.extension.lower()) saved_filename = os.path.join(filepath, title_dir + meta.extension.lower())
if title != u'Unknown' and authr != u'Unknown':
entry = helper.check_exists_book(authr, title)
if entry:
book_html = flash(_(u"Uploaded book probably exists in the library, consider to change before upload new: ")
+ Markup(render_title_template('book_exists_flash.html', entry=entry)), category="warning")
# check if file path exists, otherwise create it, copy file to calibre path and delete temp file # check if file path exists, otherwise create it, copy file to calibre path and delete temp file
if not os.path.exists(filepath): if not os.path.exists(filepath):
try: try:

@ -64,7 +64,12 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension):
for s in ['title', 'description', 'creator', 'language', 'subject']: for s in ['title', 'description', 'creator', 'language', 'subject']:
tmp = p.xpath('dc:%s/text()' % s, namespaces=ns) tmp = p.xpath('dc:%s/text()' % s, namespaces=ns)
if len(tmp) > 0: if len(tmp) > 0:
epub_metadata[s] = p.xpath('dc:%s/text()' % s, namespaces=ns)[0] if s == 'creator':
epub_metadata[s] = ' & '.join(p.xpath('dc:%s/text()' % s, namespaces=ns))
elif s == 'subject':
epub_metadata[s] = ', '.join(p.xpath('dc:%s/text()' % s, namespaces=ns))
else:
epub_metadata[s] = p.xpath('dc:%s/text()' % s, namespaces=ns)[0]
else: else:
epub_metadata[s] = "Unknown" epub_metadata[s] = "Unknown"
@ -109,18 +114,20 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension):
meta_cover = tree.xpath("/pkg:package/pkg:metadata/pkg:meta[@name='cover']/@content", namespaces=ns) meta_cover = tree.xpath("/pkg:package/pkg:metadata/pkg:meta[@name='cover']/@content", namespaces=ns)
if len(meta_cover) > 0: if len(meta_cover) > 0:
coversection = tree.xpath("/pkg:package/pkg:manifest/pkg:item[@id='"+meta_cover[0]+"']/@href", namespaces=ns) coversection = tree.xpath("/pkg:package/pkg:manifest/pkg:item[@id='"+meta_cover[0]+"']/@href", namespaces=ns)
if len(coversection) > 0: else:
filetype = coversection[0].rsplit('.', 1)[-1] coversection = tree.xpath("/pkg:package/pkg:guide/pkg:reference/@href", namespaces=ns)
if filetype == "xhtml" or filetype == "html": # if cover is (x)html format if len(coversection) > 0:
markup = epubZip.read(os.path.join(coverpath, coversection[0])) filetype = coversection[0].rsplit('.', 1)[-1]
markupTree = etree.fromstring(markup) if filetype == "xhtml" or filetype == "html": # if cover is (x)html format
# no matter xhtml or html with no namespace markup = epubZip.read(os.path.join(coverpath, coversection[0]))
imgsrc = markupTree.xpath("//*[local-name() = 'img']/@src") markupTree = etree.fromstring(markup)
# imgsrc maybe startwith "../"" so fullpath join then relpath to cwd # no matter xhtml or html with no namespace
filename = os.path.relpath(os.path.join(os.path.dirname(os.path.join(coverpath, coversection[0])), imgsrc[0])) imgsrc = markupTree.xpath("//*[local-name() = 'img']/@src")
coverfile = extractCover(epubZip, filename, "", tmp_file_path) # imgsrc maybe startwith "../"" so fullpath join then relpath to cwd
else: filename = os.path.relpath(os.path.join(os.path.dirname(os.path.join(coverpath, coversection[0])), imgsrc[0]))
coverfile = extractCover(epubZip, coversection[0], coverpath, tmp_file_path) coverfile = extractCover(epubZip, filename, "", tmp_file_path)
else:
coverfile = extractCover(epubZip, coversection[0], coverpath, tmp_file_path)
if not epub_metadata['title']: if not epub_metadata['title']:
title = original_file_name title = original_file_name

@ -584,5 +584,7 @@ def get_error_text(client_secrets=None):
filedata = json.load(settings) filedata = json.load(settings)
if 'web' not in filedata: if 'web' not in filedata:
return 'client_secrets.json is not configured for web application' return 'client_secrets.json is not configured for web application'
if 'redirect_uris' not in filedata['web']:
return 'Callback url (redirect url) is missing in client_secrets.json'
if client_secrets: if client_secrets:
client_secrets.update(filedata['web']) client_secrets.update(filedata['web'])

@ -54,7 +54,7 @@ except ImportError:
use_unidecode = False use_unidecode = False
try: try:
from PIL import Image from PIL import Image as PILImage
use_PIL = True use_PIL = True
except ImportError: except ImportError:
use_PIL = False use_PIL = False
@ -183,7 +183,7 @@ def check_read_formats(entry):
bookformats = list() bookformats = list()
if len(entry.data): if len(entry.data):
for ele in iter(entry.data): for ele in iter(entry.data):
if ele.format in EXTENSIONS_READER: if ele.format.upper() in EXTENSIONS_READER:
bookformats.append(ele.format.lower()) bookformats.append(ele.format.lower())
return bookformats return bookformats
@ -511,9 +511,9 @@ def save_cover(img, book_path):
# convert to jpg because calibre only supports jpg # convert to jpg because calibre only supports jpg
if content_type in ('image/png', 'image/webp'): if content_type in ('image/png', 'image/webp'):
if hasattr(img,'stream'): if hasattr(img,'stream'):
imgc = Image.open(img.stream) imgc = PILImage.open(img.stream)
else: else:
imgc = Image.open(io.BytesIO(img.content)) imgc = PILImage.open(io.BytesIO(img.content))
im = imgc.convert('RGB') im = imgc.convert('RGB')
tmp_bytesio = io.BytesIO() tmp_bytesio = io.BytesIO()
im.save(tmp_bytesio, format='JPEG') im.save(tmp_bytesio, format='JPEG')
@ -794,9 +794,22 @@ def get_download_link(book_id, book_format):
else: else:
abort(404) abort(404)
def check_exists_book(authr,title):
db.session.connection().connection.connection.create_function("lower", 1, lcase)
q = list()
authorterms = re.split(r'\s*&\s*', authr)
for authorterm in authorterms:
q.append(db.Books.authors.any(func.lower(db.Authors.name).ilike("%" + authorterm + "%")))
return db.session.query(db.Books).filter(
and_(db.Books.authors.any(and_(*q)),
func.lower(db.Books.title).ilike("%" + title + "%")
)).first()
############### Database Helper functions ############### Database Helper functions
def lcase(s): def lcase(s):
return unidecode.unidecode(s.lower()) if use_unidecode else s.lower() try:
return unidecode.unidecode(s.lower())
except Exception as e:
log.exception(e)

@ -18,6 +18,7 @@
from __future__ import division, print_function, unicode_literals from __future__ import division, print_function, unicode_literals
import os import os
import sys
import inspect import inspect
import logging import logging
from logging import Formatter, StreamHandler from logging import Formatter, StreamHandler
@ -34,6 +35,7 @@ DEFAULT_LOG_LEVEL = logging.INFO
DEFAULT_LOG_FILE = os.path.join(_CONFIG_DIR, "calibre-web.log") DEFAULT_LOG_FILE = os.path.join(_CONFIG_DIR, "calibre-web.log")
DEFAULT_ACCESS_LOG = os.path.join(_CONFIG_DIR, "access.log") DEFAULT_ACCESS_LOG = os.path.join(_CONFIG_DIR, "access.log")
LOG_TO_STDERR = '/dev/stderr' LOG_TO_STDERR = '/dev/stderr'
LOG_TO_STDOUT = '/dev/stdout'
logging.addLevelName(logging.WARNING, "WARN") logging.addLevelName(logging.WARNING, "WARN")
logging.addLevelName(logging.CRITICAL, "CRIT") logging.addLevelName(logging.CRITICAL, "CRIT")
@ -112,9 +114,13 @@ def setup(log_file, log_level=None):
return return
logging.debug("logging to %s level %s", log_file, r.level) logging.debug("logging to %s level %s", log_file, r.level)
if log_file == LOG_TO_STDERR: if log_file == LOG_TO_STDERR or log_file == LOG_TO_STDOUT:
file_handler = StreamHandler() if log_file == LOG_TO_STDOUT:
file_handler.baseFilename = LOG_TO_STDERR file_handler = StreamHandler(sys.stdout)
file_handler.baseFilename = log_file
else:
file_handler = StreamHandler()
file_handler.baseFilename = log_file
else: else:
try: try:
file_handler = RotatingFileHandler(log_file, maxBytes=50000, backupCount=2) file_handler = RotatingFileHandler(log_file, maxBytes=50000, backupCount=2)
@ -164,5 +170,5 @@ class StderrLogger(object):
self.log.debug("Logging Error") self.log.debug("Logging Error")
# default configuration, before application settngs are applied # default configuration, before application settings are applied
setup(LOG_TO_STDERR, logging.DEBUG if os.environ.get('FLASK_DEBUG') else DEFAULT_LOG_LEVEL) setup(LOG_TO_STDERR, logging.DEBUG if os.environ.get('FLASK_DEBUG') else DEFAULT_LOG_LEVEL)

@ -47,7 +47,7 @@ def requires_basic_auth_if_no_ano(f):
def decorated(*args, **kwargs): def decorated(*args, **kwargs):
auth = request.authorization auth = request.authorization
if config.config_anonbrowse != 1: if config.config_anonbrowse != 1:
if not auth or not check_auth(auth.username, auth.password): if not auth or auth.type != 'basic' or not check_auth(auth.username, auth.password):
return authenticate() return authenticate()
return f(*args, **kwargs) return f(*args, **kwargs)
if config.config_login_type == constants.LOGIN_LDAP and services.ldap: if config.config_login_type == constants.LOGIN_LDAP and services.ldap:
@ -219,7 +219,7 @@ def feed_series(book_id):
@requires_basic_auth_if_no_ano @requires_basic_auth_if_no_ano
def feed_shelfindex(public): def feed_shelfindex(public):
off = request.args.get("offset") or 0 off = request.args.get("offset") or 0
if public is not 0: if public != 0:
shelf = g.public_shelfes shelf = g.public_shelfes
number = len(shelf) number = len(shelf)
else: else:
@ -261,9 +261,10 @@ def opds_download_link(book_id, book_format):
return get_download_link(book_id,book_format) return get_download_link(book_id,book_format)
@opds.route("/ajax/book/<string:uuid>/<library>")
@opds.route("/ajax/book/<string:uuid>") @opds.route("/ajax/book/<string:uuid>")
@requires_basic_auth_if_no_ano @requires_basic_auth_if_no_ano
def get_metadata_calibre_companion(uuid): def get_metadata_calibre_companion(uuid, library):
entry = db.session.query(db.Books).filter(db.Books.uuid.like("%" + uuid + "%")).first() entry = db.session.query(db.Books).filter(db.Books.uuid.like("%" + uuid + "%")).first()
if entry is not None: if entry is not None:
js = render_template('json.txt', entry=entry) js = render_template('json.txt', entry=entry)

@ -146,6 +146,9 @@ class WebServer(object):
self.unix_socket_file = None self.unix_socket_file = None
def _start_tornado(self): def _start_tornado(self):
if os.name == 'nt':
import asyncio
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
log.info('Starting Tornado server on %s', _readable_listen_address(self.listen_address, self.listen_port)) log.info('Starting Tornado server on %s', _readable_listen_address(self.listen_address, self.listen_port))
# Max Buffersize set to 200MB ) # Max Buffersize set to 200MB )

@ -64,6 +64,7 @@ span.glyphicon.glyphicon-tags {padding-right: 5px;color: #999;vertical-align: te
.navbar-default .navbar-toggle .icon-bar {background-color: #000;} .navbar-default .navbar-toggle .icon-bar {background-color: #000;}
.navbar-default .navbar-toggle {border-color: #000;} .navbar-default .navbar-toggle {border-color: #000;}
.cover { margin-bottom: 10px;} .cover { margin-bottom: 10px;}
.cover-height { max-height: 100px;}
.btn-file {position: relative; overflow: hidden;} .btn-file {position: relative; overflow: hidden;}
.btn-file input[type=file] {position: absolute; top: 0; right: 0; min-width: 100%; min-height: 100%; font-size: 100px; text-align: right; filter: alpha(opacity=0); opacity: 0; outline: none; background: white; cursor: inherit; display: block;} .btn-file input[type=file] {position: absolute; top: 0; right: 0; min-width: 100%; min-height: 100%; font-size: 100px; text-align: right; filter: alpha(opacity=0); opacity: 0; outline: none; background: white; cursor: inherit; display: block;}

@ -73,7 +73,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="series_index">{{_('Series id')}}</label> <label for="series_index">{{_('Series id')}}</label>
<input type="number" step="0.1" min="0" class="form-control" name="series_index" id="series_index" value="{{book.series_index}}"> <input type="number" step="0.01" min="0" class="form-control" name="series_index" id="series_index" value="{{book.series_index}}">
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="rating">{{_('Rating')}}</label> <label for="rating">{{_('Rating')}}</label>

@ -0,0 +1,3 @@
<a href="{{ url_for('web.show_book', book_id=entry.id) }}" data-toggle="modal" data-target="#bookDetailsModal" data-remote="false">
<span class="title">{{entry.title|shortentitle}}</span>
</a>

@ -41,7 +41,7 @@
{% for entry in entries %} {% for entry in entries %}
<entry> <entry>
<title>{{entry.title}}</title> <title>{{entry.title}}</title>
<id>{{entry.uuid}}</id> <id>urn:uuid:{{entry.uuid}}</id>
<updated>{{entry.atom_timestamp}}</updated> <updated>{{entry.atom_timestamp}}</updated>
{% if entry.authors.__len__() > 0 %} {% if entry.authors.__len__() > 0 %}
<author> <author>

@ -15,28 +15,28 @@
</author> </author>
<entry> <entry>
<title>{{_('Hot Books')}}</title> <title>{{_('Hot Books')}}</title>
<link rel="http://opds-spec.org/sort/popular" href="{{url_for('opds.feed_hot')}}" type="application/atom+xml;profile=opds-catalog"/> <link href="{{url_for('opds.feed_hot')}}" type="application/atom+xml;profile=opds-catalog"/>
<id>{{url_for('opds.feed_hot')}}</id> <id>{{url_for('opds.feed_hot')}}</id>
<updated>{{ current_time }}</updated> <updated>{{ current_time }}</updated>
<content type="text">{{_('Popular publications from this catalog based on Downloads.')}}</content> <content type="text">{{_('Popular publications from this catalog based on Downloads.')}}</content>
</entry> </entry>
<entry> <entry>
<title>{{_('Best rated Books')}}</title> <title>{{_('Best rated Books')}}</title>
<link rel="http://opds-spec.org/recommended" href="{{url_for('opds.feed_best_rated')}}" type="application/atom+xml;profile=opds-catalog"/> <link href="{{url_for('opds.feed_best_rated')}}" type="application/atom+xml;profile=opds-catalog"/>
<id>{{url_for('opds.feed_best_rated')}}</id> <id>{{url_for('opds.feed_best_rated')}}</id>
<updated>{{ current_time }}</updated> <updated>{{ current_time }}</updated>
<content type="text">{{_('Popular publications from this catalog based on Rating.')}}</content> <content type="text">{{_('Popular publications from this catalog based on Rating.')}}</content>
</entry> </entry>
<entry> <entry>
<title>{{_('New Books')}}</title> <title>{{_('New Books')}}</title>
<link rel="http://opds-spec.org/sort/new" href="{{url_for('opds.feed_new')}}" type="application/atom+xml;profile=opds-catalog"/> <link href="{{url_for('opds.feed_new')}}" type="application/atom+xml;profile=opds-catalog"/>
<id>{{url_for('opds.feed_new')}}</id> <id>{{url_for('opds.feed_new')}}</id>
<updated>{{ current_time }}</updated> <updated>{{ current_time }}</updated>
<content type="text">{{_('The latest Books')}}</content> <content type="text">{{_('The latest Books')}}</content>
</entry> </entry>
<entry> <entry>
<title>{{_('Random Books')}}</title> <title>{{_('Random Books')}}</title>
<link rel="http://opds-spec.org/featured" href="{{url_for('opds.feed_discover')}}" type="application/atom+xml;profile=opds-catalog"/> <link href="{{url_for('opds.feed_discover')}}" type="application/atom+xml;profile=opds-catalog"/>
<id>{{url_for('opds.feed_discover')}}</id> <id>{{url_for('opds.feed_discover')}}</id>
<updated>{{ current_time }}</updated> <updated>{{ current_time }}</updated>
<content type="text">{{_('Show Random Books')}}</content> <content type="text">{{_('Show Random Books')}}</content>
@ -44,14 +44,14 @@
{% if not current_user.is_anonymous %} {% if not current_user.is_anonymous %}
<entry> <entry>
<title>{{_('Read Books')}}</title> <title>{{_('Read Books')}}</title>
<link rel="subsection" href="{{url_for('opds.feed_read_books')}}" type="application/atom+xml;profile=opds-catalog"/> <link href="{{url_for('opds.feed_read_books')}}" type="application/atom+xml;profile=opds-catalog"/>
<id>{{url_for('opds.feed_read_books')}}</id> <id>{{url_for('opds.feed_read_books')}}</id>
<updated>{{ current_time }}</updated> <updated>{{ current_time }}</updated>
<content type="text">{{_('Read Books')}}</content> <content type="text">{{_('Read Books')}}</content>
</entry> </entry>
<entry> <entry>
<title>{{_('Unread Books')}}</title> <title>{{_('Unread Books')}}</title>
<link rel="subsection" href="{{url_for('opds.feed_unread_books')}}" type="application/atom+xml;profile=opds-catalog"/> <link href="{{url_for('opds.feed_unread_books')}}" type="application/atom+xml;profile=opds-catalog"/>
<id>{{url_for('opds.feed_unread_books')}}</id> <id>{{url_for('opds.feed_unread_books')}}</id>
<updated>{{ current_time }}</updated> <updated>{{ current_time }}</updated>
<content type="text">{{_('Unread Books')}}</content> <content type="text">{{_('Unread Books')}}</content>
@ -59,35 +59,35 @@
{% endif %} {% endif %}
<entry> <entry>
<title>{{_('Authors')}}</title> <title>{{_('Authors')}}</title>
<link rel="subsection" href="{{url_for('opds.feed_authorindex')}}" type="application/atom+xml;profile=opds-catalog"/> <link href="{{url_for('opds.feed_authorindex')}}" type="application/atom+xml;profile=opds-catalog"/>
<id>{{url_for('opds.feed_authorindex')}}</id> <id>{{url_for('opds.feed_authorindex')}}</id>
<updated>{{ current_time }}</updated> <updated>{{ current_time }}</updated>
<content type="text">{{_('Books ordered by Author')}}</content> <content type="text">{{_('Books ordered by Author')}}</content>
</entry> </entry>
<entry> <entry>
<title>{{_('Publishers')}}</title> <title>{{_('Publishers')}}</title>
<link rel="subsection" href="{{url_for('opds.feed_publisherindex')}}" type="application/atom+xml;profile=opds-catalog"/> <link href="{{url_for('opds.feed_publisherindex')}}" type="application/atom+xml;profile=opds-catalog"/>
<id>{{url_for('opds.feed_publisherindex')}}</id> <id>{{url_for('opds.feed_publisherindex')}}</id>
<updated>{{ current_time }}</updated> <updated>{{ current_time }}</updated>
<content type="text">{{_('Books ordered by publisher')}}</content> <content type="text">{{_('Books ordered by publisher')}}</content>
</entry> </entry>
<entry> <entry>
<title>{{_('Category list')}}</title> <title>{{_('Category list')}}</title>
<link rel="subsection" href="{{url_for('opds.feed_categoryindex')}}" type="application/atom+xml;profile=opds-catalog"/> <link href="{{url_for('opds.feed_categoryindex')}}" type="application/atom+xml;profile=opds-catalog"/>
<id>{{url_for('opds.feed_categoryindex')}}</id> <id>{{url_for('opds.feed_categoryindex')}}</id>
<updated>{{ current_time }}</updated> <updated>{{ current_time }}</updated>
<content type="text">{{_('Books ordered by category')}}</content> <content type="text">{{_('Books ordered by category')}}</content>
</entry> </entry>
<entry> <entry>
<title>{{_('Series list')}}</title> <title>{{_('Series list')}}</title>
<link rel="subsection" href="{{url_for('opds.feed_seriesindex')}}" type="application/atom+xml;profile=opds-catalog"/> <link href="{{url_for('opds.feed_seriesindex')}}" type="application/atom+xml;profile=opds-catalog"/>
<id>{{url_for('opds.feed_seriesindex')}}</id> <id>{{url_for('opds.feed_seriesindex')}}</id>
<updated>{{ current_time }}</updated> <updated>{{ current_time }}</updated>
<content type="text">{{_('Books ordered by series')}}</content> <content type="text">{{_('Books ordered by series')}}</content>
</entry> </entry>
<entry> <entry>
<title>{{_('Public Shelves')}}</title> <title>{{_('Public Shelves')}}</title>
<link rel="subsection" href="{{url_for('opds.feed_shelfindex', public="public")}}" type="application/atom+xml;profile=opds-catalog"/> <link href="{{url_for('opds.feed_shelfindex', public='public')}}" type="application/atom+xml;profile=opds-catalog"/>
<id>{{url_for('opds.feed_shelfindex', public="public")}}</id> <id>{{url_for('opds.feed_shelfindex', public="public")}}</id>
<updated>{{ current_time }}</updated> <updated>{{ current_time }}</updated>
<content type="text">{{_('Books organized in public shelfs, visible to everyone')}}</content> <content type="text">{{_('Books organized in public shelfs, visible to everyone')}}</content>
@ -95,7 +95,7 @@
{% if not current_user.is_anonymous %} {% if not current_user.is_anonymous %}
<entry> <entry>
<title>{{_('Your Shelves')}}</title> <title>{{_('Your Shelves')}}</title>
<link rel="subsection" href="{{url_for('opds.feed_shelfindex')}}" type="application/atom+xml;profile=opds-catalog"/> <link href="{{url_for('opds.feed_shelfindex')}}" type="application/atom+xml;profile=opds-catalog"/>
<id>{{url_for('opds.feed_shelfindex')}}</id> <id>{{url_for('opds.feed_shelfindex')}}</id>
<updated>{{ current_time }}</updated> <updated>{{ current_time }}</updated>
<content type="text">{{_("User's own shelfs, only visible to the current user himself")}}</content> <content type="text">{{_("User's own shelfs, only visible to the current user himself")}}</content>

@ -99,6 +99,11 @@
<div id="flash_info" class="alert alert-info">{{ message[1] }}</div> <div id="flash_info" class="alert alert-info">{{ message[1] }}</div>
</div> </div>
{%endif%} {%endif%}
{%if message[0] == "warning" %}
<div class="row-fluid text-center" style="margin-top: -20px;">
<div id="flash_warning" class="alert alert-warning">{{ message[1] }}</div>
</div>
{%endif%}
{%if message[0] == "success" %} {%if message[0] == "success" %}
<div class="row-fluid text-center" style="margin-top: -20px;"> <div class="row-fluid text-center" style="margin-top: -20px;">
<div id="flash_success" class="alert alert-success">{{ message[1] }}</div> <div id="flash_success" class="alert alert-success">{{ message[1] }}</div>

@ -17,11 +17,6 @@
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}"> <link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">
<link href="{{ url_for('static', filename='css/libs/bootstrap.min.css') }}" rel="stylesheet" media="screen"> <link href="{{ url_for('static', filename='css/libs/bootstrap.min.css') }}" rel="stylesheet" media="screen">
<link rel="stylesheet" href="{{ url_for('static', filename='css/libs/bar-ui.css') }}" /> <link rel="stylesheet" href="{{ url_for('static', filename='css/libs/bar-ui.css') }}" />
<!--link rel="stylesheet" href="{{ url_for('static', filename='css/listen.css') }}" /-->
<!-- <link rel="stylesheet" href="{{ url_for('static', filename='css/libs/normalize.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/popup.css') }}"> -->
<script> <script>
"use strict"; "use strict";
@ -30,95 +25,6 @@
</head> </head>
<body> <body>
<!--div id="main">
<div class="content">
<h2>{{ entry.title }}</h2>
<div class="cover">
<img src="{{ url_for('web.get_cover', book_id=entry.id) }}" alt="{{ entry.title }}" />
</div>
{% if entry.ratings.__len__() > 0 %}
<div class="rating">
<p>
{% for number in range((entry.ratings[0].rating/2)|int(2)) %}
<span class="glyphicon glyphicon-star good"></span>
{% if loop.last and loop.index
< 5 %} {% for numer in range(5 - loop.index) %} <span class="glyphicon glyphicon-star">
</span>
{% endfor %} {% endif %} {% endfor %}
</p>
</div>
{% endif %}
<h3>{{_('Description:')}}</h3>
{{entry.comments[0].text|safe}}
</div-->
<!--div class="sm2-bar-ui compact full-width">
<div class="bd sm2-main-controls">
<div class="sm2-inline-texture"></div>
<div class="sm2-inline-gradient"></div>
<div class="sm2-inline-element sm2-button-element">
<div class="sm2-button-bd">
<a href="#play" class="sm2-inline-button sm2-icon-play-pause">{{_('Play / pause')}}</a>
</div>
</div>
<div class="sm2-inline-element sm2-inline-status">
<div class="sm2-playlist">
<div class="sm2-playlist-target">
<!-- playlist <ul> + <li> markup will be injected here -->
<!-- if you want default / non-JS content, you can put that here. -->
<!--noscript><p>JavaScript is required.</p></noscript>
</div>
</div>
<div class="sm2-progress">
<div class="sm2-row">
<div class="sm2-inline-time">0:00</div>
<div class="sm2-progress-bd">
<div class="sm2-progress-track">
<div class="sm2-progress-bar"></div>
<div class="sm2-progress-ball"><div class="icon-overlay"></div></div>
</div>
</div>
<div class="sm2-inline-duration">0:00</div>
</div>
</div>
</div>
<div class="sm2-inline-element sm2-button-element sm2-volume">
<div class="sm2-button-bd">
<span class="sm2-inline-button sm2-volume-control volume-shade"></span>
<a href="#volume" class="sm2-inline-button sm2-volume-control">{{_('volume')}}</a>
</div>
</div>
</div>
<div class="bd sm2-playlist-drawer sm2-element">
<div class="sm2-inline-texture">
<div class="sm2-box-shadow"></div>
</div>
<!-- playlist content is mirrored here -->
<!--div class="sm2-playlist-wrapper">
<ul class="sm2-playlist-bd">
<li><a href="{{ url_for('web.serve_book', book_id=mp3file,book_format=audioformat)}}"><b>{% for author in entry.authors %}{{author.name.replace('|',',')}}
{% if not loop.last %} & {% endif %} {% endfor %}</b> - {{entry.title}}</a></li>
</ul>
</div>
</div>
</div-->
<div class="sm2-bar-ui full-width fixed"> <div class="sm2-bar-ui full-width fixed">

@ -86,7 +86,7 @@
filePath: "{{ url_for('static', filename='js/libs/') }}", filePath: "{{ url_for('static', filename='js/libs/') }}",
cssPath: "{{ url_for('static', filename='css/') }}", cssPath: "{{ url_for('static', filename='css/') }}",
bookmarkUrl: "{{ url_for('web.bookmark', book_id=bookid, book_format='EPUB') }}", bookmarkUrl: "{{ url_for('web.bookmark', book_id=bookid, book_format='EPUB') }}",
bookUrl: "{{ url_for('web.download_link', book_id=bookid, book_format='epub', anyname='file.epub') }}", bookUrl: "{{ url_for('web.serve_book', book_id=bookid, book_format='epub', anyname='file.epub') }}",
bookmark: "{{ bookmark.bookmark_key if bookmark != None }}", bookmark: "{{ bookmark.bookmark_key if bookmark != None }}",
useBookmarks: "{{ g.user.is_authenticated | tojson }}" useBookmarks: "{{ g.user.is_authenticated | tojson }}"
}; };

@ -1,11 +1,31 @@
{% extends "layout.html" %} {% extends "layout.html" %}
{% block body %} {% block body %}
<div class="col-sm-6 col-lg-6 col-xs-6"> <div class="col-sm-8 col-lg-8 col-xs-12">
<h2>{{title}}</h2> <h2>{{title}}</h2>
<div>{{_('Drag \'n drop to rearrange order')}}</div> <div>{{_('Drag \'n drop to rearrange order')}}</div>
<div id="sortTrue" class="list-group"> <div id="sortTrue" class="list-group">
{% for entry in entries %} {% for entry in entries %}
<div id="{{entry.id}}" class="list-group-item">{{entry.title}}</div> <div id="{{entry.id}}" class="list-group-item">
<div class="row">
<div class="col-lg-2 col-sm-4 hidden-xs">
<img class="cover-height" src="{{ url_for('web.get_cover', book_id=entry.id) }}">
</div>
<div class="col-lg-10 col-sm-8 col-xs-12">
{{entry.title}}
{% if entry.series|length > 0 %}
<br>
{{entry.series_index}} - {{entry.series[0].name}}
{% endif %}
<br>
{% for author in entry.authors %}
{{author.name.replace('|',',')}}
{% if not loop.last %}
&amp;
{% endif %}
{% endfor %}
</div>
</div>
</div>
{% endfor %} {% endfor %}
</div> </div>
<button onclick="sendData('{{ url_for('shelf.order_shelf', shelf_id=shelf.id) }}')" class="btn btn-default" id="ChangeOrder">{{_('Change order')}}</button> <button onclick="sendData('{{ url_for('shelf.order_shelf', shelf_id=shelf.id) }}')" class="btn btn-default" id="ChangeOrder">{{_('Change order')}}</button>

@ -1,9 +1,9 @@
{% extends "layout.html" %} {% extends "layout.html" %}
{% block body %} {% block body %}
<h3>{{_('About')}}</h3> <h3>{{_('About')}}</h3>
<p>{{instance}} powered by <p>{{instance}} powered by
<a href="https://github.com/janeczku/calibre-web" title="Calibre-Web">Calibre-Web</a>. <a href="https://github.com/janeczku/calibre-web" title="Calibre-Web">Calibre-Web</a>.
</p> </p>
<h3>{{_('Calibre library statistics')}}</h3> <h3>{{_('Calibre library statistics')}}</h3>
<table id="stats" class="table"> <table id="stats" class="table">
<tbody> <tbody>
@ -37,7 +37,7 @@
{% for library,version in versions.items() %} {% for library,version in versions.items() %}
<tr> <tr>
<th>{{library}}</th> <th>{{library}}</th>
<td>{{version}}</td> <td>{{_(version)}}</td>
</tr> </tr>
{% endfor %} {% endfor %}
</tbody> </tbody>

@ -3,7 +3,7 @@
<div class="discover"> <div class="discover">
<h1>{{title}}</h1> <h1>{{title}}</h1>
<form role="form" method="POST" autocomplete="off"> <form role="form" method="POST" autocomplete="off">
{% if g.user and g.user.role_admin() and new_user %} {% if new_user or ( g.user and content.nickname != "Guest" and g.user.role_admin() ) %}
<div class="form-group required"> <div class="form-group required">
<label for="nickname">{{_('Username')}}</label> <label for="nickname">{{_('Username')}}</label>
<input type="text" class="form-control" name="nickname" id="nickname" value="{{ content.nickname if content.nickname != None }}" autocomplete="off"> <input type="text" class="form-control" name="nickname" id="nickname" value="{{ content.nickname if content.nickname != None }}" autocomplete="off">

@ -0,0 +1,65 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
# Copyright (C) 2018-2019 OzzieIsaacs
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from subproc_wrapper import process_open, cmdlineCall
import os
import sys
import re
import time
def main():
quotes = [1, 2]
format_new_ext = '.mobi'
format_old_ext = '.epub'
file_path = '/home/matthias/Dokumente/bücher/Bettina Szramah/Die Giftmischerin TCP_IP (10)/Die Giftmischerin TCP_IP - Bettina, Szrama'
command = ['/opt/calibre/ebook-convert', (file_path + format_old_ext),
(file_path + format_new_ext)]
#print(command)
#p1 = cmdlineCall(command[0],command[1:])
#time.sleep(10)
#print(p1)
p = process_open(command, quotes)
while p.poll() is None:
nextline = p.stdout.readline()
if os.name == 'nt' and sys.version_info < (3, 0):
nextline = nextline.decode('windows-1252')
elif os.name == 'posix' and sys.version_info < (3, 0):
nextline = nextline.decode('utf-8')
# log.debug(nextline.strip('\r\n'))
# parse progress string from calibre-converter
progress = re.search(r"(\d+)%\s.*", nextline)
if progress:
print('Progress:' + str(progress))
# self.UIqueue[index]['progress'] = progress.group(1) + ' %
# process returncode
check = p.returncode
calibre_traceback = p.stderr.readlines()
for ele in calibre_traceback:
if sys.version_info < (3, 0):
ele = ele.decode('utf-8')
print(ele.strip('\n'))
if not ele.startswith('Traceback') and not ele.startswith(' File'):
print( "Calibre failed with error: %s" % ele.strip('\n'))
print(str(check))
if __name__ == '__main__':
main()

@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2019-09-17 18:24+0200\n" "POT-Creation-Date: 2019-11-16 08:00+0100\n"
"PO-Revision-Date: 2019-08-06 18:36+0200\n" "PO-Revision-Date: 2019-11-16 08:00+0100\n"
"Last-Translator: Ozzie Isaacs\n" "Last-Translator: Ozzie Isaacs\n"
"Language: de\n" "Language: de\n"
"Language-Team: \n" "Language-Team: \n"
@ -18,17 +18,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n" "Generated-By: Babel 2.7.0\n"
#: cps/about.py:40 cps/about.py:65 cps/about.py:66 cps/uploader.py:228 #: cps/about.py:41
msgid "installed" msgid "installed"
msgstr "Installiert" msgstr "Installiert"
#: cps/about.py:42 cps/about.py:65 cps/about.py:66 cps/uploader.py:213 #: cps/about.py:43
#: cps/uploader.py:214 cps/uploader.py:218 cps/uploader.py:222
#: cps/uploader.py:226 cps/uploader.py:230
msgid "not installed" msgid "not installed"
msgstr "Nicht installiert" msgstr "Nicht installiert"
#: cps/about.py:80 #: cps/about.py:81
msgid "Statistics" msgid "Statistics"
msgstr "Statistiken" msgstr "Statistiken"
@ -40,7 +38,7 @@ msgstr "Server neu gestartet, Seite bitte neu laden"
msgid "Performing shutdown of server, please close window" msgid "Performing shutdown of server, please close window"
msgstr "Server wird heruntergefahren, Fenster bitte schließen" msgstr "Server wird heruntergefahren, Fenster bitte schließen"
#: cps/admin.py:111 cps/updater.py:445 #: cps/admin.py:111 cps/updater.py:446
msgid "Unknown" msgid "Unknown"
msgstr "Unbekannt" msgstr "Unbekannt"
@ -60,7 +58,7 @@ msgstr "Konfiguration von Calibre-Web wurde aktualisiert"
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "Basiskonfiguration" msgstr "Basiskonfiguration"
#: cps/admin.py:452 cps/web.py:1048 #: cps/admin.py:452 cps/web.py:1055
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "Bitte alle Felder ausfüllen!" msgstr "Bitte alle Felder ausfüllen!"
@ -69,7 +67,7 @@ msgstr "Bitte alle Felder ausfüllen!"
msgid "Add new user" msgid "Add new user"
msgstr "Neuen Benutzer hinzufügen" msgstr "Neuen Benutzer hinzufügen"
#: cps/admin.py:463 cps/web.py:1251 #: cps/admin.py:463 cps/web.py:1258
msgid "E-mail is not from valid domain" msgid "E-mail is not from valid domain"
msgstr "E-Mail bezieht sich nicht auf eine gültige Domain" msgstr "E-Mail bezieht sich nicht auf eine gültige Domain"
@ -96,7 +94,7 @@ msgstr "Test-E-Mail wurde erfolgreich an %(kindlemail)s versendet"
msgid "There was an error sending the Test e-mail: %(res)s" 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" msgstr "Es trat ein Fehler beim Versenden der Test-E-Mail auf: %(res)s"
#: cps/admin.py:527 cps/web.py:1031 #: cps/admin.py:527 cps/web.py:1038
msgid "Please configure your kindle e-mail address first..." msgid "Please configure your kindle e-mail address first..."
msgstr "Bitte zuerst die Kindle E-Mailadresse konfigurieren..." msgstr "Bitte zuerst die Kindle E-Mailadresse konfigurieren..."
@ -113,85 +111,93 @@ msgstr "Benutzer '%(nick)s' gelöscht"
msgid "No admin user remaining, can't delete user" msgid "No admin user remaining, can't delete user"
msgstr "Benutzer kann nicht gelöscht werden, es wäre kein Admin Benutzer übrig" msgstr "Benutzer kann nicht gelöscht werden, es wäre kein Admin Benutzer übrig"
#: cps/admin.py:600 cps/web.py:1277 #: cps/admin.py:599 cps/web.py:1299
msgid "Found an existing account for this e-mail address." msgid "Found an existing account for this e-mail address."
msgstr "Es existiert bereits ein Benutzer für diese E-Mailadresse." msgstr "Es existiert bereits ein Benutzer für diese E-Mailadresse."
#: cps/admin.py:603 cps/admin.py:615 #: cps/admin.py:602 cps/admin.py:615 cps/admin.py:629 cps/web.py:1274
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "Benutzer %(nick)s bearbeiten" msgstr "Benutzer %(nick)s bearbeiten"
#: cps/admin.py:609 #: cps/admin.py:608 cps/web.py:1267
msgid "This username is already taken"
msgstr "Benutzername ist schon vorhanden"
#: cps/admin.py:623
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "Benutzer '%(nick)s' aktualisiert" msgstr "Benutzer '%(nick)s' aktualisiert"
#: cps/admin.py:612 #: cps/admin.py:626
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "Es ist ein unbekannter Fehler aufgetreten." msgstr "Es ist ein unbekannter Fehler aufgetreten."
#: cps/admin.py:631 #: cps/admin.py:645
#, python-format #, python-format
msgid "Password for user %(user)s reset" msgid "Password for user %(user)s reset"
msgstr "Passwort für Benutzer %(user)s wurde zurückgesetzt" msgstr "Passwort für Benutzer %(user)s wurde zurückgesetzt"
#: cps/admin.py:634 cps/web.py:1073 #: cps/admin.py:648 cps/web.py:1080
msgid "An unknown error occurred. Please try again later." msgid "An unknown error occurred. Please try again later."
msgstr "Es ist ein unbekannter Fehler aufgetreten. Bitte später erneut versuchen." msgstr "Es ist ein unbekannter Fehler aufgetreten. Bitte später erneut versuchen."
#: cps/admin.py:645 #: cps/admin.py:659
msgid "Logfile viewer" msgid "Logfile viewer"
msgstr "Logdatei Anzeige" msgstr "Logdatei Anzeige"
#: cps/admin.py:680 #: cps/admin.py:694
msgid "Requesting update package" msgid "Requesting update package"
msgstr "Frage Update an" msgstr "Frage Update an"
#: cps/admin.py:681 #: cps/admin.py:695
msgid "Downloading update package" msgid "Downloading update package"
msgstr "Lade Update herunter" msgstr "Lade Update herunter"
#: cps/admin.py:682 #: cps/admin.py:696
msgid "Unzipping update package" msgid "Unzipping update package"
msgstr "Entpacke Update" msgstr "Entpacke Update"
#: cps/admin.py:683 #: cps/admin.py:697
msgid "Replacing files" msgid "Replacing files"
msgstr "Ersetze Dateien" msgstr "Ersetze Dateien"
#: cps/admin.py:684 #: cps/admin.py:698
msgid "Database connections are closed" msgid "Database connections are closed"
msgstr "Schließe Datenbankverbindungen" msgstr "Schließe Datenbankverbindungen"
#: cps/admin.py:685 #: cps/admin.py:699
msgid "Stopping server" msgid "Stopping server"
msgstr "Stoppe Server" msgstr "Stoppe Server"
#: cps/admin.py:686 #: cps/admin.py:700
msgid "Update finished, please press okay and reload page" msgid "Update finished, please press okay and reload page"
msgstr "Update abgeschlossen, bitte okay drücken und Seite neu laden" msgstr "Update abgeschlossen, bitte okay drücken und Seite neu laden"
#: cps/admin.py:687 cps/admin.py:688 cps/admin.py:689 cps/admin.py:690 #: cps/admin.py:701 cps/admin.py:702 cps/admin.py:703 cps/admin.py:704
msgid "Update failed:" msgid "Update failed:"
msgstr "Update fehlgeschlagen:" msgstr "Update fehlgeschlagen:"
#: cps/admin.py:687 cps/updater.py:271 cps/updater.py:456 cps/updater.py:458 #: cps/admin.py:701 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459
msgid "HTTP Error" msgid "HTTP Error"
msgstr "HTTP Fehler" msgstr "HTTP Fehler"
#: cps/admin.py:688 cps/updater.py:273 cps/updater.py:460 #: cps/admin.py:702 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "Verbindungsfehler" msgstr "Verbindungsfehler"
#: cps/admin.py:689 cps/updater.py:275 cps/updater.py:462 #: cps/admin.py:703 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
msgstr "Timeout beim Verbindungsaufbau" msgstr "Timeout beim Verbindungsaufbau"
#: cps/admin.py:690 cps/updater.py:277 cps/updater.py:464 #: cps/admin.py:704 cps/updater.py:278 cps/updater.py:465
msgid "General error" msgid "General error"
msgstr "Allgemeiner Fehler" msgstr "Allgemeiner Fehler"
#: cps/converter.py:31
msgid "not configured"
msgstr "Nicht konfiguriert"
#: cps/editbooks.py:214 cps/editbooks.py:393 #: cps/editbooks.py:214 cps/editbooks.py:393
msgid "Error opening eBook. File does not exist or file is not accessible" 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" msgstr "Öffnen des Buchs fehlgeschlagen. Datei existiert nicht oder ist nicht zugänglich"
@ -289,7 +295,7 @@ msgstr "Callback Domain ist nicht verifiziert, bitte Domain in der Google Develo
#: cps/helper.py:79 #: cps/helper.py:79
#, python-format #, python-format
msgid "%(format)s format not found for book id: %(book)d" msgid "%(format)s format not found for book id: %(book)d"
msgstr "%(format)s Format für Buch-ID %(book)d nicht gefunden " msgstr "%(format)s Format für Buch-ID %(book)d nicht gefunden"
#: cps/helper.py:91 #: cps/helper.py:91
#, python-format #, python-format
@ -575,7 +581,7 @@ msgid "Show best rated books"
msgstr "Zeige am besten bewertete Bücher" msgstr "Zeige am besten bewertete Bücher"
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67 #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
#: cps/web.py:969 #: cps/web.py:976
msgid "Read Books" msgid "Read Books"
msgstr "Gelesene Bücher" msgstr "Gelesene Bücher"
@ -584,7 +590,7 @@ msgid "Show read and unread"
msgstr "Zeige gelesene/ungelesene Bücher" msgstr "Zeige gelesene/ungelesene Bücher"
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71 #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
#: cps/web.py:973 #: cps/web.py:980
msgid "Unread Books" msgid "Unread Books"
msgstr "Ungelesene Bücher" msgstr "Ungelesene Bücher"
@ -657,230 +663,235 @@ msgstr "Dateiformate"
msgid "Show file formats selection" msgid "Show file formats selection"
msgstr "Zeige Dateiformatauswahl" msgstr "Zeige Dateiformatauswahl"
#: cps/updater.py:251 cps/updater.py:358 cps/updater.py:371 #: cps/updater.py:252 cps/updater.py:359 cps/updater.py:372
msgid "Unexpected data while reading update information" msgid "Unexpected data while reading update information"
msgstr "Updateinformationen enthalten unbekannte Daten" msgstr "Updateinformationen enthalten unbekannte Daten"
#: cps/updater.py:258 cps/updater.py:364 #: cps/updater.py:259 cps/updater.py:365
msgid "No update available. You already have the latest version installed" msgid "No update available. You already have the latest version installed"
msgstr "Kein Update verfügbar. Es ist bereits die aktuellste Version installiert" msgstr "Kein Update verfügbar. Es ist bereits die aktuellste Version installiert"
#: cps/updater.py:284 #: cps/updater.py:285
msgid "A new update is available. Click on the button below to update to the latest version." msgid "A new update is available. Click on the button below to update to the latest version."
msgstr "Es sind Updates verfügbar. Klicke auf den Button unten, um auf die aktuellste Version zu aktualisieren." msgstr "Es sind Updates verfügbar. Klicke auf den Button unten, um auf die aktuellste Version zu aktualisieren."
#: cps/updater.py:337 #: cps/updater.py:338
msgid "Could not fetch update information" msgid "Could not fetch update information"
msgstr "Updateinformationen konnten nicht geladen werden" msgstr "Updateinformationen konnten nicht geladen werden"
#: cps/updater.py:351 #: cps/updater.py:352
msgid "No release information available" msgid "No release information available"
msgstr "Keine Releaseinformationen verfügbar" msgstr "Keine Releaseinformationen verfügbar"
#: cps/updater.py:404 cps/updater.py:413 #: cps/updater.py:405 cps/updater.py:414
#, python-format #, python-format
msgid "A new update is available. Click on the button below to update to version: %(version)s" msgid "A new update is available. Click on the button below to update to version: %(version)s"
msgstr "Ein neues Update ist verfügbar. Klicke auf den Button unten, um auf Version: %(version)s zu aktualisieren" msgstr "Ein neues Update ist verfügbar. Klicke auf den Button unten, um auf Version: %(version)s zu aktualisieren"
#: cps/updater.py:423 #: cps/updater.py:424
msgid "Click on the button below to update to the latest stable version." 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." msgstr "Klicke auf den Button unten, um auf die letzte stabile Version zu aktualisieren."
#: cps/web.py:458 #: cps/web.py:459
msgid "Recently Added Books" msgid "Recently Added Books"
msgstr "Kürzlich hinzugefügte Bücher" msgstr "Kürzlich hinzugefügte Bücher"
#: cps/web.py:486 #: cps/web.py:487
msgid "Best rated books" msgid "Best rated books"
msgstr "Am besten bewertete Bücher" msgstr "Am besten bewertete Bücher"
#: cps/templates/index.xml:38 cps/web.py:494 #: cps/templates/index.xml:38 cps/web.py:495
msgid "Random Books" msgid "Random Books"
msgstr "Zufällige Bücher" msgstr "Zufällige Bücher"
#: cps/web.py:520 #: cps/web.py:521
msgid "Books" msgid "Books"
msgstr "Bücher" msgstr "Bücher"
#: cps/web.py:547 #: cps/web.py:548
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "Beliebte Bücher (am meisten Downloads)" msgstr "Beliebte Bücher (am meisten Downloads)"
#: cps/web.py:558 cps/web.py:1298 cps/web.py:1386 #: cps/web.py:559 cps/web.py:1320 cps/web.py:1408
msgid "Error opening eBook. File does not exist or file is not accessible:" 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:" msgstr "Öffnen des Buchs fehlgeschlagen. Datei existiert nicht oder ist nicht zugänglich:"
#: cps/web.py:571 #: cps/web.py:572
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "Author: %(name)s" msgstr "Author: %(name)s"
#: cps/web.py:583 #: cps/web.py:584
#, python-format #, python-format
msgid "Publisher: %(name)s" msgid "Publisher: %(name)s"
msgstr "Verleger: %(name)s" msgstr "Verleger: %(name)s"
#: cps/web.py:594 #: cps/web.py:595
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "Serie: %(serie)s" msgstr "Serie: %(serie)s"
#: cps/web.py:605 #: cps/web.py:606
#, python-format #, python-format
msgid "Rating: %(rating)s stars" msgid "Rating: %(rating)s stars"
msgstr "Bewertung: %(rating)s Sterne" msgstr "Bewertung: %(rating)s Sterne"
#: cps/web.py:616 #: cps/web.py:617
#, python-format #, python-format
msgid "File format: %(format)s" msgid "File format: %(format)s"
msgstr "Dateiformat: %(format)s" msgstr "Dateiformat: %(format)s"
#: cps/web.py:628 #: cps/web.py:629
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "Kategorie: %(name)s" msgstr "Kategorie: %(name)s"
#: cps/web.py:645 #: cps/web.py:646
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "Sprache: %(name)s" msgstr "Sprache: %(name)s"
#: cps/web.py:677 #: cps/web.py:678
msgid "Publisher list" msgid "Publisher list"
msgstr "Verlegerliste" msgstr "Verlegerliste"
#: cps/templates/index.xml:82 cps/web.py:693 #: cps/templates/index.xml:82 cps/web.py:694
msgid "Series list" msgid "Series list"
msgstr "Serienliste" msgstr "Serienliste"
#: cps/web.py:707 #: cps/web.py:708
msgid "Ratings list" msgid "Ratings list"
msgstr "Bewertungsliste" msgstr "Bewertungsliste"
#: cps/web.py:720 #: cps/web.py:721
msgid "File formats list" msgid "File formats list"
msgstr "Liste der Dateiformate" msgstr "Liste der Dateiformate"
#: cps/web.py:748 #: cps/web.py:749
msgid "Available languages" msgid "Available languages"
msgstr "Verfügbare Sprachen" msgstr "Verfügbare Sprachen"
#: cps/templates/index.xml:75 cps/web.py:765 #: cps/templates/index.xml:75 cps/web.py:766
msgid "Category list" msgid "Category list"
msgstr "Kategorienliste" msgstr "Kategorienliste"
#: cps/templates/layout.html:73 cps/web.py:779 #: cps/templates/layout.html:73 cps/web.py:780
msgid "Tasks" msgid "Tasks"
msgstr "Aufgaben" msgstr "Aufgaben"
#: cps/web.py:844 #: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45 cps/web.py:802 cps/web.py:804
msgid "Search"
msgstr "Suche"
#: cps/web.py:851
msgid "Published after " msgid "Published after "
msgstr "Herausgegeben nach dem " msgstr "Herausgegeben nach dem "
#: cps/web.py:851 #: cps/web.py:858
msgid "Published before " msgid "Published before "
msgstr "Herausgegeben vor dem " msgstr "Herausgegeben vor dem "
#: cps/web.py:865 #: cps/web.py:872
#, python-format #, python-format
msgid "Rating <= %(rating)s" msgid "Rating <= %(rating)s"
msgstr "Bewertung <= %(rating)s" msgstr "Bewertung <= %(rating)s"
#: cps/web.py:867 #: cps/web.py:874
#, python-format #, python-format
msgid "Rating >= %(rating)s" msgid "Rating >= %(rating)s"
msgstr "Bewertung >= %(rating)s" msgstr "Bewertung >= %(rating)s"
#: cps/web.py:927 cps/web.py:937 #: cps/web.py:934 cps/web.py:944
msgid "search" msgid "search"
msgstr "Suche" msgstr "Suche"
#: cps/web.py:1020 #: cps/web.py:1027
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "Bitte zuerst die SMTP-Einstellung konfigurieren ..." msgstr "Bitte zuerst die SMTP-Einstellung konfigurieren ..."
#: cps/web.py:1025 #: cps/web.py:1032
#, python-format #, python-format
msgid "Book successfully queued for sending to %(kindlemail)s" msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Buch erfolgreich zum Senden an %(kindlemail)s eingereiht" msgstr "Buch erfolgreich zum Senden an %(kindlemail)s eingereiht"
#: cps/web.py:1029 #: cps/web.py:1036
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "Beim Senden des Buchs trat ein Fehler auf: %(res)s" msgstr "Beim Senden des Buchs trat ein Fehler auf: %(res)s"
#: cps/web.py:1049 cps/web.py:1074 cps/web.py:1078 cps/web.py:1083 #: cps/web.py:1056 cps/web.py:1081 cps/web.py:1085 cps/web.py:1090
#: cps/web.py:1087 #: cps/web.py:1094
msgid "register" msgid "register"
msgstr "Registieren" msgstr "Registieren"
#: cps/web.py:1076 #: cps/web.py:1083
msgid "Your e-mail is not allowed to register" msgid "Your e-mail is not allowed to register"
msgstr "Diese E-Mail ist nicht für die Registrierung zugelassen" msgstr "Diese E-Mail ist nicht für die Registrierung zugelassen"
#: cps/web.py:1079 #: cps/web.py:1086
msgid "Confirmation e-mail was send to your e-mail account." msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Eine Bestätigungs-E-Mail wurde an deinen E-Mail Account versendet." msgstr "Eine Bestätigungs-E-Mail wurde an deinen E-Mail Account versendet."
#: cps/web.py:1082 #: cps/web.py:1089
msgid "This username or e-mail address is already in use." msgid "This username or e-mail address is already in use."
msgstr "Benutzername oder E-Mailadresse ist bereits in Verwendung." msgstr "Benutzername oder E-Mailadresse ist bereits in Verwendung."
#: cps/web.py:1097 #: cps/web.py:1104
msgid "Cannot activate LDAP authentication" msgid "Cannot activate LDAP authentication"
msgstr "LDAP-Authentifizierung kann nicht aktiviert werden" msgstr "LDAP-Authentifizierung kann nicht aktiviert werden"
#: cps/web.py:1106 cps/web.py:1212 #: cps/web.py:1113 cps/web.py:1219
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "Du bist nun eingeloggt als '%(nickname)s'" msgstr "Du bist nun eingeloggt als '%(nickname)s'"
#: cps/web.py:1110 #: cps/web.py:1117
msgid "Could not login. LDAP server down, please contact your administrator" msgid "Could not login. LDAP server down, please contact your administrator"
msgstr "Login nicht erfolgreich, LDAP Server nicht erreichbar, bitte Administrator kontaktieren" msgstr "Login nicht erfolgreich, LDAP Server nicht erreichbar, bitte Administrator kontaktieren"
#: cps/web.py:1114 cps/web.py:1122 #: cps/web.py:1121 cps/web.py:1129
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "Falscher Benutzername oder Passwort" msgstr "Falscher Benutzername oder Passwort"
#: cps/web.py:1118 #: cps/web.py:1125
#, python-format #, python-format
msgid "You are now logged in as: '%(nickname)s'" msgid "You are now logged in as: '%(nickname)s'"
msgstr "Eingeloggt als: '%(nickname)s'" msgstr "Eingeloggt als: '%(nickname)s'"
#: cps/web.py:1126 cps/web.py:1148 #: cps/web.py:1133 cps/web.py:1155
msgid "login" msgid "login"
msgstr "Login" msgstr "Login"
#: cps/web.py:1160 cps/web.py:1191 #: cps/web.py:1167 cps/web.py:1198
msgid "Token not found" msgid "Token not found"
msgstr "Token wurde nicht gefunden" msgstr "Token wurde nicht gefunden"
#: cps/web.py:1168 cps/web.py:1199 #: cps/web.py:1175 cps/web.py:1206
msgid "Token has expired" msgid "Token has expired"
msgstr "Das Token ist abgelaufen" msgstr "Das Token ist abgelaufen"
#: cps/web.py:1176 #: cps/web.py:1183
msgid "Success! Please return to your device" msgid "Success! Please return to your device"
msgstr "Erfolg! Bitte zum Gerät zurückkehren" msgstr "Erfolg! Bitte zum Gerät zurückkehren"
#: cps/web.py:1253 cps/web.py:1280 cps/web.py:1284 #: cps/web.py:1260 cps/web.py:1302 cps/web.py:1306
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "%(name)s's Profil" msgstr "%(name)s's Profil"
#: cps/web.py:1282 #: cps/web.py:1304
msgid "Profile updated" msgid "Profile updated"
msgstr "Profil aktualisiert" msgstr "Profil aktualisiert"
#: cps/web.py:1308 cps/web.py:1310 cps/web.py:1312 cps/web.py:1318 #: cps/web.py:1330 cps/web.py:1332 cps/web.py:1334 cps/web.py:1340
#: cps/web.py:1322 #: cps/web.py:1344
msgid "Read a Book" msgid "Read a Book"
msgstr "Lese ein Buch" msgstr "Lese ein Buch"
#: cps/web.py:1332 #: cps/web.py:1354
msgid "Error opening eBook. File does not exist or file is not accessible." msgid "Error opening eBook. File does not exist or file is not accessible."
msgstr "Fehler beim Öffnen des eBooks. Datei existiert nicht oder ist nicht zugänglich. " msgstr "Fehler beim Öffnen des eBooks. Datei existiert nicht oder ist nicht zugänglich."
#: cps/worker.py:328 #: cps/worker.py:328
#, python-format #, python-format
@ -1056,7 +1067,7 @@ msgstr "OK"
#: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147 #: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74
#: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/layout.html:28 cps/templates/shelf.html:73
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
#: cps/templates/user_edit.html:132 #: cps/templates/user_edit.html:132
msgid "Back" msgid "Back"
msgstr "Zurück" msgstr "Zurück"
@ -1690,11 +1701,6 @@ msgstr "Soll diese Domain-Regel wirklich gelöscht werden?"
msgid "Next" msgid "Next"
msgstr "Nächste" msgstr "Nächste"
#: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45
msgid "Search"
msgstr "Suche"
#: cps/templates/http_error.html:37 #: cps/templates/http_error.html:37
msgid "Create issue" msgid "Create issue"
msgstr "" msgstr ""
@ -2054,7 +2060,7 @@ msgstr "Lösche dieses Bücherregal"
msgid "Edit Shelf" msgid "Edit Shelf"
msgstr "Bücherregal editieren" msgstr "Bücherregal editieren"
#: cps/templates/shelf.html:12 cps/templates/shelf_order.html:11 #: cps/templates/shelf.html:12 cps/templates/shelf_order.html:31
msgid "Change order" msgid "Change order"
msgstr "Reihenfolge ändern" msgstr "Reihenfolge ändern"
@ -2274,9 +2280,6 @@ msgstr "Letzte Downloads"
#~ msgid "Excecution permissions missing" #~ msgid "Excecution permissions missing"
#~ msgstr "Ausführungsberechtigung nicht vorhanden" #~ msgstr "Ausführungsberechtigung nicht vorhanden"
#~ msgid "not configured"
#~ msgstr "Nicht konfiguriert"
#~ msgid "Error excecuting UnRar" #~ msgid "Error excecuting UnRar"
#~ msgstr "Fehler bei der Ausführung von UnRar" #~ msgstr "Fehler bei der Ausführung von UnRar"
@ -2307,12 +2310,6 @@ msgstr "Letzte Downloads"
#~ msgid "Google OAuth Client Secret" #~ msgid "Google OAuth Client Secret"
#~ msgstr "Google OAuth Client-Secret" #~ msgstr "Google OAuth Client-Secret"
#~ msgid "Installed"
#~ msgstr ""
#~ msgid "Not installed"
#~ msgstr ""
#~ msgid "Use" #~ msgid "Use"
#~ msgstr "Benutzen" #~ msgstr "Benutzen"

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2019-09-06 19:03+0200\n" "POT-Creation-Date: 2019-11-16 08:00+0100\n"
"PO-Revision-Date: 2019-07-26 11:44+0100\n" "PO-Revision-Date: 2019-07-26 11:44+0100\n"
"Last-Translator: minakmostoles <xxx@xxx.com>\n" "Last-Translator: minakmostoles <xxx@xxx.com>\n"
"Language: es\n" "Language: es\n"
@ -19,18 +19,16 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n" "Generated-By: Babel 2.7.0\n"
#: cps/about.py:40 cps/about.py:65 cps/about.py:66 cps/uploader.py:228 #: cps/about.py:41
msgid "installed" msgid "installed"
msgstr "" msgstr ""
#: cps/about.py:42 cps/about.py:65 cps/about.py:66 cps/uploader.py:213 #: cps/about.py:43
#: cps/uploader.py:214 cps/uploader.py:218 cps/uploader.py:222
#: cps/uploader.py:226 cps/uploader.py:230
msgid "not installed" msgid "not installed"
msgstr "No instalado" msgstr "No instalado"
# "Last-Translator: victorhck <victorhck@mailbox.org>\n" # "Last-Translator: victorhck <victorhck@mailbox.org>\n"
#: cps/about.py:80 #: cps/about.py:81
msgid "Statistics" msgid "Statistics"
msgstr "Estadísticas" msgstr "Estadísticas"
@ -42,7 +40,7 @@ msgstr "Servidor reiniciado. Por favor, recargue la página"
msgid "Performing shutdown of server, please close window" msgid "Performing shutdown of server, please close window"
msgstr "Servidor en proceso de apagado. Por favor, cierre la ventana." msgstr "Servidor en proceso de apagado. Por favor, cierre la ventana."
#: cps/admin.py:111 cps/updater.py:445 #: cps/admin.py:111 cps/updater.py:446
msgid "Unknown" msgid "Unknown"
msgstr "Desconocido" msgstr "Desconocido"
@ -62,7 +60,7 @@ msgstr "Configuración de Calibre-Web actualizada"
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "Configuración básica" msgstr "Configuración básica"
#: cps/admin.py:452 cps/web.py:1050 #: cps/admin.py:452 cps/web.py:1055
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "¡Por favor completar todos los campos!" msgstr "¡Por favor completar todos los campos!"
@ -71,7 +69,7 @@ msgstr "¡Por favor completar todos los campos!"
msgid "Add new user" msgid "Add new user"
msgstr "Agregar un nuevo usuario" msgstr "Agregar un nuevo usuario"
#: cps/admin.py:463 cps/web.py:1253 #: cps/admin.py:463 cps/web.py:1258
msgid "E-mail is not from valid domain" msgid "E-mail is not from valid domain"
msgstr "El correo electrónico no tiene un nombre de dominio válido" msgstr "El correo electrónico no tiene un nombre de dominio válido"
@ -98,7 +96,7 @@ msgstr "Correo electrónico de prueba enviado con éxito a %(kindlemail)s"
msgid "There was an error sending the Test e-mail: %(res)s" 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" msgstr "Ocurrió un error enviando el correo electrónico de prueba: %(res)s"
#: cps/admin.py:527 cps/web.py:1033 #: cps/admin.py:527 cps/web.py:1038
msgid "Please configure your kindle e-mail address first..." msgid "Please configure your kindle e-mail address first..."
msgstr "Por favor configure primero la dirección de correo de su kindle..." msgstr "Por favor configure primero la dirección de correo de su kindle..."
@ -115,85 +113,93 @@ msgstr "Usuario '%(nick)s' borrado"
msgid "No admin user remaining, can't delete user" msgid "No admin user remaining, can't delete user"
msgstr "No queda ningún usuario administrador, no se puede eliminar usuario" msgstr "No queda ningún usuario administrador, no se puede eliminar usuario"
#: cps/admin.py:600 cps/web.py:1279 #: cps/admin.py:599 cps/web.py:1299
msgid "Found an existing account for this e-mail address." msgid "Found an existing account for this e-mail address."
msgstr "Encontrada una cuenta existente para esa dirección de correo electrónico." msgstr "Encontrada una cuenta existente para esa dirección de correo electrónico."
#: cps/admin.py:603 cps/admin.py:615 #: cps/admin.py:602 cps/admin.py:615 cps/admin.py:629 cps/web.py:1274
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "Editar Usuario %(nick)s" msgstr "Editar Usuario %(nick)s"
#: cps/admin.py:609 #: cps/admin.py:608 cps/web.py:1267
msgid "This username is already taken"
msgstr ""
#: cps/admin.py:623
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "Usuario '%(nick)s' actualizado" msgstr "Usuario '%(nick)s' actualizado"
#: cps/admin.py:612 #: cps/admin.py:626
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "Ocurrió un error inesperado." msgstr "Ocurrió un error inesperado."
#: cps/admin.py:631 #: cps/admin.py:645
#, python-format #, python-format
msgid "Password for user %(user)s reset" msgid "Password for user %(user)s reset"
msgstr "Contraseña para el usuario %(user)s reinicializada" msgstr "Contraseña para el usuario %(user)s reinicializada"
#: cps/admin.py:634 cps/web.py:1075 #: cps/admin.py:648 cps/web.py:1080
msgid "An unknown error occurred. Please try again later." msgid "An unknown error occurred. Please try again later."
msgstr "Ha ocurrido un error desconocido. Por favor vuelva a intentarlo más tarde." msgstr "Ha ocurrido un error desconocido. Por favor vuelva a intentarlo más tarde."
#: cps/admin.py:645 #: cps/admin.py:659
msgid "Logfile viewer" msgid "Logfile viewer"
msgstr "Visor del fichero de log" msgstr "Visor del fichero de log"
#: cps/admin.py:680 #: cps/admin.py:694
msgid "Requesting update package" msgid "Requesting update package"
msgstr "Solicitando paquete de actualización" msgstr "Solicitando paquete de actualización"
#: cps/admin.py:681 #: cps/admin.py:695
msgid "Downloading update package" msgid "Downloading update package"
msgstr "Descargando paquete de actualización" msgstr "Descargando paquete de actualización"
#: cps/admin.py:682 #: cps/admin.py:696
msgid "Unzipping update package" msgid "Unzipping update package"
msgstr "Descomprimiendo paquete de actualización" msgstr "Descomprimiendo paquete de actualización"
#: cps/admin.py:683 #: cps/admin.py:697
msgid "Replacing files" msgid "Replacing files"
msgstr "Remplazando ficheros" msgstr "Remplazando ficheros"
#: cps/admin.py:684 #: cps/admin.py:698
msgid "Database connections are closed" msgid "Database connections are closed"
msgstr "Los conexiones de base datos están cerradas" msgstr "Los conexiones de base datos están cerradas"
#: cps/admin.py:685 #: cps/admin.py:699
msgid "Stopping server" msgid "Stopping server"
msgstr "Parando servidor" msgstr "Parando servidor"
#: cps/admin.py:686 #: cps/admin.py:700
msgid "Update finished, please press okay and reload page" msgid "Update finished, please press okay and reload page"
msgstr "Actualización finalizada. Por favor, pulse OK y recargue la página" msgstr "Actualización finalizada. Por favor, pulse OK y recargue la página"
#: cps/admin.py:687 cps/admin.py:688 cps/admin.py:689 cps/admin.py:690 #: cps/admin.py:701 cps/admin.py:702 cps/admin.py:703 cps/admin.py:704
msgid "Update failed:" msgid "Update failed:"
msgstr "Fallo al actualizar" msgstr "Fallo al actualizar"
#: cps/admin.py:687 cps/updater.py:271 cps/updater.py:456 cps/updater.py:458 #: cps/admin.py:701 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459
msgid "HTTP Error" msgid "HTTP Error"
msgstr "Error HTTP" msgstr "Error HTTP"
#: cps/admin.py:688 cps/updater.py:273 cps/updater.py:460 #: cps/admin.py:702 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "Error de conexión" msgstr "Error de conexión"
#: cps/admin.py:689 cps/updater.py:275 cps/updater.py:462 #: cps/admin.py:703 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
msgstr "Tiempo agotado mientras se trataba de establecer la conexión" msgstr "Tiempo agotado mientras se trataba de establecer la conexión"
#: cps/admin.py:690 cps/updater.py:277 cps/updater.py:464 #: cps/admin.py:704 cps/updater.py:278 cps/updater.py:465
msgid "General error" msgid "General error"
msgstr "Error general" msgstr "Error general"
#: cps/converter.py:31
msgid "not configured"
msgstr ""
#: cps/editbooks.py:214 cps/editbooks.py:393 #: cps/editbooks.py:214 cps/editbooks.py:393
msgid "Error opening eBook. File does not exist or file is not accessible" 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" msgstr "Error abriendo un eBook. El archivo no existe o no es accesible"
@ -577,7 +583,7 @@ msgid "Show best rated books"
msgstr "Mostrar libros mejor valorados" msgstr "Mostrar libros mejor valorados"
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67 #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
#: cps/web.py:971 #: cps/web.py:976
msgid "Read Books" msgid "Read Books"
msgstr "Libros leídos" msgstr "Libros leídos"
@ -586,7 +592,7 @@ msgid "Show read and unread"
msgstr "Mostrar leídos y no leídos" msgstr "Mostrar leídos y no leídos"
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71 #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
#: cps/web.py:975 #: cps/web.py:980
msgid "Unread Books" msgid "Unread Books"
msgstr "Libros no leídos" msgstr "Libros no leídos"
@ -659,228 +665,233 @@ msgstr "Formatos de archivo"
msgid "Show file formats selection" msgid "Show file formats selection"
msgstr "Mostrar selección de formatos de archivo" msgstr "Mostrar selección de formatos de archivo"
#: cps/updater.py:251 cps/updater.py:358 cps/updater.py:371 #: cps/updater.py:252 cps/updater.py:359 cps/updater.py:372
msgid "Unexpected data while reading update information" msgid "Unexpected data while reading update information"
msgstr "Dato inesperado mientras se leía la información de actualización" msgstr "Dato inesperado mientras se leía la información de actualización"
#: cps/updater.py:258 cps/updater.py:364 #: cps/updater.py:259 cps/updater.py:365
msgid "No update available. You already have the latest version installed" msgid "No update available. You already have the latest version installed"
msgstr "Actualización no disponible. Ya tienes la versión más reciente instalada" msgstr "Actualización no disponible. Ya tienes la versión más reciente instalada"
#: cps/updater.py:284 #: cps/updater.py:285
msgid "A new update is available. Click on the button below to update to the latest version." msgid "A new update is available. Click on the button below to update to the latest version."
msgstr "Una nueva actualización está disponible. Haz clic en el botón inferior para actualizar a la versión más reciente." msgstr "Una nueva actualización está disponible. Haz clic en el botón inferior para actualizar a la versión más reciente."
#: cps/updater.py:337 #: cps/updater.py:338
msgid "Could not fetch update information" msgid "Could not fetch update information"
msgstr "No se puede conseguir información sobre la actualización" msgstr "No se puede conseguir información sobre la actualización"
#: cps/updater.py:351 #: cps/updater.py:352
msgid "No release information available" msgid "No release information available"
msgstr "No hay información del lanzamiento disponible" msgstr "No hay información del lanzamiento disponible"
#: cps/updater.py:404 cps/updater.py:413 #: cps/updater.py:405 cps/updater.py:414
#, python-format #, python-format
msgid "A new update is available. Click on the button below to update to version: %(version)s" msgid "A new update is available. Click on the button below to update to version: %(version)s"
msgstr "Hay una nueva actualización disponible. Haz clic en el botón de abajo para actualizar a la versión: %(version)s" msgstr "Hay una nueva actualización disponible. Haz clic en el botón de abajo para actualizar a la versión: %(version)s"
#: cps/updater.py:423 #: cps/updater.py:424
msgid "Click on the button below to update to the latest stable version." 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." msgstr "Haz clic en el botón de abajo para actualizar a la última versión estable."
#: cps/web.py:460 #: cps/web.py:459
msgid "Recently Added Books" msgid "Recently Added Books"
msgstr "Libros añadidos recientemente" msgstr "Libros añadidos recientemente"
#: cps/web.py:488 #: cps/web.py:487
msgid "Best rated books" msgid "Best rated books"
msgstr "Libros mejor valorados" msgstr "Libros mejor valorados"
#: cps/templates/index.xml:38 cps/web.py:496 #: cps/templates/index.xml:38 cps/web.py:495
msgid "Random Books" msgid "Random Books"
msgstr "Libros al azar" msgstr "Libros al azar"
#: cps/web.py:522 #: cps/web.py:521
msgid "Books" msgid "Books"
msgstr "Libros" msgstr "Libros"
#: cps/web.py:549 #: cps/web.py:548
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "Libros populares (los más descargados)" msgstr "Libros populares (los más descargados)"
#: cps/web.py:560 cps/web.py:1300 cps/web.py:1388 #: cps/web.py:559 cps/web.py:1320 cps/web.py:1408
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Error al abrir eBook. El archivo no existe o no es accesible:" msgstr "Error al abrir eBook. El archivo no existe o no es accesible:"
#: cps/web.py:573 #: cps/web.py:572
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "Autor/es: %(name)s" msgstr "Autor/es: %(name)s"
#: cps/web.py:585 #: cps/web.py:584
#, python-format #, python-format
msgid "Publisher: %(name)s" msgid "Publisher: %(name)s"
msgstr "Editor/es: " msgstr "Editor/es: "
#: cps/web.py:596 #: cps/web.py:595
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "Series: %(serie)s" msgstr "Series: %(serie)s"
#: cps/web.py:607 #: cps/web.py:606
#, python-format #, python-format
msgid "Rating: %(rating)s stars" msgid "Rating: %(rating)s stars"
msgstr "Calificación: %(rating)s estrellas" msgstr "Calificación: %(rating)s estrellas"
#: cps/web.py:618 #: cps/web.py:617
#, python-format #, python-format
msgid "File format: %(format)s" msgid "File format: %(format)s"
msgstr "Formato del fichero: %(format)s" msgstr "Formato del fichero: %(format)s"
#: cps/web.py:630 #: cps/web.py:629
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "Categoría : %(name)s" msgstr "Categoría : %(name)s"
#: cps/web.py:647 #: cps/web.py:646
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "Idioma: %(name)s" msgstr "Idioma: %(name)s"
#: cps/web.py:679 #: cps/web.py:678
msgid "Publisher list" msgid "Publisher list"
msgstr "Lista de editores" msgstr "Lista de editores"
#: cps/templates/index.xml:82 cps/web.py:695 #: cps/templates/index.xml:82 cps/web.py:694
msgid "Series list" msgid "Series list"
msgstr "Lista de series" msgstr "Lista de series"
#: cps/web.py:709 #: cps/web.py:708
msgid "Ratings list" msgid "Ratings list"
msgstr "Lista de calificaciones" msgstr "Lista de calificaciones"
#: cps/web.py:722 #: cps/web.py:721
msgid "File formats list" msgid "File formats list"
msgstr "Lista de formatos" msgstr "Lista de formatos"
#: cps/web.py:750 #: cps/web.py:749
msgid "Available languages" msgid "Available languages"
msgstr "Idiomas disponibles" msgstr "Idiomas disponibles"
#: cps/templates/index.xml:75 cps/web.py:767 #: cps/templates/index.xml:75 cps/web.py:766
msgid "Category list" msgid "Category list"
msgstr "Lista de categorías" msgstr "Lista de categorías"
#: cps/templates/layout.html:73 cps/web.py:781 #: cps/templates/layout.html:73 cps/web.py:780
msgid "Tasks" msgid "Tasks"
msgstr "Tareas" msgstr "Tareas"
#: cps/web.py:846 #: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45 cps/web.py:802 cps/web.py:804
msgid "Search"
msgstr "Buscar"
#: cps/web.py:851
msgid "Published after " msgid "Published after "
msgstr "Publicado después de" msgstr "Publicado después de"
#: cps/web.py:853 #: cps/web.py:858
msgid "Published before " msgid "Published before "
msgstr "Publicado antes de" msgstr "Publicado antes de"
#: cps/web.py:867 #: cps/web.py:872
#, python-format #, python-format
msgid "Rating <= %(rating)s" msgid "Rating <= %(rating)s"
msgstr "Calificación <= %(rating)s" msgstr "Calificación <= %(rating)s"
#: cps/web.py:869 #: cps/web.py:874
#, python-format #, python-format
msgid "Rating >= %(rating)s" msgid "Rating >= %(rating)s"
msgstr "Calificación >= %(rating)s" msgstr "Calificación >= %(rating)s"
#: cps/web.py:929 cps/web.py:939 #: cps/web.py:934 cps/web.py:944
msgid "search" msgid "search"
msgstr "búsqueda" msgstr "búsqueda"
#: cps/web.py:1022 #: cps/web.py:1027
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "Configura primero los parámetros del servidor SMTP..." msgstr "Configura primero los parámetros del servidor SMTP..."
#: cps/web.py:1027 #: cps/web.py:1032
#, python-format #, python-format
msgid "Book successfully queued for sending to %(kindlemail)s" msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Libro puesto en la cola de envío a %(kindlemail)s" msgstr "Libro puesto en la cola de envío a %(kindlemail)s"
#: cps/web.py:1031 #: cps/web.py:1036
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "Ha sucedido un error en el envío del libro: %(res)s" msgstr "Ha sucedido un error en el envío del libro: %(res)s"
#: cps/web.py:1051 cps/web.py:1076 cps/web.py:1080 cps/web.py:1085 #: cps/web.py:1056 cps/web.py:1081 cps/web.py:1085 cps/web.py:1090
#: cps/web.py:1089 #: cps/web.py:1094
msgid "register" msgid "register"
msgstr "registrarse" msgstr "registrarse"
#: cps/web.py:1078 #: cps/web.py:1083
msgid "Your e-mail is not allowed to register" msgid "Your e-mail is not allowed to register"
msgstr "Su correo electrónico no está permitido para registrarse" msgstr "Su correo electrónico no está permitido para registrarse"
#: cps/web.py:1081 #: cps/web.py:1086
msgid "Confirmation e-mail was send to your e-mail account." msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Se ha enviado un correo electrónico de verificación a su cuenta de correo electrónico." msgstr "Se ha enviado un correo electrónico de verificación a su cuenta de correo electrónico."
#: cps/web.py:1084 #: cps/web.py:1089
msgid "This username or e-mail address is already in use." 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." msgstr "Este nombre de usuario o correo electrónico ya están en uso."
#: cps/web.py:1099 #: cps/web.py:1104
msgid "Cannot activate LDAP authentication" msgid "Cannot activate LDAP authentication"
msgstr "No se puede activar la autenticación LDAP" msgstr "No se puede activar la autenticación LDAP"
#: cps/web.py:1108 cps/web.py:1214 #: cps/web.py:1113 cps/web.py:1219
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "Sesión iniciada como : '%(nickname)s'" msgstr "Sesión iniciada como : '%(nickname)s'"
#: cps/web.py:1112 #: cps/web.py:1117
msgid "Could not login. LDAP server down, please contact your administrator" msgid "Could not login. LDAP server down, please contact your administrator"
msgstr "No pude entrar a la cuenta. El servidor LDAP está inactivo, por favor contacte a su administrador" msgstr "No pude entrar a la cuenta. El servidor LDAP está inactivo, por favor contacte a su administrador"
#: cps/web.py:1116 cps/web.py:1124 #: cps/web.py:1121 cps/web.py:1129
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "Usuario o contraseña inválido" msgstr "Usuario o contraseña inválido"
#: cps/web.py:1120 #: cps/web.py:1125
#, python-format #, python-format
msgid "You are now logged in as: '%(nickname)s'" msgid "You are now logged in as: '%(nickname)s'"
msgstr "Ahora estás conectado como: '%(nickname)s'" msgstr "Ahora estás conectado como: '%(nickname)s'"
#: cps/web.py:1128 cps/web.py:1150 #: cps/web.py:1133 cps/web.py:1155
msgid "login" msgid "login"
msgstr "Iniciar sesión" msgstr "Iniciar sesión"
#: cps/web.py:1162 cps/web.py:1193 #: cps/web.py:1167 cps/web.py:1198
msgid "Token not found" msgid "Token not found"
msgstr "Token no encontrado" msgstr "Token no encontrado"
#: cps/web.py:1170 cps/web.py:1201 #: cps/web.py:1175 cps/web.py:1206
msgid "Token has expired" msgid "Token has expired"
msgstr "El token ha expirado" msgstr "El token ha expirado"
#: cps/web.py:1178 #: cps/web.py:1183
msgid "Success! Please return to your device" msgid "Success! Please return to your device"
msgstr "¡Correcto! Por favor regrese a su dispositivo" msgstr "¡Correcto! Por favor regrese a su dispositivo"
#: cps/web.py:1255 cps/web.py:1282 cps/web.py:1286 #: cps/web.py:1260 cps/web.py:1302 cps/web.py:1306
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "Perfil de %(name)s" msgstr "Perfil de %(name)s"
#: cps/web.py:1284 #: cps/web.py:1304
msgid "Profile updated" msgid "Profile updated"
msgstr "Perfil actualizado" msgstr "Perfil actualizado"
#: cps/web.py:1310 cps/web.py:1312 cps/web.py:1314 cps/web.py:1320 #: cps/web.py:1330 cps/web.py:1332 cps/web.py:1334 cps/web.py:1340
#: cps/web.py:1324 #: cps/web.py:1344
msgid "Read a Book" msgid "Read a Book"
msgstr "Leer un libro" msgstr "Leer un libro"
#: cps/web.py:1334 #: cps/web.py:1354
msgid "Error opening eBook. File does not exist or file is not accessible." msgid "Error opening eBook. File does not exist or file is not accessible."
msgstr "Error al abrir el eBook. El archivo no existe o el archivo no es accesible." msgstr "Error al abrir el eBook. El archivo no existe o el archivo no es accesible."
@ -1058,7 +1069,7 @@ msgstr "Ok"
#: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147 #: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74
#: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/layout.html:28 cps/templates/shelf.html:73
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
#: cps/templates/user_edit.html:132 #: cps/templates/user_edit.html:132
msgid "Back" msgid "Back"
msgstr "Regresar" msgstr "Regresar"
@ -1692,11 +1703,6 @@ msgstr "¿Realmente quiere eliminar esta regla de dominio?"
msgid "Next" msgid "Next"
msgstr "Siguiente" msgstr "Siguiente"
#: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45
msgid "Search"
msgstr "Buscar"
#: cps/templates/http_error.html:37 #: cps/templates/http_error.html:37
msgid "Create issue" msgid "Create issue"
msgstr "Abrir una incidencia" msgstr "Abrir una incidencia"
@ -2056,7 +2062,7 @@ msgstr "Borrar este estante"
msgid "Edit Shelf" msgid "Edit Shelf"
msgstr "Editar estante" msgstr "Editar estante"
#: cps/templates/shelf.html:12 cps/templates/shelf_order.html:11 #: cps/templates/shelf.html:12 cps/templates/shelf_order.html:31
msgid "Change order" msgid "Change order"
msgstr "Cambiar orden" msgstr "Cambiar orden"

@ -20,7 +20,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-09-06 19:03+0200\n" "POT-Creation-Date: 2019-11-16 08:00+0100\n"
"PO-Revision-Date: 2019-08-21 15:20+0100\n" "PO-Revision-Date: 2019-08-21 15:20+0100\n"
"Last-Translator: Nicolas Roudninski <nicoroud@gmail.com>\n" "Last-Translator: Nicolas Roudninski <nicoroud@gmail.com>\n"
"Language: fr\n" "Language: fr\n"
@ -31,17 +31,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n" "Generated-By: Babel 2.7.0\n"
#: cps/about.py:40 cps/about.py:65 cps/about.py:66 cps/uploader.py:228 #: cps/about.py:41
msgid "installed" msgid "installed"
msgstr "" msgstr ""
#: cps/about.py:42 cps/about.py:65 cps/about.py:66 cps/uploader.py:213 #: cps/about.py:43
#: cps/uploader.py:214 cps/uploader.py:218 cps/uploader.py:222
#: cps/uploader.py:226 cps/uploader.py:230
msgid "not installed" msgid "not installed"
msgstr "non installé" msgstr "non installé"
#: cps/about.py:80 #: cps/about.py:81
msgid "Statistics" msgid "Statistics"
msgstr "Statistiques" msgstr "Statistiques"
@ -53,7 +51,7 @@ msgstr "Serveur redémarré, merci de rafraîchir la page"
msgid "Performing shutdown of server, please close window" msgid "Performing shutdown of server, please close window"
msgstr "Arrêt du serveur en cours, merci de fermer la fenêtre" msgstr "Arrêt du serveur en cours, merci de fermer la fenêtre"
#: cps/admin.py:111 cps/updater.py:445 #: cps/admin.py:111 cps/updater.py:446
msgid "Unknown" msgid "Unknown"
msgstr "Inconnu" msgstr "Inconnu"
@ -73,7 +71,7 @@ msgstr "Configuration de Calibre-Web mise à jour"
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "Configuration principale" msgstr "Configuration principale"
#: cps/admin.py:452 cps/web.py:1050 #: cps/admin.py:452 cps/web.py:1055
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "SVP, complétez tous les champs !" msgstr "SVP, complétez tous les champs !"
@ -82,7 +80,7 @@ msgstr "SVP, complétez tous les champs !"
msgid "Add new user" msgid "Add new user"
msgstr "Ajouter un nouvel utilisateur" msgstr "Ajouter un nouvel utilisateur"
#: cps/admin.py:463 cps/web.py:1253 #: cps/admin.py:463 cps/web.py:1258
msgid "E-mail is not from valid domain" msgid "E-mail is not from valid domain"
msgstr "Cette adresse de courriel nappartient pas à un domaine valide" msgstr "Cette adresse de courriel nappartient pas à un domaine valide"
@ -109,7 +107,7 @@ msgstr "Courriel de test envoyé avec succès sur %(kindlemail)s"
msgid "There was an error sending the Test e-mail: %(res)s" msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "Il y a eu une erreur pendant lenvoi du courriel de test : %(res)s" msgstr "Il y a eu une erreur pendant lenvoi du courriel de test : %(res)s"
#: cps/admin.py:527 cps/web.py:1033 #: cps/admin.py:527 cps/web.py:1038
msgid "Please configure your kindle e-mail address first..." msgid "Please configure your kindle e-mail address first..."
msgstr "Veuillez configurer votre adresse de courriel Kindle en premier lieu…" msgstr "Veuillez configurer votre adresse de courriel Kindle en premier lieu…"
@ -126,85 +124,93 @@ msgstr "Utilisateur '%(nick)s' supprimé"
msgid "No admin user remaining, can't delete user" msgid "No admin user remaining, can't delete user"
msgstr "Aucun utilisateur admin restant, impossible de supprimer lutilisateur" msgstr "Aucun utilisateur admin restant, impossible de supprimer lutilisateur"
#: cps/admin.py:600 cps/web.py:1279 #: cps/admin.py:599 cps/web.py:1299
msgid "Found an existing account for this e-mail address." msgid "Found an existing account for this e-mail address."
msgstr "Un compte existant a été trouvé pour cette adresse de courriel." msgstr "Un compte existant a été trouvé pour cette adresse de courriel."
#: cps/admin.py:603 cps/admin.py:615 #: cps/admin.py:602 cps/admin.py:615 cps/admin.py:629 cps/web.py:1274
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "Éditer l'utilisateur %(nick)s" msgstr "Éditer l'utilisateur %(nick)s"
#: cps/admin.py:609 #: cps/admin.py:608 cps/web.py:1267
msgid "This username is already taken"
msgstr ""
#: cps/admin.py:623
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "Utilisateur '%(nick)s' mis à jour" msgstr "Utilisateur '%(nick)s' mis à jour"
#: cps/admin.py:612 #: cps/admin.py:626
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "Oups ! Une erreur inconnue a eu lieu." msgstr "Oups ! Une erreur inconnue a eu lieu."
#: cps/admin.py:631 #: cps/admin.py:645
#, python-format #, python-format
msgid "Password for user %(user)s reset" msgid "Password for user %(user)s reset"
msgstr "Le mot de passe de lutilisateur %(user)s a été réinitialisé" msgstr "Le mot de passe de lutilisateur %(user)s a été réinitialisé"
#: cps/admin.py:634 cps/web.py:1075 #: cps/admin.py:648 cps/web.py:1080
msgid "An unknown error occurred. Please try again later." msgid "An unknown error occurred. Please try again later."
msgstr "Une erreur inconnue est survenue. Veuillez réessayer plus tard." msgstr "Une erreur inconnue est survenue. Veuillez réessayer plus tard."
#: cps/admin.py:645 #: cps/admin.py:659
msgid "Logfile viewer" msgid "Logfile viewer"
msgstr "Visualiseur de fichier journal" msgstr "Visualiseur de fichier journal"
#: cps/admin.py:680 #: cps/admin.py:694
msgid "Requesting update package" msgid "Requesting update package"
msgstr "Demander une mise à jour" msgstr "Demander une mise à jour"
#: cps/admin.py:681 #: cps/admin.py:695
msgid "Downloading update package" msgid "Downloading update package"
msgstr "Téléchargement la mise à jour" msgstr "Téléchargement la mise à jour"
#: cps/admin.py:682 #: cps/admin.py:696
msgid "Unzipping update package" msgid "Unzipping update package"
msgstr "Décompression de la mise à jour" msgstr "Décompression de la mise à jour"
#: cps/admin.py:683 #: cps/admin.py:697
msgid "Replacing files" msgid "Replacing files"
msgstr "Remplacement des fichiers" msgstr "Remplacement des fichiers"
#: cps/admin.py:684 #: cps/admin.py:698
msgid "Database connections are closed" msgid "Database connections are closed"
msgstr "Connexion à la base de donnée fermée" msgstr "Connexion à la base de donnée fermée"
#: cps/admin.py:685 #: cps/admin.py:699
msgid "Stopping server" msgid "Stopping server"
msgstr "Arrêt du serveur" msgstr "Arrêt du serveur"
#: cps/admin.py:686 #: cps/admin.py:700
msgid "Update finished, please press okay and reload page" msgid "Update finished, please press okay and reload page"
msgstr "Mise à jour terminée, merci dappuyer sur okay et de rafraîchir la page" msgstr "Mise à jour terminée, merci dappuyer sur okay et de rafraîchir la page"
#: cps/admin.py:687 cps/admin.py:688 cps/admin.py:689 cps/admin.py:690 #: cps/admin.py:701 cps/admin.py:702 cps/admin.py:703 cps/admin.py:704
msgid "Update failed:" msgid "Update failed:"
msgstr "La mise à jour a échoué :" msgstr "La mise à jour a échoué :"
#: cps/admin.py:687 cps/updater.py:271 cps/updater.py:456 cps/updater.py:458 #: cps/admin.py:701 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459
msgid "HTTP Error" msgid "HTTP Error"
msgstr "Erreur HTTP" msgstr "Erreur HTTP"
#: cps/admin.py:688 cps/updater.py:273 cps/updater.py:460 #: cps/admin.py:702 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "Erreur de connexion" msgstr "Erreur de connexion"
#: cps/admin.py:689 cps/updater.py:275 cps/updater.py:462 #: cps/admin.py:703 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
msgstr "Délai d'attente dépassé lors de l'établissement de connexion" msgstr "Délai d'attente dépassé lors de l'établissement de connexion"
#: cps/admin.py:690 cps/updater.py:277 cps/updater.py:464 #: cps/admin.py:704 cps/updater.py:278 cps/updater.py:465
msgid "General error" msgid "General error"
msgstr "Erreur générale" msgstr "Erreur générale"
#: cps/converter.py:31
msgid "not configured"
msgstr ""
#: cps/editbooks.py:214 cps/editbooks.py:393 #: cps/editbooks.py:214 cps/editbooks.py:393
msgid "Error opening eBook. File does not exist or file is not accessible" msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "Erreur à louverture du livre. Le fichier nexiste pas ou nest pas accessible" msgstr "Erreur à louverture du livre. Le fichier nexiste pas ou nest pas accessible"
@ -588,7 +594,7 @@ msgid "Show best rated books"
msgstr "Montrer les livres les mieux notés" msgstr "Montrer les livres les mieux notés"
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67 #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
#: cps/web.py:971 #: cps/web.py:976
msgid "Read Books" msgid "Read Books"
msgstr "Livres lus" msgstr "Livres lus"
@ -597,7 +603,7 @@ msgid "Show read and unread"
msgstr "Montrer lu et non-lu" msgstr "Montrer lu et non-lu"
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71 #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
#: cps/web.py:975 #: cps/web.py:980
msgid "Unread Books" msgid "Unread Books"
msgstr "Livres non-lus" msgstr "Livres non-lus"
@ -670,228 +676,233 @@ msgstr "Format de fichier"
msgid "Show file formats selection" msgid "Show file formats selection"
msgstr "Afficher la sélection des formats de fichiers" msgstr "Afficher la sélection des formats de fichiers"
#: cps/updater.py:251 cps/updater.py:358 cps/updater.py:371 #: cps/updater.py:252 cps/updater.py:359 cps/updater.py:372
msgid "Unexpected data while reading update information" msgid "Unexpected data while reading update information"
msgstr "Données inattendues lors de la lecture des informations de mise à jour" msgstr "Données inattendues lors de la lecture des informations de mise à jour"
#: cps/updater.py:258 cps/updater.py:364 #: cps/updater.py:259 cps/updater.py:365
msgid "No update available. You already have the latest version installed" msgid "No update available. You already have the latest version installed"
msgstr "Aucune mise à jour disponible. Vous avez déjà la dernière version installée" msgstr "Aucune mise à jour disponible. Vous avez déjà la dernière version installée"
#: cps/updater.py:284 #: cps/updater.py:285
msgid "A new update is available. Click on the button below to update to the latest version." msgid "A new update is available. Click on the button below to update to the latest version."
msgstr "Une nouvelle mise à jour est disponible. Cliquez sur le bouton ci-dessous pour charger la dernière version." msgstr "Une nouvelle mise à jour est disponible. Cliquez sur le bouton ci-dessous pour charger la dernière version."
#: cps/updater.py:337 #: cps/updater.py:338
msgid "Could not fetch update information" msgid "Could not fetch update information"
msgstr "Impossible d'extraire les informations de mise à jour" msgstr "Impossible d'extraire les informations de mise à jour"
#: cps/updater.py:351 #: cps/updater.py:352
msgid "No release information available" msgid "No release information available"
msgstr "Aucune information concernant cette version nest disponible" msgstr "Aucune information concernant cette version nest disponible"
#: cps/updater.py:404 cps/updater.py:413 #: cps/updater.py:405 cps/updater.py:414
#, python-format #, python-format
msgid "A new update is available. Click on the button below to update to version: %(version)s" msgid "A new update is available. Click on the button below to update to version: %(version)s"
msgstr "Une nouvelle mise à jour est disponible. Cliquez sur le bouton ci-dessous pour charger la version %(version)s" msgstr "Une nouvelle mise à jour est disponible. Cliquez sur le bouton ci-dessous pour charger la version %(version)s"
#: cps/updater.py:423 #: cps/updater.py:424
msgid "Click on the button below to update to the latest stable version." 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." msgstr "Téléchargez la dernière version en cliquant sur le bouton ci-dessous."
#: cps/web.py:460 #: cps/web.py:459
msgid "Recently Added Books" msgid "Recently Added Books"
msgstr "Ajouts récents" msgstr "Ajouts récents"
#: cps/web.py:488 #: cps/web.py:487
msgid "Best rated books" msgid "Best rated books"
msgstr "Livres les mieux notés" msgstr "Livres les mieux notés"
#: cps/templates/index.xml:38 cps/web.py:496 #: cps/templates/index.xml:38 cps/web.py:495
msgid "Random Books" msgid "Random Books"
msgstr "Livres au hasard" msgstr "Livres au hasard"
#: cps/web.py:522 #: cps/web.py:521
msgid "Books" msgid "Books"
msgstr "Livres" msgstr "Livres"
#: cps/web.py:549 #: cps/web.py:548
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "Livres populaires (les plus téléchargés)" msgstr "Livres populaires (les plus téléchargés)"
#: cps/web.py:560 cps/web.py:1300 cps/web.py:1388 #: cps/web.py:559 cps/web.py:1320 cps/web.py:1408
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Erreur d'ouverture du livre numérique. Le fichier n'existe pas ou n'est pas accessible :" msgstr "Erreur d'ouverture du livre numérique. Le fichier n'existe pas ou n'est pas accessible :"
#: cps/web.py:573 #: cps/web.py:572
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "Auteur: %(name)s" msgstr "Auteur: %(name)s"
#: cps/web.py:585 #: cps/web.py:584
#, python-format #, python-format
msgid "Publisher: %(name)s" msgid "Publisher: %(name)s"
msgstr "Editeur : '%(name)s'" msgstr "Editeur : '%(name)s'"
#: cps/web.py:596 #: cps/web.py:595
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "Séries : %(serie)s" msgstr "Séries : %(serie)s"
#: cps/web.py:607 #: cps/web.py:606
#, python-format #, python-format
msgid "Rating: %(rating)s stars" msgid "Rating: %(rating)s stars"
msgstr "Note: %(rating)s étoiles" msgstr "Note: %(rating)s étoiles"
#: cps/web.py:618 #: cps/web.py:617
#, python-format #, python-format
msgid "File format: %(format)s" msgid "File format: %(format)s"
msgstr "Format de fichier: %(format)s" msgstr "Format de fichier: %(format)s"
#: cps/web.py:630 #: cps/web.py:629
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "Catégorie : %(name)s" msgstr "Catégorie : %(name)s"
#: cps/web.py:647 #: cps/web.py:646
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "Langue : %(name)s" msgstr "Langue : %(name)s"
#: cps/web.py:679 #: cps/web.py:678
msgid "Publisher list" msgid "Publisher list"
msgstr "Liste des éditeurs" msgstr "Liste des éditeurs"
#: cps/templates/index.xml:82 cps/web.py:695 #: cps/templates/index.xml:82 cps/web.py:694
msgid "Series list" msgid "Series list"
msgstr "Liste des séries" msgstr "Liste des séries"
#: cps/web.py:709 #: cps/web.py:708
msgid "Ratings list" msgid "Ratings list"
msgstr "" msgstr ""
#: cps/web.py:722 #: cps/web.py:721
msgid "File formats list" msgid "File formats list"
msgstr "" msgstr ""
#: cps/web.py:750 #: cps/web.py:749
msgid "Available languages" msgid "Available languages"
msgstr "Langues disponibles" msgstr "Langues disponibles"
#: cps/templates/index.xml:75 cps/web.py:767 #: cps/templates/index.xml:75 cps/web.py:766
msgid "Category list" msgid "Category list"
msgstr "Liste des catégories" msgstr "Liste des catégories"
#: cps/templates/layout.html:73 cps/web.py:781 #: cps/templates/layout.html:73 cps/web.py:780
msgid "Tasks" msgid "Tasks"
msgstr "Tâches" msgstr "Tâches"
#: cps/web.py:846 #: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45 cps/web.py:802 cps/web.py:804
msgid "Search"
msgstr "Chercher"
#: cps/web.py:851
msgid "Published after " msgid "Published after "
msgstr "Publié après le " msgstr "Publié après le "
#: cps/web.py:853 #: cps/web.py:858
msgid "Published before " msgid "Published before "
msgstr "Publié avant le " msgstr "Publié avant le "
#: cps/web.py:867 #: cps/web.py:872
#, python-format #, python-format
msgid "Rating <= %(rating)s" msgid "Rating <= %(rating)s"
msgstr "Évaluation <= %(rating)s" msgstr "Évaluation <= %(rating)s"
#: cps/web.py:869 #: cps/web.py:874
#, python-format #, python-format
msgid "Rating >= %(rating)s" msgid "Rating >= %(rating)s"
msgstr "Évaluation >= %(rating)s" msgstr "Évaluation >= %(rating)s"
#: cps/web.py:929 cps/web.py:939 #: cps/web.py:934 cps/web.py:944
msgid "search" msgid "search"
msgstr "recherche" msgstr "recherche"
#: cps/web.py:1022 #: cps/web.py:1027
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "Veuillez configurer les paramètres SMTP au préalable…" msgstr "Veuillez configurer les paramètres SMTP au préalable…"
#: cps/web.py:1027 #: cps/web.py:1032
#, python-format #, python-format
msgid "Book successfully queued for sending to %(kindlemail)s" msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Le livre a été mis en file de traitement avec succès pour un envois vers %(kindlemail)s" msgstr "Le livre a été mis en file de traitement avec succès pour un envois vers %(kindlemail)s"
#: cps/web.py:1031 #: cps/web.py:1036
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "Il y a eu une erreur en envoyant ce livre : %(res)s" msgstr "Il y a eu une erreur en envoyant ce livre : %(res)s"
#: cps/web.py:1051 cps/web.py:1076 cps/web.py:1080 cps/web.py:1085 #: cps/web.py:1056 cps/web.py:1081 cps/web.py:1085 cps/web.py:1090
#: cps/web.py:1089 #: cps/web.py:1094
msgid "register" msgid "register"
msgstr "senregistrer" msgstr "senregistrer"
#: cps/web.py:1078 #: cps/web.py:1083
msgid "Your e-mail is not allowed to register" msgid "Your e-mail is not allowed to register"
msgstr "Votre adresse de courriel nest pas autorisé pour une inscription" msgstr "Votre adresse de courriel nest pas autorisé pour une inscription"
#: cps/web.py:1081 #: cps/web.py:1086
msgid "Confirmation e-mail was send to your e-mail account." msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Le courriel de confirmation a été envoyé à votre adresse." msgstr "Le courriel de confirmation a été envoyé à votre adresse."
#: cps/web.py:1084 #: cps/web.py:1089
msgid "This username or e-mail address is already in use." msgid "This username or e-mail address is already in use."
msgstr "Ce nom dutilisateur ou cette adresse de courriel sont déjà utilisés." msgstr "Ce nom dutilisateur ou cette adresse de courriel sont déjà utilisés."
#: cps/web.py:1099 #: cps/web.py:1104
msgid "Cannot activate LDAP authentication" msgid "Cannot activate LDAP authentication"
msgstr "Impossible dactiver lauthentification LDAP" msgstr "Impossible dactiver lauthentification LDAP"
#: cps/web.py:1108 cps/web.py:1214 #: cps/web.py:1113 cps/web.py:1219
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "vous êtes maintenant connecté sous : '%(nickname)s'" msgstr "vous êtes maintenant connecté sous : '%(nickname)s'"
#: cps/web.py:1112 #: cps/web.py:1117
msgid "Could not login. LDAP server down, please contact your administrator" msgid "Could not login. LDAP server down, please contact your administrator"
msgstr "Impossible de se connecter. Serveur LDAP hors service, veuillez contacter votre administrateur" msgstr "Impossible de se connecter. Serveur LDAP hors service, veuillez contacter votre administrateur"
#: cps/web.py:1116 cps/web.py:1124 #: cps/web.py:1121 cps/web.py:1129
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "Mauvais nom d'utilisateur ou mot de passe" msgstr "Mauvais nom d'utilisateur ou mot de passe"
#: cps/web.py:1120 #: cps/web.py:1125
#, python-format #, python-format
msgid "You are now logged in as: '%(nickname)s'" msgid "You are now logged in as: '%(nickname)s'"
msgstr "Vous êtes maintenant connecté en tant que : %(nickname)s" msgstr "Vous êtes maintenant connecté en tant que : %(nickname)s"
#: cps/web.py:1128 cps/web.py:1150 #: cps/web.py:1133 cps/web.py:1155
msgid "login" msgid "login"
msgstr "connexion" msgstr "connexion"
#: cps/web.py:1162 cps/web.py:1193 #: cps/web.py:1167 cps/web.py:1198
msgid "Token not found" msgid "Token not found"
msgstr "Jeton non trouvé" msgstr "Jeton non trouvé"
#: cps/web.py:1170 cps/web.py:1201 #: cps/web.py:1175 cps/web.py:1206
msgid "Token has expired" msgid "Token has expired"
msgstr "Jeton expiré" msgstr "Jeton expiré"
#: cps/web.py:1178 #: cps/web.py:1183
msgid "Success! Please return to your device" msgid "Success! Please return to your device"
msgstr "Réussite! Merci de vous tourner vers votre appareil" msgstr "Réussite! Merci de vous tourner vers votre appareil"
#: cps/web.py:1255 cps/web.py:1282 cps/web.py:1286 #: cps/web.py:1260 cps/web.py:1302 cps/web.py:1306
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "Profil de %(name)s" msgstr "Profil de %(name)s"
#: cps/web.py:1284 #: cps/web.py:1304
msgid "Profile updated" msgid "Profile updated"
msgstr "Profil mis à jour" msgstr "Profil mis à jour"
#: cps/web.py:1310 cps/web.py:1312 cps/web.py:1314 cps/web.py:1320 #: cps/web.py:1330 cps/web.py:1332 cps/web.py:1334 cps/web.py:1340
#: cps/web.py:1324 #: cps/web.py:1344
msgid "Read a Book" msgid "Read a Book"
msgstr "Lire un livre" msgstr "Lire un livre"
#: cps/web.py:1334 #: cps/web.py:1354
msgid "Error opening eBook. File does not exist or file is not accessible." msgid "Error opening eBook. File does not exist or file is not accessible."
msgstr "Erreur lors de louverture dun eBook. Le fichier nexiste pas ou le fichier nest pas accessible." msgstr "Erreur lors de louverture dun eBook. Le fichier nexiste pas ou le fichier nest pas accessible."
@ -1069,7 +1080,7 @@ msgstr "Oui"
#: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147 #: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74
#: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/layout.html:28 cps/templates/shelf.html:73
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
#: cps/templates/user_edit.html:132 #: cps/templates/user_edit.html:132
msgid "Back" msgid "Back"
msgstr "Retour" msgstr "Retour"
@ -1703,11 +1714,6 @@ msgstr "Souhaitez-vous vraiment supprimer cette règle de domaine ?"
msgid "Next" msgid "Next"
msgstr "Suivant" msgstr "Suivant"
#: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45
msgid "Search"
msgstr "Chercher"
#: cps/templates/http_error.html:37 #: cps/templates/http_error.html:37
msgid "Create issue" msgid "Create issue"
msgstr "Signaler un problème" msgstr "Signaler un problème"
@ -2067,7 +2073,7 @@ msgstr "Supprimer cette étagère"
msgid "Edit Shelf" msgid "Edit Shelf"
msgstr "Modifier létagère" msgstr "Modifier létagère"
#: cps/templates/shelf.html:12 cps/templates/shelf_order.html:11 #: cps/templates/shelf.html:12 cps/templates/shelf_order.html:31
msgid "Change order" msgid "Change order"
msgstr "Modifier lordre" msgstr "Modifier lordre"

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-09-06 19:03+0200\n" "POT-Creation-Date: 2019-11-16 08:00+0100\n"
"PO-Revision-Date: 2019-04-06 23:36+0200\n" "PO-Revision-Date: 2019-04-06 23:36+0200\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language: hu\n" "Language: hu\n"
@ -18,17 +18,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n" "Generated-By: Babel 2.7.0\n"
#: cps/about.py:40 cps/about.py:65 cps/about.py:66 cps/uploader.py:228 #: cps/about.py:41
msgid "installed" msgid "installed"
msgstr "" msgstr ""
#: cps/about.py:42 cps/about.py:65 cps/about.py:66 cps/uploader.py:213 #: cps/about.py:43
#: cps/uploader.py:214 cps/uploader.py:218 cps/uploader.py:222
#: cps/uploader.py:226 cps/uploader.py:230
msgid "not installed" msgid "not installed"
msgstr "nincs telepítve" msgstr "nincs telepítve"
#: cps/about.py:80 #: cps/about.py:81
msgid "Statistics" msgid "Statistics"
msgstr "Statisztika" msgstr "Statisztika"
@ -40,7 +38,7 @@ msgstr "A kiszolgáló újraindult, tölts be újra az oldalt!"
msgid "Performing shutdown of server, please close window" msgid "Performing shutdown of server, please close window"
msgstr "A kiszolgáló leállítása folyamatban, zárd be ezt az ablakot" msgstr "A kiszolgáló leállítása folyamatban, zárd be ezt az ablakot"
#: cps/admin.py:111 cps/updater.py:445 #: cps/admin.py:111 cps/updater.py:446
msgid "Unknown" msgid "Unknown"
msgstr "Ismeretlen" msgstr "Ismeretlen"
@ -60,7 +58,7 @@ msgstr "A Calibre-Web konfigurációja frissítve."
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "Alapvető beállítások" msgstr "Alapvető beállítások"
#: cps/admin.py:452 cps/web.py:1050 #: cps/admin.py:452 cps/web.py:1055
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "Az összes mezőt ki kell tölteni!" msgstr "Az összes mezőt ki kell tölteni!"
@ -69,7 +67,7 @@ msgstr "Az összes mezőt ki kell tölteni!"
msgid "Add new user" msgid "Add new user"
msgstr "Új felhasználó hozzáadása" msgstr "Új felhasználó hozzáadása"
#: cps/admin.py:463 cps/web.py:1253 #: cps/admin.py:463 cps/web.py:1258
msgid "E-mail is not from valid domain" msgid "E-mail is not from valid domain"
msgstr "Az e-mail tartománya nem érvényes." msgstr "Az e-mail tartománya nem érvényes."
@ -96,7 +94,7 @@ msgstr "A teszt levél sikeresen elküldve ide: %(kindlemail)s"
msgid "There was an error sending the Test e-mail: %(res)s" 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" msgstr "Hiba történt a teszt levél küldése során: %(res)s"
#: cps/admin.py:527 cps/web.py:1033 #: cps/admin.py:527 cps/web.py:1038
msgid "Please configure your kindle e-mail address first..." msgid "Please configure your kindle e-mail address first..."
msgstr "Először be kell állítani a kindle e-mail címet..." msgstr "Először be kell állítani a kindle e-mail címet..."
@ -113,85 +111,93 @@ msgstr "A felhasználó törölve: %(nick)s"
msgid "No admin user remaining, can't delete user" msgid "No admin user remaining, can't delete user"
msgstr "" msgstr ""
#: cps/admin.py:600 cps/web.py:1279 #: cps/admin.py:599 cps/web.py:1299
msgid "Found an existing account for this e-mail address." msgid "Found an existing account for this e-mail address."
msgstr "Már létezik felhasználó ehhez az e-mail címhez." msgstr "Már létezik felhasználó ehhez az e-mail címhez."
#: cps/admin.py:603 cps/admin.py:615 #: cps/admin.py:602 cps/admin.py:615 cps/admin.py:629 cps/web.py:1274
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr " A felhasználó szerkesztése: %(nick)s" msgstr " A felhasználó szerkesztése: %(nick)s"
#: cps/admin.py:609 #: cps/admin.py:608 cps/web.py:1267
msgid "This username is already taken"
msgstr ""
#: cps/admin.py:623
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "A felhasználó frissítve: %(nick)s" msgstr "A felhasználó frissítve: %(nick)s"
#: cps/admin.py:612 #: cps/admin.py:626
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "Ismeretlen hiba történt." msgstr "Ismeretlen hiba történt."
#: cps/admin.py:631 #: cps/admin.py:645
#, python-format #, python-format
msgid "Password for user %(user)s reset" msgid "Password for user %(user)s reset"
msgstr "A(z) %(user)s felhasználó jelszavának alaphelyzetbe állítása" msgstr "A(z) %(user)s felhasználó jelszavának alaphelyzetbe állítása"
#: cps/admin.py:634 cps/web.py:1075 #: cps/admin.py:648 cps/web.py:1080
msgid "An unknown error occurred. Please try again later." msgid "An unknown error occurred. Please try again later."
msgstr "Ismeretlen hiba történt. Próbáld újra később!" msgstr "Ismeretlen hiba történt. Próbáld újra később!"
#: cps/admin.py:645 #: cps/admin.py:659
msgid "Logfile viewer" msgid "Logfile viewer"
msgstr "" msgstr ""
#: cps/admin.py:680 #: cps/admin.py:694
msgid "Requesting update package" msgid "Requesting update package"
msgstr "Frissítési csomag kérése" msgstr "Frissítési csomag kérése"
#: cps/admin.py:681 #: cps/admin.py:695
msgid "Downloading update package" msgid "Downloading update package"
msgstr "Frissítési csomag letöltése" msgstr "Frissítési csomag letöltése"
#: cps/admin.py:682 #: cps/admin.py:696
msgid "Unzipping update package" msgid "Unzipping update package"
msgstr "Frissítési csomag kitömörítése" msgstr "Frissítési csomag kitömörítése"
#: cps/admin.py:683 #: cps/admin.py:697
msgid "Replacing files" msgid "Replacing files"
msgstr "Fájlok cserélése" msgstr "Fájlok cserélése"
#: cps/admin.py:684 #: cps/admin.py:698
msgid "Database connections are closed" msgid "Database connections are closed"
msgstr "Adatbázis kapcsolatok lezárva" msgstr "Adatbázis kapcsolatok lezárva"
#: cps/admin.py:685 #: cps/admin.py:699
msgid "Stopping server" msgid "Stopping server"
msgstr "Szerver leállítása" msgstr "Szerver leállítása"
#: cps/admin.py:686 #: cps/admin.py:700
msgid "Update finished, please press okay and reload page" 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" msgstr "A frissítés települt, kattints az OK-ra és újra tölt az oldal"
#: cps/admin.py:687 cps/admin.py:688 cps/admin.py:689 cps/admin.py:690 #: cps/admin.py:701 cps/admin.py:702 cps/admin.py:703 cps/admin.py:704
msgid "Update failed:" msgid "Update failed:"
msgstr "A frissítés nem sikerült:" msgstr "A frissítés nem sikerült:"
#: cps/admin.py:687 cps/updater.py:271 cps/updater.py:456 cps/updater.py:458 #: cps/admin.py:701 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459
msgid "HTTP Error" msgid "HTTP Error"
msgstr "HTTP hiba" msgstr "HTTP hiba"
#: cps/admin.py:688 cps/updater.py:273 cps/updater.py:460 #: cps/admin.py:702 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "Kapcsolódási hiba" msgstr "Kapcsolódási hiba"
#: cps/admin.py:689 cps/updater.py:275 cps/updater.py:462 #: cps/admin.py:703 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
msgstr "Időtúllépés a kapcsolódás során" msgstr "Időtúllépés a kapcsolódás során"
#: cps/admin.py:690 cps/updater.py:277 cps/updater.py:464 #: cps/admin.py:704 cps/updater.py:278 cps/updater.py:465
msgid "General error" msgid "General error"
msgstr "Általános hiba" msgstr "Általános hiba"
#: cps/converter.py:31
msgid "not configured"
msgstr ""
#: cps/editbooks.py:214 cps/editbooks.py:393 #: cps/editbooks.py:214 cps/editbooks.py:393
msgid "Error opening eBook. File does not exist or file is not accessible" 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ő." msgstr "Hiba az ekönyv megnyitásakor. A fájl nem létezik vagy nem elérhető."
@ -575,7 +581,7 @@ msgid "Show best rated books"
msgstr "Legjobbra értékelt könyvek mutatása" msgstr "Legjobbra értékelt könyvek mutatása"
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67 #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
#: cps/web.py:971 #: cps/web.py:976
msgid "Read Books" msgid "Read Books"
msgstr "Olvasott könyvek" msgstr "Olvasott könyvek"
@ -584,7 +590,7 @@ msgid "Show read and unread"
msgstr "Mutassa az olvasva/olvasatlan állapotot" msgstr "Mutassa az olvasva/olvasatlan állapotot"
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71 #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
#: cps/web.py:975 #: cps/web.py:980
msgid "Unread Books" msgid "Unread Books"
msgstr "Olvasatlan könyvek" msgstr "Olvasatlan könyvek"
@ -657,228 +663,233 @@ msgstr ""
msgid "Show file formats selection" msgid "Show file formats selection"
msgstr "" msgstr ""
#: cps/updater.py:251 cps/updater.py:358 cps/updater.py:371 #: cps/updater.py:252 cps/updater.py:359 cps/updater.py:372
msgid "Unexpected data while reading update information" msgid "Unexpected data while reading update information"
msgstr "Ismeretlen adat a frissítési információk olvasásakor" msgstr "Ismeretlen adat a frissítési információk olvasásakor"
#: cps/updater.py:258 cps/updater.py:364 #: cps/updater.py:259 cps/updater.py:365
msgid "No update available. You already have the latest version installed" msgid "No update available. You already have the latest version installed"
msgstr "Nem érhető el újabb frissítés. Már a legújabb verzió van telepítve." msgstr "Nem érhető el újabb frissítés. Már a legújabb verzió van telepítve."
#: cps/updater.py:284 #: cps/updater.py:285
msgid "A new update is available. Click on the button below to update to the latest version." msgid "A new update is available. Click on the button below to update to the latest version."
msgstr "Egy új frissítés érhető el. Kattints a lenti gombra a legújabb verzió frissítésére" msgstr "Egy új frissítés érhető el. Kattints a lenti gombra a legújabb verzió frissítésére"
#: cps/updater.py:337 #: cps/updater.py:338
msgid "Could not fetch update information" msgid "Could not fetch update information"
msgstr "Nem lehetett begyűjteni a frissítési információkat" msgstr "Nem lehetett begyűjteni a frissítési információkat"
#: cps/updater.py:351 #: cps/updater.py:352
msgid "No release information available" msgid "No release information available"
msgstr "Nincs információ a kiadásról." msgstr "Nincs információ a kiadásról."
#: cps/updater.py:404 cps/updater.py:413 #: cps/updater.py:405 cps/updater.py:414
#, python-format #, python-format
msgid "A new update is available. Click on the button below to update to version: %(version)s" msgid "A new update is available. Click on the button below to update to version: %(version)s"
msgstr "Új frissítés érhető el. Kattints az alábbi gombra a frissítéshez a következő verzióra: %(version)s" msgstr "Új frissítés érhető el. Kattints az alábbi gombra a frissítéshez a következő verzióra: %(version)s"
#: cps/updater.py:423 #: cps/updater.py:424
msgid "Click on the button below to update to the latest stable version." msgid "Click on the button below to update to the latest stable version."
msgstr "" msgstr ""
#: cps/web.py:460 #: cps/web.py:459
msgid "Recently Added Books" msgid "Recently Added Books"
msgstr "Legutóbb hozzáadott könyvek" msgstr "Legutóbb hozzáadott könyvek"
#: cps/web.py:488 #: cps/web.py:487
msgid "Best rated books" msgid "Best rated books"
msgstr "Legjobbra értékelt könyvek" msgstr "Legjobbra értékelt könyvek"
#: cps/templates/index.xml:38 cps/web.py:496 #: cps/templates/index.xml:38 cps/web.py:495
msgid "Random Books" msgid "Random Books"
msgstr "Könyvek találomra" msgstr "Könyvek találomra"
#: cps/web.py:522 #: cps/web.py:521
msgid "Books" msgid "Books"
msgstr "" msgstr ""
#: cps/web.py:549 #: cps/web.py:548
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "Kelendő könyvek (legtöbbet letöltöttek)" msgstr "Kelendő könyvek (legtöbbet letöltöttek)"
#: cps/web.py:560 cps/web.py:1300 cps/web.py:1388 #: cps/web.py:559 cps/web.py:1320 cps/web.py:1408
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Hiba történt az e-könyv megnyitásakor. A fájl nem létezik vagy nem érhető el:" msgstr "Hiba történt az e-könyv megnyitásakor. A fájl nem létezik vagy nem érhető el:"
#: cps/web.py:573 #: cps/web.py:572
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "" msgstr ""
#: cps/web.py:585 #: cps/web.py:584
#, python-format #, python-format
msgid "Publisher: %(name)s" msgid "Publisher: %(name)s"
msgstr "Kiadó: %(name)s" msgstr "Kiadó: %(name)s"
#: cps/web.py:596 #: cps/web.py:595
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "Sorozat: %(serie)s" msgstr "Sorozat: %(serie)s"
#: cps/web.py:607 #: cps/web.py:606
#, python-format #, python-format
msgid "Rating: %(rating)s stars" msgid "Rating: %(rating)s stars"
msgstr "" msgstr ""
#: cps/web.py:618 #: cps/web.py:617
#, python-format #, python-format
msgid "File format: %(format)s" msgid "File format: %(format)s"
msgstr "" msgstr ""
#: cps/web.py:630 #: cps/web.py:629
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "Címke: %(name)s" msgstr "Címke: %(name)s"
#: cps/web.py:647 #: cps/web.py:646
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "Nyelv: %(name)s" msgstr "Nyelv: %(name)s"
#: cps/web.py:679 #: cps/web.py:678
msgid "Publisher list" msgid "Publisher list"
msgstr "Kiadók listája" msgstr "Kiadók listája"
#: cps/templates/index.xml:82 cps/web.py:695 #: cps/templates/index.xml:82 cps/web.py:694
msgid "Series list" msgid "Series list"
msgstr "Sorozatok listája" msgstr "Sorozatok listája"
#: cps/web.py:709 #: cps/web.py:708
msgid "Ratings list" msgid "Ratings list"
msgstr "" msgstr ""
#: cps/web.py:722 #: cps/web.py:721
msgid "File formats list" msgid "File formats list"
msgstr "" msgstr ""
#: cps/web.py:750 #: cps/web.py:749
msgid "Available languages" msgid "Available languages"
msgstr "Elérhető nyelvek" msgstr "Elérhető nyelvek"
#: cps/templates/index.xml:75 cps/web.py:767 #: cps/templates/index.xml:75 cps/web.py:766
msgid "Category list" msgid "Category list"
msgstr "Címkék listája" msgstr "Címkék listája"
#: cps/templates/layout.html:73 cps/web.py:781 #: cps/templates/layout.html:73 cps/web.py:780
msgid "Tasks" msgid "Tasks"
msgstr "Feladatok" msgstr "Feladatok"
#: cps/web.py:846 #: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45 cps/web.py:802 cps/web.py:804
msgid "Search"
msgstr "Keresés"
#: cps/web.py:851
msgid "Published after " msgid "Published after "
msgstr "Kiadva ezután: " msgstr "Kiadva ezután: "
#: cps/web.py:853 #: cps/web.py:858
msgid "Published before " msgid "Published before "
msgstr "Kiadva ezelőtt: " msgstr "Kiadva ezelőtt: "
#: cps/web.py:867 #: cps/web.py:872
#, python-format #, python-format
msgid "Rating <= %(rating)s" msgid "Rating <= %(rating)s"
msgstr "Értékelés <= %(rating)s" msgstr "Értékelés <= %(rating)s"
#: cps/web.py:869 #: cps/web.py:874
#, python-format #, python-format
msgid "Rating >= %(rating)s" msgid "Rating >= %(rating)s"
msgstr "Értékelés <= %(rating)s" msgstr "Értékelés <= %(rating)s"
#: cps/web.py:929 cps/web.py:939 #: cps/web.py:934 cps/web.py:944
msgid "search" msgid "search"
msgstr "keresés" msgstr "keresés"
#: cps/web.py:1022 #: cps/web.py:1027
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "Először be kell állítani az SMTP levelező beállításokat..." msgstr "Először be kell állítani az SMTP levelező beállításokat..."
#: cps/web.py:1027 #: cps/web.py:1032
#, python-format #, python-format
msgid "Book successfully queued for sending to %(kindlemail)s" 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" msgstr "A könyv sikeresen küldésre lett jelölve a következő címre: %(kindlemail)s"
#: cps/web.py:1031 #: cps/web.py:1036
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "Hiba történt a könyv küldésekor: %(res)s" msgstr "Hiba történt a könyv küldésekor: %(res)s"
#: cps/web.py:1051 cps/web.py:1076 cps/web.py:1080 cps/web.py:1085 #: cps/web.py:1056 cps/web.py:1081 cps/web.py:1085 cps/web.py:1090
#: cps/web.py:1089 #: cps/web.py:1094
msgid "register" msgid "register"
msgstr "regisztrálás" msgstr "regisztrálás"
#: cps/web.py:1078 #: cps/web.py:1083
msgid "Your e-mail is not allowed to register" msgid "Your e-mail is not allowed to register"
msgstr "Nem engedélyezett a megadott e-mail cím bejegyzése" msgstr "Nem engedélyezett a megadott e-mail cím bejegyzése"
#: cps/web.py:1081 #: cps/web.py:1086
msgid "Confirmation e-mail was send to your e-mail account." msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Jóváhagyó levél elküldve az email címedre." msgstr "Jóváhagyó levél elküldve az email címedre."
#: cps/web.py:1084 #: cps/web.py:1089
msgid "This username or e-mail address is already in use." 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." msgstr "Ez a felhasználónév vagy e-mail cím már használatban van."
#: cps/web.py:1099 #: cps/web.py:1104
msgid "Cannot activate LDAP authentication" msgid "Cannot activate LDAP authentication"
msgstr "" msgstr ""
#: cps/web.py:1108 cps/web.py:1214 #: cps/web.py:1113 cps/web.py:1219
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "Be vagy jelentkezve mint: %(nickname)s" msgstr "Be vagy jelentkezve mint: %(nickname)s"
#: cps/web.py:1112 #: cps/web.py:1117
msgid "Could not login. LDAP server down, please contact your administrator" msgid "Could not login. LDAP server down, please contact your administrator"
msgstr "" msgstr ""
#: cps/web.py:1116 cps/web.py:1124 #: cps/web.py:1121 cps/web.py:1129
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "Rossz felhasználó név vagy jelszó!" msgstr "Rossz felhasználó név vagy jelszó!"
#: cps/web.py:1120 #: cps/web.py:1125
#, python-format #, python-format
msgid "You are now logged in as: '%(nickname)s'" msgid "You are now logged in as: '%(nickname)s'"
msgstr "" msgstr ""
#: cps/web.py:1128 cps/web.py:1150 #: cps/web.py:1133 cps/web.py:1155
msgid "login" msgid "login"
msgstr "belépés" msgstr "belépés"
#: cps/web.py:1162 cps/web.py:1193 #: cps/web.py:1167 cps/web.py:1198
msgid "Token not found" msgid "Token not found"
msgstr "A token nem található." msgstr "A token nem található."
#: cps/web.py:1170 cps/web.py:1201 #: cps/web.py:1175 cps/web.py:1206
msgid "Token has expired" msgid "Token has expired"
msgstr "A token érvényessége lejárt." msgstr "A token érvényessége lejárt."
#: cps/web.py:1178 #: cps/web.py:1183
msgid "Success! Please return to your device" msgid "Success! Please return to your device"
msgstr "Sikerült! Újra használható az eszköz." msgstr "Sikerült! Újra használható az eszköz."
#: cps/web.py:1255 cps/web.py:1282 cps/web.py:1286 #: cps/web.py:1260 cps/web.py:1302 cps/web.py:1306
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "%(name)s profilja" msgstr "%(name)s profilja"
#: cps/web.py:1284 #: cps/web.py:1304
msgid "Profile updated" msgid "Profile updated"
msgstr "A profil frissítve." msgstr "A profil frissítve."
#: cps/web.py:1310 cps/web.py:1312 cps/web.py:1314 cps/web.py:1320 #: cps/web.py:1330 cps/web.py:1332 cps/web.py:1334 cps/web.py:1340
#: cps/web.py:1324 #: cps/web.py:1344
msgid "Read a Book" msgid "Read a Book"
msgstr "Egy olvasott könyv" msgstr "Egy olvasott könyv"
#: cps/web.py:1334 #: cps/web.py:1354
msgid "Error opening eBook. File does not exist or file is not accessible." msgid "Error opening eBook. File does not exist or file is not accessible."
msgstr "" msgstr ""
@ -1056,7 +1067,7 @@ msgstr "OK"
#: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147 #: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74
#: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/layout.html:28 cps/templates/shelf.html:73
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
#: cps/templates/user_edit.html:132 #: cps/templates/user_edit.html:132
msgid "Back" msgid "Back"
msgstr "Vissza" msgstr "Vissza"
@ -1690,11 +1701,6 @@ msgstr "Valóban törölni akarod ezt a tartomány-szabályt?"
msgid "Next" msgid "Next"
msgstr "Következő" msgstr "Következő"
#: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45
msgid "Search"
msgstr "Keresés"
#: cps/templates/http_error.html:37 #: cps/templates/http_error.html:37
msgid "Create issue" msgid "Create issue"
msgstr "" msgstr ""
@ -2054,7 +2060,7 @@ msgstr "Polc törlése"
msgid "Edit Shelf" msgid "Edit Shelf"
msgstr "Polc szerkesztése" msgstr "Polc szerkesztése"
#: cps/templates/shelf.html:12 cps/templates/shelf_order.html:11 #: cps/templates/shelf.html:12 cps/templates/shelf_order.html:31
msgid "Change order" msgid "Change order"
msgstr "Sorrend változtatása" msgstr "Sorrend változtatása"

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2019-09-06 19:03+0200\n" "POT-Creation-Date: 2019-11-16 08:00+0100\n"
"PO-Revision-Date: 2017-04-04 15:09+0200\n" "PO-Revision-Date: 2017-04-04 15:09+0200\n"
"Last-Translator: Marco Picone <marcovendere@gmail.com>\n" "Last-Translator: Marco Picone <marcovendere@gmail.com>\n"
"Language: it\n" "Language: it\n"
@ -17,17 +17,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n" "Generated-By: Babel 2.7.0\n"
#: cps/about.py:40 cps/about.py:65 cps/about.py:66 cps/uploader.py:228 #: cps/about.py:41
msgid "installed" msgid "installed"
msgstr "" msgstr ""
#: cps/about.py:42 cps/about.py:65 cps/about.py:66 cps/uploader.py:213 #: cps/about.py:43
#: cps/uploader.py:214 cps/uploader.py:218 cps/uploader.py:222
#: cps/uploader.py:226 cps/uploader.py:230
msgid "not installed" msgid "not installed"
msgstr "non installato" msgstr "non installato"
#: cps/about.py:80 #: cps/about.py:81
msgid "Statistics" msgid "Statistics"
msgstr "Statistica" msgstr "Statistica"
@ -39,7 +37,7 @@ msgstr "Server riavviato, per favore ricarica la pagina"
msgid "Performing shutdown of server, please close window" msgid "Performing shutdown of server, please close window"
msgstr "Eseguo l'arresto del server, per favore chiudi la finestra." msgstr "Eseguo l'arresto del server, per favore chiudi la finestra."
#: cps/admin.py:111 cps/updater.py:445 #: cps/admin.py:111 cps/updater.py:446
msgid "Unknown" msgid "Unknown"
msgstr "Sconosciuto" msgstr "Sconosciuto"
@ -59,7 +57,7 @@ msgstr "Aggiornamento della configurazione di Calibre-Web"
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "Configurazione di base" msgstr "Configurazione di base"
#: cps/admin.py:452 cps/web.py:1050 #: cps/admin.py:452 cps/web.py:1055
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "Per favore compila tutti i campi!" msgstr "Per favore compila tutti i campi!"
@ -68,7 +66,7 @@ msgstr "Per favore compila tutti i campi!"
msgid "Add new user" msgid "Add new user"
msgstr "Aggiungi un nuovo utente" msgstr "Aggiungi un nuovo utente"
#: cps/admin.py:463 cps/web.py:1253 #: cps/admin.py:463 cps/web.py:1258
msgid "E-mail is not from valid domain" msgid "E-mail is not from valid domain"
msgstr "L'e-mail non proviene da un dominio valido" msgstr "L'e-mail non proviene da un dominio valido"
@ -95,7 +93,7 @@ msgstr "E-mail di test inviato con successo a %(kindlemail)s"
msgid "There was an error sending the Test e-mail: %(res)s" 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" msgstr "Si è verificato un errore nell'invio dell'e-mail di test: %(res)s"
#: cps/admin.py:527 cps/web.py:1033 #: cps/admin.py:527 cps/web.py:1038
msgid "Please configure your kindle e-mail address first..." msgid "Please configure your kindle e-mail address first..."
msgstr "Per favore configura dapprima il tuo indirizzo e-mail di Kindle..." msgstr "Per favore configura dapprima il tuo indirizzo e-mail di Kindle..."
@ -112,85 +110,93 @@ msgstr "Utente '%(nick)s' eliminato"
msgid "No admin user remaining, can't delete user" msgid "No admin user remaining, can't delete user"
msgstr "" msgstr ""
#: cps/admin.py:600 cps/web.py:1279 #: cps/admin.py:599 cps/web.py:1299
msgid "Found an existing account for this e-mail address." 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 questo e-mail."
#: cps/admin.py:603 cps/admin.py:615 #: cps/admin.py:602 cps/admin.py:615 cps/admin.py:629 cps/web.py:1274
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "Modifica utente %(nick)s" msgstr "Modifica utente %(nick)s"
#: cps/admin.py:609 #: cps/admin.py:608 cps/web.py:1267
msgid "This username is already taken"
msgstr ""
#: cps/admin.py:623
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "Utente '%(nick)s' aggiornato" msgstr "Utente '%(nick)s' aggiornato"
#: cps/admin.py:612 #: cps/admin.py:626
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "Si è verificato un errore imprevisto." msgstr "Si è verificato un errore imprevisto."
#: cps/admin.py:631 #: cps/admin.py:645
#, python-format #, python-format
msgid "Password for user %(user)s reset" msgid "Password for user %(user)s reset"
msgstr "La password dell'utente %(user)s è stata resettata" msgstr "La password dell'utente %(user)s è stata resettata"
#: cps/admin.py:634 cps/web.py:1075 #: cps/admin.py:648 cps/web.py:1080
msgid "An unknown error occurred. Please try again later." msgid "An unknown error occurred. Please try again later."
msgstr "Si è verificato un errore sconosciuto: per favore riprova." msgstr "Si è verificato un errore sconosciuto: per favore riprova."
#: cps/admin.py:645 #: cps/admin.py:659
msgid "Logfile viewer" msgid "Logfile viewer"
msgstr "" msgstr ""
#: cps/admin.py:680 #: cps/admin.py:694
msgid "Requesting update package" msgid "Requesting update package"
msgstr "Richiesta del pacchetto di aggiornamento" msgstr "Richiesta del pacchetto di aggiornamento"
#: cps/admin.py:681 #: cps/admin.py:695
msgid "Downloading update package" msgid "Downloading update package"
msgstr "Scarico il pacchetto di aggiornamento" msgstr "Scarico il pacchetto di aggiornamento"
#: cps/admin.py:682 #: cps/admin.py:696
msgid "Unzipping update package" msgid "Unzipping update package"
msgstr "Decomprimo il pacchetto di aggiornamento" msgstr "Decomprimo il pacchetto di aggiornamento"
#: cps/admin.py:683 #: cps/admin.py:697
msgid "Replacing files" msgid "Replacing files"
msgstr "Sostituzione files" msgstr "Sostituzione files"
#: cps/admin.py:684 #: cps/admin.py:698
msgid "Database connections are closed" msgid "Database connections are closed"
msgstr "Le connessioni al database sono chiuse" msgstr "Le connessioni al database sono chiuse"
#: cps/admin.py:685 #: cps/admin.py:699
msgid "Stopping server" msgid "Stopping server"
msgstr "Arresta il server" msgstr "Arresta il server"
#: cps/admin.py:686 #: cps/admin.py:700
msgid "Update finished, please press okay and reload page" msgid "Update finished, please press okay and reload page"
msgstr "Aggiornamento completato, prego premere ok e ricaricare la pagina" msgstr "Aggiornamento completato, prego premere ok e ricaricare la pagina"
#: cps/admin.py:687 cps/admin.py:688 cps/admin.py:689 cps/admin.py:690 #: cps/admin.py:701 cps/admin.py:702 cps/admin.py:703 cps/admin.py:704
msgid "Update failed:" msgid "Update failed:"
msgstr "Aggiornamento fallito:" msgstr "Aggiornamento fallito:"
#: cps/admin.py:687 cps/updater.py:271 cps/updater.py:456 cps/updater.py:458 #: cps/admin.py:701 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459
msgid "HTTP Error" msgid "HTTP Error"
msgstr "HTTP Error" msgstr "HTTP Error"
#: cps/admin.py:688 cps/updater.py:273 cps/updater.py:460 #: cps/admin.py:702 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "Errore di connessione" msgstr "Errore di connessione"
#: cps/admin.py:689 cps/updater.py:275 cps/updater.py:462 #: cps/admin.py:703 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
msgstr "Tempo scaduto nello stabilire la connessione" msgstr "Tempo scaduto nello stabilire la connessione"
#: cps/admin.py:690 cps/updater.py:277 cps/updater.py:464 #: cps/admin.py:704 cps/updater.py:278 cps/updater.py:465
msgid "General error" msgid "General error"
msgstr "Errore generale" msgstr "Errore generale"
#: cps/converter.py:31
msgid "not configured"
msgstr ""
#: cps/editbooks.py:214 cps/editbooks.py:393 #: cps/editbooks.py:214 cps/editbooks.py:393
msgid "Error opening eBook. File does not exist or file is not accessible" 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" msgstr "Errore durante l'apertura del libro. Il file non esiste o il file non è accessibile"
@ -574,7 +580,7 @@ msgid "Show best rated books"
msgstr "Mostra la sezione dei libri più votati" msgstr "Mostra la sezione dei libri più votati"
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67 #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
#: cps/web.py:971 #: cps/web.py:976
msgid "Read Books" msgid "Read Books"
msgstr "Libri da leggere" msgstr "Libri da leggere"
@ -583,7 +589,7 @@ msgid "Show read and unread"
msgstr "Mostra letto e non letto" msgstr "Mostra letto e non letto"
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71 #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
#: cps/web.py:975 #: cps/web.py:980
msgid "Unread Books" msgid "Unread Books"
msgstr "Libri non letti" msgstr "Libri non letti"
@ -656,228 +662,233 @@ msgstr ""
msgid "Show file formats selection" msgid "Show file formats selection"
msgstr "" msgstr ""
#: cps/updater.py:251 cps/updater.py:358 cps/updater.py:371 #: cps/updater.py:252 cps/updater.py:359 cps/updater.py:372
msgid "Unexpected data while reading update information" msgid "Unexpected data while reading update information"
msgstr "Dati inattesi durante il processo di aggiornamento" msgstr "Dati inattesi durante il processo di aggiornamento"
#: cps/updater.py:258 cps/updater.py:364 #: cps/updater.py:259 cps/updater.py:365
msgid "No update available. You already have the latest version installed" msgid "No update available. You already have the latest version installed"
msgstr "Nessun aggiornamento disponibile. Hai già installato l'ultima versione disponibile" msgstr "Nessun aggiornamento disponibile. Hai già installato l'ultima versione disponibile"
#: cps/updater.py:284 #: cps/updater.py:285
msgid "A new update is available. Click on the button below to update to the latest version." msgid "A new update is available. Click on the button below to update to the latest version."
msgstr "Nuovo aggiornamento disponibile. Clicca sul pulsante sottostante per aggiornare all'ultima versione." msgstr "Nuovo aggiornamento disponibile. Clicca sul pulsante sottostante per aggiornare all'ultima versione."
#: cps/updater.py:337 #: cps/updater.py:338
msgid "Could not fetch update information" msgid "Could not fetch update information"
msgstr "Impossibile recuperare informazioni di aggiornamento" msgstr "Impossibile recuperare informazioni di aggiornamento"
#: cps/updater.py:351 #: cps/updater.py:352
msgid "No release information available" msgid "No release information available"
msgstr "Non sono disponibili informazioni sulla versione" msgstr "Non sono disponibili informazioni sulla versione"
#: cps/updater.py:404 cps/updater.py:413 #: cps/updater.py:405 cps/updater.py:414
#, python-format #, python-format
msgid "A new update is available. Click on the button below to update to version: %(version)s" msgid "A new update is available. Click on the button below to update to version: %(version)s"
msgstr "Nuovo aggiornamento disponibile. Clicca sul pulsante sottostante per aggiornare alla versione: %(version)s" msgstr "Nuovo aggiornamento disponibile. Clicca sul pulsante sottostante per aggiornare alla versione: %(version)s"
#: cps/updater.py:423 #: cps/updater.py:424
msgid "Click on the button below to update to the latest stable version." msgid "Click on the button below to update to the latest stable version."
msgstr "" msgstr ""
#: cps/web.py:460 #: cps/web.py:459
msgid "Recently Added Books" msgid "Recently Added Books"
msgstr "Libri aggiunti di recente" msgstr "Libri aggiunti di recente"
#: cps/web.py:488 #: cps/web.py:487
msgid "Best rated books" msgid "Best rated books"
msgstr "I libri con le migliori valutazioni" msgstr "I libri con le migliori valutazioni"
#: cps/templates/index.xml:38 cps/web.py:496 #: cps/templates/index.xml:38 cps/web.py:495
msgid "Random Books" msgid "Random Books"
msgstr "Libri a caso" msgstr "Libri a caso"
#: cps/web.py:522 #: cps/web.py:521
msgid "Books" msgid "Books"
msgstr "" msgstr ""
#: cps/web.py:549 #: cps/web.py:548
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "I libri più richiesti" msgstr "I libri più richiesti"
#: cps/web.py:560 cps/web.py:1300 cps/web.py:1388 #: cps/web.py:559 cps/web.py:1320 cps/web.py:1408
msgid "Error opening eBook. File does not exist or file is not accessible:" 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:" msgstr "Errore durante l'apertura del libro. Il file non esiste o il file non è accessibile:"
#: cps/web.py:573 #: cps/web.py:572
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "" msgstr ""
#: cps/web.py:585 #: cps/web.py:584
#, python-format #, python-format
msgid "Publisher: %(name)s" msgid "Publisher: %(name)s"
msgstr "Editore: %(name)s" msgstr "Editore: %(name)s"
#: cps/web.py:596 #: cps/web.py:595
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "Serie: %(serie)s" msgstr "Serie: %(serie)s"
#: cps/web.py:607 #: cps/web.py:606
#, python-format #, python-format
msgid "Rating: %(rating)s stars" msgid "Rating: %(rating)s stars"
msgstr "" msgstr ""
#: cps/web.py:618 #: cps/web.py:617
#, python-format #, python-format
msgid "File format: %(format)s" msgid "File format: %(format)s"
msgstr "" msgstr ""
#: cps/web.py:630 #: cps/web.py:629
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "Categoria: %(name)s" msgstr "Categoria: %(name)s"
#: cps/web.py:647 #: cps/web.py:646
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "Lingua: %(name)s" msgstr "Lingua: %(name)s"
#: cps/web.py:679 #: cps/web.py:678
msgid "Publisher list" msgid "Publisher list"
msgstr "Lista degli editori" msgstr "Lista degli editori"
#: cps/templates/index.xml:82 cps/web.py:695 #: cps/templates/index.xml:82 cps/web.py:694
msgid "Series list" msgid "Series list"
msgstr "Lista delle serie" msgstr "Lista delle serie"
#: cps/web.py:709 #: cps/web.py:708
msgid "Ratings list" msgid "Ratings list"
msgstr "" msgstr ""
#: cps/web.py:722 #: cps/web.py:721
msgid "File formats list" msgid "File formats list"
msgstr "" msgstr ""
#: cps/web.py:750 #: cps/web.py:749
msgid "Available languages" msgid "Available languages"
msgstr "Lingue disponibili" msgstr "Lingue disponibili"
#: cps/templates/index.xml:75 cps/web.py:767 #: cps/templates/index.xml:75 cps/web.py:766
msgid "Category list" msgid "Category list"
msgstr "Elenco categorie" msgstr "Elenco categorie"
#: cps/templates/layout.html:73 cps/web.py:781 #: cps/templates/layout.html:73 cps/web.py:780
msgid "Tasks" msgid "Tasks"
msgstr "Compito" msgstr "Compito"
#: cps/web.py:846 #: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45 cps/web.py:802 cps/web.py:804
msgid "Search"
msgstr "Cerca"
#: cps/web.py:851
msgid "Published after " msgid "Published after "
msgstr "Pubblicato dopo " msgstr "Pubblicato dopo "
#: cps/web.py:853 #: cps/web.py:858
msgid "Published before " msgid "Published before "
msgstr "Pubblicato prima " msgstr "Pubblicato prima "
#: cps/web.py:867 #: cps/web.py:872
#, python-format #, python-format
msgid "Rating <= %(rating)s" msgid "Rating <= %(rating)s"
msgstr "Valutazione <= %(rating)s" msgstr "Valutazione <= %(rating)s"
#: cps/web.py:869 #: cps/web.py:874
#, python-format #, python-format
msgid "Rating >= %(rating)s" msgid "Rating >= %(rating)s"
msgstr "Valutazione >= %(rating)s" msgstr "Valutazione >= %(rating)s"
#: cps/web.py:929 cps/web.py:939 #: cps/web.py:934 cps/web.py:944
msgid "search" msgid "search"
msgstr "ricerca" msgstr "ricerca"
#: cps/web.py:1022 #: cps/web.py:1027
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "Configurare dapprima le impostazioni del server SMTP..." msgstr "Configurare dapprima le impostazioni del server SMTP..."
#: cps/web.py:1027 #: cps/web.py:1032
#, python-format #, python-format
msgid "Book successfully queued for sending to %(kindlemail)s" msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Libro accodato con successo per essere spedito a %(kindlemail)s" msgstr "Libro accodato con successo per essere spedito a %(kindlemail)s"
#: cps/web.py:1031 #: cps/web.py:1036
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "Si è verificato un errore durante l'invio di questo libro: %(res)s" msgstr "Si è verificato un errore durante l'invio di questo libro: %(res)s"
#: cps/web.py:1051 cps/web.py:1076 cps/web.py:1080 cps/web.py:1085 #: cps/web.py:1056 cps/web.py:1081 cps/web.py:1085 cps/web.py:1090
#: cps/web.py:1089 #: cps/web.py:1094
msgid "register" msgid "register"
msgstr "registra" msgstr "registra"
#: cps/web.py:1078 #: cps/web.py:1083
msgid "Your e-mail is not allowed to register" msgid "Your e-mail is not allowed to register"
msgstr "Il tuo e-mail non può essere utilizzato per la registrazione" msgstr "Il tuo e-mail non può essere utilizzato per la registrazione"
#: cps/web.py:1081 #: cps/web.py:1086
msgid "Confirmation e-mail was send to your e-mail account." msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Un e-mail di conferma è stato inviato al tuo indirizzo." msgstr "Un e-mail di conferma è stato inviato al tuo indirizzo."
#: cps/web.py:1084 #: cps/web.py:1089
msgid "This username or e-mail address is already in use." msgid "This username or e-mail address is already in use."
msgstr "Questo nome di utente o questo e-mail sono già utilizzati." msgstr "Questo nome di utente o questo e-mail sono già utilizzati."
#: cps/web.py:1099 #: cps/web.py:1104
msgid "Cannot activate LDAP authentication" msgid "Cannot activate LDAP authentication"
msgstr "" msgstr ""
#: cps/web.py:1108 cps/web.py:1214 #: cps/web.py:1113 cps/web.py:1219
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "ora sei connesso come: '%(nickname)s'" msgstr "ora sei connesso come: '%(nickname)s'"
#: cps/web.py:1112 #: cps/web.py:1117
msgid "Could not login. LDAP server down, please contact your administrator" msgid "Could not login. LDAP server down, please contact your administrator"
msgstr "" msgstr ""
#: cps/web.py:1116 cps/web.py:1124 #: cps/web.py:1121 cps/web.py:1129
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "Nome utente o password errati" msgstr "Nome utente o password errati"
#: cps/web.py:1120 #: cps/web.py:1125
#, python-format #, python-format
msgid "You are now logged in as: '%(nickname)s'" msgid "You are now logged in as: '%(nickname)s'"
msgstr "" msgstr ""
#: cps/web.py:1128 cps/web.py:1150 #: cps/web.py:1133 cps/web.py:1155
msgid "login" msgid "login"
msgstr "accedi" msgstr "accedi"
#: cps/web.py:1162 cps/web.py:1193 #: cps/web.py:1167 cps/web.py:1198
msgid "Token not found" msgid "Token not found"
msgstr "Token non trovato" msgstr "Token non trovato"
#: cps/web.py:1170 cps/web.py:1201 #: cps/web.py:1175 cps/web.py:1206
msgid "Token has expired" msgid "Token has expired"
msgstr "Il token è scaduto" msgstr "Il token è scaduto"
#: cps/web.py:1178 #: cps/web.py:1183
msgid "Success! Please return to your device" msgid "Success! Please return to your device"
msgstr "Successo! Torna al tuo dispositivo" msgstr "Successo! Torna al tuo dispositivo"
#: cps/web.py:1255 cps/web.py:1282 cps/web.py:1286 #: cps/web.py:1260 cps/web.py:1302 cps/web.py:1306
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "Profilo di %(name)s" msgstr "Profilo di %(name)s"
#: cps/web.py:1284 #: cps/web.py:1304
msgid "Profile updated" msgid "Profile updated"
msgstr "Profilo aggiornato" msgstr "Profilo aggiornato"
#: cps/web.py:1310 cps/web.py:1312 cps/web.py:1314 cps/web.py:1320 #: cps/web.py:1330 cps/web.py:1332 cps/web.py:1334 cps/web.py:1340
#: cps/web.py:1324 #: cps/web.py:1344
msgid "Read a Book" msgid "Read a Book"
msgstr "Leggere un libro" msgstr "Leggere un libro"
#: cps/web.py:1334 #: cps/web.py:1354
msgid "Error opening eBook. File does not exist or file is not accessible." msgid "Error opening eBook. File does not exist or file is not accessible."
msgstr "" msgstr ""
@ -1055,7 +1066,7 @@ msgstr "Ok"
#: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147 #: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74
#: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/layout.html:28 cps/templates/shelf.html:73
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
#: cps/templates/user_edit.html:132 #: cps/templates/user_edit.html:132
msgid "Back" msgid "Back"
msgstr "Indietro" msgstr "Indietro"
@ -1689,11 +1700,6 @@ msgstr "Vuoi veramente eliminare questa regola di dominio?"
msgid "Next" msgid "Next"
msgstr "Prossimo" msgstr "Prossimo"
#: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45
msgid "Search"
msgstr "Cerca"
#: cps/templates/http_error.html:37 #: cps/templates/http_error.html:37
msgid "Create issue" msgid "Create issue"
msgstr "" msgstr ""
@ -2053,7 +2059,7 @@ msgstr "Cancellare questo scaffale"
msgid "Edit Shelf" msgid "Edit Shelf"
msgstr "Modifica scaffale" msgstr "Modifica scaffale"
#: cps/templates/shelf.html:12 cps/templates/shelf_order.html:11 #: cps/templates/shelf.html:12 cps/templates/shelf_order.html:31
msgid "Change order" msgid "Change order"
msgstr "Cambia ordine" msgstr "Cambia ordine"

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2019-09-06 19:03+0200\n" "POT-Creation-Date: 2019-11-16 08:00+0100\n"
"PO-Revision-Date: 2018-02-07 02:20-0500\n" "PO-Revision-Date: 2018-02-07 02:20-0500\n"
"Last-Translator: white <space_white@yahoo.com>\n" "Last-Translator: white <space_white@yahoo.com>\n"
"Language: ja\n" "Language: ja\n"
@ -18,17 +18,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n" "Generated-By: Babel 2.7.0\n"
#: cps/about.py:40 cps/about.py:65 cps/about.py:66 cps/uploader.py:228 #: cps/about.py:41
msgid "installed" msgid "installed"
msgstr "" msgstr ""
#: cps/about.py:42 cps/about.py:65 cps/about.py:66 cps/uploader.py:213 #: cps/about.py:43
#: cps/uploader.py:214 cps/uploader.py:218 cps/uploader.py:222
#: cps/uploader.py:226 cps/uploader.py:230
msgid "not installed" msgid "not installed"
msgstr "インストールされていません" msgstr "インストールされていません"
#: cps/about.py:80 #: cps/about.py:81
msgid "Statistics" msgid "Statistics"
msgstr "統計" msgstr "統計"
@ -40,7 +38,7 @@ msgstr "サーバを再起動しました。ページを再読み込みしてく
msgid "Performing shutdown of server, please close window" msgid "Performing shutdown of server, please close window"
msgstr "サーバをシャットダウンしています。ページを閉じてください" msgstr "サーバをシャットダウンしています。ページを閉じてください"
#: cps/admin.py:111 cps/updater.py:445 #: cps/admin.py:111 cps/updater.py:446
msgid "Unknown" msgid "Unknown"
msgstr "不明" msgstr "不明"
@ -60,7 +58,7 @@ msgstr "Calibre-Web の設定を更新しました"
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "基本設定" msgstr "基本設定"
#: cps/admin.py:452 cps/web.py:1050 #: cps/admin.py:452 cps/web.py:1055
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "全ての項目を入力してください" msgstr "全ての項目を入力してください"
@ -69,7 +67,7 @@ msgstr "全ての項目を入力してください"
msgid "Add new user" msgid "Add new user"
msgstr "新規ユーザ追加" msgstr "新規ユーザ追加"
#: cps/admin.py:463 cps/web.py:1253 #: cps/admin.py:463 cps/web.py:1258
msgid "E-mail is not from valid domain" msgid "E-mail is not from valid domain"
msgstr "このメールは有効なドメインからのものではありません" msgstr "このメールは有効なドメインからのものではありません"
@ -96,7 +94,7 @@ msgstr "テストメールが %(kindlemail)s に送信されました"
msgid "There was an error sending the Test e-mail: %(res)s" msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "テストメールを %(res)s に送信中にエラーが発生しました" msgstr "テストメールを %(res)s に送信中にエラーが発生しました"
#: cps/admin.py:527 cps/web.py:1033 #: cps/admin.py:527 cps/web.py:1038
msgid "Please configure your kindle e-mail address first..." msgid "Please configure your kindle e-mail address first..."
msgstr "初めにKindleのメールアドレスを設定してください" msgstr "初めにKindleのメールアドレスを設定してください"
@ -113,85 +111,93 @@ msgstr "ユーザ '%(nick)s' を削除しました"
msgid "No admin user remaining, can't delete user" msgid "No admin user remaining, can't delete user"
msgstr "" msgstr ""
#: cps/admin.py:600 cps/web.py:1279 #: cps/admin.py:599 cps/web.py:1299
msgid "Found an existing account for this e-mail address." msgid "Found an existing account for this e-mail address."
msgstr "このメールアドレスで登録されたアカウントがあります" msgstr "このメールアドレスで登録されたアカウントがあります"
#: cps/admin.py:603 cps/admin.py:615 #: cps/admin.py:602 cps/admin.py:615 cps/admin.py:629 cps/web.py:1274
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "%(nick)s を編集" msgstr "%(nick)s を編集"
#: cps/admin.py:609 #: cps/admin.py:608 cps/web.py:1267
msgid "This username is already taken"
msgstr ""
#: cps/admin.py:623
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "ユーザ '%(nick)s' を更新しました" msgstr "ユーザ '%(nick)s' を更新しました"
#: cps/admin.py:612 #: cps/admin.py:626
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "不明なエラーが発生しました。" msgstr "不明なエラーが発生しました。"
#: cps/admin.py:631 #: cps/admin.py:645
#, python-format #, python-format
msgid "Password for user %(user)s reset" msgid "Password for user %(user)s reset"
msgstr "%(user)s 用のパスワードをリセット" msgstr "%(user)s 用のパスワードをリセット"
#: cps/admin.py:634 cps/web.py:1075 #: cps/admin.py:648 cps/web.py:1080
msgid "An unknown error occurred. Please try again later." msgid "An unknown error occurred. Please try again later."
msgstr "不明なエラーが発生しました。あとで再試行してください。" msgstr "不明なエラーが発生しました。あとで再試行してください。"
#: cps/admin.py:645 #: cps/admin.py:659
msgid "Logfile viewer" msgid "Logfile viewer"
msgstr "" msgstr ""
#: cps/admin.py:680 #: cps/admin.py:694
msgid "Requesting update package" msgid "Requesting update package"
msgstr "更新データを要求中" msgstr "更新データを要求中"
#: cps/admin.py:681 #: cps/admin.py:695
msgid "Downloading update package" msgid "Downloading update package"
msgstr "更新データをダウンロード中" msgstr "更新データをダウンロード中"
#: cps/admin.py:682 #: cps/admin.py:696
msgid "Unzipping update package" msgid "Unzipping update package"
msgstr "更新データを展開中" msgstr "更新データを展開中"
#: cps/admin.py:683 #: cps/admin.py:697
msgid "Replacing files" msgid "Replacing files"
msgstr "ファイルを置換中" msgstr "ファイルを置換中"
#: cps/admin.py:684 #: cps/admin.py:698
msgid "Database connections are closed" msgid "Database connections are closed"
msgstr "データベースの接続を切断完了" msgstr "データベースの接続を切断完了"
#: cps/admin.py:685 #: cps/admin.py:699
msgid "Stopping server" msgid "Stopping server"
msgstr "サーバ停止中" msgstr "サーバ停止中"
#: cps/admin.py:686 #: cps/admin.py:700
msgid "Update finished, please press okay and reload page" msgid "Update finished, please press okay and reload page"
msgstr "アップデート完了、OKを押してページをリロードしてください" msgstr "アップデート完了、OKを押してページをリロードしてください"
#: cps/admin.py:687 cps/admin.py:688 cps/admin.py:689 cps/admin.py:690 #: cps/admin.py:701 cps/admin.py:702 cps/admin.py:703 cps/admin.py:704
msgid "Update failed:" msgid "Update failed:"
msgstr "アップデート失敗:" msgstr "アップデート失敗:"
#: cps/admin.py:687 cps/updater.py:271 cps/updater.py:456 cps/updater.py:458 #: cps/admin.py:701 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459
msgid "HTTP Error" msgid "HTTP Error"
msgstr "HTTPエラー" msgstr "HTTPエラー"
#: cps/admin.py:688 cps/updater.py:273 cps/updater.py:460 #: cps/admin.py:702 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "接続エラー" msgstr "接続エラー"
#: cps/admin.py:689 cps/updater.py:275 cps/updater.py:462 #: cps/admin.py:703 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
msgstr "接続を確立中にタイムアウトしました" msgstr "接続を確立中にタイムアウトしました"
#: cps/admin.py:690 cps/updater.py:277 cps/updater.py:464 #: cps/admin.py:704 cps/updater.py:278 cps/updater.py:465
msgid "General error" msgid "General error"
msgstr "エラー発生" msgstr "エラー発生"
#: cps/converter.py:31
msgid "not configured"
msgstr ""
#: cps/editbooks.py:214 cps/editbooks.py:393 #: cps/editbooks.py:214 cps/editbooks.py:393
msgid "Error opening eBook. File does not exist or file is not accessible" msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "電子書籍を開けません。ファイルが存在しないかアクセスできません" msgstr "電子書籍を開けません。ファイルが存在しないかアクセスできません"
@ -575,7 +581,7 @@ msgid "Show best rated books"
msgstr "評価が高い本を表示" msgstr "評価が高い本を表示"
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67 #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
#: cps/web.py:971 #: cps/web.py:976
msgid "Read Books" msgid "Read Books"
msgstr "読んだ本" msgstr "読んだ本"
@ -584,7 +590,7 @@ msgid "Show read and unread"
msgstr "既読の本と未読の本を表示" msgstr "既読の本と未読の本を表示"
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71 #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
#: cps/web.py:975 #: cps/web.py:980
msgid "Unread Books" msgid "Unread Books"
msgstr "未読の本" msgstr "未読の本"
@ -657,228 +663,233 @@ msgstr ""
msgid "Show file formats selection" msgid "Show file formats selection"
msgstr "" msgstr ""
#: cps/updater.py:251 cps/updater.py:358 cps/updater.py:371 #: cps/updater.py:252 cps/updater.py:359 cps/updater.py:372
msgid "Unexpected data while reading update information" msgid "Unexpected data while reading update information"
msgstr "アップデート情報を読み込み中に予期しないデータが見つかりました" msgstr "アップデート情報を読み込み中に予期しないデータが見つかりました"
#: cps/updater.py:258 cps/updater.py:364 #: cps/updater.py:259 cps/updater.py:365
msgid "No update available. You already have the latest version installed" msgid "No update available. You already have the latest version installed"
msgstr "アップデートはありません。すでに最新バージョンがインストールされています" msgstr "アップデートはありません。すでに最新バージョンがインストールされています"
#: cps/updater.py:284 #: cps/updater.py:285
msgid "A new update is available. Click on the button below to update to the latest version." msgid "A new update is available. Click on the button below to update to the latest version."
msgstr "アップデートが利用可能です。下のボタンをクリックして最新バージョンにアップデートしてください。" msgstr "アップデートが利用可能です。下のボタンをクリックして最新バージョンにアップデートしてください。"
#: cps/updater.py:337 #: cps/updater.py:338
msgid "Could not fetch update information" msgid "Could not fetch update information"
msgstr "アップデート情報を取得できません" msgstr "アップデート情報を取得できません"
#: cps/updater.py:351 #: cps/updater.py:352
msgid "No release information available" msgid "No release information available"
msgstr "リリース情報がありません" msgstr "リリース情報がありません"
#: cps/updater.py:404 cps/updater.py:413 #: cps/updater.py:405 cps/updater.py:414
#, python-format #, python-format
msgid "A new update is available. Click on the button below to update to version: %(version)s" msgid "A new update is available. Click on the button below to update to version: %(version)s"
msgstr "アップデートが利用可能です。下のボタンをクリックしてバージョン: %(version)s にアップデートしてください。" msgstr "アップデートが利用可能です。下のボタンをクリックしてバージョン: %(version)s にアップデートしてください。"
#: cps/updater.py:423 #: cps/updater.py:424
msgid "Click on the button below to update to the latest stable version." msgid "Click on the button below to update to the latest stable version."
msgstr "" msgstr ""
#: cps/web.py:460 #: cps/web.py:459
msgid "Recently Added Books" msgid "Recently Added Books"
msgstr "最近追加された本" msgstr "最近追加された本"
#: cps/web.py:488 #: cps/web.py:487
msgid "Best rated books" msgid "Best rated books"
msgstr "高評価" msgstr "高評価"
#: cps/templates/index.xml:38 cps/web.py:496 #: cps/templates/index.xml:38 cps/web.py:495
msgid "Random Books" msgid "Random Books"
msgstr "ランダム" msgstr "ランダム"
#: cps/web.py:522 #: cps/web.py:521
msgid "Books" msgid "Books"
msgstr "" msgstr ""
#: cps/web.py:549 #: cps/web.py:548
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "話題(ダウンロード数順)" msgstr "話題(ダウンロード数順)"
#: cps/web.py:560 cps/web.py:1300 cps/web.py:1388 #: cps/web.py:559 cps/web.py:1320 cps/web.py:1408
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "電子書籍を開けません。ファイルが存在しないかアクセスできません:" msgstr "電子書籍を開けません。ファイルが存在しないかアクセスできません:"
#: cps/web.py:573 #: cps/web.py:572
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "" msgstr ""
#: cps/web.py:585 #: cps/web.py:584
#, python-format #, python-format
msgid "Publisher: %(name)s" msgid "Publisher: %(name)s"
msgstr "出版社: %(name)s" msgstr "出版社: %(name)s"
#: cps/web.py:596 #: cps/web.py:595
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "シリーズ: %(serie)s" msgstr "シリーズ: %(serie)s"
#: cps/web.py:607 #: cps/web.py:606
#, python-format #, python-format
msgid "Rating: %(rating)s stars" msgid "Rating: %(rating)s stars"
msgstr "" msgstr ""
#: cps/web.py:618 #: cps/web.py:617
#, python-format #, python-format
msgid "File format: %(format)s" msgid "File format: %(format)s"
msgstr "" msgstr ""
#: cps/web.py:630 #: cps/web.py:629
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "カテゴリ: %(name)s" msgstr "カテゴリ: %(name)s"
#: cps/web.py:647 #: cps/web.py:646
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "言語: %(name)s" msgstr "言語: %(name)s"
#: cps/web.py:679 #: cps/web.py:678
msgid "Publisher list" msgid "Publisher list"
msgstr "出版社一覧" msgstr "出版社一覧"
#: cps/templates/index.xml:82 cps/web.py:695 #: cps/templates/index.xml:82 cps/web.py:694
msgid "Series list" msgid "Series list"
msgstr "シリーズ一覧" msgstr "シリーズ一覧"
#: cps/web.py:709 #: cps/web.py:708
msgid "Ratings list" msgid "Ratings list"
msgstr "" msgstr ""
#: cps/web.py:722 #: cps/web.py:721
msgid "File formats list" msgid "File formats list"
msgstr "" msgstr ""
#: cps/web.py:750 #: cps/web.py:749
msgid "Available languages" msgid "Available languages"
msgstr "言語" msgstr "言語"
#: cps/templates/index.xml:75 cps/web.py:767 #: cps/templates/index.xml:75 cps/web.py:766
msgid "Category list" msgid "Category list"
msgstr "カテゴリ一覧" msgstr "カテゴリ一覧"
#: cps/templates/layout.html:73 cps/web.py:781 #: cps/templates/layout.html:73 cps/web.py:780
msgid "Tasks" msgid "Tasks"
msgstr "タスク" msgstr "タスク"
#: cps/web.py:846 #: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45 cps/web.py:802 cps/web.py:804
msgid "Search"
msgstr "検索"
#: cps/web.py:851
msgid "Published after " msgid "Published after "
msgstr "これ以降に出版 " msgstr "これ以降に出版 "
#: cps/web.py:853 #: cps/web.py:858
msgid "Published before " msgid "Published before "
msgstr "これ以前に出版 " msgstr "これ以前に出版 "
#: cps/web.py:867 #: cps/web.py:872
#, python-format #, python-format
msgid "Rating <= %(rating)s" msgid "Rating <= %(rating)s"
msgstr "評価 <= %(rating)s" msgstr "評価 <= %(rating)s"
#: cps/web.py:869 #: cps/web.py:874
#, python-format #, python-format
msgid "Rating >= %(rating)s" msgid "Rating >= %(rating)s"
msgstr "評価 >= %(rating)s" msgstr "評価 >= %(rating)s"
#: cps/web.py:929 cps/web.py:939 #: cps/web.py:934 cps/web.py:944
msgid "search" msgid "search"
msgstr "検索" msgstr "検索"
#: cps/web.py:1022 #: cps/web.py:1027
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "初めにSMTPメールの設定をしてください" msgstr "初めにSMTPメールの設定をしてください"
#: cps/web.py:1027 #: cps/web.py:1032
#, python-format #, python-format
msgid "Book successfully queued for sending to %(kindlemail)s" msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "本の %(kindlemail)s への送信がキューに追加されました" msgstr "本の %(kindlemail)s への送信がキューに追加されました"
#: cps/web.py:1031 #: cps/web.py:1036
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "%(res)s を送信中にエラーが発生しました" msgstr "%(res)s を送信中にエラーが発生しました"
#: cps/web.py:1051 cps/web.py:1076 cps/web.py:1080 cps/web.py:1085 #: cps/web.py:1056 cps/web.py:1081 cps/web.py:1085 cps/web.py:1090
#: cps/web.py:1089 #: cps/web.py:1094
msgid "register" msgid "register"
msgstr "登録" msgstr "登録"
#: cps/web.py:1078 #: cps/web.py:1083
msgid "Your e-mail is not allowed to register" msgid "Your e-mail is not allowed to register"
msgstr "このメールアドレスは登録が許可されていません" msgstr "このメールアドレスは登録が許可されていません"
#: cps/web.py:1081 #: cps/web.py:1086
msgid "Confirmation e-mail was send to your e-mail account." msgid "Confirmation e-mail was send to your e-mail account."
msgstr "確認メールがこのメールアドレスに送信されました。" msgstr "確認メールがこのメールアドレスに送信されました。"
#: cps/web.py:1084 #: cps/web.py:1089
msgid "This username or e-mail address is already in use." msgid "This username or e-mail address is already in use."
msgstr "このユーザ名またはメールアドレスはすでに使われています。" msgstr "このユーザ名またはメールアドレスはすでに使われています。"
#: cps/web.py:1099 #: cps/web.py:1104
msgid "Cannot activate LDAP authentication" msgid "Cannot activate LDAP authentication"
msgstr "" msgstr ""
#: cps/web.py:1108 cps/web.py:1214 #: cps/web.py:1113 cps/web.py:1219
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "%(nickname)s としてログイン中" msgstr "%(nickname)s としてログイン中"
#: cps/web.py:1112 #: cps/web.py:1117
msgid "Could not login. LDAP server down, please contact your administrator" msgid "Could not login. LDAP server down, please contact your administrator"
msgstr "" msgstr ""
#: cps/web.py:1116 cps/web.py:1124 #: cps/web.py:1121 cps/web.py:1129
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "ユーザ名またはパスワードが違います" msgstr "ユーザ名またはパスワードが違います"
#: cps/web.py:1120 #: cps/web.py:1125
#, python-format #, python-format
msgid "You are now logged in as: '%(nickname)s'" msgid "You are now logged in as: '%(nickname)s'"
msgstr "" msgstr ""
#: cps/web.py:1128 cps/web.py:1150 #: cps/web.py:1133 cps/web.py:1155
msgid "login" msgid "login"
msgstr "ログイン" msgstr "ログイン"
#: cps/web.py:1162 cps/web.py:1193 #: cps/web.py:1167 cps/web.py:1198
msgid "Token not found" msgid "Token not found"
msgstr "トークンが見つかりません" msgstr "トークンが見つかりません"
#: cps/web.py:1170 cps/web.py:1201 #: cps/web.py:1175 cps/web.py:1206
msgid "Token has expired" msgid "Token has expired"
msgstr "トークンが無効です" msgstr "トークンが無効です"
#: cps/web.py:1178 #: cps/web.py:1183
msgid "Success! Please return to your device" msgid "Success! Please return to your device"
msgstr "成功です!端末に戻ってください" msgstr "成功です!端末に戻ってください"
#: cps/web.py:1255 cps/web.py:1282 cps/web.py:1286 #: cps/web.py:1260 cps/web.py:1302 cps/web.py:1306
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "%(name)s のプロフィール" msgstr "%(name)s のプロフィール"
#: cps/web.py:1284 #: cps/web.py:1304
msgid "Profile updated" msgid "Profile updated"
msgstr "プロフィールを更新しました" msgstr "プロフィールを更新しました"
#: cps/web.py:1310 cps/web.py:1312 cps/web.py:1314 cps/web.py:1320 #: cps/web.py:1330 cps/web.py:1332 cps/web.py:1334 cps/web.py:1340
#: cps/web.py:1324 #: cps/web.py:1344
msgid "Read a Book" msgid "Read a Book"
msgstr "本を読む" msgstr "本を読む"
#: cps/web.py:1334 #: cps/web.py:1354
msgid "Error opening eBook. File does not exist or file is not accessible." msgid "Error opening eBook. File does not exist or file is not accessible."
msgstr "" msgstr ""
@ -1056,7 +1067,7 @@ msgstr "はい"
#: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147 #: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74
#: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/layout.html:28 cps/templates/shelf.html:73
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
#: cps/templates/user_edit.html:132 #: cps/templates/user_edit.html:132
msgid "Back" msgid "Back"
msgstr "戻る" msgstr "戻る"
@ -1690,11 +1701,6 @@ msgstr "このドメインルールを削除してもよろしいですか?"
msgid "Next" msgid "Next"
msgstr "次" msgstr "次"
#: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45
msgid "Search"
msgstr "検索"
#: cps/templates/http_error.html:37 #: cps/templates/http_error.html:37
msgid "Create issue" msgid "Create issue"
msgstr "" msgstr ""
@ -2054,7 +2060,7 @@ msgstr "この本棚を削除"
msgid "Edit Shelf" msgid "Edit Shelf"
msgstr "本棚を編集" msgstr "本棚を編集"
#: cps/templates/shelf.html:12 cps/templates/shelf_order.html:11 #: cps/templates/shelf.html:12 cps/templates/shelf_order.html:31
msgid "Change order" msgid "Change order"
msgstr "順番を変更" msgstr "順番を変更"

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2019-09-06 19:03+0200\n" "POT-Creation-Date: 2019-11-16 08:00+0100\n"
"PO-Revision-Date: 2018-08-27 17:06+0700\n" "PO-Revision-Date: 2018-08-27 17:06+0700\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language: km_KH\n" "Language: km_KH\n"
@ -19,17 +19,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n" "Generated-By: Babel 2.7.0\n"
#: cps/about.py:40 cps/about.py:65 cps/about.py:66 cps/uploader.py:228 #: cps/about.py:41
msgid "installed" msgid "installed"
msgstr "" msgstr ""
#: cps/about.py:42 cps/about.py:65 cps/about.py:66 cps/uploader.py:213 #: cps/about.py:43
#: cps/uploader.py:214 cps/uploader.py:218 cps/uploader.py:222
#: cps/uploader.py:226 cps/uploader.py:230
msgid "not installed" msgid "not installed"
msgstr "មិនបានតម្លើង" msgstr "មិនបានតម្លើង"
#: cps/about.py:80 #: cps/about.py:81
msgid "Statistics" msgid "Statistics"
msgstr "ស្ថិតិ" msgstr "ស្ថិតិ"
@ -41,7 +39,7 @@ msgstr "ម៉ាស៊ីន server បានដំណើរការម្ត
msgid "Performing shutdown of server, please close window" msgid "Performing shutdown of server, please close window"
msgstr "កំពុងបិទម៉ាស៊ីន server សូមបិទផ្ទាំងនេះ" msgstr "កំពុងបិទម៉ាស៊ីន server សូមបិទផ្ទាំងនេះ"
#: cps/admin.py:111 cps/updater.py:445 #: cps/admin.py:111 cps/updater.py:446
msgid "Unknown" msgid "Unknown"
msgstr "មិនដឹង" msgstr "មិនដឹង"
@ -61,7 +59,7 @@ msgstr ""
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "ការកំណត់សាមញ្ញ" msgstr "ការកំណត់សាមញ្ញ"
#: cps/admin.py:452 cps/web.py:1050 #: cps/admin.py:452 cps/web.py:1055
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "សូមបំពេញចន្លោះទាំងអស់!" msgstr "សូមបំពេញចន្លោះទាំងអស់!"
@ -70,7 +68,7 @@ msgstr "សូមបំពេញចន្លោះទាំងអស់!"
msgid "Add new user" msgid "Add new user"
msgstr "បន្ថែមអ្នកប្រើប្រាស់ថ្មី" msgstr "បន្ថែមអ្នកប្រើប្រាស់ថ្មី"
#: cps/admin.py:463 cps/web.py:1253 #: cps/admin.py:463 cps/web.py:1258
msgid "E-mail is not from valid domain" msgid "E-mail is not from valid domain"
msgstr "" msgstr ""
@ -97,7 +95,7 @@ msgstr ""
msgid "There was an error sending the Test e-mail: %(res)s" msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "" msgstr ""
#: cps/admin.py:527 cps/web.py:1033 #: cps/admin.py:527 cps/web.py:1038
msgid "Please configure your kindle e-mail address first..." msgid "Please configure your kindle e-mail address first..."
msgstr "" msgstr ""
@ -114,85 +112,93 @@ msgstr "អ្នកប្រើប្រាស់ %(nick)s ត្រូ
msgid "No admin user remaining, can't delete user" msgid "No admin user remaining, can't delete user"
msgstr "" msgstr ""
#: cps/admin.py:600 cps/web.py:1279 #: cps/admin.py:599 cps/web.py:1299
msgid "Found an existing account for this e-mail address." msgid "Found an existing account for this e-mail address."
msgstr "" msgstr ""
#: cps/admin.py:603 cps/admin.py:615 #: cps/admin.py:602 cps/admin.py:615 cps/admin.py:629 cps/web.py:1274
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "កែប្រែអ្នកប្រើប្រាស់ %(nick)s" msgstr "កែប្រែអ្នកប្រើប្រាស់ %(nick)s"
#: cps/admin.py:609 #: cps/admin.py:608 cps/web.py:1267
msgid "This username is already taken"
msgstr ""
#: cps/admin.py:623
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "អ្នកប្រើប្រាស់ %(nick)s ត្រូវបានកែប្រែ" msgstr "អ្នកប្រើប្រាស់ %(nick)s ត្រូវបានកែប្រែ"
#: cps/admin.py:612 #: cps/admin.py:626
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "បញ្ហាដែលមិនដឹងបានកើតឡើង។" msgstr "បញ្ហាដែលមិនដឹងបានកើតឡើង។"
#: cps/admin.py:631 #: cps/admin.py:645
#, python-format #, python-format
msgid "Password for user %(user)s reset" msgid "Password for user %(user)s reset"
msgstr "" msgstr ""
#: cps/admin.py:634 cps/web.py:1075 #: cps/admin.py:648 cps/web.py:1080
msgid "An unknown error occurred. Please try again later." msgid "An unknown error occurred. Please try again later."
msgstr "" msgstr ""
#: cps/admin.py:645 #: cps/admin.py:659
msgid "Logfile viewer" msgid "Logfile viewer"
msgstr "" msgstr ""
#: cps/admin.py:680 #: cps/admin.py:694
msgid "Requesting update package" msgid "Requesting update package"
msgstr "កំពុងស្នើសុំឯកសារបច្ចុប្បន្នភាព" msgstr "កំពុងស្នើសុំឯកសារបច្ចុប្បន្នភាព"
#: cps/admin.py:681 #: cps/admin.py:695
msgid "Downloading update package" msgid "Downloading update package"
msgstr "កំពុងទាញយកឯកសារបច្ចុប្បន្នភាព" msgstr "កំពុងទាញយកឯកសារបច្ចុប្បន្នភាព"
#: cps/admin.py:682 #: cps/admin.py:696
msgid "Unzipping update package" msgid "Unzipping update package"
msgstr "កំពុងពន្លាឯកសារបច្ចុប្បន្នភាព" msgstr "កំពុងពន្លាឯកសារបច្ចុប្បន្នភាព"
#: cps/admin.py:683 #: cps/admin.py:697
msgid "Replacing files" msgid "Replacing files"
msgstr "" msgstr ""
#: cps/admin.py:684 #: cps/admin.py:698
msgid "Database connections are closed" msgid "Database connections are closed"
msgstr "ទំនាក់ទំនងទៅមូលដ្ឋានទិន្នន័យត្រូវបានផ្តាច់" msgstr "ទំនាក់ទំនងទៅមូលដ្ឋានទិន្នន័យត្រូវបានផ្តាច់"
#: cps/admin.py:685 #: cps/admin.py:699
msgid "Stopping server" msgid "Stopping server"
msgstr "" msgstr ""
#: cps/admin.py:686 #: cps/admin.py:700
msgid "Update finished, please press okay and reload page" msgid "Update finished, please press okay and reload page"
msgstr "ការធ្វើបច្ចុប្បន្នភាពបានបញ្ចប់ សូមចុច okay រួចបើកទំព័រជាថ្មី" msgstr "ការធ្វើបច្ចុប្បន្នភាពបានបញ្ចប់ សូមចុច okay រួចបើកទំព័រជាថ្មី"
#: cps/admin.py:687 cps/admin.py:688 cps/admin.py:689 cps/admin.py:690 #: cps/admin.py:701 cps/admin.py:702 cps/admin.py:703 cps/admin.py:704
msgid "Update failed:" msgid "Update failed:"
msgstr "" msgstr ""
#: cps/admin.py:687 cps/updater.py:271 cps/updater.py:456 cps/updater.py:458 #: cps/admin.py:701 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459
msgid "HTTP Error" msgid "HTTP Error"
msgstr "" msgstr ""
#: cps/admin.py:688 cps/updater.py:273 cps/updater.py:460 #: cps/admin.py:702 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "" msgstr ""
#: cps/admin.py:689 cps/updater.py:275 cps/updater.py:462 #: cps/admin.py:703 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
msgstr "" msgstr ""
#: cps/admin.py:690 cps/updater.py:277 cps/updater.py:464 #: cps/admin.py:704 cps/updater.py:278 cps/updater.py:465
msgid "General error" msgid "General error"
msgstr "" msgstr ""
#: cps/converter.py:31
msgid "not configured"
msgstr ""
#: cps/editbooks.py:214 cps/editbooks.py:393 #: cps/editbooks.py:214 cps/editbooks.py:393
msgid "Error opening eBook. File does not exist or file is not accessible" msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "មានបញ្ហាពេលបើកឯកសារ eBook ។ ពុំមានឯកសារ ឬឯកសារនេះមិនអាចបើកបាន" msgstr "មានបញ្ហាពេលបើកឯកសារ eBook ។ ពុំមានឯកសារ ឬឯកសារនេះមិនអាចបើកបាន"
@ -576,7 +582,7 @@ msgid "Show best rated books"
msgstr "បង្ហាញសៀវភៅដែលមានការវាយតម្លៃល្អជាងគេ" msgstr "បង្ហាញសៀវភៅដែលមានការវាយតម្លៃល្អជាងគេ"
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67 #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
#: cps/web.py:971 #: cps/web.py:976
msgid "Read Books" msgid "Read Books"
msgstr "សៀវភៅដែលបានអានរួច" msgstr "សៀវភៅដែលបានអានរួច"
@ -585,7 +591,7 @@ msgid "Show read and unread"
msgstr "បង្ហាញអានរួច និងមិនទាន់អាន" msgstr "បង្ហាញអានរួច និងមិនទាន់អាន"
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71 #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
#: cps/web.py:975 #: cps/web.py:980
msgid "Unread Books" msgid "Unread Books"
msgstr "សៀវភៅដែលមិនទាន់បានអាន" msgstr "សៀវភៅដែលមិនទាន់បានអាន"
@ -658,228 +664,233 @@ msgstr ""
msgid "Show file formats selection" msgid "Show file formats selection"
msgstr "" msgstr ""
#: cps/updater.py:251 cps/updater.py:358 cps/updater.py:371 #: cps/updater.py:252 cps/updater.py:359 cps/updater.py:372
msgid "Unexpected data while reading update information" msgid "Unexpected data while reading update information"
msgstr "" msgstr ""
#: cps/updater.py:258 cps/updater.py:364 #: cps/updater.py:259 cps/updater.py:365
msgid "No update available. You already have the latest version installed" msgid "No update available. You already have the latest version installed"
msgstr "" msgstr ""
#: cps/updater.py:284 #: cps/updater.py:285
msgid "A new update is available. Click on the button below to update to the latest version." msgid "A new update is available. Click on the button below to update to the latest version."
msgstr "" msgstr ""
#: cps/updater.py:337 #: cps/updater.py:338
msgid "Could not fetch update information" msgid "Could not fetch update information"
msgstr "" msgstr ""
#: cps/updater.py:351 #: cps/updater.py:352
msgid "No release information available" msgid "No release information available"
msgstr "" msgstr ""
#: cps/updater.py:404 cps/updater.py:413 #: cps/updater.py:405 cps/updater.py:414
#, python-format #, python-format
msgid "A new update is available. Click on the button below to update to version: %(version)s" msgid "A new update is available. Click on the button below to update to version: %(version)s"
msgstr "" msgstr ""
#: cps/updater.py:423 #: cps/updater.py:424
msgid "Click on the button below to update to the latest stable version." msgid "Click on the button below to update to the latest stable version."
msgstr "" msgstr ""
#: cps/web.py:460 #: cps/web.py:459
msgid "Recently Added Books" msgid "Recently Added Books"
msgstr "សៀវភៅដែលទើបបានបន្ថែម" msgstr "សៀវភៅដែលទើបបានបន្ថែម"
#: cps/web.py:488 #: cps/web.py:487
msgid "Best rated books" msgid "Best rated books"
msgstr "សៀវភៅដែលត្រូវបានវាយតម្លៃល្អជាងគេ" msgstr "សៀវភៅដែលត្រូវបានវាយតម្លៃល្អជាងគេ"
#: cps/templates/index.xml:38 cps/web.py:496 #: cps/templates/index.xml:38 cps/web.py:495
msgid "Random Books" msgid "Random Books"
msgstr "សៀវភៅចៃដន្យ" msgstr "សៀវភៅចៃដន្យ"
#: cps/web.py:522 #: cps/web.py:521
msgid "Books" msgid "Books"
msgstr "" msgstr ""
#: cps/web.py:549 #: cps/web.py:548
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "សៀវភៅដែលត្រូវបានទាញយកច្រើនជាងគេ" msgstr "សៀវភៅដែលត្រូវបានទាញយកច្រើនជាងគេ"
#: cps/web.py:560 cps/web.py:1300 cps/web.py:1388 #: cps/web.py:559 cps/web.py:1320 cps/web.py:1408
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "មានបញ្ហាពេលបើកឯកសារ eBook ។ មិនមានឯកសារនេះ ឬមិនអាចបើកបាន៖" msgstr "មានបញ្ហាពេលបើកឯកសារ eBook ។ មិនមានឯកសារនេះ ឬមិនអាចបើកបាន៖"
#: cps/web.py:573 #: cps/web.py:572
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "" msgstr ""
#: cps/web.py:585 #: cps/web.py:584
#, python-format #, python-format
msgid "Publisher: %(name)s" msgid "Publisher: %(name)s"
msgstr "" msgstr ""
#: cps/web.py:596 #: cps/web.py:595
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "ស៊េរី៖ %(serie)s" msgstr "ស៊េរី៖ %(serie)s"
#: cps/web.py:607 #: cps/web.py:606
#, python-format #, python-format
msgid "Rating: %(rating)s stars" msgid "Rating: %(rating)s stars"
msgstr "" msgstr ""
#: cps/web.py:618 #: cps/web.py:617
#, python-format #, python-format
msgid "File format: %(format)s" msgid "File format: %(format)s"
msgstr "" msgstr ""
#: cps/web.py:630 #: cps/web.py:629
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "ប្រភេទ៖ %(name)s" msgstr "ប្រភេទ៖ %(name)s"
#: cps/web.py:647 #: cps/web.py:646
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "ភាសា៖ %(name)s" msgstr "ភាសា៖ %(name)s"
#: cps/web.py:679 #: cps/web.py:678
msgid "Publisher list" msgid "Publisher list"
msgstr "" msgstr ""
#: cps/templates/index.xml:82 cps/web.py:695 #: cps/templates/index.xml:82 cps/web.py:694
msgid "Series list" msgid "Series list"
msgstr "បញ្ជីស៊េរី" msgstr "បញ្ជីស៊េរី"
#: cps/web.py:709 #: cps/web.py:708
msgid "Ratings list" msgid "Ratings list"
msgstr "" msgstr ""
#: cps/web.py:722 #: cps/web.py:721
msgid "File formats list" msgid "File formats list"
msgstr "" msgstr ""
#: cps/web.py:750 #: cps/web.py:749
msgid "Available languages" msgid "Available languages"
msgstr "ភាសាដែលមាន" msgstr "ភាសាដែលមាន"
#: cps/templates/index.xml:75 cps/web.py:767 #: cps/templates/index.xml:75 cps/web.py:766
msgid "Category list" msgid "Category list"
msgstr "បញ្ជីប្រភេទ" msgstr "បញ្ជីប្រភេទ"
#: cps/templates/layout.html:73 cps/web.py:781 #: cps/templates/layout.html:73 cps/web.py:780
msgid "Tasks" msgid "Tasks"
msgstr "កិច្ចការនានា" msgstr "កិច្ចការនានា"
#: cps/web.py:846 #: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45 cps/web.py:802 cps/web.py:804
msgid "Search"
msgstr "ស្វែងរក"
#: cps/web.py:851
msgid "Published after " msgid "Published after "
msgstr "បានបោះពុម្ភក្រោយ " msgstr "បានបោះពុម្ភក្រោយ "
#: cps/web.py:853 #: cps/web.py:858
msgid "Published before " msgid "Published before "
msgstr "បានបោះពុម្ភមុន " msgstr "បានបោះពុម្ភមុន "
#: cps/web.py:867 #: cps/web.py:872
#, python-format #, python-format
msgid "Rating <= %(rating)s" msgid "Rating <= %(rating)s"
msgstr "ការវាយតម្លៃ <= %(rating)s" msgstr "ការវាយតម្លៃ <= %(rating)s"
#: cps/web.py:869 #: cps/web.py:874
#, python-format #, python-format
msgid "Rating >= %(rating)s" msgid "Rating >= %(rating)s"
msgstr "ការវាយតម្លៃ >= %(rating)s" msgstr "ការវាយតម្លៃ >= %(rating)s"
#: cps/web.py:929 cps/web.py:939 #: cps/web.py:934 cps/web.py:944
msgid "search" msgid "search"
msgstr "ស្វែងរក" msgstr "ស្វែងរក"
#: cps/web.py:1022 #: cps/web.py:1027
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "សូមកំណត់អ៊ីមែល SMTP ជាមុនសិន" msgstr "សូមកំណត់អ៊ីមែល SMTP ជាមុនសិន"
#: cps/web.py:1027 #: cps/web.py:1032
#, python-format #, python-format
msgid "Book successfully queued for sending to %(kindlemail)s" msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "សៀវភៅបានចូលជួរសម្រាប់ផ្ញើទៅ %(kindlemail)s ដោយជោគជ័យ" msgstr "សៀវភៅបានចូលជួរសម្រាប់ផ្ញើទៅ %(kindlemail)s ដោយជោគជ័យ"
#: cps/web.py:1031 #: cps/web.py:1036
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "មានបញ្ហានៅពេលផ្ញើសៀវភៅនេះ៖ %(res)s" msgstr "មានបញ្ហានៅពេលផ្ញើសៀវភៅនេះ៖ %(res)s"
#: cps/web.py:1051 cps/web.py:1076 cps/web.py:1080 cps/web.py:1085 #: cps/web.py:1056 cps/web.py:1081 cps/web.py:1085 cps/web.py:1090
#: cps/web.py:1089 #: cps/web.py:1094
msgid "register" msgid "register"
msgstr "ចុះឈ្មោះ" msgstr "ចុះឈ្មោះ"
#: cps/web.py:1078 #: cps/web.py:1083
msgid "Your e-mail is not allowed to register" msgid "Your e-mail is not allowed to register"
msgstr "" msgstr ""
#: cps/web.py:1081 #: cps/web.py:1086
msgid "Confirmation e-mail was send to your e-mail account." msgid "Confirmation e-mail was send to your e-mail account."
msgstr "" msgstr ""
#: cps/web.py:1084 #: cps/web.py:1089
msgid "This username or e-mail address is already in use." msgid "This username or e-mail address is already in use."
msgstr "" msgstr ""
#: cps/web.py:1099 #: cps/web.py:1104
msgid "Cannot activate LDAP authentication" msgid "Cannot activate LDAP authentication"
msgstr "" msgstr ""
#: cps/web.py:1108 cps/web.py:1214 #: cps/web.py:1113 cps/web.py:1219
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "ឥឡូវអ្នកបានចូលដោយមានឈ្មោះថា៖ %(nickname)s" msgstr "ឥឡូវអ្នកបានចូលដោយមានឈ្មោះថា៖ %(nickname)s"
#: cps/web.py:1112 #: cps/web.py:1117
msgid "Could not login. LDAP server down, please contact your administrator" msgid "Could not login. LDAP server down, please contact your administrator"
msgstr "" msgstr ""
#: cps/web.py:1116 cps/web.py:1124 #: cps/web.py:1121 cps/web.py:1129
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "ខុសឈ្មោះអ្នកប្រើប្រាស់ ឬលេខសម្ងាត់" msgstr "ខុសឈ្មោះអ្នកប្រើប្រាស់ ឬលេខសម្ងាត់"
#: cps/web.py:1120 #: cps/web.py:1125
#, python-format #, python-format
msgid "You are now logged in as: '%(nickname)s'" msgid "You are now logged in as: '%(nickname)s'"
msgstr "" msgstr ""
#: cps/web.py:1128 cps/web.py:1150 #: cps/web.py:1133 cps/web.py:1155
msgid "login" msgid "login"
msgstr "ចូលប្រើ" msgstr "ចូលប្រើ"
#: cps/web.py:1162 cps/web.py:1193 #: cps/web.py:1167 cps/web.py:1198
msgid "Token not found" msgid "Token not found"
msgstr "រកមិនឃើញវត្ថុតាង" msgstr "រកមិនឃើញវត្ថុតាង"
#: cps/web.py:1170 cps/web.py:1201 #: cps/web.py:1175 cps/web.py:1206
msgid "Token has expired" msgid "Token has expired"
msgstr "វត្ថុតាងហួសពេលកំណត់" msgstr "វត្ថុតាងហួសពេលកំណត់"
#: cps/web.py:1178 #: cps/web.py:1183
msgid "Success! Please return to your device" msgid "Success! Please return to your device"
msgstr "ជោគជ័យ! សូមវិលមកឧបករណ៍អ្នកវិញ" msgstr "ជោគជ័យ! សូមវិលមកឧបករណ៍អ្នកវិញ"
#: cps/web.py:1255 cps/web.py:1282 cps/web.py:1286 #: cps/web.py:1260 cps/web.py:1302 cps/web.py:1306
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "ព័ត៌មានសង្ខេបរបស់ %(name)s" msgstr "ព័ត៌មានសង្ខេបរបស់ %(name)s"
#: cps/web.py:1284 #: cps/web.py:1304
msgid "Profile updated" msgid "Profile updated"
msgstr "ព័ត៌មានសង្ខេបបានកែប្រែ" msgstr "ព័ត៌មានសង្ខេបបានកែប្រែ"
#: cps/web.py:1310 cps/web.py:1312 cps/web.py:1314 cps/web.py:1320 #: cps/web.py:1330 cps/web.py:1332 cps/web.py:1334 cps/web.py:1340
#: cps/web.py:1324 #: cps/web.py:1344
msgid "Read a Book" msgid "Read a Book"
msgstr "អានសៀវភៅ" msgstr "អានសៀវភៅ"
#: cps/web.py:1334 #: cps/web.py:1354
msgid "Error opening eBook. File does not exist or file is not accessible." msgid "Error opening eBook. File does not exist or file is not accessible."
msgstr "" msgstr ""
@ -1057,7 +1068,7 @@ msgstr "បាទ/ចាស"
#: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147 #: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74
#: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/layout.html:28 cps/templates/shelf.html:73
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
#: cps/templates/user_edit.html:132 #: cps/templates/user_edit.html:132
msgid "Back" msgid "Back"
msgstr "មកក្រោយ" msgstr "មកក្រោយ"
@ -1691,11 +1702,6 @@ msgstr ""
msgid "Next" msgid "Next"
msgstr "បន្ទាប់" msgstr "បន្ទាប់"
#: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45
msgid "Search"
msgstr "ស្វែងរក"
#: cps/templates/http_error.html:37 #: cps/templates/http_error.html:37
msgid "Create issue" msgid "Create issue"
msgstr "" msgstr ""
@ -2055,7 +2061,7 @@ msgstr "លុបធ្នើនេះ"
msgid "Edit Shelf" msgid "Edit Shelf"
msgstr "" msgstr ""
#: cps/templates/shelf.html:12 cps/templates/shelf_order.html:11 #: cps/templates/shelf.html:12 cps/templates/shelf_order.html:31
msgid "Change order" msgid "Change order"
msgstr "ប្តូរលំដាប់" msgstr "ប្តូរលំដាប់"

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web (GPLV3)\n" "Project-Id-Version: Calibre-Web (GPLV3)\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-09-06 19:03+0200\n" "POT-Creation-Date: 2019-11-16 08:00+0100\n"
"PO-Revision-Date: 2019-06-17 22:37+0200\n" "PO-Revision-Date: 2019-06-17 22:37+0200\n"
"Last-Translator: Marcel Maas <marcel.maas@outlook.com>\n" "Last-Translator: Marcel Maas <marcel.maas@outlook.com>\n"
"Language: nl\n" "Language: nl\n"
@ -19,17 +19,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n" "Generated-By: Babel 2.7.0\n"
#: cps/about.py:40 cps/about.py:65 cps/about.py:66 cps/uploader.py:228 #: cps/about.py:41
msgid "installed" msgid "installed"
msgstr "" msgstr ""
#: cps/about.py:42 cps/about.py:65 cps/about.py:66 cps/uploader.py:213 #: cps/about.py:43
#: cps/uploader.py:214 cps/uploader.py:218 cps/uploader.py:222
#: cps/uploader.py:226 cps/uploader.py:230
msgid "not installed" msgid "not installed"
msgstr "niet geïnstalleerd" msgstr "niet geïnstalleerd"
#: cps/about.py:80 #: cps/about.py:81
msgid "Statistics" msgid "Statistics"
msgstr "Statistieken" msgstr "Statistieken"
@ -41,7 +39,7 @@ msgstr "De server is herstart; vernieuw de pagina"
msgid "Performing shutdown of server, please close window" msgid "Performing shutdown of server, please close window"
msgstr "Bezig het stoppen van server; sluit het venster" msgstr "Bezig het stoppen van server; sluit het venster"
#: cps/admin.py:111 cps/updater.py:445 #: cps/admin.py:111 cps/updater.py:446
msgid "Unknown" msgid "Unknown"
msgstr "Onbekend" msgstr "Onbekend"
@ -61,7 +59,7 @@ msgstr "Calibre-Web-configuratie bijgewerkt"
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "Basis configuratie" msgstr "Basis configuratie"
#: cps/admin.py:452 cps/web.py:1050 #: cps/admin.py:452 cps/web.py:1055
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "Vul alle velden in!" msgstr "Vul alle velden in!"
@ -70,7 +68,7 @@ msgstr "Vul alle velden in!"
msgid "Add new user" msgid "Add new user"
msgstr "Nieuwe gebruiker toevoegen" msgstr "Nieuwe gebruiker toevoegen"
#: cps/admin.py:463 cps/web.py:1253 #: cps/admin.py:463 cps/web.py:1258
msgid "E-mail is not from valid domain" msgid "E-mail is not from valid domain"
msgstr "Het e-mailadres bevat geen geldige domeinnaam" msgstr "Het e-mailadres bevat geen geldige domeinnaam"
@ -97,7 +95,7 @@ msgstr "Test-e-mail verstuurd naar %(kindlemail)s"
msgid "There was an error sending the Test e-mail: %(res)s" 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" msgstr "Fout opgetreden bij het versturen van de test-e-mail: %(res)s"
#: cps/admin.py:527 cps/web.py:1033 #: cps/admin.py:527 cps/web.py:1038
msgid "Please configure your kindle e-mail address first..." msgid "Please configure your kindle e-mail address first..."
msgstr "Stel je kindle-e-mailadres in..." msgstr "Stel je kindle-e-mailadres in..."
@ -114,85 +112,93 @@ msgstr "Gebruiker '%(nick)s' is verwijderd"
msgid "No admin user remaining, can't delete user" msgid "No admin user remaining, can't delete user"
msgstr "Kan laatste systeembeheerder niet verwijderen" msgstr "Kan laatste systeembeheerder niet verwijderen"
#: cps/admin.py:600 cps/web.py:1279 #: cps/admin.py:599 cps/web.py:1299
msgid "Found an existing account for this e-mail address." msgid "Found an existing account for this e-mail address."
msgstr "Bestaand account met dit e-mailadres aangetroffen." msgstr "Bestaand account met dit e-mailadres aangetroffen."
#: cps/admin.py:603 cps/admin.py:615 #: cps/admin.py:602 cps/admin.py:615 cps/admin.py:629 cps/web.py:1274
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "Gebruiker '%(nick)s' bewerken" msgstr "Gebruiker '%(nick)s' bewerken"
#: cps/admin.py:609 #: cps/admin.py:608 cps/web.py:1267
msgid "This username is already taken"
msgstr ""
#: cps/admin.py:623
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "Gebruiker '%(nick)s' bijgewerkt" msgstr "Gebruiker '%(nick)s' bijgewerkt"
#: cps/admin.py:612 #: cps/admin.py:626
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "Er is een onbekende fout opgetreden." msgstr "Er is een onbekende fout opgetreden."
#: cps/admin.py:631 #: cps/admin.py:645
#, python-format #, python-format
msgid "Password for user %(user)s reset" msgid "Password for user %(user)s reset"
msgstr "Wachtwoord voor gebruiker %(user)s is hersteld" msgstr "Wachtwoord voor gebruiker %(user)s is hersteld"
#: cps/admin.py:634 cps/web.py:1075 #: cps/admin.py:648 cps/web.py:1080
msgid "An unknown error occurred. Please try again later." msgid "An unknown error occurred. Please try again later."
msgstr "Onbekende fout opgetreden. Probeer het later nog eens." msgstr "Onbekende fout opgetreden. Probeer het later nog eens."
#: cps/admin.py:645 #: cps/admin.py:659
msgid "Logfile viewer" msgid "Logfile viewer"
msgstr "" msgstr ""
#: cps/admin.py:680 #: cps/admin.py:694
msgid "Requesting update package" msgid "Requesting update package"
msgstr "Bezig met opvragen van updatepakket" msgstr "Bezig met opvragen van updatepakket"
#: cps/admin.py:681 #: cps/admin.py:695
msgid "Downloading update package" msgid "Downloading update package"
msgstr "Bezig met downloaden van updatepakket" msgstr "Bezig met downloaden van updatepakket"
#: cps/admin.py:682 #: cps/admin.py:696
msgid "Unzipping update package" msgid "Unzipping update package"
msgstr "Bezig met uitpakken van updatepakket" msgstr "Bezig met uitpakken van updatepakket"
#: cps/admin.py:683 #: cps/admin.py:697
msgid "Replacing files" msgid "Replacing files"
msgstr "Bezig met bestandsvervanging" msgstr "Bezig met bestandsvervanging"
#: cps/admin.py:684 #: cps/admin.py:698
msgid "Database connections are closed" msgid "Database connections are closed"
msgstr "Databankverbindingen zijn gesloten" msgstr "Databankverbindingen zijn gesloten"
#: cps/admin.py:685 #: cps/admin.py:699
msgid "Stopping server" msgid "Stopping server"
msgstr "Bezig met stoppen van server" msgstr "Bezig met stoppen van server"
#: cps/admin.py:686 #: cps/admin.py:700
msgid "Update finished, please press okay and reload page" msgid "Update finished, please press okay and reload page"
msgstr "Update voltooid; klik op 'Oké' en vernieuw de pagina" msgstr "Update voltooid; klik op 'Oké' en vernieuw de pagina"
#: cps/admin.py:687 cps/admin.py:688 cps/admin.py:689 cps/admin.py:690 #: cps/admin.py:701 cps/admin.py:702 cps/admin.py:703 cps/admin.py:704
msgid "Update failed:" msgid "Update failed:"
msgstr "Update mislukt:" msgstr "Update mislukt:"
#: cps/admin.py:687 cps/updater.py:271 cps/updater.py:456 cps/updater.py:458 #: cps/admin.py:701 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459
msgid "HTTP Error" msgid "HTTP Error"
msgstr "HTTP-fout" msgstr "HTTP-fout"
#: cps/admin.py:688 cps/updater.py:273 cps/updater.py:460 #: cps/admin.py:702 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "Verbindingsfout" msgstr "Verbindingsfout"
#: cps/admin.py:689 cps/updater.py:275 cps/updater.py:462 #: cps/admin.py:703 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
msgstr "Time-out tijdens maken van verbinding" msgstr "Time-out tijdens maken van verbinding"
#: cps/admin.py:690 cps/updater.py:277 cps/updater.py:464 #: cps/admin.py:704 cps/updater.py:278 cps/updater.py:465
msgid "General error" msgid "General error"
msgstr "Algemene fout" msgstr "Algemene fout"
#: cps/converter.py:31
msgid "not configured"
msgstr ""
#: cps/editbooks.py:214 cps/editbooks.py:393 #: cps/editbooks.py:214 cps/editbooks.py:393
msgid "Error opening eBook. File does not exist or file is not accessible" 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" msgstr "Kan e-boek niet openen: het bestand bestaat niet of is ontoegankelijk"
@ -576,7 +582,7 @@ msgid "Show best rated books"
msgstr "Best beoordeelde boeken tonen" msgstr "Best beoordeelde boeken tonen"
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67 #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
#: cps/web.py:971 #: cps/web.py:976
msgid "Read Books" msgid "Read Books"
msgstr "Gelezen boeken" msgstr "Gelezen boeken"
@ -585,7 +591,7 @@ msgid "Show read and unread"
msgstr "Gelezen/Ongelezen boeken tonen" msgstr "Gelezen/Ongelezen boeken tonen"
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71 #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
#: cps/web.py:975 #: cps/web.py:980
msgid "Unread Books" msgid "Unread Books"
msgstr "Ongelezen boeken" msgstr "Ongelezen boeken"
@ -658,228 +664,233 @@ msgstr "Bestandsformaten"
msgid "Show file formats selection" msgid "Show file formats selection"
msgstr "Bestandsformaten tonen" msgstr "Bestandsformaten tonen"
#: cps/updater.py:251 cps/updater.py:358 cps/updater.py:371 #: cps/updater.py:252 cps/updater.py:359 cps/updater.py:372
msgid "Unexpected data while reading update information" msgid "Unexpected data while reading update information"
msgstr "Onverwachte gegevens tijdens het uitlezen van de update-informatie" msgstr "Onverwachte gegevens tijdens het uitlezen van de update-informatie"
#: cps/updater.py:258 cps/updater.py:364 #: cps/updater.py:259 cps/updater.py:365
msgid "No update available. You already have the latest version installed" msgid "No update available. You already have the latest version installed"
msgstr "Geen update beschikbaar. Je beschikt al over de nieuwste versie" msgstr "Geen update beschikbaar. Je beschikt al over de nieuwste versie"
#: cps/updater.py:284 #: cps/updater.py:285
msgid "A new update is available. Click on the button below to update to the latest version." msgid "A new update is available. Click on the button below to update to the latest version."
msgstr "Er is een update beschikbaar. Klik op de knop hieronder om te updaten naar de nieuwste versie." msgstr "Er is een update beschikbaar. Klik op de knop hieronder om te updaten naar de nieuwste versie."
#: cps/updater.py:337 #: cps/updater.py:338
msgid "Could not fetch update information" msgid "Could not fetch update information"
msgstr "De update-informatie kan niet worden opgehaald" msgstr "De update-informatie kan niet worden opgehaald"
#: cps/updater.py:351 #: cps/updater.py:352
msgid "No release information available" msgid "No release information available"
msgstr "Geen wijzigingslog beschikbaar" msgstr "Geen wijzigingslog beschikbaar"
#: cps/updater.py:404 cps/updater.py:413 #: cps/updater.py:405 cps/updater.py:414
#, python-format #, python-format
msgid "A new update is available. Click on the button below to update to version: %(version)s" msgid "A new update is available. Click on the button below to update to version: %(version)s"
msgstr "Er is een update beschikbaar. Klik op de knop hieronder om te updaten naar versie: %(version)s" msgstr "Er is een update beschikbaar. Klik op de knop hieronder om te updaten naar versie: %(version)s"
#: cps/updater.py:423 #: cps/updater.py:424
msgid "Click on the button below to update to the latest stable version." msgid "Click on the button below to update to the latest stable version."
msgstr "Druk op onderstaande knop om de laatste stabiele versie te installeren." msgstr "Druk op onderstaande knop om de laatste stabiele versie te installeren."
#: cps/web.py:460 #: cps/web.py:459
msgid "Recently Added Books" msgid "Recently Added Books"
msgstr "Recent toegevoegde boeken" msgstr "Recent toegevoegde boeken"
#: cps/web.py:488 #: cps/web.py:487
msgid "Best rated books" msgid "Best rated books"
msgstr "Best beoordeelde boeken" msgstr "Best beoordeelde boeken"
#: cps/templates/index.xml:38 cps/web.py:496 #: cps/templates/index.xml:38 cps/web.py:495
msgid "Random Books" msgid "Random Books"
msgstr "Willekeurige boeken" msgstr "Willekeurige boeken"
#: cps/web.py:522 #: cps/web.py:521
msgid "Books" msgid "Books"
msgstr "Boeken" msgstr "Boeken"
#: cps/web.py:549 #: cps/web.py:548
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "Populaire boeken (meest gedownload)" msgstr "Populaire boeken (meest gedownload)"
#: cps/web.py:560 cps/web.py:1300 cps/web.py:1388 #: cps/web.py:559 cps/web.py:1320 cps/web.py:1408
msgid "Error opening eBook. File does not exist or file is not accessible:" 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 niet toegankelijk:" msgstr "Kan e-boek niet openen. Het bestand bestaat niet of is niet toegankelijk:"
#: cps/web.py:573 #: cps/web.py:572
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "Auteur: %(name)s" msgstr "Auteur: %(name)s"
#: cps/web.py:585 #: cps/web.py:584
#, python-format #, python-format
msgid "Publisher: %(name)s" msgid "Publisher: %(name)s"
msgstr "Uitgever: %(name)s" msgstr "Uitgever: %(name)s"
#: cps/web.py:596 #: cps/web.py:595
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "Reeks: %(serie)s" msgstr "Reeks: %(serie)s"
#: cps/web.py:607 #: cps/web.py:606
#, python-format #, python-format
msgid "Rating: %(rating)s stars" msgid "Rating: %(rating)s stars"
msgstr "Beoordeling: %(rating)s sterren" msgstr "Beoordeling: %(rating)s sterren"
#: cps/web.py:618 #: cps/web.py:617
#, python-format #, python-format
msgid "File format: %(format)s" msgid "File format: %(format)s"
msgstr "Bestandsformaat: %(format)s" msgstr "Bestandsformaat: %(format)s"
#: cps/web.py:630 #: cps/web.py:629
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "Categorie: %(name)s" msgstr "Categorie: %(name)s"
#: cps/web.py:647 #: cps/web.py:646
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "Taal: %(name)s" msgstr "Taal: %(name)s"
#: cps/web.py:679 #: cps/web.py:678
msgid "Publisher list" msgid "Publisher list"
msgstr "Uitgeverslijst" msgstr "Uitgeverslijst"
#: cps/templates/index.xml:82 cps/web.py:695 #: cps/templates/index.xml:82 cps/web.py:694
msgid "Series list" msgid "Series list"
msgstr "Boekenreeksen" msgstr "Boekenreeksen"
#: cps/web.py:709 #: cps/web.py:708
msgid "Ratings list" msgid "Ratings list"
msgstr "Beoordelingen" msgstr "Beoordelingen"
#: cps/web.py:722 #: cps/web.py:721
msgid "File formats list" msgid "File formats list"
msgstr "Alle bestandsformaten" msgstr "Alle bestandsformaten"
#: cps/web.py:750 #: cps/web.py:749
msgid "Available languages" msgid "Available languages"
msgstr "Beschikbare talen" msgstr "Beschikbare talen"
#: cps/templates/index.xml:75 cps/web.py:767 #: cps/templates/index.xml:75 cps/web.py:766
msgid "Category list" msgid "Category list"
msgstr "Categorielijst" msgstr "Categorielijst"
#: cps/templates/layout.html:73 cps/web.py:781 #: cps/templates/layout.html:73 cps/web.py:780
msgid "Tasks" msgid "Tasks"
msgstr "Taken" msgstr "Taken"
#: cps/web.py:846 #: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45 cps/web.py:802 cps/web.py:804
msgid "Search"
msgstr "Zoeken"
#: cps/web.py:851
msgid "Published after " msgid "Published after "
msgstr "Gepubliceerd na " msgstr "Gepubliceerd na "
#: cps/web.py:853 #: cps/web.py:858
msgid "Published before " msgid "Published before "
msgstr "Gepubliceerd vóór " msgstr "Gepubliceerd vóór "
#: cps/web.py:867 #: cps/web.py:872
#, python-format #, python-format
msgid "Rating <= %(rating)s" msgid "Rating <= %(rating)s"
msgstr "Beoordeling <= %(rating)s" msgstr "Beoordeling <= %(rating)s"
#: cps/web.py:869 #: cps/web.py:874
#, python-format #, python-format
msgid "Rating >= %(rating)s" msgid "Rating >= %(rating)s"
msgstr "Beoordeling >= %(rating)s" msgstr "Beoordeling >= %(rating)s"
#: cps/web.py:929 cps/web.py:939 #: cps/web.py:934 cps/web.py:944
msgid "search" msgid "search"
msgstr "zoeken" msgstr "zoeken"
#: cps/web.py:1022 #: cps/web.py:1027
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "Stel eerst SMTP-mail in..." msgstr "Stel eerst SMTP-mail in..."
#: cps/web.py:1027 #: cps/web.py:1032
#, python-format #, python-format
msgid "Book successfully queued for sending to %(kindlemail)s" msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Het boek is in de wachtrij geplaatst om te worden verstuurd aan %(kindlemail)s" msgstr "Het boek is in de wachtrij geplaatst om te worden verstuurd aan %(kindlemail)s"
#: cps/web.py:1031 #: cps/web.py:1036
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "Fout opgetreden bij het versturen van dit boek: %(res)s" msgstr "Fout opgetreden bij het versturen van dit boek: %(res)s"
#: cps/web.py:1051 cps/web.py:1076 cps/web.py:1080 cps/web.py:1085 #: cps/web.py:1056 cps/web.py:1081 cps/web.py:1085 cps/web.py:1090
#: cps/web.py:1089 #: cps/web.py:1094
msgid "register" msgid "register"
msgstr "registreren" msgstr "registreren"
#: cps/web.py:1078 #: cps/web.py:1083
msgid "Your e-mail is not allowed to register" msgid "Your e-mail is not allowed to register"
msgstr "Dit e-mailadres mag niet worden gebruikt voor registratie" msgstr "Dit e-mailadres mag niet worden gebruikt voor registratie"
#: cps/web.py:1081 #: cps/web.py:1086
msgid "Confirmation e-mail was send to your e-mail account." msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Er is een bevestigingse-mail verstuurd naar je e-mailadres." msgstr "Er is een bevestigingse-mail verstuurd naar je e-mailadres."
#: cps/web.py:1084 #: cps/web.py:1089
msgid "This username or e-mail address is already in use." msgid "This username or e-mail address is already in use."
msgstr "Deze gebruikersnaam of e-mailadres is al in gebruik." msgstr "Deze gebruikersnaam of e-mailadres is al in gebruik."
#: cps/web.py:1099 #: cps/web.py:1104
msgid "Cannot activate LDAP authentication" msgid "Cannot activate LDAP authentication"
msgstr "" msgstr ""
#: cps/web.py:1108 cps/web.py:1214 #: cps/web.py:1113 cps/web.py:1219
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "je bent ingelogd als: '%(nickname)s'" msgstr "je bent ingelogd als: '%(nickname)s'"
#: cps/web.py:1112 #: cps/web.py:1117
msgid "Could not login. LDAP server down, please contact your administrator" msgid "Could not login. LDAP server down, please contact your administrator"
msgstr "Kan niet inloggen, LDAP server niet bereikbaar, contacteer de beheerder" msgstr "Kan niet inloggen, LDAP server niet bereikbaar, contacteer de beheerder"
#: cps/web.py:1116 cps/web.py:1124 #: cps/web.py:1121 cps/web.py:1129
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "Verkeerde gebruikersnaam of wachtwoord" msgstr "Verkeerde gebruikersnaam of wachtwoord"
#: cps/web.py:1120 #: cps/web.py:1125
#, python-format #, python-format
msgid "You are now logged in as: '%(nickname)s'" msgid "You are now logged in as: '%(nickname)s'"
msgstr "Je bent ingelogd als: '%(nickname)s'" msgstr "Je bent ingelogd als: '%(nickname)s'"
#: cps/web.py:1128 cps/web.py:1150 #: cps/web.py:1133 cps/web.py:1155
msgid "login" msgid "login"
msgstr "inloggen" msgstr "inloggen"
#: cps/web.py:1162 cps/web.py:1193 #: cps/web.py:1167 cps/web.py:1198
msgid "Token not found" msgid "Token not found"
msgstr "Toegangssleutel niet gevonden" msgstr "Toegangssleutel niet gevonden"
#: cps/web.py:1170 cps/web.py:1201 #: cps/web.py:1175 cps/web.py:1206
msgid "Token has expired" msgid "Token has expired"
msgstr "Toegangssleutel is verlopen" msgstr "Toegangssleutel is verlopen"
#: cps/web.py:1178 #: cps/web.py:1183
msgid "Success! Please return to your device" msgid "Success! Please return to your device"
msgstr "Gelukt! Ga terug naar je apparaat" msgstr "Gelukt! Ga terug naar je apparaat"
#: cps/web.py:1255 cps/web.py:1282 cps/web.py:1286 #: cps/web.py:1260 cps/web.py:1302 cps/web.py:1306
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "%(name)s's profiel" msgstr "%(name)s's profiel"
#: cps/web.py:1284 #: cps/web.py:1304
msgid "Profile updated" msgid "Profile updated"
msgstr "Profiel bijgewerkt" msgstr "Profiel bijgewerkt"
#: cps/web.py:1310 cps/web.py:1312 cps/web.py:1314 cps/web.py:1320 #: cps/web.py:1330 cps/web.py:1332 cps/web.py:1334 cps/web.py:1340
#: cps/web.py:1324 #: cps/web.py:1344
msgid "Read a Book" msgid "Read a Book"
msgstr "Lees een boek" msgstr "Lees een boek"
#: cps/web.py:1334 #: cps/web.py:1354
msgid "Error opening eBook. File does not exist or file is not accessible." msgid "Error opening eBook. File does not exist or file is not accessible."
msgstr "" msgstr ""
@ -1057,7 +1068,7 @@ msgstr "Oké"
#: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147 #: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74
#: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/layout.html:28 cps/templates/shelf.html:73
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
#: cps/templates/user_edit.html:132 #: cps/templates/user_edit.html:132
msgid "Back" msgid "Back"
msgstr "Annuleren" msgstr "Annuleren"
@ -1691,11 +1702,6 @@ msgstr "Weet je zeker dat je deze domeinregel wilt verwijderen?"
msgid "Next" msgid "Next"
msgstr "Volgende" msgstr "Volgende"
#: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45
msgid "Search"
msgstr "Zoeken"
#: cps/templates/http_error.html:37 #: cps/templates/http_error.html:37
msgid "Create issue" msgid "Create issue"
msgstr "Probleem melden" msgstr "Probleem melden"
@ -2055,7 +2061,7 @@ msgstr "Deze boekenplank verwijderen"
msgid "Edit Shelf" msgid "Edit Shelf"
msgstr "Boekenplank bewerken" msgstr "Boekenplank bewerken"
#: cps/templates/shelf.html:12 cps/templates/shelf_order.html:11 #: cps/templates/shelf.html:12 cps/templates/shelf_order.html:31
msgid "Change order" msgid "Change order"
msgstr "Volgorde veranderen" msgstr "Volgorde veranderen"

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre Web - polski (POT: 2019-08-06 18:35)\n" "Project-Id-Version: Calibre Web - polski (POT: 2019-08-06 18:35)\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-09-06 19:03+0200\n" "POT-Creation-Date: 2019-11-16 08:00+0100\n"
"PO-Revision-Date: 2019-08-18 22:06+0200\n" "PO-Revision-Date: 2019-08-18 22:06+0200\n"
"Last-Translator: Radosław Kierznowski <radek.kierznowski@outlook.com>\n" "Last-Translator: Radosław Kierznowski <radek.kierznowski@outlook.com>\n"
"Language: pl\n" "Language: pl\n"
@ -19,17 +19,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n" "Generated-By: Babel 2.7.0\n"
#: cps/about.py:40 cps/about.py:65 cps/about.py:66 cps/uploader.py:228 #: cps/about.py:41
msgid "installed" msgid "installed"
msgstr "zainstalowane" msgstr "zainstalowane"
#: cps/about.py:42 cps/about.py:65 cps/about.py:66 cps/uploader.py:213 #: cps/about.py:43
#: cps/uploader.py:214 cps/uploader.py:218 cps/uploader.py:222
#: cps/uploader.py:226 cps/uploader.py:230
msgid "not installed" msgid "not installed"
msgstr "nie zainstalowane" msgstr "nie zainstalowane"
#: cps/about.py:80 #: cps/about.py:81
msgid "Statistics" msgid "Statistics"
msgstr "Statystyki" msgstr "Statystyki"
@ -42,7 +40,7 @@ msgid "Performing shutdown of server, please close window"
msgstr "Wykonano wyłączenie serwera, proszę zamknąć okno" msgstr "Wykonano wyłączenie serwera, proszę zamknąć okno"
# ??? # ???
#: cps/admin.py:111 cps/updater.py:445 #: cps/admin.py:111 cps/updater.py:446
msgid "Unknown" msgid "Unknown"
msgstr "Nieznany" msgstr "Nieznany"
@ -62,7 +60,7 @@ msgstr "Konfiguracja Calibre-Web została zaktualizowana"
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "Podstawowa konfiguracja" msgstr "Podstawowa konfiguracja"
#: cps/admin.py:452 cps/web.py:1050 #: cps/admin.py:452 cps/web.py:1055
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "Proszę wypełnić wszystkie pola!" msgstr "Proszę wypełnić wszystkie pola!"
@ -71,7 +69,7 @@ msgstr "Proszę wypełnić wszystkie pola!"
msgid "Add new user" msgid "Add new user"
msgstr "Dodaj nowego użytkownika" msgstr "Dodaj nowego użytkownika"
#: cps/admin.py:463 cps/web.py:1253 #: cps/admin.py:463 cps/web.py:1258
msgid "E-mail is not from valid domain" msgid "E-mail is not from valid domain"
msgstr "E-mail nie pochodzi z prawidłowej domeny" msgstr "E-mail nie pochodzi z prawidłowej domeny"
@ -98,7 +96,7 @@ msgstr "Test e-maila zakończony pomyślnie. Wysłano do %(kindlemail)s"
msgid "There was an error sending the Test e-mail: %(res)s" 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" msgstr "Wystąpił błąd podczas wysyłania e-maila testowego: %(res)s"
#: cps/admin.py:527 cps/web.py:1033 #: cps/admin.py:527 cps/web.py:1038
msgid "Please configure your kindle e-mail address first..." msgid "Please configure your kindle e-mail address first..."
msgstr "Najpierw skonfiguruj adres e-mail Kindla..." msgstr "Najpierw skonfiguruj adres e-mail Kindla..."
@ -115,87 +113,95 @@ msgstr "Użytkownik '%(nick)s' został usunięty"
msgid "No admin user remaining, can't delete user" msgid "No admin user remaining, can't delete user"
msgstr "Nie można usunąć użytkownika. Brak na serwerze innego konta z prawami administratora" msgstr "Nie można usunąć użytkownika. Brak na serwerze innego konta z prawami administratora"
#: cps/admin.py:600 cps/web.py:1279 #: cps/admin.py:599 cps/web.py:1299
msgid "Found an existing account for this e-mail address." msgid "Found an existing account for this e-mail address."
msgstr "Znaleziono istniejące konto dla tego adresu e-mail." msgstr "Znaleziono istniejące konto dla tego adresu e-mail."
#: cps/admin.py:603 cps/admin.py:615 #: cps/admin.py:602 cps/admin.py:615 cps/admin.py:629 cps/web.py:1274
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "Edytuj użytkownika %(nick)s" msgstr "Edytuj użytkownika %(nick)s"
#: cps/admin.py:609 #: cps/admin.py:608 cps/web.py:1267
msgid "This username is already taken"
msgstr ""
#: cps/admin.py:623
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "Użytkownik '%(nick)s' został zaktualizowany" msgstr "Użytkownik '%(nick)s' został zaktualizowany"
#: cps/admin.py:612 #: cps/admin.py:626
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "Wystąpił nieznany błąd." msgstr "Wystąpił nieznany błąd."
# ??? # ???
#: cps/admin.py:631 #: cps/admin.py:645
#, python-format #, python-format
msgid "Password for user %(user)s reset" msgid "Password for user %(user)s reset"
msgstr "Zrestartowano hasło użytkownika %(user)s" msgstr "Zrestartowano hasło użytkownika %(user)s"
#: cps/admin.py:634 cps/web.py:1075 #: cps/admin.py:648 cps/web.py:1080
msgid "An unknown error occurred. Please try again later." msgid "An unknown error occurred. Please try again later."
msgstr "Wystąpił nieznany błąd. Spróbuj ponownie później." msgstr "Wystąpił nieznany błąd. Spróbuj ponownie później."
#: cps/admin.py:645 #: cps/admin.py:659
msgid "Logfile viewer" msgid "Logfile viewer"
msgstr "Przeglądanie plików Logu" msgstr "Przeglądanie plików Logu"
#: cps/admin.py:680 #: cps/admin.py:694
msgid "Requesting update package" msgid "Requesting update package"
msgstr "Żądanie o pakiet aktualizacji" msgstr "Żądanie o pakiet aktualizacji"
#: cps/admin.py:681 #: cps/admin.py:695
msgid "Downloading update package" msgid "Downloading update package"
msgstr "Pobieranie pakietu aktualizacji" msgstr "Pobieranie pakietu aktualizacji"
#: cps/admin.py:682 #: cps/admin.py:696
msgid "Unzipping update package" msgid "Unzipping update package"
msgstr "Rozpakowywanie pakietu aktualizacji" msgstr "Rozpakowywanie pakietu aktualizacji"
# ??? # ???
#: cps/admin.py:683 #: cps/admin.py:697
msgid "Replacing files" msgid "Replacing files"
msgstr "Zastępowanie plików" msgstr "Zastępowanie plików"
#: cps/admin.py:684 #: cps/admin.py:698
msgid "Database connections are closed" msgid "Database connections are closed"
msgstr "Połączenia z bazą danych zostały zakończone" msgstr "Połączenia z bazą danych zostały zakończone"
#: cps/admin.py:685 #: cps/admin.py:699
msgid "Stopping server" msgid "Stopping server"
msgstr "Zatrzymywanie serwera" msgstr "Zatrzymywanie serwera"
#: cps/admin.py:686 #: cps/admin.py:700
msgid "Update finished, please press okay and reload page" msgid "Update finished, please press okay and reload page"
msgstr "Aktualizacja zakończona, proszę nacisnąć OK i odświeżyć stronę" msgstr "Aktualizacja zakończona, proszę nacisnąć OK i odświeżyć stronę"
#: cps/admin.py:687 cps/admin.py:688 cps/admin.py:689 cps/admin.py:690 #: cps/admin.py:701 cps/admin.py:702 cps/admin.py:703 cps/admin.py:704
msgid "Update failed:" msgid "Update failed:"
msgstr "Aktualizacja nieudana:" msgstr "Aktualizacja nieudana:"
#: cps/admin.py:687 cps/updater.py:271 cps/updater.py:456 cps/updater.py:458 #: cps/admin.py:701 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459
msgid "HTTP Error" msgid "HTTP Error"
msgstr "" msgstr ""
#: cps/admin.py:688 cps/updater.py:273 cps/updater.py:460 #: cps/admin.py:702 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "" msgstr ""
#: cps/admin.py:689 cps/updater.py:275 cps/updater.py:462 #: cps/admin.py:703 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
msgstr "Przekroczono limit czasu podczas nawiązywania połączenia" msgstr "Przekroczono limit czasu podczas nawiązywania połączenia"
#: cps/admin.py:690 cps/updater.py:277 cps/updater.py:464 #: cps/admin.py:704 cps/updater.py:278 cps/updater.py:465
msgid "General error" msgid "General error"
msgstr "" msgstr ""
#: cps/converter.py:31
msgid "not configured"
msgstr ""
#: cps/editbooks.py:214 cps/editbooks.py:393 #: cps/editbooks.py:214 cps/editbooks.py:393
msgid "Error opening eBook. File does not exist or file is not accessible" msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "Błąd podczas otwierania eBooka. Plik nie istnieje lub jest niedostępny" msgstr "Błąd podczas otwierania eBooka. Plik nie istnieje lub jest niedostępny"
@ -583,7 +589,7 @@ msgid "Show best rated books"
msgstr "Pokaż menu najlepiej ocenione książki" msgstr "Pokaż menu najlepiej ocenione książki"
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67 #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
#: cps/web.py:971 #: cps/web.py:976
msgid "Read Books" msgid "Read Books"
msgstr "Przeczytane książki" msgstr "Przeczytane książki"
@ -592,7 +598,7 @@ msgid "Show read and unread"
msgstr "Pokaż menu przeczytane i nieprzeczytane" msgstr "Pokaż menu przeczytane i nieprzeczytane"
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71 #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
#: cps/web.py:975 #: cps/web.py:980
msgid "Unread Books" msgid "Unread Books"
msgstr "Nieprzeczytane książki" msgstr "Nieprzeczytane książki"
@ -665,228 +671,233 @@ msgstr "Format plików"
msgid "Show file formats selection" msgid "Show file formats selection"
msgstr "Pokaż menu formatu plików" msgstr "Pokaż menu formatu plików"
#: cps/updater.py:251 cps/updater.py:358 cps/updater.py:371 #: cps/updater.py:252 cps/updater.py:359 cps/updater.py:372
msgid "Unexpected data while reading update information" msgid "Unexpected data while reading update information"
msgstr "" msgstr ""
#: cps/updater.py:258 cps/updater.py:364 #: cps/updater.py:259 cps/updater.py:365
msgid "No update available. You already have the latest version installed" msgid "No update available. You already have the latest version installed"
msgstr "" msgstr ""
#: cps/updater.py:284 #: cps/updater.py:285
msgid "A new update is available. Click on the button below to update to the latest version." msgid "A new update is available. Click on the button below to update to the latest version."
msgstr "" msgstr ""
#: cps/updater.py:337 #: cps/updater.py:338
msgid "Could not fetch update information" msgid "Could not fetch update information"
msgstr "" msgstr ""
#: cps/updater.py:351 #: cps/updater.py:352
msgid "No release information available" msgid "No release information available"
msgstr "" msgstr ""
#: cps/updater.py:404 cps/updater.py:413 #: cps/updater.py:405 cps/updater.py:414
#, python-format #, python-format
msgid "A new update is available. Click on the button below to update to version: %(version)s" msgid "A new update is available. Click on the button below to update to version: %(version)s"
msgstr "" msgstr ""
#: cps/updater.py:423 #: cps/updater.py:424
msgid "Click on the button below to update to the latest stable version." msgid "Click on the button below to update to the latest stable version."
msgstr "" msgstr ""
#: cps/web.py:460 #: cps/web.py:459
msgid "Recently Added Books" msgid "Recently Added Books"
msgstr "Ostatnio dodane książki" msgstr "Ostatnio dodane książki"
#: cps/web.py:488 #: cps/web.py:487
msgid "Best rated books" msgid "Best rated books"
msgstr "Najlepiej oceniane książki" msgstr "Najlepiej oceniane książki"
#: cps/templates/index.xml:38 cps/web.py:496 #: cps/templates/index.xml:38 cps/web.py:495
msgid "Random Books" msgid "Random Books"
msgstr "Losowe książki" msgstr "Losowe książki"
#: cps/web.py:522 #: cps/web.py:521
msgid "Books" msgid "Books"
msgstr "Książki" msgstr "Książki"
#: cps/web.py:549 #: cps/web.py:548
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "Najpopularniejsze książki (najczęściej pobierane)" msgstr "Najpopularniejsze książki (najczęściej pobierane)"
#: cps/web.py:560 cps/web.py:1300 cps/web.py:1388 #: cps/web.py:559 cps/web.py:1320 cps/web.py:1408
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Błąd otwierania e-booka. Plik nie istnieje lub plik nie jest dostępny:" msgstr "Błąd otwierania e-booka. Plik nie istnieje lub plik nie jest dostępny:"
#: cps/web.py:573 #: cps/web.py:572
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "Autor: %(name)s" msgstr "Autor: %(name)s"
#: cps/web.py:585 #: cps/web.py:584
#, python-format #, python-format
msgid "Publisher: %(name)s" msgid "Publisher: %(name)s"
msgstr "Wydawca: %(name)s" msgstr "Wydawca: %(name)s"
#: cps/web.py:596 #: cps/web.py:595
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "Seria: %(serie)s" msgstr "Seria: %(serie)s"
#: cps/web.py:607 #: cps/web.py:606
#, python-format #, python-format
msgid "Rating: %(rating)s stars" msgid "Rating: %(rating)s stars"
msgstr "Ocena: %(rating)s gwiazdek" msgstr "Ocena: %(rating)s gwiazdek"
#: cps/web.py:618 #: cps/web.py:617
#, python-format #, python-format
msgid "File format: %(format)s" msgid "File format: %(format)s"
msgstr "Format pliku: %(format)s" msgstr "Format pliku: %(format)s"
#: cps/web.py:630 #: cps/web.py:629
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "Kategoria: %(name)s" msgstr "Kategoria: %(name)s"
#: cps/web.py:647 #: cps/web.py:646
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "Język: %(name)s" msgstr "Język: %(name)s"
#: cps/web.py:679 #: cps/web.py:678
msgid "Publisher list" msgid "Publisher list"
msgstr "Lista wydawców" msgstr "Lista wydawców"
#: cps/templates/index.xml:82 cps/web.py:695 #: cps/templates/index.xml:82 cps/web.py:694
msgid "Series list" msgid "Series list"
msgstr "Lista serii" msgstr "Lista serii"
#: cps/web.py:709 #: cps/web.py:708
msgid "Ratings list" msgid "Ratings list"
msgstr "Lista z ocenami" msgstr "Lista z ocenami"
#: cps/web.py:722 #: cps/web.py:721
msgid "File formats list" msgid "File formats list"
msgstr "Lista formatów" msgstr "Lista formatów"
#: cps/web.py:750 #: cps/web.py:749
msgid "Available languages" msgid "Available languages"
msgstr "Dostępne języki" msgstr "Dostępne języki"
#: cps/templates/index.xml:75 cps/web.py:767 #: cps/templates/index.xml:75 cps/web.py:766
msgid "Category list" msgid "Category list"
msgstr "Lista kategorii" msgstr "Lista kategorii"
#: cps/templates/layout.html:73 cps/web.py:781 #: cps/templates/layout.html:73 cps/web.py:780
msgid "Tasks" msgid "Tasks"
msgstr " Zadania" msgstr " Zadania"
#: cps/web.py:846 #: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45 cps/web.py:802 cps/web.py:804
msgid "Search"
msgstr "Szukaj"
#: cps/web.py:851
msgid "Published after " msgid "Published after "
msgstr "Opublikowane po " msgstr "Opublikowane po "
#: cps/web.py:853 #: cps/web.py:858
msgid "Published before " msgid "Published before "
msgstr "Opublikowane przed " msgstr "Opublikowane przed "
#: cps/web.py:867 #: cps/web.py:872
#, python-format #, python-format
msgid "Rating <= %(rating)s" msgid "Rating <= %(rating)s"
msgstr "Ocena <= %(rating)s" msgstr "Ocena <= %(rating)s"
#: cps/web.py:869 #: cps/web.py:874
#, python-format #, python-format
msgid "Rating >= %(rating)s" msgid "Rating >= %(rating)s"
msgstr "Ocena >= %(rating)s" msgstr "Ocena >= %(rating)s"
#: cps/web.py:929 cps/web.py:939 #: cps/web.py:934 cps/web.py:944
msgid "search" msgid "search"
msgstr "szukaj" msgstr "szukaj"
#: cps/web.py:1022 #: cps/web.py:1027
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "Proszę najpierw skonfigurować ustawienia SMTP poczty e-mail..." msgstr "Proszę najpierw skonfigurować ustawienia SMTP poczty e-mail..."
#: cps/web.py:1027 #: cps/web.py:1032
#, python-format #, python-format
msgid "Book successfully queued for sending to %(kindlemail)s" msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Książka została umieszczona w kolejce do wysłania do %(kindlemail)s" msgstr "Książka została umieszczona w kolejce do wysłania do %(kindlemail)s"
#: cps/web.py:1031 #: cps/web.py:1036
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "Wystąpił błąd podczas wysyłania tej książki: %(res)s" msgstr "Wystąpił błąd podczas wysyłania tej książki: %(res)s"
#: cps/web.py:1051 cps/web.py:1076 cps/web.py:1080 cps/web.py:1085 #: cps/web.py:1056 cps/web.py:1081 cps/web.py:1085 cps/web.py:1090
#: cps/web.py:1089 #: cps/web.py:1094
msgid "register" msgid "register"
msgstr "rejestracja" msgstr "rejestracja"
#: cps/web.py:1078 #: cps/web.py:1083
msgid "Your e-mail is not allowed to register" msgid "Your e-mail is not allowed to register"
msgstr "Twój e-mail nie może się zarejestrować" msgstr "Twój e-mail nie może się zarejestrować"
#: cps/web.py:1081 #: cps/web.py:1086
msgid "Confirmation e-mail was send to your e-mail account." 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." msgstr "Wiadomość e-mail z potwierdzeniem została wysłana na Twoje konto e-mail."
#: cps/web.py:1084 #: cps/web.py:1089
msgid "This username or e-mail address is already in use." msgid "This username or e-mail address is already in use."
msgstr "Ta nazwa użytkownika lub adres e-mail jest już używany." msgstr "Ta nazwa użytkownika lub adres e-mail jest już używany."
#: cps/web.py:1099 #: cps/web.py:1104
msgid "Cannot activate LDAP authentication" msgid "Cannot activate LDAP authentication"
msgstr "Nie można aktywować uwierzytelniania LDAP" msgstr "Nie można aktywować uwierzytelniania LDAP"
#: cps/web.py:1108 cps/web.py:1214 #: cps/web.py:1113 cps/web.py:1219
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "Zalogowałeś się jako: '%(nickname)s'" msgstr "Zalogowałeś się jako: '%(nickname)s'"
#: cps/web.py:1112 #: cps/web.py:1117
msgid "Could not login. LDAP server down, please contact your administrator" msgid "Could not login. LDAP server down, please contact your administrator"
msgstr "Brak możliwości zalogowania. Serwer LDAP jest niedostępny, skontaktuj się z administratorem" msgstr "Brak możliwości zalogowania. Serwer LDAP jest niedostępny, skontaktuj się z administratorem"
#: cps/web.py:1116 cps/web.py:1124 #: cps/web.py:1121 cps/web.py:1129
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "Błędna nazwa użytkownika lub hasło" msgstr "Błędna nazwa użytkownika lub hasło"
#: cps/web.py:1120 #: cps/web.py:1125
#, python-format #, python-format
msgid "You are now logged in as: '%(nickname)s'" msgid "You are now logged in as: '%(nickname)s'"
msgstr "Jesteś teraz zalogowany jako: '%(nickname)s'" msgstr "Jesteś teraz zalogowany jako: '%(nickname)s'"
#: cps/web.py:1128 cps/web.py:1150 #: cps/web.py:1133 cps/web.py:1155
msgid "login" msgid "login"
msgstr "logowanie" msgstr "logowanie"
#: cps/web.py:1162 cps/web.py:1193 #: cps/web.py:1167 cps/web.py:1198
msgid "Token not found" msgid "Token not found"
msgstr "Nie znaleziono tokenu" msgstr "Nie znaleziono tokenu"
#: cps/web.py:1170 cps/web.py:1201 #: cps/web.py:1175 cps/web.py:1206
msgid "Token has expired" msgid "Token has expired"
msgstr "Token wygasł" msgstr "Token wygasł"
#: cps/web.py:1178 #: cps/web.py:1183
msgid "Success! Please return to your device" msgid "Success! Please return to your device"
msgstr "Powodzenie! Wróć do swojego urządzenia" msgstr "Powodzenie! Wróć do swojego urządzenia"
#: cps/web.py:1255 cps/web.py:1282 cps/web.py:1286 #: cps/web.py:1260 cps/web.py:1302 cps/web.py:1306
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "Profil użytkownika %(name)s" msgstr "Profil użytkownika %(name)s"
#: cps/web.py:1284 #: cps/web.py:1304
msgid "Profile updated" msgid "Profile updated"
msgstr "Zaktualizowano profil" msgstr "Zaktualizowano profil"
#: cps/web.py:1310 cps/web.py:1312 cps/web.py:1314 cps/web.py:1320 #: cps/web.py:1330 cps/web.py:1332 cps/web.py:1334 cps/web.py:1340
#: cps/web.py:1324 #: cps/web.py:1344
msgid "Read a Book" msgid "Read a Book"
msgstr "Czytaj książkę" msgstr "Czytaj książkę"
#: cps/web.py:1334 #: cps/web.py:1354
msgid "Error opening eBook. File does not exist or file is not accessible." msgid "Error opening eBook. File does not exist or file is not accessible."
msgstr "Błąd podczas otwierania eBooka. Plik nie istnieje lub plik jest niedostępny." msgstr "Błąd podczas otwierania eBooka. Plik nie istnieje lub plik jest niedostępny."
@ -1066,7 +1077,7 @@ msgstr "OK"
#: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147 #: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74
#: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/layout.html:28 cps/templates/shelf.html:73
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
#: cps/templates/user_edit.html:132 #: cps/templates/user_edit.html:132
msgid "Back" msgid "Back"
msgstr "Wróć" msgstr "Wróć"
@ -1705,11 +1716,6 @@ msgstr ""
msgid "Next" msgid "Next"
msgstr "Następne" msgstr "Następne"
#: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45
msgid "Search"
msgstr "Szukaj"
# | msgid "Create a Shelf" # | msgid "Create a Shelf"
#: cps/templates/http_error.html:37 #: cps/templates/http_error.html:37
#, fuzzy #, fuzzy
@ -2075,7 +2081,7 @@ msgstr "Usuń tą półkę"
msgid "Edit Shelf" msgid "Edit Shelf"
msgstr "Edytuj półkę" msgstr "Edytuj półkę"
#: cps/templates/shelf.html:12 cps/templates/shelf_order.html:11 #: cps/templates/shelf.html:12 cps/templates/shelf_order.html:31
msgid "Change order" msgid "Change order"
msgstr "Zmień sortowanie" msgstr "Zmień sortowanie"

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2019-09-06 19:03+0200\n" "POT-Creation-Date: 2019-11-16 08:00+0100\n"
"PO-Revision-Date: 2018-12-14 16:26+0300\n" "PO-Revision-Date: 2018-12-14 16:26+0300\n"
"Last-Translator: Pavel Korovin <p@tristero.se>\n" "Last-Translator: Pavel Korovin <p@tristero.se>\n"
"Language: ru\n" "Language: ru\n"
@ -18,17 +18,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n" "Generated-By: Babel 2.7.0\n"
#: cps/about.py:40 cps/about.py:65 cps/about.py:66 cps/uploader.py:228 #: cps/about.py:41
msgid "installed" msgid "installed"
msgstr "" msgstr ""
#: cps/about.py:42 cps/about.py:65 cps/about.py:66 cps/uploader.py:213 #: cps/about.py:43
#: cps/uploader.py:214 cps/uploader.py:218 cps/uploader.py:222
#: cps/uploader.py:226 cps/uploader.py:230
msgid "not installed" msgid "not installed"
msgstr "не установлено" msgstr "не установлено"
#: cps/about.py:80 #: cps/about.py:81
msgid "Statistics" msgid "Statistics"
msgstr "Статистика" msgstr "Статистика"
@ -40,7 +38,7 @@ msgstr "Сервер перезагружен, пожалуйста, перез
msgid "Performing shutdown of server, please close window" msgid "Performing shutdown of server, please close window"
msgstr "Производится остановка сервера, пожалуйста, закройте окно" msgstr "Производится остановка сервера, пожалуйста, закройте окно"
#: cps/admin.py:111 cps/updater.py:445 #: cps/admin.py:111 cps/updater.py:446
msgid "Unknown" msgid "Unknown"
msgstr "Неизвестно" msgstr "Неизвестно"
@ -60,7 +58,7 @@ msgstr "Конфигурация Calibre-Web обновлена"
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "Настройки сервера" msgstr "Настройки сервера"
#: cps/admin.py:452 cps/web.py:1050 #: cps/admin.py:452 cps/web.py:1055
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "Пожалуйста, заполните все поля!" msgstr "Пожалуйста, заполните все поля!"
@ -69,7 +67,7 @@ msgstr "Пожалуйста, заполните все поля!"
msgid "Add new user" msgid "Add new user"
msgstr "Добавить пользователя" msgstr "Добавить пользователя"
#: cps/admin.py:463 cps/web.py:1253 #: cps/admin.py:463 cps/web.py:1258
msgid "E-mail is not from valid domain" msgid "E-mail is not from valid domain"
msgstr "E-mail не из существующей доменной зоны" msgstr "E-mail не из существующей доменной зоны"
@ -96,7 +94,7 @@ msgstr "Тестовое письмо успешно отправлено на %
msgid "There was an error sending the Test e-mail: %(res)s" msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "Произошла ошибка при отправке тестового письма на: %(res)s" msgstr "Произошла ошибка при отправке тестового письма на: %(res)s"
#: cps/admin.py:527 cps/web.py:1033 #: cps/admin.py:527 cps/web.py:1038
msgid "Please configure your kindle e-mail address first..." msgid "Please configure your kindle e-mail address first..."
msgstr "Пожалуйста, сначала настройте e-mail на вашем kindle..." msgstr "Пожалуйста, сначала настройте e-mail на вашем kindle..."
@ -113,85 +111,93 @@ msgstr "Пользователь '%(nick)s' удалён"
msgid "No admin user remaining, can't delete user" msgid "No admin user remaining, can't delete user"
msgstr "" msgstr ""
#: cps/admin.py:600 cps/web.py:1279 #: cps/admin.py:599 cps/web.py:1299
msgid "Found an existing account for this e-mail address." msgid "Found an existing account for this e-mail address."
msgstr "Этот адрес электронной почты уже зарегистрирован." msgstr "Этот адрес электронной почты уже зарегистрирован."
#: cps/admin.py:603 cps/admin.py:615 #: cps/admin.py:602 cps/admin.py:615 cps/admin.py:629 cps/web.py:1274
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "Изменить пользователя %(nick)s" msgstr "Изменить пользователя %(nick)s"
#: cps/admin.py:609 #: cps/admin.py:608 cps/web.py:1267
msgid "This username is already taken"
msgstr ""
#: cps/admin.py:623
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "Пользователь '%(nick)s' обновлён" msgstr "Пользователь '%(nick)s' обновлён"
#: cps/admin.py:612 #: cps/admin.py:626
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "Произошла неизвестная ошибка." msgstr "Произошла неизвестная ошибка."
#: cps/admin.py:631 #: cps/admin.py:645
#, python-format #, python-format
msgid "Password for user %(user)s reset" msgid "Password for user %(user)s reset"
msgstr "Пароль для пользователя %(user)s сброшен" msgstr "Пароль для пользователя %(user)s сброшен"
#: cps/admin.py:634 cps/web.py:1075 #: cps/admin.py:648 cps/web.py:1080
msgid "An unknown error occurred. Please try again later." msgid "An unknown error occurred. Please try again later."
msgstr "Неизвестная ошибка. Попробуйте позже." msgstr "Неизвестная ошибка. Попробуйте позже."
#: cps/admin.py:645 #: cps/admin.py:659
msgid "Logfile viewer" msgid "Logfile viewer"
msgstr "" msgstr ""
#: cps/admin.py:680 #: cps/admin.py:694
msgid "Requesting update package" msgid "Requesting update package"
msgstr "Проверка обновлений" msgstr "Проверка обновлений"
#: cps/admin.py:681 #: cps/admin.py:695
msgid "Downloading update package" msgid "Downloading update package"
msgstr "Загрузка обновлений" msgstr "Загрузка обновлений"
#: cps/admin.py:682 #: cps/admin.py:696
msgid "Unzipping update package" msgid "Unzipping update package"
msgstr "Распаковка обновлений" msgstr "Распаковка обновлений"
#: cps/admin.py:683 #: cps/admin.py:697
msgid "Replacing files" msgid "Replacing files"
msgstr "Замена файлов" msgstr "Замена файлов"
#: cps/admin.py:684 #: cps/admin.py:698
msgid "Database connections are closed" msgid "Database connections are closed"
msgstr "Соеднинения с базой данных закрыты" msgstr "Соеднинения с базой данных закрыты"
#: cps/admin.py:685 #: cps/admin.py:699
msgid "Stopping server" msgid "Stopping server"
msgstr "Остановка сервера" msgstr "Остановка сервера"
#: cps/admin.py:686 #: cps/admin.py:700
msgid "Update finished, please press okay and reload page" msgid "Update finished, please press okay and reload page"
msgstr "Обновления установлены, нажмите okay и перезагрузите страницу" msgstr "Обновления установлены, нажмите okay и перезагрузите страницу"
#: cps/admin.py:687 cps/admin.py:688 cps/admin.py:689 cps/admin.py:690 #: cps/admin.py:701 cps/admin.py:702 cps/admin.py:703 cps/admin.py:704
msgid "Update failed:" msgid "Update failed:"
msgstr "Ошибка обновления:" msgstr "Ошибка обновления:"
#: cps/admin.py:687 cps/updater.py:271 cps/updater.py:456 cps/updater.py:458 #: cps/admin.py:701 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459
msgid "HTTP Error" msgid "HTTP Error"
msgstr "Ошибка HTTP" msgstr "Ошибка HTTP"
#: cps/admin.py:688 cps/updater.py:273 cps/updater.py:460 #: cps/admin.py:702 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "Ошибка соединения" msgstr "Ошибка соединения"
#: cps/admin.py:689 cps/updater.py:275 cps/updater.py:462 #: cps/admin.py:703 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
msgstr "Таймаут при установлении соединения" msgstr "Таймаут при установлении соединения"
#: cps/admin.py:690 cps/updater.py:277 cps/updater.py:464 #: cps/admin.py:704 cps/updater.py:278 cps/updater.py:465
msgid "General error" msgid "General error"
msgstr "Общая ошибка" msgstr "Общая ошибка"
#: cps/converter.py:31
msgid "not configured"
msgstr ""
#: cps/editbooks.py:214 cps/editbooks.py:393 #: cps/editbooks.py:214 cps/editbooks.py:393
msgid "Error opening eBook. File does not exist or file is not accessible" msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "Ошибка при открытии eBook. Файл не существует или файл недоступен" msgstr "Ошибка при открытии eBook. Файл не существует или файл недоступен"
@ -575,7 +581,7 @@ msgid "Show best rated books"
msgstr "Показывать книги с наивысшим рейтингом" msgstr "Показывать книги с наивысшим рейтингом"
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67 #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
#: cps/web.py:971 #: cps/web.py:976
msgid "Read Books" msgid "Read Books"
msgstr "Прочитанные Книги" msgstr "Прочитанные Книги"
@ -584,7 +590,7 @@ msgid "Show read and unread"
msgstr "Показывать прочитанные и непрочитанные" msgstr "Показывать прочитанные и непрочитанные"
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71 #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
#: cps/web.py:975 #: cps/web.py:980
msgid "Unread Books" msgid "Unread Books"
msgstr "Непрочитанные Книги" msgstr "Непрочитанные Книги"
@ -657,228 +663,233 @@ msgstr ""
msgid "Show file formats selection" msgid "Show file formats selection"
msgstr "" msgstr ""
#: cps/updater.py:251 cps/updater.py:358 cps/updater.py:371 #: cps/updater.py:252 cps/updater.py:359 cps/updater.py:372
msgid "Unexpected data while reading update information" msgid "Unexpected data while reading update information"
msgstr "Некорректные данные при чтении информации об обновлении" msgstr "Некорректные данные при чтении информации об обновлении"
#: cps/updater.py:258 cps/updater.py:364 #: cps/updater.py:259 cps/updater.py:365
msgid "No update available. You already have the latest version installed" msgid "No update available. You already have the latest version installed"
msgstr "Обновление недоступно. Вы используете самую последнюю версию" msgstr "Обновление недоступно. Вы используете самую последнюю версию"
#: cps/updater.py:284 #: cps/updater.py:285
msgid "A new update is available. Click on the button below to update to the latest version." msgid "A new update is available. Click on the button below to update to the latest version."
msgstr "Доступно обновление. Нажмите на кнопку, что бы обновиться до последней версии." msgstr "Доступно обновление. Нажмите на кнопку, что бы обновиться до последней версии."
#: cps/updater.py:337 #: cps/updater.py:338
msgid "Could not fetch update information" msgid "Could not fetch update information"
msgstr "Не удалось получить информацию об обновлении" msgstr "Не удалось получить информацию об обновлении"
#: cps/updater.py:351 #: cps/updater.py:352
msgid "No release information available" msgid "No release information available"
msgstr "" msgstr ""
#: cps/updater.py:404 cps/updater.py:413 #: cps/updater.py:405 cps/updater.py:414
#, python-format #, python-format
msgid "A new update is available. Click on the button below to update to version: %(version)s" msgid "A new update is available. Click on the button below to update to version: %(version)s"
msgstr "" msgstr ""
#: cps/updater.py:423 #: cps/updater.py:424
msgid "Click on the button below to update to the latest stable version." msgid "Click on the button below to update to the latest stable version."
msgstr "" msgstr ""
#: cps/web.py:460 #: cps/web.py:459
msgid "Recently Added Books" msgid "Recently Added Books"
msgstr "Недавно Добавленные Книги" msgstr "Недавно Добавленные Книги"
#: cps/web.py:488 #: cps/web.py:487
msgid "Best rated books" msgid "Best rated books"
msgstr "Книги с наивысшим рейтингом" msgstr "Книги с наивысшим рейтингом"
#: cps/templates/index.xml:38 cps/web.py:496 #: cps/templates/index.xml:38 cps/web.py:495
msgid "Random Books" msgid "Random Books"
msgstr "Случайный выбор" msgstr "Случайный выбор"
#: cps/web.py:522 #: cps/web.py:521
msgid "Books" msgid "Books"
msgstr "" msgstr ""
#: cps/web.py:549 #: cps/web.py:548
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "Популярные книги (часто загружаемые)" msgstr "Популярные книги (часто загружаемые)"
#: cps/web.py:560 cps/web.py:1300 cps/web.py:1388 #: cps/web.py:559 cps/web.py:1320 cps/web.py:1408
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Невозможно открыть книгу. Файл не существует или недоступен." msgstr "Невозможно открыть книгу. Файл не существует или недоступен."
#: cps/web.py:573 #: cps/web.py:572
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "" msgstr ""
#: cps/web.py:585 #: cps/web.py:584
#, python-format #, python-format
msgid "Publisher: %(name)s" msgid "Publisher: %(name)s"
msgstr "Издатель: %(name)s" msgstr "Издатель: %(name)s"
#: cps/web.py:596 #: cps/web.py:595
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "Серии: %(serie)s" msgstr "Серии: %(serie)s"
#: cps/web.py:607 #: cps/web.py:606
#, python-format #, python-format
msgid "Rating: %(rating)s stars" msgid "Rating: %(rating)s stars"
msgstr "" msgstr ""
#: cps/web.py:618 #: cps/web.py:617
#, python-format #, python-format
msgid "File format: %(format)s" msgid "File format: %(format)s"
msgstr "" msgstr ""
#: cps/web.py:630 #: cps/web.py:629
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "Категория: %(name)s" msgstr "Категория: %(name)s"
#: cps/web.py:647 #: cps/web.py:646
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "Язык: %(name)s" msgstr "Язык: %(name)s"
#: cps/web.py:679 #: cps/web.py:678
msgid "Publisher list" msgid "Publisher list"
msgstr "Список издателей" msgstr "Список издателей"
#: cps/templates/index.xml:82 cps/web.py:695 #: cps/templates/index.xml:82 cps/web.py:694
msgid "Series list" msgid "Series list"
msgstr "Серии" msgstr "Серии"
#: cps/web.py:709 #: cps/web.py:708
msgid "Ratings list" msgid "Ratings list"
msgstr "" msgstr ""
#: cps/web.py:722 #: cps/web.py:721
msgid "File formats list" msgid "File formats list"
msgstr "" msgstr ""
#: cps/web.py:750 #: cps/web.py:749
msgid "Available languages" msgid "Available languages"
msgstr "Доступные языки" msgstr "Доступные языки"
#: cps/templates/index.xml:75 cps/web.py:767 #: cps/templates/index.xml:75 cps/web.py:766
msgid "Category list" msgid "Category list"
msgstr "Категории" msgstr "Категории"
#: cps/templates/layout.html:73 cps/web.py:781 #: cps/templates/layout.html:73 cps/web.py:780
msgid "Tasks" msgid "Tasks"
msgstr "Задания" msgstr "Задания"
#: cps/web.py:846 #: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45 cps/web.py:802 cps/web.py:804
msgid "Search"
msgstr "Поиск"
#: cps/web.py:851
msgid "Published after " msgid "Published after "
msgstr "Опубликовано до " msgstr "Опубликовано до "
#: cps/web.py:853 #: cps/web.py:858
msgid "Published before " msgid "Published before "
msgstr "Опубликовано после " msgstr "Опубликовано после "
#: cps/web.py:867 #: cps/web.py:872
#, python-format #, python-format
msgid "Rating <= %(rating)s" msgid "Rating <= %(rating)s"
msgstr "Рейтинг <= %(rating)s" msgstr "Рейтинг <= %(rating)s"
#: cps/web.py:869 #: cps/web.py:874
#, python-format #, python-format
msgid "Rating >= %(rating)s" msgid "Rating >= %(rating)s"
msgstr "Рейтинг >= %(rating)s" msgstr "Рейтинг >= %(rating)s"
#: cps/web.py:929 cps/web.py:939 #: cps/web.py:934 cps/web.py:944
msgid "search" msgid "search"
msgstr "поиск" msgstr "поиск"
#: cps/web.py:1022 #: cps/web.py:1027
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "Пожалуйста, сначала сконфигурируйте параметры SMTP" msgstr "Пожалуйста, сначала сконфигурируйте параметры SMTP"
#: cps/web.py:1027 #: cps/web.py:1032
#, python-format #, python-format
msgid "Book successfully queued for sending to %(kindlemail)s" msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Книга успешно поставлена в очередь для отправки на %(kindlemail)s" msgstr "Книга успешно поставлена в очередь для отправки на %(kindlemail)s"
#: cps/web.py:1031 #: cps/web.py:1036
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "Ошибка при отправке книги: %(res)s" msgstr "Ошибка при отправке книги: %(res)s"
#: cps/web.py:1051 cps/web.py:1076 cps/web.py:1080 cps/web.py:1085 #: cps/web.py:1056 cps/web.py:1081 cps/web.py:1085 cps/web.py:1090
#: cps/web.py:1089 #: cps/web.py:1094
msgid "register" msgid "register"
msgstr "регистрация" msgstr "регистрация"
#: cps/web.py:1078 #: cps/web.py:1083
msgid "Your e-mail is not allowed to register" msgid "Your e-mail is not allowed to register"
msgstr "Ваш e-mail не подходит для регистрации" msgstr "Ваш e-mail не подходит для регистрации"
#: cps/web.py:1081 #: cps/web.py:1086
msgid "Confirmation e-mail was send to your e-mail account." msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Письмо с подтверждением отправлено вам на e-mail" msgstr "Письмо с подтверждением отправлено вам на e-mail"
#: cps/web.py:1084 #: cps/web.py:1089
msgid "This username or e-mail address is already in use." msgid "This username or e-mail address is already in use."
msgstr "Этот никнейм или e-mail уже используются" msgstr "Этот никнейм или e-mail уже используются"
#: cps/web.py:1099 #: cps/web.py:1104
msgid "Cannot activate LDAP authentication" msgid "Cannot activate LDAP authentication"
msgstr "" msgstr ""
#: cps/web.py:1108 cps/web.py:1214 #: cps/web.py:1113 cps/web.py:1219
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "Вы вошли как пользователь '%(nickname)s'" msgstr "Вы вошли как пользователь '%(nickname)s'"
#: cps/web.py:1112 #: cps/web.py:1117
msgid "Could not login. LDAP server down, please contact your administrator" msgid "Could not login. LDAP server down, please contact your administrator"
msgstr "" msgstr ""
#: cps/web.py:1116 cps/web.py:1124 #: cps/web.py:1121 cps/web.py:1129
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "Ошибка в имени пользователя или пароле" msgstr "Ошибка в имени пользователя или пароле"
#: cps/web.py:1120 #: cps/web.py:1125
#, python-format #, python-format
msgid "You are now logged in as: '%(nickname)s'" msgid "You are now logged in as: '%(nickname)s'"
msgstr "" msgstr ""
#: cps/web.py:1128 cps/web.py:1150 #: cps/web.py:1133 cps/web.py:1155
msgid "login" msgid "login"
msgstr "войти" msgstr "войти"
#: cps/web.py:1162 cps/web.py:1193 #: cps/web.py:1167 cps/web.py:1198
msgid "Token not found" msgid "Token not found"
msgstr "Ключ не найден" msgstr "Ключ не найден"
#: cps/web.py:1170 cps/web.py:1201 #: cps/web.py:1175 cps/web.py:1206
msgid "Token has expired" msgid "Token has expired"
msgstr "Ключ просрочен" msgstr "Ключ просрочен"
#: cps/web.py:1178 #: cps/web.py:1183
msgid "Success! Please return to your device" msgid "Success! Please return to your device"
msgstr "Успешно! Пожалуйста, проверьте свое устройство" msgstr "Успешно! Пожалуйста, проверьте свое устройство"
#: cps/web.py:1255 cps/web.py:1282 cps/web.py:1286 #: cps/web.py:1260 cps/web.py:1302 cps/web.py:1306
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "Профиль %(name)s" msgstr "Профиль %(name)s"
#: cps/web.py:1284 #: cps/web.py:1304
msgid "Profile updated" msgid "Profile updated"
msgstr "Профиль обновлён" msgstr "Профиль обновлён"
#: cps/web.py:1310 cps/web.py:1312 cps/web.py:1314 cps/web.py:1320 #: cps/web.py:1330 cps/web.py:1332 cps/web.py:1334 cps/web.py:1340
#: cps/web.py:1324 #: cps/web.py:1344
msgid "Read a Book" msgid "Read a Book"
msgstr "Читать Книгу" msgstr "Читать Книгу"
#: cps/web.py:1334 #: cps/web.py:1354
msgid "Error opening eBook. File does not exist or file is not accessible." msgid "Error opening eBook. File does not exist or file is not accessible."
msgstr "" msgstr ""
@ -1056,7 +1067,7 @@ msgstr "Ok"
#: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147 #: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74
#: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/layout.html:28 cps/templates/shelf.html:73
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
#: cps/templates/user_edit.html:132 #: cps/templates/user_edit.html:132
msgid "Back" msgid "Back"
msgstr "Назад" msgstr "Назад"
@ -1690,11 +1701,6 @@ msgstr "Вы действительно желаете удалить это п
msgid "Next" msgid "Next"
msgstr "Дальше" msgstr "Дальше"
#: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45
msgid "Search"
msgstr "Поиск"
#: cps/templates/http_error.html:37 #: cps/templates/http_error.html:37
msgid "Create issue" msgid "Create issue"
msgstr "" msgstr ""
@ -2054,7 +2060,7 @@ msgstr "Удалить эту книжную полку"
msgid "Edit Shelf" msgid "Edit Shelf"
msgstr "Изменить Полку" msgstr "Изменить Полку"
#: cps/templates/shelf.html:12 cps/templates/shelf_order.html:11 #: cps/templates/shelf.html:12 cps/templates/shelf_order.html:31
msgid "Change order" msgid "Change order"
msgstr "Изменить порядок" msgstr "Изменить порядок"

File diff suppressed because it is too large Load Diff

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-web\n" "Project-Id-Version: Calibre-web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
"POT-Creation-Date: 2019-09-06 19:03+0200\n" "POT-Creation-Date: 2019-11-16 08:00+0100\n"
"PO-Revision-Date: 2017-04-30 00:47+0300\n" "PO-Revision-Date: 2017-04-30 00:47+0300\n"
"Last-Translator: ABIS Team <biblio.if.abis@gmail.com>\n" "Last-Translator: ABIS Team <biblio.if.abis@gmail.com>\n"
"Language: uk\n" "Language: uk\n"
@ -17,17 +17,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n" "Generated-By: Babel 2.7.0\n"
#: cps/about.py:40 cps/about.py:65 cps/about.py:66 cps/uploader.py:228 #: cps/about.py:41
msgid "installed" msgid "installed"
msgstr "" msgstr ""
#: cps/about.py:42 cps/about.py:65 cps/about.py:66 cps/uploader.py:213 #: cps/about.py:43
#: cps/uploader.py:214 cps/uploader.py:218 cps/uploader.py:222
#: cps/uploader.py:226 cps/uploader.py:230
msgid "not installed" msgid "not installed"
msgstr "не встановлено" msgstr "не встановлено"
#: cps/about.py:80 #: cps/about.py:81
msgid "Statistics" msgid "Statistics"
msgstr "Статистика" msgstr "Статистика"
@ -39,7 +37,7 @@ msgstr "Сервер перезавантажено, будь-ласка, пер
msgid "Performing shutdown of server, please close window" msgid "Performing shutdown of server, please close window"
msgstr "Виконується зупинка серверу, будь-ласка, закрийте вікно" msgstr "Виконується зупинка серверу, будь-ласка, закрийте вікно"
#: cps/admin.py:111 cps/updater.py:445 #: cps/admin.py:111 cps/updater.py:446
msgid "Unknown" msgid "Unknown"
msgstr "Невідомий" msgstr "Невідомий"
@ -59,7 +57,7 @@ msgstr ""
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "Настройки сервера" msgstr "Настройки сервера"
#: cps/admin.py:452 cps/web.py:1050 #: cps/admin.py:452 cps/web.py:1055
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "Будь-ласка, заповніть всі поля!" msgstr "Будь-ласка, заповніть всі поля!"
@ -68,7 +66,7 @@ msgstr "Будь-ласка, заповніть всі поля!"
msgid "Add new user" msgid "Add new user"
msgstr "Додати користувача" msgstr "Додати користувача"
#: cps/admin.py:463 cps/web.py:1253 #: cps/admin.py:463 cps/web.py:1258
msgid "E-mail is not from valid domain" msgid "E-mail is not from valid domain"
msgstr "" msgstr ""
@ -95,7 +93,7 @@ msgstr ""
msgid "There was an error sending the Test e-mail: %(res)s" msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "" msgstr ""
#: cps/admin.py:527 cps/web.py:1033 #: cps/admin.py:527 cps/web.py:1038
msgid "Please configure your kindle e-mail address first..." msgid "Please configure your kindle e-mail address first..."
msgstr "" msgstr ""
@ -112,85 +110,93 @@ msgstr "Користувача '%(nick)s' видалено"
msgid "No admin user remaining, can't delete user" msgid "No admin user remaining, can't delete user"
msgstr "" msgstr ""
#: cps/admin.py:600 cps/web.py:1279 #: cps/admin.py:599 cps/web.py:1299
msgid "Found an existing account for this e-mail address." msgid "Found an existing account for this e-mail address."
msgstr "" msgstr ""
#: cps/admin.py:603 cps/admin.py:615 #: cps/admin.py:602 cps/admin.py:615 cps/admin.py:629 cps/web.py:1274
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "Змінити користувача %(nick)s" msgstr "Змінити користувача %(nick)s"
#: cps/admin.py:609 #: cps/admin.py:608 cps/web.py:1267
msgid "This username is already taken"
msgstr ""
#: cps/admin.py:623
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "Користувача '%(nick)s' оновлено" msgstr "Користувача '%(nick)s' оновлено"
#: cps/admin.py:612 #: cps/admin.py:626
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "Сталась невідома помилка" msgstr "Сталась невідома помилка"
#: cps/admin.py:631 #: cps/admin.py:645
#, python-format #, python-format
msgid "Password for user %(user)s reset" msgid "Password for user %(user)s reset"
msgstr "" msgstr ""
#: cps/admin.py:634 cps/web.py:1075 #: cps/admin.py:648 cps/web.py:1080
msgid "An unknown error occurred. Please try again later." msgid "An unknown error occurred. Please try again later."
msgstr "" msgstr ""
#: cps/admin.py:645 #: cps/admin.py:659
msgid "Logfile viewer" msgid "Logfile viewer"
msgstr "" msgstr ""
#: cps/admin.py:680 #: cps/admin.py:694
msgid "Requesting update package" msgid "Requesting update package"
msgstr "Перевірка оновлень" msgstr "Перевірка оновлень"
#: cps/admin.py:681 #: cps/admin.py:695
msgid "Downloading update package" msgid "Downloading update package"
msgstr "Завантаження оновлень" msgstr "Завантаження оновлень"
#: cps/admin.py:682 #: cps/admin.py:696
msgid "Unzipping update package" msgid "Unzipping update package"
msgstr "Розпакування оновлення" msgstr "Розпакування оновлення"
#: cps/admin.py:683 #: cps/admin.py:697
msgid "Replacing files" msgid "Replacing files"
msgstr "" msgstr ""
#: cps/admin.py:684 #: cps/admin.py:698
msgid "Database connections are closed" msgid "Database connections are closed"
msgstr "З'єднання з базою даних закрите" msgstr "З'єднання з базою даних закрите"
#: cps/admin.py:685 #: cps/admin.py:699
msgid "Stopping server" msgid "Stopping server"
msgstr "" msgstr ""
#: cps/admin.py:686 #: cps/admin.py:700
msgid "Update finished, please press okay and reload page" msgid "Update finished, please press okay and reload page"
msgstr "Оновлення встановлені, натисніть ok і перезавантажте сторінку" msgstr "Оновлення встановлені, натисніть ok і перезавантажте сторінку"
#: cps/admin.py:687 cps/admin.py:688 cps/admin.py:689 cps/admin.py:690 #: cps/admin.py:701 cps/admin.py:702 cps/admin.py:703 cps/admin.py:704
msgid "Update failed:" msgid "Update failed:"
msgstr "" msgstr ""
#: cps/admin.py:687 cps/updater.py:271 cps/updater.py:456 cps/updater.py:458 #: cps/admin.py:701 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459
msgid "HTTP Error" msgid "HTTP Error"
msgstr "" msgstr ""
#: cps/admin.py:688 cps/updater.py:273 cps/updater.py:460 #: cps/admin.py:702 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "" msgstr ""
#: cps/admin.py:689 cps/updater.py:275 cps/updater.py:462 #: cps/admin.py:703 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
msgstr "" msgstr ""
#: cps/admin.py:690 cps/updater.py:277 cps/updater.py:464 #: cps/admin.py:704 cps/updater.py:278 cps/updater.py:465
msgid "General error" msgid "General error"
msgstr "" msgstr ""
#: cps/converter.py:31
msgid "not configured"
msgstr ""
#: cps/editbooks.py:214 cps/editbooks.py:393 #: cps/editbooks.py:214 cps/editbooks.py:393
msgid "Error opening eBook. File does not exist or file is not accessible" msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "Сталась помилка при відкриванні eBook. Файл не існує або відсутній доступ до нього" msgstr "Сталась помилка при відкриванні eBook. Файл не існує або відсутній доступ до нього"
@ -574,7 +580,7 @@ msgid "Show best rated books"
msgstr "Показувати книги з найвищим рейтингом" msgstr "Показувати книги з найвищим рейтингом"
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67 #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
#: cps/web.py:971 #: cps/web.py:976
msgid "Read Books" msgid "Read Books"
msgstr "Прочитані книги" msgstr "Прочитані книги"
@ -583,7 +589,7 @@ msgid "Show read and unread"
msgstr "Показувати прочитані та непрочитані книги" msgstr "Показувати прочитані та непрочитані книги"
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71 #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
#: cps/web.py:975 #: cps/web.py:980
msgid "Unread Books" msgid "Unread Books"
msgstr "Непрочитані книги" msgstr "Непрочитані книги"
@ -656,228 +662,233 @@ msgstr ""
msgid "Show file formats selection" msgid "Show file formats selection"
msgstr "" msgstr ""
#: cps/updater.py:251 cps/updater.py:358 cps/updater.py:371 #: cps/updater.py:252 cps/updater.py:359 cps/updater.py:372
msgid "Unexpected data while reading update information" msgid "Unexpected data while reading update information"
msgstr "" msgstr ""
#: cps/updater.py:258 cps/updater.py:364 #: cps/updater.py:259 cps/updater.py:365
msgid "No update available. You already have the latest version installed" msgid "No update available. You already have the latest version installed"
msgstr "" msgstr ""
#: cps/updater.py:284 #: cps/updater.py:285
msgid "A new update is available. Click on the button below to update to the latest version." msgid "A new update is available. Click on the button below to update to the latest version."
msgstr "" msgstr ""
#: cps/updater.py:337 #: cps/updater.py:338
msgid "Could not fetch update information" msgid "Could not fetch update information"
msgstr "" msgstr ""
#: cps/updater.py:351 #: cps/updater.py:352
msgid "No release information available" msgid "No release information available"
msgstr "" msgstr ""
#: cps/updater.py:404 cps/updater.py:413 #: cps/updater.py:405 cps/updater.py:414
#, python-format #, python-format
msgid "A new update is available. Click on the button below to update to version: %(version)s" msgid "A new update is available. Click on the button below to update to version: %(version)s"
msgstr "" msgstr ""
#: cps/updater.py:423 #: cps/updater.py:424
msgid "Click on the button below to update to the latest stable version." msgid "Click on the button below to update to the latest stable version."
msgstr "" msgstr ""
#: cps/web.py:460 #: cps/web.py:459
msgid "Recently Added Books" msgid "Recently Added Books"
msgstr "Нещодавно додані книги" msgstr "Нещодавно додані книги"
#: cps/web.py:488 #: cps/web.py:487
msgid "Best rated books" msgid "Best rated books"
msgstr "Книги з найкращим рейтингом" msgstr "Книги з найкращим рейтингом"
#: cps/templates/index.xml:38 cps/web.py:496 #: cps/templates/index.xml:38 cps/web.py:495
msgid "Random Books" msgid "Random Books"
msgstr "Випадковий список книг" msgstr "Випадковий список книг"
#: cps/web.py:522 #: cps/web.py:521
msgid "Books" msgid "Books"
msgstr "" msgstr ""
#: cps/web.py:549 #: cps/web.py:548
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "Популярні книги (найбільш завантажувані)" msgstr "Популярні книги (найбільш завантажувані)"
#: cps/web.py:560 cps/web.py:1300 cps/web.py:1388 #: cps/web.py:559 cps/web.py:1320 cps/web.py:1408
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Неможливо відкрити книгу. Файл не існує або немає доступу." msgstr "Неможливо відкрити книгу. Файл не існує або немає доступу."
#: cps/web.py:573 #: cps/web.py:572
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "" msgstr ""
#: cps/web.py:585 #: cps/web.py:584
#, python-format #, python-format
msgid "Publisher: %(name)s" msgid "Publisher: %(name)s"
msgstr "" msgstr ""
#: cps/web.py:596 #: cps/web.py:595
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "Серії: %(serie)s" msgstr "Серії: %(serie)s"
#: cps/web.py:607 #: cps/web.py:606
#, python-format #, python-format
msgid "Rating: %(rating)s stars" msgid "Rating: %(rating)s stars"
msgstr "" msgstr ""
#: cps/web.py:618 #: cps/web.py:617
#, python-format #, python-format
msgid "File format: %(format)s" msgid "File format: %(format)s"
msgstr "" msgstr ""
#: cps/web.py:630 #: cps/web.py:629
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "Категорія: %(name)s" msgstr "Категорія: %(name)s"
#: cps/web.py:647 #: cps/web.py:646
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "Мова: %(name)s" msgstr "Мова: %(name)s"
#: cps/web.py:679 #: cps/web.py:678
msgid "Publisher list" msgid "Publisher list"
msgstr "" msgstr ""
#: cps/templates/index.xml:82 cps/web.py:695 #: cps/templates/index.xml:82 cps/web.py:694
msgid "Series list" msgid "Series list"
msgstr "Список серій" msgstr "Список серій"
#: cps/web.py:709 #: cps/web.py:708
msgid "Ratings list" msgid "Ratings list"
msgstr "" msgstr ""
#: cps/web.py:722 #: cps/web.py:721
msgid "File formats list" msgid "File formats list"
msgstr "" msgstr ""
#: cps/web.py:750 #: cps/web.py:749
msgid "Available languages" msgid "Available languages"
msgstr "Доступні мови" msgstr "Доступні мови"
#: cps/templates/index.xml:75 cps/web.py:767 #: cps/templates/index.xml:75 cps/web.py:766
msgid "Category list" msgid "Category list"
msgstr "Список категорій" msgstr "Список категорій"
#: cps/templates/layout.html:73 cps/web.py:781 #: cps/templates/layout.html:73 cps/web.py:780
msgid "Tasks" msgid "Tasks"
msgstr "" msgstr ""
#: cps/web.py:846 #: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45 cps/web.py:802 cps/web.py:804
msgid "Search"
msgstr "Пошук"
#: cps/web.py:851
msgid "Published after " msgid "Published after "
msgstr "" msgstr ""
#: cps/web.py:853 #: cps/web.py:858
msgid "Published before " msgid "Published before "
msgstr "Опубліковано до" msgstr "Опубліковано до"
#: cps/web.py:867 #: cps/web.py:872
#, python-format #, python-format
msgid "Rating <= %(rating)s" msgid "Rating <= %(rating)s"
msgstr "" msgstr ""
#: cps/web.py:869 #: cps/web.py:874
#, python-format #, python-format
msgid "Rating >= %(rating)s" msgid "Rating >= %(rating)s"
msgstr "" msgstr ""
#: cps/web.py:929 cps/web.py:939 #: cps/web.py:934 cps/web.py:944
msgid "search" msgid "search"
msgstr "пошук" msgstr "пошук"
#: cps/web.py:1022 #: cps/web.py:1027
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "Будь-ласка, спочатку сконфігуруйте параметри SMTP" msgstr "Будь-ласка, спочатку сконфігуруйте параметри SMTP"
#: cps/web.py:1027 #: cps/web.py:1032
#, python-format #, python-format
msgid "Book successfully queued for sending to %(kindlemail)s" msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "" msgstr ""
#: cps/web.py:1031 #: cps/web.py:1036
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "Помилка при відправці книги: %(res)s" msgstr "Помилка при відправці книги: %(res)s"
#: cps/web.py:1051 cps/web.py:1076 cps/web.py:1080 cps/web.py:1085 #: cps/web.py:1056 cps/web.py:1081 cps/web.py:1085 cps/web.py:1090
#: cps/web.py:1089 #: cps/web.py:1094
msgid "register" msgid "register"
msgstr "зареєструватись" msgstr "зареєструватись"
#: cps/web.py:1078 #: cps/web.py:1083
msgid "Your e-mail is not allowed to register" msgid "Your e-mail is not allowed to register"
msgstr "" msgstr ""
#: cps/web.py:1081 #: cps/web.py:1086
msgid "Confirmation e-mail was send to your e-mail account." msgid "Confirmation e-mail was send to your e-mail account."
msgstr "" msgstr ""
#: cps/web.py:1084 #: cps/web.py:1089
msgid "This username or e-mail address is already in use." msgid "This username or e-mail address is already in use."
msgstr "" msgstr ""
#: cps/web.py:1099 #: cps/web.py:1104
msgid "Cannot activate LDAP authentication" msgid "Cannot activate LDAP authentication"
msgstr "" msgstr ""
#: cps/web.py:1108 cps/web.py:1214 #: cps/web.py:1113 cps/web.py:1219
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "Ви увійшли як користувач: '%(nickname)s'" msgstr "Ви увійшли як користувач: '%(nickname)s'"
#: cps/web.py:1112 #: cps/web.py:1117
msgid "Could not login. LDAP server down, please contact your administrator" msgid "Could not login. LDAP server down, please contact your administrator"
msgstr "" msgstr ""
#: cps/web.py:1116 cps/web.py:1124 #: cps/web.py:1121 cps/web.py:1129
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "Помилка в імені користувача або паролі" msgstr "Помилка в імені користувача або паролі"
#: cps/web.py:1120 #: cps/web.py:1125
#, python-format #, python-format
msgid "You are now logged in as: '%(nickname)s'" msgid "You are now logged in as: '%(nickname)s'"
msgstr "" msgstr ""
#: cps/web.py:1128 cps/web.py:1150 #: cps/web.py:1133 cps/web.py:1155
msgid "login" msgid "login"
msgstr "увійти" msgstr "увійти"
#: cps/web.py:1162 cps/web.py:1193 #: cps/web.py:1167 cps/web.py:1198
msgid "Token not found" msgid "Token not found"
msgstr "Токен не знайдено" msgstr "Токен не знайдено"
#: cps/web.py:1170 cps/web.py:1201 #: cps/web.py:1175 cps/web.py:1206
msgid "Token has expired" msgid "Token has expired"
msgstr "Час дії токено вичерпано" msgstr "Час дії токено вичерпано"
#: cps/web.py:1178 #: cps/web.py:1183
msgid "Success! Please return to your device" msgid "Success! Please return to your device"
msgstr "Вдалося! Будь-ласка, поверніться до вашого пристрою" msgstr "Вдалося! Будь-ласка, поверніться до вашого пристрою"
#: cps/web.py:1255 cps/web.py:1282 cps/web.py:1286 #: cps/web.py:1260 cps/web.py:1302 cps/web.py:1306
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "Профіль %(name)s" msgstr "Профіль %(name)s"
#: cps/web.py:1284 #: cps/web.py:1304
msgid "Profile updated" msgid "Profile updated"
msgstr "Профіль оновлено" msgstr "Профіль оновлено"
#: cps/web.py:1310 cps/web.py:1312 cps/web.py:1314 cps/web.py:1320 #: cps/web.py:1330 cps/web.py:1332 cps/web.py:1334 cps/web.py:1340
#: cps/web.py:1324 #: cps/web.py:1344
msgid "Read a Book" msgid "Read a Book"
msgstr "Читати книгу" msgstr "Читати книгу"
#: cps/web.py:1334 #: cps/web.py:1354
msgid "Error opening eBook. File does not exist or file is not accessible." msgid "Error opening eBook. File does not exist or file is not accessible."
msgstr "" msgstr ""
@ -1055,7 +1066,7 @@ msgstr "Ok"
#: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147 #: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74
#: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/layout.html:28 cps/templates/shelf.html:73
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
#: cps/templates/user_edit.html:132 #: cps/templates/user_edit.html:132
msgid "Back" msgid "Back"
msgstr "Назад" msgstr "Назад"
@ -1689,11 +1700,6 @@ msgstr ""
msgid "Next" msgid "Next"
msgstr "Далі" msgstr "Далі"
#: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45
msgid "Search"
msgstr "Пошук"
#: cps/templates/http_error.html:37 #: cps/templates/http_error.html:37
msgid "Create issue" msgid "Create issue"
msgstr "" msgstr ""
@ -2053,7 +2059,7 @@ msgstr "Видалити цю книжкову полицю"
msgid "Edit Shelf" msgid "Edit Shelf"
msgstr "" msgstr ""
#: cps/templates/shelf.html:12 cps/templates/shelf_order.html:11 #: cps/templates/shelf.html:12 cps/templates/shelf_order.html:31
msgid "Change order" msgid "Change order"
msgstr "Змінити порядок" msgstr "Змінити порядок"

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2019-09-06 19:03+0200\n" "POT-Creation-Date: 2019-11-16 08:00+0100\n"
"PO-Revision-Date: 2017-01-06 17:00+0000\n" "PO-Revision-Date: 2017-01-06 17:00+0000\n"
"Last-Translator: dalin <dalin.lin@gmail.com>\n" "Last-Translator: dalin <dalin.lin@gmail.com>\n"
"Language: zh_Hans_CN\n" "Language: zh_Hans_CN\n"
@ -18,17 +18,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n" "Generated-By: Babel 2.7.0\n"
#: cps/about.py:40 cps/about.py:65 cps/about.py:66 cps/uploader.py:228 #: cps/about.py:41
msgid "installed" msgid "installed"
msgstr "" msgstr ""
#: cps/about.py:42 cps/about.py:65 cps/about.py:66 cps/uploader.py:213 #: cps/about.py:43
#: cps/uploader.py:214 cps/uploader.py:218 cps/uploader.py:222
#: cps/uploader.py:226 cps/uploader.py:230
msgid "not installed" msgid "not installed"
msgstr "未安装" msgstr "未安装"
#: cps/about.py:80 #: cps/about.py:81
msgid "Statistics" msgid "Statistics"
msgstr "统计" msgstr "统计"
@ -40,7 +38,7 @@ msgstr "服务器已重启,请刷新页面"
msgid "Performing shutdown of server, please close window" msgid "Performing shutdown of server, please close window"
msgstr "正在关闭服务器,请关闭窗口" msgstr "正在关闭服务器,请关闭窗口"
#: cps/admin.py:111 cps/updater.py:445 #: cps/admin.py:111 cps/updater.py:446
msgid "Unknown" msgid "Unknown"
msgstr "未知" msgstr "未知"
@ -60,7 +58,7 @@ msgstr "Calibre-Web配置已更新"
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "基本配置" msgstr "基本配置"
#: cps/admin.py:452 cps/web.py:1050 #: cps/admin.py:452 cps/web.py:1055
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "请填写所有字段" msgstr "请填写所有字段"
@ -69,7 +67,7 @@ msgstr "请填写所有字段"
msgid "Add new user" msgid "Add new user"
msgstr "添加新用户" msgstr "添加新用户"
#: cps/admin.py:463 cps/web.py:1253 #: cps/admin.py:463 cps/web.py:1258
msgid "E-mail is not from valid domain" msgid "E-mail is not from valid domain"
msgstr "邮箱不在有效域中'" msgstr "邮箱不在有效域中'"
@ -96,7 +94,7 @@ msgstr "测试邮件已经被成功发到 %(kindlemail)s"
msgid "There was an error sending the Test e-mail: %(res)s" msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "发送测试邮件出错了: %(res)s" msgstr "发送测试邮件出错了: %(res)s"
#: cps/admin.py:527 cps/web.py:1033 #: cps/admin.py:527 cps/web.py:1038
msgid "Please configure your kindle e-mail address first..." msgid "Please configure your kindle e-mail address first..."
msgstr "请先配置您的kindle邮箱..." msgstr "请先配置您的kindle邮箱..."
@ -113,85 +111,93 @@ msgstr "用户 '%(nick)s' 已被删除"
msgid "No admin user remaining, can't delete user" msgid "No admin user remaining, can't delete user"
msgstr "" msgstr ""
#: cps/admin.py:600 cps/web.py:1279 #: cps/admin.py:599 cps/web.py:1299
msgid "Found an existing account for this e-mail address." msgid "Found an existing account for this e-mail address."
msgstr "找到一个已有账号使用这个邮箱。" msgstr "找到一个已有账号使用这个邮箱。"
#: cps/admin.py:603 cps/admin.py:615 #: cps/admin.py:602 cps/admin.py:615 cps/admin.py:629 cps/web.py:1274
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "编辑用户 %(nick)s" msgstr "编辑用户 %(nick)s"
#: cps/admin.py:609 #: cps/admin.py:608 cps/web.py:1267
msgid "This username is already taken"
msgstr ""
#: cps/admin.py:623
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "用户 '%(nick)s' 已被更新" msgstr "用户 '%(nick)s' 已被更新"
#: cps/admin.py:612 #: cps/admin.py:626
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "发生未知错误。" msgstr "发生未知错误。"
#: cps/admin.py:631 #: cps/admin.py:645
#, python-format #, python-format
msgid "Password for user %(user)s reset" msgid "Password for user %(user)s reset"
msgstr "用户 %(user)s 的密码已重置" msgstr "用户 %(user)s 的密码已重置"
#: cps/admin.py:634 cps/web.py:1075 #: cps/admin.py:648 cps/web.py:1080
msgid "An unknown error occurred. Please try again later." msgid "An unknown error occurred. Please try again later."
msgstr "发生一个未知错误,请稍后再试。" msgstr "发生一个未知错误,请稍后再试。"
#: cps/admin.py:645 #: cps/admin.py:659
msgid "Logfile viewer" msgid "Logfile viewer"
msgstr "" msgstr ""
#: cps/admin.py:680 #: cps/admin.py:694
msgid "Requesting update package" msgid "Requesting update package"
msgstr "正在请求更新包" msgstr "正在请求更新包"
#: cps/admin.py:681 #: cps/admin.py:695
msgid "Downloading update package" msgid "Downloading update package"
msgstr "正在下载更新包" msgstr "正在下载更新包"
#: cps/admin.py:682 #: cps/admin.py:696
msgid "Unzipping update package" msgid "Unzipping update package"
msgstr "正在解压更新包" msgstr "正在解压更新包"
#: cps/admin.py:683 #: cps/admin.py:697
msgid "Replacing files" msgid "Replacing files"
msgstr "正在替换文件" msgstr "正在替换文件"
#: cps/admin.py:684 #: cps/admin.py:698
msgid "Database connections are closed" msgid "Database connections are closed"
msgstr "数据库连接已关闭" msgstr "数据库连接已关闭"
#: cps/admin.py:685 #: cps/admin.py:699
msgid "Stopping server" msgid "Stopping server"
msgstr "正在停止服务器" msgstr "正在停止服务器"
#: cps/admin.py:686 #: cps/admin.py:700
msgid "Update finished, please press okay and reload page" msgid "Update finished, please press okay and reload page"
msgstr "更新完成,请按确定并刷新页面" msgstr "更新完成,请按确定并刷新页面"
#: cps/admin.py:687 cps/admin.py:688 cps/admin.py:689 cps/admin.py:690 #: cps/admin.py:701 cps/admin.py:702 cps/admin.py:703 cps/admin.py:704
msgid "Update failed:" msgid "Update failed:"
msgstr "更新失败:" msgstr "更新失败:"
#: cps/admin.py:687 cps/updater.py:271 cps/updater.py:456 cps/updater.py:458 #: cps/admin.py:701 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459
msgid "HTTP Error" msgid "HTTP Error"
msgstr "HTTP错误" msgstr "HTTP错误"
#: cps/admin.py:688 cps/updater.py:273 cps/updater.py:460 #: cps/admin.py:702 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "连接错误" msgstr "连接错误"
#: cps/admin.py:689 cps/updater.py:275 cps/updater.py:462 #: cps/admin.py:703 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
msgstr "建立连接超时" msgstr "建立连接超时"
#: cps/admin.py:690 cps/updater.py:277 cps/updater.py:464 #: cps/admin.py:704 cps/updater.py:278 cps/updater.py:465
msgid "General error" msgid "General error"
msgstr "一般错误" msgstr "一般错误"
#: cps/converter.py:31
msgid "not configured"
msgstr ""
#: cps/editbooks.py:214 cps/editbooks.py:393 #: cps/editbooks.py:214 cps/editbooks.py:393
msgid "Error opening eBook. File does not exist or file is not accessible" msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "打开电子书出错。文件不存在或不可访问" msgstr "打开电子书出错。文件不存在或不可访问"
@ -575,7 +581,7 @@ msgid "Show best rated books"
msgstr "显示最高评分书籍" msgstr "显示最高评分书籍"
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67 #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
#: cps/web.py:971 #: cps/web.py:976
msgid "Read Books" msgid "Read Books"
msgstr "已读书籍" msgstr "已读书籍"
@ -584,7 +590,7 @@ msgid "Show read and unread"
msgstr "显示已读和未读" msgstr "显示已读和未读"
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71 #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
#: cps/web.py:975 #: cps/web.py:980
msgid "Unread Books" msgid "Unread Books"
msgstr "未读书籍" msgstr "未读书籍"
@ -657,228 +663,233 @@ msgstr ""
msgid "Show file formats selection" msgid "Show file formats selection"
msgstr "" msgstr ""
#: cps/updater.py:251 cps/updater.py:358 cps/updater.py:371 #: cps/updater.py:252 cps/updater.py:359 cps/updater.py:372
msgid "Unexpected data while reading update information" msgid "Unexpected data while reading update information"
msgstr "读取更新信息时出现异常数据" msgstr "读取更新信息时出现异常数据"
#: cps/updater.py:258 cps/updater.py:364 #: cps/updater.py:259 cps/updater.py:365
msgid "No update available. You already have the latest version installed" msgid "No update available. You already have the latest version installed"
msgstr "没有可用更新。您已经安装了最新版本" msgstr "没有可用更新。您已经安装了最新版本"
#: cps/updater.py:284 #: cps/updater.py:285
msgid "A new update is available. Click on the button below to update to the latest version." msgid "A new update is available. Click on the button below to update to the latest version."
msgstr "有一个更新可用。点击正文按钮更新到最新版本。" msgstr "有一个更新可用。点击正文按钮更新到最新版本。"
#: cps/updater.py:337 #: cps/updater.py:338
msgid "Could not fetch update information" msgid "Could not fetch update information"
msgstr "无法获取更新信息" msgstr "无法获取更新信息"
#: cps/updater.py:351 #: cps/updater.py:352
msgid "No release information available" msgid "No release information available"
msgstr "" msgstr ""
#: cps/updater.py:404 cps/updater.py:413 #: cps/updater.py:405 cps/updater.py:414
#, python-format #, python-format
msgid "A new update is available. Click on the button below to update to version: %(version)s" msgid "A new update is available. Click on the button below to update to version: %(version)s"
msgstr "" msgstr ""
#: cps/updater.py:423 #: cps/updater.py:424
msgid "Click on the button below to update to the latest stable version." msgid "Click on the button below to update to the latest stable version."
msgstr "" msgstr ""
#: cps/web.py:460 #: cps/web.py:459
msgid "Recently Added Books" msgid "Recently Added Books"
msgstr "最近添加的书籍" msgstr "最近添加的书籍"
#: cps/web.py:488 #: cps/web.py:487
msgid "Best rated books" msgid "Best rated books"
msgstr "最高评分书籍" msgstr "最高评分书籍"
#: cps/templates/index.xml:38 cps/web.py:496 #: cps/templates/index.xml:38 cps/web.py:495
msgid "Random Books" msgid "Random Books"
msgstr "随机书籍" msgstr "随机书籍"
#: cps/web.py:522 #: cps/web.py:521
msgid "Books" msgid "Books"
msgstr "" msgstr ""
#: cps/web.py:549 #: cps/web.py:548
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "热门书籍(最多下载)" msgstr "热门书籍(最多下载)"
#: cps/web.py:560 cps/web.py:1300 cps/web.py:1388 #: cps/web.py:559 cps/web.py:1320 cps/web.py:1408
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "无法打开电子书。 文件不存在或者文件不可访问:" msgstr "无法打开电子书。 文件不存在或者文件不可访问:"
#: cps/web.py:573 #: cps/web.py:572
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "" msgstr ""
#: cps/web.py:585 #: cps/web.py:584
#, python-format #, python-format
msgid "Publisher: %(name)s" msgid "Publisher: %(name)s"
msgstr "出版社: %(name)s" msgstr "出版社: %(name)s"
#: cps/web.py:596 #: cps/web.py:595
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "丛书: %(serie)s" msgstr "丛书: %(serie)s"
#: cps/web.py:607 #: cps/web.py:606
#, python-format #, python-format
msgid "Rating: %(rating)s stars" msgid "Rating: %(rating)s stars"
msgstr "" msgstr ""
#: cps/web.py:618 #: cps/web.py:617
#, python-format #, python-format
msgid "File format: %(format)s" msgid "File format: %(format)s"
msgstr "" msgstr ""
#: cps/web.py:630 #: cps/web.py:629
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "分类: %(name)s" msgstr "分类: %(name)s"
#: cps/web.py:647 #: cps/web.py:646
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "语言: %(name)s" msgstr "语言: %(name)s"
#: cps/web.py:679 #: cps/web.py:678
msgid "Publisher list" msgid "Publisher list"
msgstr "出版社列表" msgstr "出版社列表"
#: cps/templates/index.xml:82 cps/web.py:695 #: cps/templates/index.xml:82 cps/web.py:694
msgid "Series list" msgid "Series list"
msgstr "丛书列表" msgstr "丛书列表"
#: cps/web.py:709 #: cps/web.py:708
msgid "Ratings list" msgid "Ratings list"
msgstr "" msgstr ""
#: cps/web.py:722 #: cps/web.py:721
msgid "File formats list" msgid "File formats list"
msgstr "" msgstr ""
#: cps/web.py:750 #: cps/web.py:749
msgid "Available languages" msgid "Available languages"
msgstr "可用语言" msgstr "可用语言"
#: cps/templates/index.xml:75 cps/web.py:767 #: cps/templates/index.xml:75 cps/web.py:766
msgid "Category list" msgid "Category list"
msgstr "分类列表" msgstr "分类列表"
#: cps/templates/layout.html:73 cps/web.py:781 #: cps/templates/layout.html:73 cps/web.py:780
msgid "Tasks" msgid "Tasks"
msgstr "任务" msgstr "任务"
#: cps/web.py:846 #: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45 cps/web.py:802 cps/web.py:804
msgid "Search"
msgstr "搜索"
#: cps/web.py:851
msgid "Published after " msgid "Published after "
msgstr "出版时晚于 " msgstr "出版时晚于 "
#: cps/web.py:853 #: cps/web.py:858
msgid "Published before " msgid "Published before "
msgstr "出版时早于 " msgstr "出版时早于 "
#: cps/web.py:867 #: cps/web.py:872
#, python-format #, python-format
msgid "Rating <= %(rating)s" msgid "Rating <= %(rating)s"
msgstr "评分 <= %(rating)s" msgstr "评分 <= %(rating)s"
#: cps/web.py:869 #: cps/web.py:874
#, python-format #, python-format
msgid "Rating >= %(rating)s" msgid "Rating >= %(rating)s"
msgstr "评分 >= %(rating)s" msgstr "评分 >= %(rating)s"
#: cps/web.py:929 cps/web.py:939 #: cps/web.py:934 cps/web.py:944
msgid "search" msgid "search"
msgstr "搜索" msgstr "搜索"
#: cps/web.py:1022 #: cps/web.py:1027
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "请先配置SMTP邮箱..." msgstr "请先配置SMTP邮箱..."
#: cps/web.py:1027 #: cps/web.py:1032
#, python-format #, python-format
msgid "Book successfully queued for sending to %(kindlemail)s" msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "书籍已经被成功加入 %(kindlemail)s 的发送队列" msgstr "书籍已经被成功加入 %(kindlemail)s 的发送队列"
#: cps/web.py:1031 #: cps/web.py:1036
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "发送这本书的时候出现错误: %(res)s" msgstr "发送这本书的时候出现错误: %(res)s"
#: cps/web.py:1051 cps/web.py:1076 cps/web.py:1080 cps/web.py:1085 #: cps/web.py:1056 cps/web.py:1081 cps/web.py:1085 cps/web.py:1090
#: cps/web.py:1089 #: cps/web.py:1094
msgid "register" msgid "register"
msgstr "注册" msgstr "注册"
#: cps/web.py:1078 #: cps/web.py:1083
msgid "Your e-mail is not allowed to register" msgid "Your e-mail is not allowed to register"
msgstr "您的邮箱不能用来注册" msgstr "您的邮箱不能用来注册"
#: cps/web.py:1081 #: cps/web.py:1086
msgid "Confirmation e-mail was send to your e-mail account." msgid "Confirmation e-mail was send to your e-mail account."
msgstr "确认邮件已经发送到您的邮箱。" msgstr "确认邮件已经发送到您的邮箱。"
#: cps/web.py:1084 #: cps/web.py:1089
msgid "This username or e-mail address is already in use." msgid "This username or e-mail address is already in use."
msgstr "这个用户名或者邮箱已经被使用。" msgstr "这个用户名或者邮箱已经被使用。"
#: cps/web.py:1099 #: cps/web.py:1104
msgid "Cannot activate LDAP authentication" msgid "Cannot activate LDAP authentication"
msgstr "" msgstr ""
#: cps/web.py:1108 cps/web.py:1214 #: cps/web.py:1113 cps/web.py:1219
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "您现在已以'%(nickname)s'身份登录" msgstr "您现在已以'%(nickname)s'身份登录"
#: cps/web.py:1112 #: cps/web.py:1117
msgid "Could not login. LDAP server down, please contact your administrator" msgid "Could not login. LDAP server down, please contact your administrator"
msgstr "" msgstr ""
#: cps/web.py:1116 cps/web.py:1124 #: cps/web.py:1121 cps/web.py:1129
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "用户名或密码错误" msgstr "用户名或密码错误"
#: cps/web.py:1120 #: cps/web.py:1125
#, python-format #, python-format
msgid "You are now logged in as: '%(nickname)s'" msgid "You are now logged in as: '%(nickname)s'"
msgstr "" msgstr ""
#: cps/web.py:1128 cps/web.py:1150 #: cps/web.py:1133 cps/web.py:1155
msgid "login" msgid "login"
msgstr "登录" msgstr "登录"
#: cps/web.py:1162 cps/web.py:1193 #: cps/web.py:1167 cps/web.py:1198
msgid "Token not found" msgid "Token not found"
msgstr "找不到Token" msgstr "找不到Token"
#: cps/web.py:1170 cps/web.py:1201 #: cps/web.py:1175 cps/web.py:1206
msgid "Token has expired" msgid "Token has expired"
msgstr "Token已过期" msgstr "Token已过期"
#: cps/web.py:1178 #: cps/web.py:1183
msgid "Success! Please return to your device" msgid "Success! Please return to your device"
msgstr "成功!请返回您的设备" msgstr "成功!请返回您的设备"
#: cps/web.py:1255 cps/web.py:1282 cps/web.py:1286 #: cps/web.py:1260 cps/web.py:1302 cps/web.py:1306
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "%(name)s 的资料" msgstr "%(name)s 的资料"
#: cps/web.py:1284 #: cps/web.py:1304
msgid "Profile updated" msgid "Profile updated"
msgstr "资料已更新" msgstr "资料已更新"
#: cps/web.py:1310 cps/web.py:1312 cps/web.py:1314 cps/web.py:1320 #: cps/web.py:1330 cps/web.py:1332 cps/web.py:1334 cps/web.py:1340
#: cps/web.py:1324 #: cps/web.py:1344
msgid "Read a Book" msgid "Read a Book"
msgstr "阅读一本书" msgstr "阅读一本书"
#: cps/web.py:1334 #: cps/web.py:1354
msgid "Error opening eBook. File does not exist or file is not accessible." msgid "Error opening eBook. File does not exist or file is not accessible."
msgstr "" msgstr ""
@ -1056,7 +1067,7 @@ msgstr "确定"
#: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147 #: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74
#: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/layout.html:28 cps/templates/shelf.html:73
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
#: cps/templates/user_edit.html:132 #: cps/templates/user_edit.html:132
msgid "Back" msgid "Back"
msgstr "后退" msgstr "后退"
@ -1690,11 +1701,6 @@ msgstr "您确定要删除这条域名规则吗?"
msgid "Next" msgid "Next"
msgstr "下一个" msgstr "下一个"
#: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45
msgid "Search"
msgstr "搜索"
#: cps/templates/http_error.html:37 #: cps/templates/http_error.html:37
msgid "Create issue" msgid "Create issue"
msgstr "" msgstr ""
@ -2054,7 +2060,7 @@ msgstr "删除此书架"
msgid "Edit Shelf" msgid "Edit Shelf"
msgstr "编辑书架" msgstr "编辑书架"
#: cps/templates/shelf.html:12 cps/templates/shelf_order.html:11 #: cps/templates/shelf.html:12 cps/templates/shelf_order.html:31
msgid "Change order" msgid "Change order"
msgstr "修改顺序" msgstr "修改顺序"

@ -21,9 +21,6 @@ from __future__ import division, print_function, unicode_literals
import os import os
import hashlib import hashlib
from tempfile import gettempdir from tempfile import gettempdir
from flask_babel import gettext as _
from . import logger, comic from . import logger, comic
from .constants import BookMeta from .constants import BookMeta
@ -68,16 +65,13 @@ except ImportError as e:
use_fb2_meta = False use_fb2_meta = False
try: try:
from PIL import Image from PIL import Image as PILImage
from PIL import __version__ as PILversion from PIL import __version__ as PILversion
use_PIL = True use_PIL = True
except ImportError as e: except ImportError as e:
log.debug('cannot import Pillow, using png and webp images as cover will not work: %s', e) log.debug('cannot import Pillow, using png and webp images as cover will not work: %s', e)
use_generic_pdf_cover = True
use_PIL = False use_PIL = False
__author__ = 'lemmsh' __author__ = 'lemmsh'
@ -149,51 +143,11 @@ def pdf_preview(tmp_file_path, tmp_dir):
if use_generic_pdf_cover: if use_generic_pdf_cover:
return None return None
else: else:
if use_PIL:
try:
input1 = PdfFileReader(open(tmp_file_path, 'rb'), strict=False)
page0 = input1.getPage(0)
xObject = page0['/Resources']['/XObject'].getObject()
for obj in xObject:
if xObject[obj]['/Subtype'] == '/Image':
size = (xObject[obj]['/Width'], xObject[obj]['/Height'])
data = xObject[obj]._data # xObject[obj].getData()
if xObject[obj]['/ColorSpace'] == '/DeviceRGB':
mode = "RGB"
else:
mode = "P"
if '/Filter' in xObject[obj]:
if xObject[obj]['/Filter'] == '/FlateDecode':
img = Image.frombytes(mode, size, data)
cover_file_name = os.path.splitext(tmp_file_path)[0] + ".cover.png"
img.save(filename=os.path.join(tmp_dir, cover_file_name))
return cover_file_name
# img.save(obj[1:] + ".png")
elif xObject[obj]['/Filter'] == '/DCTDecode':
cover_file_name = os.path.splitext(tmp_file_path)[0] + ".cover.jpg"
img = open(cover_file_name, "wb")
img.write(data)
img.close()
return cover_file_name
elif xObject[obj]['/Filter'] == '/JPXDecode':
cover_file_name = os.path.splitext(tmp_file_path)[0] + ".cover.jp2"
img = open(cover_file_name, "wb")
img.write(data)
img.close()
return cover_file_name
else:
img = Image.frombytes(mode, size, data)
cover_file_name = os.path.splitext(tmp_file_path)[0] + ".cover.png"
img.save(filename=os.path.join(tmp_dir, cover_file_name))
return cover_file_name
# img.save(obj[1:] + ".png")
except Exception as ex:
print(ex)
try: try:
cover_file_name = os.path.splitext(tmp_file_path)[0] + ".cover.jpg" cover_file_name = os.path.splitext(tmp_file_path)[0] + ".cover.jpg"
with Image(filename=tmp_file_path + "[0]", resolution=150) as img: with Image() as img:
img.options["pdf:use-cropbox"] = "true"
img.read(filename=tmp_file_path + '[0]', resolution = 150)
img.compression_quality = 88 img.compression_quality = 88
img.save(filename=os.path.join(tmp_dir, cover_file_name)) img.save(filename=os.path.join(tmp_dir, cover_file_name))
return cover_file_name return cover_file_name
@ -210,24 +164,24 @@ def get_versions():
IVersion = ImageVersion.MAGICK_VERSION IVersion = ImageVersion.MAGICK_VERSION
WVersion = ImageVersion.VERSION WVersion = ImageVersion.VERSION
else: else:
IVersion = _(u'not installed') IVersion = u'not installed'
WVersion = _(u'not installed') WVersion = u'not installed'
if use_pdf_meta: if use_pdf_meta:
PVersion='v'+PyPdfVersion PVersion='v'+PyPdfVersion
else: else:
PVersion=_(u'not installed') PVersion=u'not installed'
if lxmlversion: if lxmlversion:
XVersion = 'v'+'.'.join(map(str, lxmlversion)) XVersion = 'v'+'.'.join(map(str, lxmlversion))
else: else:
XVersion = _(u'not installed') XVersion = u'not installed'
if use_PIL: if use_PIL:
PILVersion = 'v' + PILversion PILVersion = 'v' + PILversion
else: else:
PILVersion = _(u'not installed') PILVersion = u'not installed'
if comic.use_comic_meta: if comic.use_comic_meta:
ComicVersion = _(u'installed') ComicVersion = u'installed'
else: else:
ComicVersion = _(u'not installed') ComicVersion = u'not installed'
return {'Image Magick': IVersion, return {'Image Magick': IVersion,
'PyPdf': PVersion, 'PyPdf': PVersion,
'lxml':XVersion, 'lxml':XVersion,

@ -38,7 +38,8 @@ from flask import render_template, request, redirect, send_from_directory, make_
from flask_babel import gettext as _ from flask_babel import gettext as _
from flask_login import login_user, logout_user, login_required, current_user from flask_login import login_user, logout_user, login_required, current_user
from sqlalchemy.exc import IntegrityError from sqlalchemy.exc import IntegrityError
from sqlalchemy.sql.expression import text, func, true, false, not_, and_ from sqlalchemy.sql.expression import text, func, true, false, not_, and_, \
exists
from werkzeug.exceptions import default_exceptions from werkzeug.exceptions import default_exceptions
from werkzeug.datastructures import Headers from werkzeug.datastructures import Headers
from werkzeug.security import generate_password_hash, check_password_hash from werkzeug.security import generate_password_hash, check_password_hash
@ -781,6 +782,12 @@ def get_tasks_status():
# ################################### Search functions ################################################################ # ################################### Search functions ################################################################
@app.route("/reconnect")
def reconnect():
db.session.close()
db.engine.dispose()
db.setup_db()
return json.dumps({})
@web.route("/search", methods=["GET"]) @web.route("/search", methods=["GET"])
@login_required_if_no_ano @login_required_if_no_ano
@ -792,9 +799,9 @@ def search():
for element in entries: for element in entries:
ids.append(element.id) ids.append(element.id)
searched_ids[current_user.id] = ids searched_ids[current_user.id] = ids
return render_title_template('search.html', searchterm=term, entries=entries, page="search") return render_title_template('search.html', searchterm=term, entries=entries, title=_(u"Search"), page="search")
else: else:
return render_title_template('search.html', searchterm="", page="search") return render_title_template('search.html', searchterm="", title=_(u"Search"), page="search")
@web.route("/advanced_search", methods=['GET']) @web.route("/advanced_search", methods=['GET'])
@ -985,10 +992,11 @@ def get_cover(book_id):
return get_book_cover(book_id) return get_book_cover(book_id)
@web.route("/show/<book_id>/<book_format>") @web.route("/show/<int:book_id>/<book_format>", defaults={'anyname': 'None'})
@web.route("/show/<int:book_id>/<book_format>/<anyname>")
@login_required_if_no_ano @login_required_if_no_ano
@viewer_required @viewer_required
def serve_book(book_id, book_format): def serve_book(book_id, book_format, anyname):
book_format = book_format.split(".")[0] book_format = book_format.split(".")[0]
book = db.session.query(db.Books).filter(db.Books.id == book_id).first() book = db.session.query(db.Books).filter(db.Books.id == book_id).first()
data = db.session.query(db.Data).filter(db.Data.book == book.id).filter(db.Data.format == book_format.upper())\ data = db.session.query(db.Data).filter(db.Data.book == book.id).filter(db.Data.format == book_format.upper())\
@ -1003,11 +1011,11 @@ def serve_book(book_id, book_format):
return send_from_directory(os.path.join(config.config_calibre_dir, book.path), data.name + "." + book_format) return send_from_directory(os.path.join(config.config_calibre_dir, book.path), data.name + "." + book_format)
@web.route("/download/<int:book_id>/<book_format>", defaults={'anyname': 'None'}) # @web.route("/download/<int:book_id>/<book_format>", defaults={'anyname': 'None'})
@web.route("/download/<int:book_id>/<book_format>/<anyname>") @web.route("/download/<int:book_id>/<book_format>")
@login_required_if_no_ano @login_required_if_no_ano
@download_required @download_required
def download_link(book_id, book_format, anyname): def download_link(book_id, book_format):
return get_download_link(book_id, book_format) return get_download_link(book_id, book_format)
@ -1254,6 +1262,21 @@ def profile():
return render_title_template("user_edit.html", content=current_user, downloads=downloads, return render_title_template("user_edit.html", content=current_user, downloads=downloads,
title=_(u"%(name)s's profile", name=current_user.nickname), page="me", title=_(u"%(name)s's profile", name=current_user.nickname), page="me",
registered_oauth=oauth_check, oauth_status=oauth_status) registered_oauth=oauth_check, oauth_status=oauth_status)
if "nickname" in to_save and to_save["nickname"] != current_user.nickname:
# Query User nickname, if not existing, change
if not ub.session.query(ub.User).filter(ub.User.nickname == to_save["nickname"]).scalar():
current_user.nickname = to_save["nickname"]
else:
flash(_(u"This username is already taken"), category="error")
return render_title_template("user_edit.html",
translations=translations,
languages=languages,
new_user=0, content=current_user,
downloads=downloads,
registered_oauth=oauth_check,
title=_(u"Edit User %(nick)s",
nick=current_user.nickname),
page="edituser")
current_user.email = to_save["email"] current_user.email = to_save["email"]
if "show_random" in to_save and to_save["show_random"] == "on": if "show_random" in to_save and to_save["show_random"] == "on":
current_user.random_books = 1 current_user.random_books = 1

@ -193,21 +193,27 @@ class WorkerThread(threading.Thread):
def run(self): def run(self):
main_thread = _get_main_thread() main_thread = _get_main_thread()
while main_thread.is_alive(): while main_thread.is_alive():
self.doLock.acquire() try:
if self.current != self.last:
index = self.current
self.doLock.release()
if self.queue[index]['taskType'] == TASK_EMAIL:
self._send_raw_email()
if self.queue[index]['taskType'] == TASK_CONVERT:
self._convert_any_format()
if self.queue[index]['taskType'] == TASK_CONVERT_ANY:
self._convert_any_format()
# TASK_UPLOAD is handled implicitly
self.doLock.acquire() self.doLock.acquire()
self.current += 1 if self.current != self.last:
self.doLock.release() index = self.current
else: self.doLock.release()
if self.queue[index]['taskType'] == TASK_EMAIL:
self._send_raw_email()
if self.queue[index]['taskType'] == TASK_CONVERT:
self._convert_any_format()
if self.queue[index]['taskType'] == TASK_CONVERT_ANY:
self._convert_any_format()
# TASK_UPLOAD is handled implicitly
self.doLock.acquire()
self.current += 1
if self.current > self.last:
self.current = self.last
self.doLock.release()
else:
self.doLock.release()
except Exception as e:
log.exception(e)
self.doLock.release() self.doLock.release()
if main_thread.is_alive(): if main_thread.is_alive():
time.sleep(1) time.sleep(1)
@ -225,7 +231,8 @@ class WorkerThread(threading.Thread):
self.queue.pop(index) self.queue.pop(index)
self.UIqueue.pop(index) self.UIqueue.pop(index)
# if we are deleting entries before the current index, adjust the index # if we are deleting entries before the current index, adjust the index
self.current -= 1 if index <= self.current and index:
self.current -= 1
self.last = len(self.queue) self.last = len(self.queue)
def get_taskstatus(self): def get_taskstatus(self):
@ -248,7 +255,7 @@ class WorkerThread(threading.Thread):
self.doLock.release() self.doLock.release()
self.UIqueue[index]['stat'] = STAT_STARTED self.UIqueue[index]['stat'] = STAT_STARTED
self.queue[index]['starttime'] = datetime.now() self.queue[index]['starttime'] = datetime.now()
self.UIqueue[index]['formStarttime'] = self.queue[self.current]['starttime'] self.UIqueue[index]['formStarttime'] = self.queue[index]['starttime']
curr_task = self.queue[index]['taskType'] curr_task = self.queue[index]['taskType']
filename = self._convert_ebook_format() filename = self._convert_ebook_format()
if filename: if filename:
@ -390,8 +397,7 @@ class WorkerThread(threading.Thread):
def add_convert(self, file_path, bookid, user_name, taskMessage, settings, kindle_mail=None): def add_convert(self, file_path, bookid, user_name, taskMessage, settings, kindle_mail=None):
addLock = threading.Lock() self.doLock.acquire()
addLock.acquire()
if self.last >= 20: if self.last >= 20:
self._delete_completed_tasks() self._delete_completed_tasks()
# progress, runtime, and status = 0 # progress, runtime, and status = 0
@ -405,13 +411,12 @@ class WorkerThread(threading.Thread):
'runtime': '0 s', 'stat': STAT_WAITING,'id': self.id, 'taskType': task } ) 'runtime': '0 s', 'stat': STAT_WAITING,'id': self.id, 'taskType': task } )
self.last=len(self.queue) self.last=len(self.queue)
addLock.release() self.doLock.release()
def add_email(self, subject, filepath, attachment, settings, recipient, user_name, taskMessage, def add_email(self, subject, filepath, attachment, settings, recipient, user_name, taskMessage,
text): text):
# if more than 20 entries in the list, clean the list # if more than 20 entries in the list, clean the list
addLock = threading.Lock() self.doLock.acquire()
addLock.acquire()
if self.last >= 20: if self.last >= 20:
self._delete_completed_tasks() self._delete_completed_tasks()
# progress, runtime, and status = 0 # progress, runtime, and status = 0
@ -422,23 +427,31 @@ class WorkerThread(threading.Thread):
self.UIqueue.append({'user': user_name, 'formStarttime': '', 'progress': " 0 %", 'taskMess': taskMessage, self.UIqueue.append({'user': user_name, 'formStarttime': '', 'progress': " 0 %", 'taskMess': taskMessage,
'runtime': '0 s', 'stat': STAT_WAITING,'id': self.id, 'taskType': TASK_EMAIL }) 'runtime': '0 s', 'stat': STAT_WAITING,'id': self.id, 'taskType': TASK_EMAIL })
self.last=len(self.queue) self.last=len(self.queue)
addLock.release() self.doLock.release()
def add_upload(self, user_name, taskMessage): def add_upload(self, user_name, taskMessage):
# if more than 20 entries in the list, clean the list # if more than 20 entries in the list, clean the list
addLock = threading.Lock() self.doLock.acquire()
addLock.acquire()
if self.last >= 20: if self.last >= 20:
self._delete_completed_tasks() self._delete_completed_tasks()
# progress=100%, runtime=0, and status finished # progress=100%, runtime=0, and status finished
log.info("Last " + str(self.last))
log.info("Current " + str(self.current))
log.info("id" + str(self.id))
for i in range(0, len(self.queue)):
message = '%s:%s' % (i, self.queue[i].items())
log.info(message)
self.id += 1 self.id += 1
self.queue.append({'starttime': datetime.now(), 'taskType': TASK_UPLOAD}) starttime = datetime.now()
self.UIqueue.append({'user': user_name, 'formStarttime': '', 'progress': "100 %", 'taskMess': taskMessage, self.queue.append({'starttime': starttime, 'taskType': TASK_UPLOAD})
self.UIqueue.append({'user': user_name, 'formStarttime': starttime, 'progress': "100 %", 'taskMess': taskMessage,
'runtime': '0 s', 'stat': STAT_FINISH_SUCCESS,'id': self.id, 'taskType': TASK_UPLOAD}) 'runtime': '0 s', 'stat': STAT_FINISH_SUCCESS,'id': self.id, 'taskType': TASK_UPLOAD})
self.UIqueue[self.current]['formStarttime'] = self.queue[self.current]['starttime'] # self.UIqueue[self.current]['formStarttime'] = self.queue[self.current]['starttime']
self.last=len(self.queue) self.last=len(self.queue)
addLock.release() self.doLock.release()
def _send_raw_email(self): def _send_raw_email(self):
self.doLock.acquire() self.doLock.acquire()
@ -525,7 +538,7 @@ class WorkerThread(threading.Thread):
self.doLock.release() self.doLock.release()
self.UIqueue[index]['stat'] = STAT_FAIL self.UIqueue[index]['stat'] = STAT_FAIL
self.UIqueue[index]['progress'] = "100 %" self.UIqueue[index]['progress'] = "100 %"
self.UIqueue[index]['formRuntime'] = datetime.now() - self.queue[self.current]['starttime'] self.UIqueue[index]['formRuntime'] = datetime.now() - self.queue[index]['starttime']
self.UIqueue[index]['message'] = error_message self.UIqueue[index]['message'] = error_message
def _handleSuccess(self): def _handleSuccess(self):
@ -534,7 +547,7 @@ class WorkerThread(threading.Thread):
self.doLock.release() self.doLock.release()
self.UIqueue[index]['stat'] = STAT_FINISH_SUCCESS self.UIqueue[index]['stat'] = STAT_FINISH_SUCCESS
self.UIqueue[index]['progress'] = "100 %" self.UIqueue[index]['progress'] = "100 %"
self.UIqueue[index]['formRuntime'] = datetime.now() - self.queue[self.current]['starttime'] self.UIqueue[index]['formRuntime'] = datetime.now() - self.queue[index]['starttime']
_worker = WorkerThread() _worker = WorkerThread()

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-09-17 18:24+0200\n" "POT-Creation-Date: 2019-11-16 08:00+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,17 +17,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\n" "Generated-By: Babel 2.7.0\n"
#: cps/about.py:40 cps/about.py:65 cps/about.py:66 cps/uploader.py:228 #: cps/about.py:41
msgid "installed" msgid "installed"
msgstr "" msgstr ""
#: cps/about.py:42 cps/about.py:65 cps/about.py:66 cps/uploader.py:213 #: cps/about.py:43
#: cps/uploader.py:214 cps/uploader.py:218 cps/uploader.py:222
#: cps/uploader.py:226 cps/uploader.py:230
msgid "not installed" msgid "not installed"
msgstr "" msgstr ""
#: cps/about.py:80 #: cps/about.py:81
msgid "Statistics" msgid "Statistics"
msgstr "" msgstr ""
@ -39,7 +37,7 @@ msgstr ""
msgid "Performing shutdown of server, please close window" msgid "Performing shutdown of server, please close window"
msgstr "" msgstr ""
#: cps/admin.py:111 cps/updater.py:445 #: cps/admin.py:111 cps/updater.py:446
msgid "Unknown" msgid "Unknown"
msgstr "" msgstr ""
@ -59,7 +57,7 @@ msgstr ""
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "" msgstr ""
#: cps/admin.py:452 cps/web.py:1048 #: cps/admin.py:452 cps/web.py:1055
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "" msgstr ""
@ -68,7 +66,7 @@ msgstr ""
msgid "Add new user" msgid "Add new user"
msgstr "" msgstr ""
#: cps/admin.py:463 cps/web.py:1251 #: cps/admin.py:463 cps/web.py:1258
msgid "E-mail is not from valid domain" msgid "E-mail is not from valid domain"
msgstr "" msgstr ""
@ -95,7 +93,7 @@ msgstr ""
msgid "There was an error sending the Test e-mail: %(res)s" msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "" msgstr ""
#: cps/admin.py:527 cps/web.py:1031 #: cps/admin.py:527 cps/web.py:1038
msgid "Please configure your kindle e-mail address first..." msgid "Please configure your kindle e-mail address first..."
msgstr "" msgstr ""
@ -112,85 +110,93 @@ msgstr ""
msgid "No admin user remaining, can't delete user" msgid "No admin user remaining, can't delete user"
msgstr "" msgstr ""
#: cps/admin.py:600 cps/web.py:1277 #: cps/admin.py:599 cps/web.py:1299
msgid "Found an existing account for this e-mail address." msgid "Found an existing account for this e-mail address."
msgstr "" msgstr ""
#: cps/admin.py:603 cps/admin.py:615 #: cps/admin.py:602 cps/admin.py:615 cps/admin.py:629 cps/web.py:1274
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "" msgstr ""
#: cps/admin.py:609 #: cps/admin.py:608 cps/web.py:1267
msgid "This username is already taken"
msgstr ""
#: cps/admin.py:623
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "" msgstr ""
#: cps/admin.py:612 #: cps/admin.py:626
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "" msgstr ""
#: cps/admin.py:631 #: cps/admin.py:645
#, python-format #, python-format
msgid "Password for user %(user)s reset" msgid "Password for user %(user)s reset"
msgstr "" msgstr ""
#: cps/admin.py:634 cps/web.py:1073 #: cps/admin.py:648 cps/web.py:1080
msgid "An unknown error occurred. Please try again later." msgid "An unknown error occurred. Please try again later."
msgstr "" msgstr ""
#: cps/admin.py:645 #: cps/admin.py:659
msgid "Logfile viewer" msgid "Logfile viewer"
msgstr "" msgstr ""
#: cps/admin.py:680 #: cps/admin.py:694
msgid "Requesting update package" msgid "Requesting update package"
msgstr "" msgstr ""
#: cps/admin.py:681 #: cps/admin.py:695
msgid "Downloading update package" msgid "Downloading update package"
msgstr "" msgstr ""
#: cps/admin.py:682 #: cps/admin.py:696
msgid "Unzipping update package" msgid "Unzipping update package"
msgstr "" msgstr ""
#: cps/admin.py:683 #: cps/admin.py:697
msgid "Replacing files" msgid "Replacing files"
msgstr "" msgstr ""
#: cps/admin.py:684 #: cps/admin.py:698
msgid "Database connections are closed" msgid "Database connections are closed"
msgstr "" msgstr ""
#: cps/admin.py:685 #: cps/admin.py:699
msgid "Stopping server" msgid "Stopping server"
msgstr "" msgstr ""
#: cps/admin.py:686 #: cps/admin.py:700
msgid "Update finished, please press okay and reload page" msgid "Update finished, please press okay and reload page"
msgstr "" msgstr ""
#: cps/admin.py:687 cps/admin.py:688 cps/admin.py:689 cps/admin.py:690 #: cps/admin.py:701 cps/admin.py:702 cps/admin.py:703 cps/admin.py:704
msgid "Update failed:" msgid "Update failed:"
msgstr "" msgstr ""
#: cps/admin.py:687 cps/updater.py:271 cps/updater.py:456 cps/updater.py:458 #: cps/admin.py:701 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459
msgid "HTTP Error" msgid "HTTP Error"
msgstr "" msgstr ""
#: cps/admin.py:688 cps/updater.py:273 cps/updater.py:460 #: cps/admin.py:702 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "" msgstr ""
#: cps/admin.py:689 cps/updater.py:275 cps/updater.py:462 #: cps/admin.py:703 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
msgstr "" msgstr ""
#: cps/admin.py:690 cps/updater.py:277 cps/updater.py:464 #: cps/admin.py:704 cps/updater.py:278 cps/updater.py:465
msgid "General error" msgid "General error"
msgstr "" msgstr ""
#: cps/converter.py:31
msgid "not configured"
msgstr ""
#: cps/editbooks.py:214 cps/editbooks.py:393 #: cps/editbooks.py:214 cps/editbooks.py:393
msgid "Error opening eBook. File does not exist or file is not accessible" msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "" msgstr ""
@ -574,7 +580,7 @@ msgid "Show best rated books"
msgstr "" msgstr ""
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67 #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
#: cps/web.py:969 #: cps/web.py:976
msgid "Read Books" msgid "Read Books"
msgstr "" msgstr ""
@ -583,7 +589,7 @@ msgid "Show read and unread"
msgstr "" msgstr ""
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71 #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
#: cps/web.py:973 #: cps/web.py:980
msgid "Unread Books" msgid "Unread Books"
msgstr "" msgstr ""
@ -656,228 +662,233 @@ msgstr ""
msgid "Show file formats selection" msgid "Show file formats selection"
msgstr "" msgstr ""
#: cps/updater.py:251 cps/updater.py:358 cps/updater.py:371 #: cps/updater.py:252 cps/updater.py:359 cps/updater.py:372
msgid "Unexpected data while reading update information" msgid "Unexpected data while reading update information"
msgstr "" msgstr ""
#: cps/updater.py:258 cps/updater.py:364 #: cps/updater.py:259 cps/updater.py:365
msgid "No update available. You already have the latest version installed" msgid "No update available. You already have the latest version installed"
msgstr "" msgstr ""
#: cps/updater.py:284 #: cps/updater.py:285
msgid "A new update is available. Click on the button below to update to the latest version." msgid "A new update is available. Click on the button below to update to the latest version."
msgstr "" msgstr ""
#: cps/updater.py:337 #: cps/updater.py:338
msgid "Could not fetch update information" msgid "Could not fetch update information"
msgstr "" msgstr ""
#: cps/updater.py:351 #: cps/updater.py:352
msgid "No release information available" msgid "No release information available"
msgstr "" msgstr ""
#: cps/updater.py:404 cps/updater.py:413 #: cps/updater.py:405 cps/updater.py:414
#, python-format #, python-format
msgid "A new update is available. Click on the button below to update to version: %(version)s" msgid "A new update is available. Click on the button below to update to version: %(version)s"
msgstr "" msgstr ""
#: cps/updater.py:423 #: cps/updater.py:424
msgid "Click on the button below to update to the latest stable version." msgid "Click on the button below to update to the latest stable version."
msgstr "" msgstr ""
#: cps/web.py:458 #: cps/web.py:459
msgid "Recently Added Books" msgid "Recently Added Books"
msgstr "" msgstr ""
#: cps/web.py:486 #: cps/web.py:487
msgid "Best rated books" msgid "Best rated books"
msgstr "" msgstr ""
#: cps/templates/index.xml:38 cps/web.py:494 #: cps/templates/index.xml:38 cps/web.py:495
msgid "Random Books" msgid "Random Books"
msgstr "" msgstr ""
#: cps/web.py:520 #: cps/web.py:521
msgid "Books" msgid "Books"
msgstr "" msgstr ""
#: cps/web.py:547 #: cps/web.py:548
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "" msgstr ""
#: cps/web.py:558 cps/web.py:1298 cps/web.py:1386 #: cps/web.py:559 cps/web.py:1320 cps/web.py:1408
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "" msgstr ""
#: cps/web.py:571 #: cps/web.py:572
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "" msgstr ""
#: cps/web.py:583 #: cps/web.py:584
#, python-format #, python-format
msgid "Publisher: %(name)s" msgid "Publisher: %(name)s"
msgstr "" msgstr ""
#: cps/web.py:594 #: cps/web.py:595
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "" msgstr ""
#: cps/web.py:605 #: cps/web.py:606
#, python-format #, python-format
msgid "Rating: %(rating)s stars" msgid "Rating: %(rating)s stars"
msgstr "" msgstr ""
#: cps/web.py:616 #: cps/web.py:617
#, python-format #, python-format
msgid "File format: %(format)s" msgid "File format: %(format)s"
msgstr "" msgstr ""
#: cps/web.py:628 #: cps/web.py:629
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "" msgstr ""
#: cps/web.py:645 #: cps/web.py:646
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "" msgstr ""
#: cps/web.py:677 #: cps/web.py:678
msgid "Publisher list" msgid "Publisher list"
msgstr "" msgstr ""
#: cps/templates/index.xml:82 cps/web.py:693 #: cps/templates/index.xml:82 cps/web.py:694
msgid "Series list" msgid "Series list"
msgstr "" msgstr ""
#: cps/web.py:707 #: cps/web.py:708
msgid "Ratings list" msgid "Ratings list"
msgstr "" msgstr ""
#: cps/web.py:720 #: cps/web.py:721
msgid "File formats list" msgid "File formats list"
msgstr "" msgstr ""
#: cps/web.py:748 #: cps/web.py:749
msgid "Available languages" msgid "Available languages"
msgstr "" msgstr ""
#: cps/templates/index.xml:75 cps/web.py:765 #: cps/templates/index.xml:75 cps/web.py:766
msgid "Category list" msgid "Category list"
msgstr "" msgstr ""
#: cps/templates/layout.html:73 cps/web.py:779 #: cps/templates/layout.html:73 cps/web.py:780
msgid "Tasks" msgid "Tasks"
msgstr "" msgstr ""
#: cps/web.py:844 #: cps/templates/feed.xml:33 cps/templates/layout.html:44
msgid "Published after " #: cps/templates/layout.html:45 cps/web.py:802 cps/web.py:804
msgid "Search"
msgstr "" msgstr ""
#: cps/web.py:851 #: cps/web.py:851
msgid "Published after "
msgstr ""
#: cps/web.py:858
msgid "Published before " msgid "Published before "
msgstr "" msgstr ""
#: cps/web.py:865 #: cps/web.py:872
#, python-format #, python-format
msgid "Rating <= %(rating)s" msgid "Rating <= %(rating)s"
msgstr "" msgstr ""
#: cps/web.py:867 #: cps/web.py:874
#, python-format #, python-format
msgid "Rating >= %(rating)s" msgid "Rating >= %(rating)s"
msgstr "" msgstr ""
#: cps/web.py:927 cps/web.py:937 #: cps/web.py:934 cps/web.py:944
msgid "search" msgid "search"
msgstr "" msgstr ""
#: cps/web.py:1020 #: cps/web.py:1027
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "" msgstr ""
#: cps/web.py:1025 #: cps/web.py:1032
#, python-format #, python-format
msgid "Book successfully queued for sending to %(kindlemail)s" msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "" msgstr ""
#: cps/web.py:1029 #: cps/web.py:1036
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "" msgstr ""
#: cps/web.py:1049 cps/web.py:1074 cps/web.py:1078 cps/web.py:1083 #: cps/web.py:1056 cps/web.py:1081 cps/web.py:1085 cps/web.py:1090
#: cps/web.py:1087 #: cps/web.py:1094
msgid "register" msgid "register"
msgstr "" msgstr ""
#: cps/web.py:1076 #: cps/web.py:1083
msgid "Your e-mail is not allowed to register" msgid "Your e-mail is not allowed to register"
msgstr "" msgstr ""
#: cps/web.py:1079 #: cps/web.py:1086
msgid "Confirmation e-mail was send to your e-mail account." msgid "Confirmation e-mail was send to your e-mail account."
msgstr "" msgstr ""
#: cps/web.py:1082 #: cps/web.py:1089
msgid "This username or e-mail address is already in use." msgid "This username or e-mail address is already in use."
msgstr "" msgstr ""
#: cps/web.py:1097 #: cps/web.py:1104
msgid "Cannot activate LDAP authentication" msgid "Cannot activate LDAP authentication"
msgstr "" msgstr ""
#: cps/web.py:1106 cps/web.py:1212 #: cps/web.py:1113 cps/web.py:1219
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "" msgstr ""
#: cps/web.py:1110 #: cps/web.py:1117
msgid "Could not login. LDAP server down, please contact your administrator" msgid "Could not login. LDAP server down, please contact your administrator"
msgstr "" msgstr ""
#: cps/web.py:1114 cps/web.py:1122 #: cps/web.py:1121 cps/web.py:1129
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "" msgstr ""
#: cps/web.py:1118 #: cps/web.py:1125
#, python-format #, python-format
msgid "You are now logged in as: '%(nickname)s'" msgid "You are now logged in as: '%(nickname)s'"
msgstr "" msgstr ""
#: cps/web.py:1126 cps/web.py:1148 #: cps/web.py:1133 cps/web.py:1155
msgid "login" msgid "login"
msgstr "" msgstr ""
#: cps/web.py:1160 cps/web.py:1191 #: cps/web.py:1167 cps/web.py:1198
msgid "Token not found" msgid "Token not found"
msgstr "" msgstr ""
#: cps/web.py:1168 cps/web.py:1199 #: cps/web.py:1175 cps/web.py:1206
msgid "Token has expired" msgid "Token has expired"
msgstr "" msgstr ""
#: cps/web.py:1176 #: cps/web.py:1183
msgid "Success! Please return to your device" msgid "Success! Please return to your device"
msgstr "" msgstr ""
#: cps/web.py:1253 cps/web.py:1280 cps/web.py:1284 #: cps/web.py:1260 cps/web.py:1302 cps/web.py:1306
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "" msgstr ""
#: cps/web.py:1282 #: cps/web.py:1304
msgid "Profile updated" msgid "Profile updated"
msgstr "" msgstr ""
#: cps/web.py:1308 cps/web.py:1310 cps/web.py:1312 cps/web.py:1318 #: cps/web.py:1330 cps/web.py:1332 cps/web.py:1334 cps/web.py:1340
#: cps/web.py:1322 #: cps/web.py:1344
msgid "Read a Book" msgid "Read a Book"
msgstr "" msgstr ""
#: cps/web.py:1332 #: cps/web.py:1354
msgid "Error opening eBook. File does not exist or file is not accessible." msgid "Error opening eBook. File does not exist or file is not accessible."
msgstr "" msgstr ""
@ -1055,7 +1066,7 @@ msgstr ""
#: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147 #: cps/templates/config_edit.html:321 cps/templates/config_view_edit.html:147
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:74
#: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/layout.html:28 cps/templates/shelf.html:73
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
#: cps/templates/user_edit.html:132 #: cps/templates/user_edit.html:132
msgid "Back" msgid "Back"
msgstr "" msgstr ""
@ -1689,11 +1700,6 @@ msgstr ""
msgid "Next" msgid "Next"
msgstr "" msgstr ""
#: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45
msgid "Search"
msgstr ""
#: cps/templates/http_error.html:37 #: cps/templates/http_error.html:37
msgid "Create issue" msgid "Create issue"
msgstr "" msgstr ""
@ -2053,7 +2059,7 @@ msgstr ""
msgid "Edit Shelf" msgid "Edit Shelf"
msgstr "" msgstr ""
#: cps/templates/shelf.html:12 cps/templates/shelf_order.html:11 #: cps/templates/shelf.html:12 cps/templates/shelf_order.html:31
msgid "Change order" msgid "Change order"
msgstr "" msgstr ""

@ -1,14 +1,14 @@
# GDrive Integration # GDrive Integration
google-api-python-client==1.7.11 google-api-python-client==1.7.11
gevent==1.2.1 gevent>=1.2.1
greenlet==0.4.12 greenlet>=0.4.12
httplib2==0.9.2 httplib2>=0.9.2
oauth2client==4.0.0 oauth2client>=4.0.0
uritemplate==3.0.0 uritemplate>=3.0.0
pyasn1-modules==0.0.8 pyasn1-modules>=0.0.8
pyasn1==0.1.9 pyasn1>=0.1.9
PyDrive==1.3.1 PyDrive>=1.3.1
PyYAML==3.12 PyYAML>=3.12
rsa==3.4.2 rsa==3.4.2
six==1.10.0 six==1.10.0

Loading…
Cancel
Save