From b4122e985882c19517cf1e4d4d665615e72464c8 Mon Sep 17 00:00:00 2001 From: bodybybuddha Date: Wed, 19 Sep 2018 11:26:52 -0400 Subject: [PATCH 001/160] Partial fix to #617. Local status messages now work. --- cps/helper.py | 21 +++++++++++++++++++++ cps/web.py | 13 +++++++++++-- cps/worker.py | 12 ++++++------ 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/cps/helper.py b/cps/helper.py index 722a6245..ca404384 100755 --- a/cps/helper.py +++ b/cps/helper.py @@ -567,3 +567,24 @@ def get_current_version_info(): if is_sha1(content[0]) and len(content[1]) > 0: return {'hash': content[0], 'datetime': content[1]} return False + +def render_task_status(tasklist): + #helper function to apply localize status information in tasklist entries + renderedtasklist=list() + + for task in tasklist: + if isinstance( task['status'], int ): + if task['status'] == worker.STAT_WAITING: + task['status'] = _('Waiting') + elif task['status'] == worker.STAT_FAIL: + task['status'] = _('Failed') + elif task['status'] == worker.STAT_STARTED: + task['status'] = _('Started') + elif task['status'] == worker.STAT_FINISH_SUCCESS: + task['status'] = _('Finished') + else: + task['status'] = _('Unknown Status') + renderedtasklist.append(task) + + return renderedtasklist + \ No newline at end of file diff --git a/cps/web.py b/cps/web.py index 2de1bbd3..559f8d4a 100644 --- a/cps/web.py +++ b/cps/web.py @@ -85,6 +85,7 @@ import hashlib from redirect import redirect_back import time import server +import copy try: import cPickle except ImportError: @@ -873,6 +874,7 @@ def get_metadata_calibre_companion(uuid): @login_required def get_email_status_json(): answer=list() + UIanswer = list() tasks=helper.global_WorkerThread.get_taskstatus() if not current_user.role_admin(): for task in tasks: @@ -893,7 +895,11 @@ def get_email_status_json(): if 'starttime' not in task: task['starttime'] = "" answer = tasks - js=json.dumps(answer) + + UIanswer = copy.deepcopy(answer) + UIanswer = helper.render_task_status(UIanswer) + + js=json.dumps(UIanswer) response = make_response(js) response.headers["Content-Type"] = "application/json; charset=utf-8" return response @@ -1626,6 +1632,7 @@ def bookmark(book_id, book_format): def get_tasks_status(): # if current user admin, show all email, otherwise only own emails answer=list() + UIanswer=list() tasks=helper.global_WorkerThread.get_taskstatus() if not current_user.role_admin(): for task in tasks: @@ -1647,8 +1654,10 @@ def get_tasks_status(): task['starttime'] = "" answer = tasks + UIanswer = copy.deepcopy(answer) + UIanswer = helper.render_task_status(UIanswer) # foreach row format row - return render_title_template('tasks.html', entries=answer, title=_(u"Tasks")) + return render_title_template('tasks.html', entries=UIanswer, title=_(u"Tasks")) @app.route("/admin") diff --git a/cps/worker.py b/cps/worker.py index 0eca51c1..5fff893e 100644 --- a/cps/worker.py +++ b/cps/worker.py @@ -212,7 +212,7 @@ class WorkerThread(threading.Thread): def convert_any_format(self): # convert book, and upload in case of google drive self.queue[self.current]['status'] = STAT_STARTED - self.UIqueue[self.current]['status'] = _('Started') + self.UIqueue[self.current]['status'] = STAT_STARTED self.queue[self.current]['starttime'] = datetime.now() self.UIqueue[self.current]['formStarttime'] = self.queue[self.current]['starttime'] curr_task = self.queue[self.current]['typ'] @@ -352,7 +352,7 @@ class WorkerThread(threading.Thread): self.queue.append({'file_path':file_path, 'bookid':bookid, 'starttime': 0, 'kindle': kindle_mail, 'status': STAT_WAITING, 'typ': task, 'settings':settings}) self.UIqueue.append({'user': user_name, 'formStarttime': '', 'progress': " 0 %", 'type': typ, - 'runtime': '0 s', 'status': _('Waiting'),'id': self.id } ) + 'runtime': '0 s', 'status': STAT_WAITING,'id': self.id } ) self.last=len(self.queue) addLock.release() @@ -371,7 +371,7 @@ class WorkerThread(threading.Thread): 'settings':settings, 'recipent':recipient, 'starttime': 0, 'status': STAT_WAITING, 'typ': TASK_EMAIL, 'text':text}) self.UIqueue.append({'user': user_name, 'formStarttime': '', 'progress': " 0 %", 'type': typ, - 'runtime': '0 s', 'status': _('Waiting'),'id': self.id }) + 'runtime': '0 s', 'status': STAT_WAITING,'id': self.id }) self.last=len(self.queue) addLock.release() @@ -395,7 +395,7 @@ class WorkerThread(threading.Thread): self.queue[self.current]['starttime'] = datetime.now() self.UIqueue[self.current]['formStarttime'] = self.queue[self.current]['starttime'] self.queue[self.current]['status'] = STAT_STARTED - self.UIqueue[self.current]['status'] = _('Started') + self.UIqueue[self.current]['status'] = STAT_STARTED obj=self.queue[self.current] # create MIME message msg = MIMEMultipart() @@ -473,7 +473,7 @@ class WorkerThread(threading.Thread): def _handleError(self, error_message): web.app.logger.error(error_message) self.queue[self.current]['status'] = STAT_FAIL - self.UIqueue[self.current]['status'] = _('Failed') + self.UIqueue[self.current]['status'] = STAT_FAIL self.UIqueue[self.current]['progress'] = "100 %" self.UIqueue[self.current]['runtime'] = self._formatRuntime( datetime.now() - self.queue[self.current]['starttime']) @@ -481,7 +481,7 @@ class WorkerThread(threading.Thread): def _handleSuccess(self): self.queue[self.current]['status'] = STAT_FINISH_SUCCESS - self.UIqueue[self.current]['status'] = _('Finished') + self.UIqueue[self.current]['status'] = STAT_FINISH_SUCCESS self.UIqueue[self.current]['progress'] = "100 %" self.UIqueue[self.current]['runtime'] = self._formatRuntime( datetime.now() - self.queue[self.current]['starttime']) From 016c7b4b1c2a798e152827ae507ab346ce407981 Mon Sep 17 00:00:00 2001 From: Virgil Grigoras Date: Sun, 30 Sep 2018 14:08:55 +0200 Subject: [PATCH 002/160] Add ability to store and edit publishers --- cps/db.py | 2 +- cps/static/js/edit_books.js | 25 +++++++++++++++++++++++++ cps/templates/book_edit.html | 2 +- cps/web.py | 25 +++++++++++++++++++------ 4 files changed, 46 insertions(+), 8 deletions(-) diff --git a/cps/db.py b/cps/db.py index 54e42d25..09580666 100755 --- a/cps/db.py +++ b/cps/db.py @@ -211,7 +211,7 @@ class Publishers(Base): name = Column(String) sort = Column(String) - def __init__(self, name, sort): + def __init__(self, name, sort = "ASC"): self.name = name self.sort = sort diff --git a/cps/static/js/edit_books.js b/cps/static/js/edit_books.js index 1d182887..35515aa1 100644 --- a/cps/static/js/edit_books.js +++ b/cps/static/js/edit_books.js @@ -142,6 +142,17 @@ var languages = new Bloodhound({ } }); +var publishers = new Bloodhound({ + name: "publisher", + datumTokenizer: function datumTokenizer(datum) { + return [datum.name]; + }, + queryTokenizer: Bloodhound.tokenizers.whitespace, + remote: { + url: getPath() + "/get_publishers_json?q=%QUERY" + } +}); + function sourceSplit(query, cb, split, source) { var bhAdapter = source.ttAdapter(); @@ -224,6 +235,20 @@ promiseLanguages.done(function() { ); }); +var promisePublishers = publishers.initialize(); +promisePublishers.done(function() { + $("#publisher").typeahead( + { + highlight: true, minLength: 0, + hint: true + }, { + name: "publishers", + displayKey: "name", + source: publishers.ttAdapter() + } + ); +}); + $("#search").on("change input.typeahead:selected", function() { var form = $("form").serialize(); $.getJSON( getPath() + "/get_matching_tags", form, function( data ) { diff --git a/cps/templates/book_edit.html b/cps/templates/book_edit.html index e2907624..0276975c 100644 --- a/cps/templates/book_edit.html +++ b/cps/templates/book_edit.html @@ -101,7 +101,7 @@
- +
diff --git a/cps/web.py b/cps/web.py index c93ca00d..b4132111 100644 --- a/cps/web.py +++ b/cps/web.py @@ -532,6 +532,10 @@ def fill_indexpage(page, database, db_filter, order, *join): # Modifies different Database objects, first check if elements have to be added to database, than check # if elements have to be deleted, because they are no longer used def modify_database_object(input_elements, db_book_object, db_object, db_session, db_type): + # passing input_elements not as a list may lead to undesired results + if type(input_elements) is not list: + raise TypeError(str(input_elements) + " should be passed as a list") + input_elements = [x for x in input_elements if x != ''] # we have all input element (authors, series, tags) names now # 1. search for elements to remove @@ -551,7 +555,7 @@ def modify_database_object(input_elements, db_book_object, db_object, db_session # if the element was not found in the new list, add it to remove list if not found: del_elements.append(c_elements) - # 2. search for elements that need to be added + # 2. search for elements that need to be added add_elements = [] for inp_element in input_elements: found = False @@ -1030,7 +1034,17 @@ def get_authors_json(): json_dumps = json.dumps([dict(name=r.name.replace('|',',')) for r in entries]) return json_dumps + +@app.route("/get_publishers_json", methods=['GET', 'POST']) +@login_required_if_no_ano +def get_publishers_json(): + if request.method == "GET": + query = request.args.get('q') + entries = db.session.query(db.Publishers).filter(db.Publishers.name.ilike("%" + query + "%")).all() + json_dumps = json.dumps([dict(name=r.name.replace('|',',')) for r in entries]) + return json_dumps + @app.route("/get_tags_json", methods=['GET', 'POST']) @login_required_if_no_ano def get_tags_json(): @@ -3549,11 +3563,10 @@ def edit_book(book_id): book.pubdate = db.Books.DEFAULT_PUBDATE else: book.pubdate = db.Books.DEFAULT_PUBDATE - '''if len(book.publishers): - if to_save["publisher"] != book.publishers[0].name: - modify_database_object(to_save["publisher"], book.publishers, db.Publishers, db.session, 'series') - else: - modify_database_object(to_save["publisher"], book.publishers, db.Publishers, db.session, 'series')''' + + if to_save["publisher"]: + if len(book.publishers) == 0 or (len(book.publishers) > 0 and to_save["publisher"] != book.publishers[0].name): + modify_database_object([to_save["publisher"]], book.publishers, db.Publishers, db.session, 'publisher') # handle book languages input_languages = to_save["languages"].split(',') From 5129bc36018f85a26f68302aec01e8372251114f Mon Sep 17 00:00:00 2001 From: Virgil Grigoras Date: Sun, 30 Sep 2018 18:30:24 +0200 Subject: [PATCH 003/160] Add entry for publishers to the left menu (+ setting for showing / hiding) + separate publisher page --- cps/templates/config_view_edit.html | 4 ++++ cps/templates/detail.html | 15 +++++++++++---- cps/templates/layout.html | 3 +++ cps/templates/user_edit.html | 4 ++++ cps/ub.py | 8 ++++++++ cps/web.py | 29 +++++++++++++++++++++++++++++ 6 files changed, 59 insertions(+), 4 deletions(-) diff --git a/cps/templates/config_view_edit.html b/cps/templates/config_view_edit.html index 5cbf8e65..88c4a4bc 100644 --- a/cps/templates/config_view_edit.html +++ b/cps/templates/config_view_edit.html @@ -143,6 +143,10 @@
+
+ + +
diff --git a/cps/templates/detail.html b/cps/templates/detail.html index 420b98a6..57475736 100644 --- a/cps/templates/detail.html +++ b/cps/templates/detail.html @@ -120,13 +120,20 @@
{% endif %} + {% if entry.publishers|length > 0 %}
-

- {{_('Publisher')}}:{% for publisher in entry.publishers %} {{publisher.name}}{% if not loop.last %},{% endif %}{% endfor %} -

+

+ {{_('Publisher')}}: + {% for publisher in entry.publishers %} + {{publisher.name}} + {% if not loop.last %},{% endif %} + {% endfor %} + +

- {% endif %} + {% endif %} + {% if entry.pubdate[:10] != '0101-01-01' %}

{{_('Publishing date')}}: {{entry.pubdate|formatdate}}

{% endif %} diff --git a/cps/templates/layout.html b/cps/templates/layout.html index 8ccce35c..d0f6469f 100644 --- a/cps/templates/layout.html +++ b/cps/templates/layout.html @@ -159,6 +159,9 @@ {% if g.user.show_author() %} {%endif%} + {% if g.user.show_publisher() %} + + {%endif%} {% if g.user.filter_language() == 'all' and g.user.show_language() %} {%endif%} diff --git a/cps/templates/user_edit.html b/cps/templates/user_edit.html index ecf8042e..48630cea 100644 --- a/cps/templates/user_edit.html +++ b/cps/templates/user_edit.html @@ -89,6 +89,10 @@ +
+ + +
diff --git a/cps/ub.py b/cps/ub.py index f1b19d02..2a41663e 100644 --- a/cps/ub.py +++ b/cps/ub.py @@ -41,6 +41,7 @@ SIDEBAR_READ_AND_UNREAD = 256 SIDEBAR_RECENT = 512 SIDEBAR_SORTED = 1024 MATURE_CONTENT = 2048 +SIDEBAR_PUBLISHER = 4096 DEFAULT_PASS = "admin123" DEFAULT_PORT = int(os.environ.get("CALIBRE_PORT", 8083)) @@ -136,6 +137,9 @@ class UserBase: def show_author(self): return bool((self.sidebar_view is not None)and(self.sidebar_view & SIDEBAR_AUTHOR == SIDEBAR_AUTHOR)) + def show_publisher(self): + return bool((self.sidebar_view is not None)and(self.sidebar_view & SIDEBAR_PUBLISHER == SIDEBAR_PUBLISHER)) + def show_best_rated_books(self): return bool((self.sidebar_view is not None)and(self.sidebar_view & SIDEBAR_BEST_RATED == SIDEBAR_BEST_RATED)) @@ -485,6 +489,10 @@ class Config: return bool((self.config_default_show is not None) and (self.config_default_show & SIDEBAR_AUTHOR == SIDEBAR_AUTHOR)) + def show_publisher(self): + return bool((self.config_default_show is not None) and + (self.config_default_show & SIDEBAR_PUBLISHER == SIDEBAR_PUBLISHER)) + def show_best_rated_books(self): return bool((self.config_default_show is not None) and (self.config_default_show & SIDEBAR_BEST_RATED == SIDEBAR_BEST_RATED)) diff --git a/cps/web.py b/cps/web.py index b4132111..0f359fd6 100644 --- a/cps/web.py +++ b/cps/web.py @@ -1415,6 +1415,31 @@ def author(book_id, page): title=name, author=author_info, other_books=other_books, page="author") +@app.route("/publisher") +@login_required_if_no_ano +def publisher_list(): + if current_user.show_publisher(): + entries = db.session.query(db.Publishers, func.count('books_publishers_link.book').label('count'))\ + .join(db.books_publishers_link).join(db.Books).filter(common_filters())\ + .group_by('books_publishers_link.publisher').order_by(db.Publishers.sort).all() + return render_title_template('list.html', entries=entries, folder='publisher', + title=_(u"Publisher list"), page="publisherlist") + else: + abort(404) + + +@app.route("/publisher/", defaults={'page': 1}) +@app.route('/publisher//') +@login_required_if_no_ano +def publisher(book_id, page): + entries, random, pagination = fill_indexpage(page, db.Books, db.Books.publishers.any(db.Publishers.id == book_id), + (db.Series.name, db.Books.series_index), db.books_series_link, db.Series) + + name = db.session.query(db.Publishers).filter(db.Publishers.id == book_id).first().name + return render_title_template('index.html', random=random, entries=entries, pagination=pagination, + title=_(u"Publisher: %(name)s", name=name), page="publisher") + + def get_unique_other_books(library_books, author_books): # Get all identifiers (ISBN, Goodreads, etc) and filter author's books by that list so we show fewer duplicates # Note: Not all images will be shown, even though they're available on Goodreads.com. @@ -2774,6 +2799,8 @@ def profile(): content.sidebar_view += ub.SIDEBAR_BEST_RATED if "show_author" in to_save: content.sidebar_view += ub.SIDEBAR_AUTHOR + if "show_publisher" in to_save: + content.sidebar_view += ub.SIDEBAR_PUBLISHER if "show_read_and_unread" in to_save: content.sidebar_view += ub.SIDEBAR_READ_AND_UNREAD if "show_detail_random" in to_save: @@ -2884,6 +2911,8 @@ def view_configuration(): content.config_default_show = content.config_default_show + ub.SIDEBAR_RANDOM if "show_author" in to_save: content.config_default_show = content.config_default_show + ub.SIDEBAR_AUTHOR + if "show_publisher" in to_save: + content.config_default_show = content.config_default_show + ub.SIDEBAR_PUBLISHER if "show_best_rated" in to_save: content.config_default_show = content.config_default_show + ub.SIDEBAR_BEST_RATED if "show_read_and_unread" in to_save: From 6a007ec88158e1d076780cba1ae086ca0eeb31a2 Mon Sep 17 00:00:00 2001 From: Virgil Grigoras Date: Sun, 30 Sep 2018 18:42:48 +0200 Subject: [PATCH 004/160] fix indentations --- cps/templates/index.xml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/cps/templates/index.xml b/cps/templates/index.xml index 97848b5e..d3caa3fa 100644 --- a/cps/templates/index.xml +++ b/cps/templates/index.xml @@ -39,7 +39,7 @@ {{ current_time }} {{_('Show Random Books')}} -{% if not current_user.is_anonymous %} + {% if not current_user.is_anonymous %} {{_('Read Books')}} @@ -47,7 +47,7 @@ {{ current_time }} {{_('Read Books')}} -{% endif %} + {% endif %} {{_('Unread Books')}} @@ -61,35 +61,35 @@ {{url_for('feed_authorindex')}} {{ current_time }} {{_('Books ordered by Author')}} - - + + {{_('Category list')}} {{url_for('feed_categoryindex')}} {{ current_time }} {{_('Books ordered by category')}} - - + + {{_('Series list')}} {{url_for('feed_seriesindex')}} {{ current_time }} {{_('Books ordered by series')}} - - + + {{_('Public Shelves')}} {{url_for('feed_shelfindex', public="public")}} {{ current_time }} {{_('Books organized in public shelfs, visible to everyone')}} - - {% if not current_user.is_anonymous %} - + + {% if not current_user.is_anonymous %} + {{_('Your Shelves')}} {{url_for('feed_shelfindex')}} {{ current_time }} {{_("User's own shelfs, only visible to the current user himself")}} - - {% endif %} + + {% endif %} From 1ac9b3d837dffa0dbc4b67a4e2b772e83441b6be Mon Sep 17 00:00:00 2001 From: Virgil Grigoras Date: Sun, 30 Sep 2018 18:48:36 +0200 Subject: [PATCH 005/160] Update OPDS-part to display publishers --- cps/templates/feed.xml | 3 +++ cps/templates/index.xml | 9 ++++++++- cps/web.py | 20 ++++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/cps/templates/feed.xml b/cps/templates/feed.xml index 9454187b..82e92416 100644 --- a/cps/templates/feed.xml +++ b/cps/templates/feed.xml @@ -43,6 +43,9 @@ {{entry.authors[0].name}} + + {{entry.publishers[0].name}} + {{entry.language}} {% for tag in entry.tags %} {{url_for('feed_authorindex')}} {{ current_time }} {{_('Books ordered by Author')}} - + + + {{_('Publishers')}} + + {{url_for('feed_publisherindex')}} + {{ current_time }} + {{_('Books ordered by publisher')}} + {{_('Category list')}} diff --git a/cps/web.py b/cps/web.py index 0f359fd6..4a397083 100644 --- a/cps/web.py +++ b/cps/web.py @@ -752,6 +752,26 @@ def feed_author(book_id): return render_xml_template('feed.xml', entries=entries, pagination=pagination) +@app.route("/opds/publisher") +@requires_basic_auth_if_no_ano +def feed_publisherindex(): + off = request.args.get("offset") or 0 + entries = db.session.query(db.Publishers).join(db.books_publishers_link).join(db.Books).filter(common_filters())\ + .group_by('books_publishers_link.publisher').order_by(db.Publishers.sort).limit(config.config_books_per_page).offset(off) + pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page, + len(db.session.query(db.Publishers).all())) + return render_xml_template('feed.xml', listelements=entries, folder='feed_publisher', pagination=pagination) + + +@app.route("/opds/publisher/") +@requires_basic_auth_if_no_ano +def feed_publisher(book_id): + off = request.args.get("offset") or 0 + entries, __, pagination = fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), + db.Books, db.Books.publishers.any(db.Publishers.id == book_id), [db.Books.timestamp.desc()]) + return render_xml_template('feed.xml', entries=entries, pagination=pagination) + + @app.route("/opds/category") @requires_basic_auth_if_no_ano def feed_categoryindex(): From 60e9d01d27987a796bcc28e2bacda418fde9dd8d Mon Sep 17 00:00:00 2001 From: Virgil Grigoras Date: Mon, 1 Oct 2018 10:35:13 +0200 Subject: [PATCH 006/160] Beautify http errors --- cps/static/css/style.css | 16 ++++++++++++++++ cps/templates/http_error.html | 26 ++++++++++++++++++++++++++ cps/web.py | 16 ++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 cps/templates/http_error.html diff --git a/cps/static/css/style.css b/cps/static/css/style.css index 16c3cb36..9e2e82b3 100644 --- a/cps/static/css/style.css +++ b/cps/static/css/style.css @@ -5,6 +5,22 @@ src: local('Grand Hotel'), local('GrandHotel-Regular'), url("fonts/GrandHotel-Regular.ttf") format('truetype'); } +html.http-error { + margin: 0; + height: 100%; +} +.http-error body { + margin: 0; + height: 100%; + display: table; + width: 100%; +} +.http-error body > div { + display: table-cell; + vertical-align: middle; + text-align: center; +} + body{background:#f2f2f2}body h2{font-weight:normal;color:#444} body { margin-bottom: 40px;} a{color: #45b29d}a:hover{color: #444;} diff --git a/cps/templates/http_error.html b/cps/templates/http_error.html new file mode 100644 index 00000000..8167ddf3 --- /dev/null +++ b/cps/templates/http_error.html @@ -0,0 +1,26 @@ + + + + {{ instance }} | HTTP Error ({{ error_code }}) + + + + + + + + + + + {% if g.user.get_theme == 1 %} + + {% endif %} + + +
+

{{ error_code }}

+

{{ error_name }}

+ {{_('Back to home')}} +
+ + diff --git a/cps/web.py b/cps/web.py index c93ca00d..cc2a8c86 100644 --- a/cps/web.py +++ b/cps/web.py @@ -42,6 +42,8 @@ from flask import (Flask, render_template, request, Response, redirect, abort, Markup) from flask import __version__ as flaskVersion from werkzeug import __version__ as werkzeugVersion +from werkzeug.exceptions import default_exceptions + from jinja2 import __version__ as jinja2Version import cache_buster import ub @@ -176,6 +178,20 @@ mimetypes.add_type('application/x-cbt', '.cbt') mimetypes.add_type('image/vnd.djvu', '.djvu') app = (Flask(__name__)) + + +def error_http(error): + return render_template('http_error.html', + error_code=error.code, + error_name=error.name, + instance=config.config_calibre_web_title + ), error.code + + +# http error handling +for ex in default_exceptions: + app.register_error_handler(ex, error_http) + app.wsgi_app = ReverseProxied(app.wsgi_app) cache_buster.init_cache_busting(app) From a798dc94a968a6a1bc19a3c858593441676dbea8 Mon Sep 17 00:00:00 2001 From: Virgil Grigoras Date: Mon, 1 Oct 2018 10:45:51 +0200 Subject: [PATCH 007/160] Satisfy "Codacy/PR Quality Review" --- cps/web.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cps/web.py b/cps/web.py index 4a397083..a6204968 100644 --- a/cps/web.py +++ b/cps/web.py @@ -533,7 +533,7 @@ def fill_indexpage(page, database, db_filter, order, *join): # if elements have to be deleted, because they are no longer used def modify_database_object(input_elements, db_book_object, db_object, db_session, db_type): # passing input_elements not as a list may lead to undesired results - if type(input_elements) is not list: + if not isinstance(input_elements, list): raise TypeError(str(input_elements) + " should be passed as a list") input_elements = [x for x in input_elements if x != ''] From 5d34fd7fec0468812cbee91bca46987cc6d01166 Mon Sep 17 00:00:00 2001 From: bodybybuddha Date: Mon, 1 Oct 2018 14:19:29 -0400 Subject: [PATCH 008/160] Send to Kindle button precheck added Based on existing book formats and which converter (if any) determine if button can be seen. --- cps/helper.py | 59 +++++++++++++++++++++++++++++++++++++++ cps/templates/detail.html | 2 +- cps/web.py | 7 +++-- 3 files changed, 65 insertions(+), 3 deletions(-) diff --git a/cps/helper.py b/cps/helper.py index 722a6245..5aaeb988 100755 --- a/cps/helper.py +++ b/cps/helper.py @@ -108,6 +108,65 @@ def send_registration_mail(e_mail, user_name, default_password, resend=False): e_mail, user_name, _(u"Registration e-mail for user: %(name)s", name=user_name),text) return +def chk_send_to_kindle(book_id): + ''' + Used to determine if we can show the Send to Kindle button. + Specifically checks the existing book formats and the conversion options available. + + mobi = true + epub && kindlegen or ebookconvert = true + all valid 'book' format && ebookconvert = true + all other combinations = false + ''' + 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).all() + if data: + bookformats = get_formats_from_book(data) + + if ub.config.config_ebookconverter == 0: + # no converter - only allow for mobi and pdf formats + if 'MOBI' in bookformats or 'PDF' in bookformats: + return True + else: + return False + else: + if ub.config.config_ebookconverter == 1: + # the converter is kindlegen - only allow epub + if 'EPUB' in bookformats: + return True + else: + return False + + if ub.config.config_ebookconverter == 2: + # the converter is ebook-convert - allow for any allowable 'book' format + formatcount = 0 + for bookformat in bookformats: + if bookformat.lower() in web.EXTENSIONS_CONVERT: + formatcount += 1 + + if formatcount > 0: + return True + else: + return False + else: + return False + + return False + else: + app.logger.error(u'Cannot find book entry %d', book_id) + return False + +def get_formats_from_book(data): + ''' + data s/b the data member of db.entry + returns a list of formats + ''' + formatlist=[] + for entry in data: + formatlist.append(entry.format.upper()) + + return formatlist + # Files are processed in the following order/priority: # 1: If Mobi file is exisiting, it's directly send to kindle email, diff --git a/cps/templates/detail.html b/cps/templates/detail.html index 420b98a6..0269ad38 100644 --- a/cps/templates/detail.html +++ b/cps/templates/detail.html @@ -40,7 +40,7 @@
{% endif %} {% endif %} - {% if g.user.kindle_mail and g.user.is_authenticated %} + {% if g.user.kindle_mail and g.user.is_authenticated and flg_kindle%} {{_('Send to Kindle')}} {% endif %} {% if entry.data|length %} diff --git a/cps/web.py b/cps/web.py index 2d1e5f3f..3673e0aa 100644 --- a/cps/web.py +++ b/cps/web.py @@ -1586,9 +1586,11 @@ def show_book(book_id): entries.tags = sort(entries.tags, key = lambda tag: tag.name) + flg_send_to_kindle = helper.chk_send_to_kindle(book_id) + return render_title_template('detail.html', entry=entries, cc=cc, is_xhr=request.is_xhr, title=entries.title, books_shelfs=book_in_shelfs, - have_read=have_read, page="book") + have_read=have_read, flg_kindle=flg_send_to_kindle, page="book") else: flash(_(u"Error opening eBook. File does not exist or file is not accessible:"), category="error") return redirect(url_for("index")) @@ -3846,8 +3848,9 @@ def upload(): return render_title_template('book_edit.html', book=book, authors=author_names, cc=cc, title=_(u"edit metadata"), page="upload") book_in_shelfs = [] + flg_send_to_kindle = helper.chk_send_to_kindle(book_id) return render_title_template('detail.html', entry=book, cc=cc, - title=book.title, books_shelfs=book_in_shelfs, page="upload") + title=book.title, books_shelfs=book_in_shelfs, flg_kindle=flg_send_to_kindle, page="upload") return redirect(url_for("index")) From 1144d97bc15425d99f68be47979af912dd969956 Mon Sep 17 00:00:00 2001 From: bodybybuddha Date: Mon, 1 Oct 2018 15:34:16 -0400 Subject: [PATCH 009/160] Fixed updating new book format to be all caps in database This keeps us inline with calibre's behavior. --- cps/worker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cps/worker.py b/cps/worker.py index 02ca742f..21914a3d 100644 --- a/cps/worker.py +++ b/cps/worker.py @@ -320,7 +320,7 @@ class WorkerThread(threading.Thread): cur_book = web.db.session.query(web.db.Books).filter(web.db.Books.id == bookid).first() if os.path.isfile(file_path + format_new_ext): new_format = web.db.Data(name=cur_book.data[0].name, - book_format=self.queue[self.current]['settings']['new_book_format'], + book_format=self.queue[self.current]['settings']['new_book_format'].upper(), book=bookid, uncompressed_size=os.path.getsize(file_path + format_new_ext)) cur_book.data.append(new_format) web.db.session.commit() From 46b2c9919a0fa0c4bf4857f11d7771978e01163b Mon Sep 17 00:00:00 2001 From: bodybybuddha Date: Mon, 1 Oct 2018 15:35:51 -0400 Subject: [PATCH 010/160] Fix for #295 Allow for azw and azw3 files to be "sent" to kindle - these books are actually converted to mobi first --- cps/helper.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cps/helper.py b/cps/helper.py index 5aaeb988..aafb696f 100755 --- a/cps/helper.py +++ b/cps/helper.py @@ -185,6 +185,10 @@ def send_mail(book_id, kindle_mail, calibrepath, user_id): formats["epub"] = entry.name + ".epub" if entry.format == "PDF": formats["pdf"] = entry.name + ".pdf" + if entry.format == "AZW": + formats["azw"] = entry.name + ".azw" + if entry.format == "AZW3": + formats["azw3"] = entry.name + ".azw3" if len(formats) == 0: return _(u"Could not find any formats suitable for sending by e-mail") @@ -194,6 +198,12 @@ def send_mail(book_id, kindle_mail, calibrepath, user_id): elif 'epub' in formats: # returns None if sucess, otherwise errormessage return convert_book_format(book_id, calibrepath, u'epub', u'mobi', user_id, kindle_mail) + elif 'azw3' in formats: + # returns None if sucess, otherwise errormessage + return convert_book_format(book_id, calibrepath, u'azw3', u'mobi', user_id, kindle_mail) + elif 'azw' in formats: + # returns None if sucess, otherwise errormessage + return convert_book_format(book_id, calibrepath, u'azw', u'mobi', user_id, kindle_mail) elif 'pdf' in formats: result = formats['pdf'] # worker.get_attachment() else: From d8107fb50ffbecb90b3afa54148fbb43c02c09cc Mon Sep 17 00:00:00 2001 From: bodybybuddha Date: Tue, 2 Oct 2018 10:22:01 -0400 Subject: [PATCH 011/160] Addressed Codacy trailing space items ... again --- cps/helper.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cps/helper.py b/cps/helper.py index aafb696f..e621679f 100755 --- a/cps/helper.py +++ b/cps/helper.py @@ -142,16 +142,16 @@ def chk_send_to_kindle(book_id): formatcount = 0 for bookformat in bookformats: if bookformat.lower() in web.EXTENSIONS_CONVERT: - formatcount += 1 + formatcount += 1 - if formatcount > 0: + if formatcount > 0: return True else: return False else: return False - return False + return False else: app.logger.error(u'Cannot find book entry %d', book_id) return False From e62783c8864edcf2b3107338be196371df125a47 Mon Sep 17 00:00:00 2001 From: Chintogtokh Batbold Date: Wed, 3 Oct 2018 12:32:49 +0000 Subject: [PATCH 012/160] Modify Readme for Ubuntu install bug --- readme.md | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/readme.md b/readme.md index 136d32df..4bde458f 100755 --- a/readme.md +++ b/readme.md @@ -13,7 +13,7 @@ Calibre-Web is a web app providing a clean interface for browsing, reading and d - User management with fine grained per-user permissions - Admin interface - User Interface in dutch, english, french, german, italian, japanese, khmer, polish, russian, simplified chinese, spanish -- OPDS feed for eBook reader apps +- OPDS feed for eBook reader apps - Filter and search by titles, authors, tags, series and language - Create custom book collection (shelves) - Support for editing eBook metadata and deleting eBooks from Calibre library @@ -30,7 +30,7 @@ Calibre-Web is a web app providing a clean interface for browsing, reading and d ## Quick start -1. Install dependencies by running `pip install --target vendor -r requirements.txt`. +1. Install dependencies by running `pip install --target vendor -r requirements.txt`. 2. Execute the command: `python cps.py` (or `nohup python cps.py` - recommended if you want to exit the terminal window) 3. Point your browser to `http://localhost:8083` or `http://localhost:8083/opds` for the OPDS catalog 4. Set `Location of Calibre database` to the path of the folder where your Calibre library (metadata.db) lives, push "submit" button @@ -41,6 +41,9 @@ Calibre-Web is a web app providing a clean interface for browsing, reading and d *Username:* admin *Password:* admin123 +**Issues with Ubuntu:** +Please note that running the above install command can fail on some versions of Ubuntu, saying `"can't combine user with prefix"`. This is a [known bug](https://github.com/pypa/pip/issues/3826) and can be remedied by using the command `pip install --system --target vendor -r requirements.txt` instead. + ## Runtime Configuration Options The configuration can be changed as admin in the admin panel under "Configuration" @@ -48,14 +51,14 @@ The configuration can be changed as admin in the admin panel under "Configuratio Server Port: Changes the port Calibre-Web is listening, changes take effect after pressing submit button -Enable public registration: +Enable public registration: Tick to enable public user registration. -Enable anonymous browsing: +Enable anonymous browsing: Tick to allow not logged in users to browse the catalog, anonymous user permissions can be set as admin ("Guest" user) Enable uploading: -Tick to enable uploading of PDF, epub, FB2. This requires the imagemagick library to be installed. +Tick to enable uploading of PDF, epub, FB2. This requires the imagemagick library to be installed. Enable remote login ("magic link"): Tick to enable remote login, i.e. a link that allows user to log in via a different device. @@ -83,7 +86,7 @@ Once a project has been created, we need to create a client ID and a client secr 5. Select Web Application and then next 6. Give the Credentials a name and enter your callback, which will be CALIBRE_WEB_URL/gdrive/callback 7. Click save -8. Download json file and place it in `calibre-web` directory, with the name `client_secrets.json` +8. Download json file and place it in `calibre-web` directory, with the name `client_secrets.json` The Drive API should now be setup and ready to use, so we need to integrate it into Calibre-Web. This is done as below: - @@ -103,7 +106,7 @@ Additionally the public adress your server uses (e.g.https://example.com) has to 9. Open config page 10. Click enable watch of metadata.db -11. Note that this expires after a week, so will need to be manually refresh +11. Note that this expires after a week, so will need to be manually refresh ## Docker images @@ -160,7 +163,7 @@ Listen 443 SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile "C:\Apache24\conf\ssl\test.crt" SSLCertificateKeyFile "C:\Apache24\conf\ssl\test.key" - + RequestHeader set X-SCRIPT-NAME /calibre-web RequestHeader set X-SCHEME https @@ -172,8 +175,8 @@ Listen 443 ## (Optional) SSL Configuration -For configuration of calibre-web as SSL Server go to the Config page in the Admin section. Enter the certfile- and keyfile-location, optionally change port to 443 and press submit. -Afterwards the server can only be accessed via SSL. In case of a misconfiguration (wrong/invalid files) both files can be overridden via command line options +For configuration of calibre-web as SSL Server go to the Config page in the Admin section. Enter the certfile- and keyfile-location, optionally change port to 443 and press submit. +Afterwards the server can only be accessed via SSL. In case of a misconfiguration (wrong/invalid files) both files can be overridden via command line options -c [certfile location] -k [keyfile location] By using "" as file locations the server runs as non SSL server again. The correct file path can than be entered on the Config page. After the next restart without command line options the changed file paths are applied. @@ -206,7 +209,7 @@ enables the service. Starting the script with `-h` lists all supported command line options Currently supported are 2 options, which are both useful for running multiple instances of Calibre-Web -`"-p path"` allows to specify the location of the settings database -`"-g path"` allows to specify the location of the google-drive database -`"-c path"` allows to specify the location of SSL certfile, works only in combination with keyfile -`"-k path"` allows to specify the location of SSL keyfile, works only in combination with certfile +`"-p path"` allows to specify the location of the settings database +`"-g path"` allows to specify the location of the google-drive database +`"-c path"` allows to specify the location of SSL certfile, works only in combination with keyfile +`"-k path"` allows to specify the location of SSL keyfile, works only in combination with certfile From ee686b5379e00402b9d538404d1da2c6e5cf58b1 Mon Sep 17 00:00:00 2001 From: bodybybuddha Date: Wed, 3 Oct 2018 15:58:37 -0400 Subject: [PATCH 013/160] Fix for #617 Task table: Status column and task messages have been localized Cleaned up the use of the task fields 'typ' and 'type' to be taskType and taskMessage --- cps/helper.py | 25 ++++++++++++++++---- cps/templates/tasks.html | 2 +- cps/web.py | 32 +++++++++++++------------- cps/worker.py | 49 ++++++++++++++++++++-------------------- 4 files changed, 62 insertions(+), 46 deletions(-) diff --git a/cps/helper.py b/cps/helper.py index bf1bcbef..0e214a06 100755 --- a/cps/helper.py +++ b/cps/helper.py @@ -73,10 +73,10 @@ def convert_book_format(book_id, calibrepath, old_book_format, new_book_format, # read settings and append converter task to queue if kindle_mail: settings = ub.get_mail_settings() - text = _(u"Convert: %(book)s" , book=book.title) + text = _(u"%(format)s: %(book)s", format=new_book_format, book=book.title) else: settings = dict() - text = _(u"Convert to %(format)s: %(book)s", format=new_book_format, book=book.title) + text = _(u"%(format)s: %(book)s", format=new_book_format, book=book.title) settings['old_book_format'] = old_book_format settings['new_book_format'] = new_book_format global_WorkerThread.add_convert(file_path, book.id, user_id, text, settings, kindle_mail) @@ -523,7 +523,7 @@ class Updater(threading.Thread): logging.getLogger('cps.web').debug("Could not remove:" + item_path) shutil.rmtree(source, ignore_errors=True) - + def check_unrar(unrarLocation): error = False if os.path.exists(unrarLocation): @@ -568,11 +568,13 @@ def get_current_version_info(): return {'hash': content[0], 'datetime': content[1]} return False + def render_task_status(tasklist): #helper function to apply localize status information in tasklist entries renderedtasklist=list() for task in tasklist: + # localize the task status if isinstance( task['status'], int ): if task['status'] == worker.STAT_WAITING: task['status'] = _('Waiting') @@ -583,8 +585,21 @@ def render_task_status(tasklist): elif task['status'] == worker.STAT_FINISH_SUCCESS: task['status'] = _('Finished') else: - task['status'] = _('Unknown Status') + task['status'] = _('Unknown Status') + + # localize the task type + if isinstance( task['taskType'], int ): + if task['taskType'] == worker.TASK_EMAIL: + task['taskMessage'] = _('EMAIL: ') + task['taskMessage'] + elif task['taskType'] == worker.TASK_CONVERT: + task['taskMessage'] = _('CONVERT: ') + task['taskMessage'] + elif task['taskType'] == worker.TASK_UPLOAD: + task['taskMessage'] = _('UPLOAD: ') + task['taskMessage'] + elif task['taskType'] == worker.TASK_CONVERT_ANY: + task['taskMessage'] = _('CONVERT: ') + task['taskMessage'] + else: + task['taskMessage'] = _('Unknown Task: ') + task['taskMessage'] + renderedtasklist.append(task) return renderedtasklist - \ No newline at end of file diff --git a/cps/templates/tasks.html b/cps/templates/tasks.html index d4f72829..4cf13c95 100644 --- a/cps/templates/tasks.html +++ b/cps/templates/tasks.html @@ -11,7 +11,7 @@ {% if g.user.role_admin() %} {{_('User')}} {% endif %} - {{_('Task')}} + {{_('Task')}} {{_('Status')}} {{_('Progress')}} {{_('Runtime')}} diff --git a/cps/web.py b/cps/web.py index 421bb44b..37439bd9 100644 --- a/cps/web.py +++ b/cps/web.py @@ -894,10 +894,10 @@ def get_email_status_json(): if 'starttime' not in task: task['starttime'] = "" answer = tasks - + UIanswer = copy.deepcopy(answer) UIanswer = helper.render_task_status(UIanswer) - + js=json.dumps(UIanswer) response = make_response(js) response.headers["Content-Type"] = "application/json; charset=utf-8" @@ -905,7 +905,7 @@ def get_email_status_json(): # checks if domain is in database (including wildcards) -# example SELECT * FROM @TABLE WHERE 'abcdefg' LIKE Name; +# example SELECT * FROM @TABLE WHERE 'abcdefg' LIKE Name; # from https://code.luasoftware.com/tutorials/flask/execute-raw-sql-in-flask-sqlalchemy/ def check_valid_domain(domain_text): # result = session.query(Notification).from_statement(text(sql)).params(id=5).all() @@ -926,7 +926,7 @@ def check_valid_domain(domain_text): def edit_domain(): vals = request.form.to_dict() answer = ub.session.query(ub.Registration).filter(ub.Registration.id == vals['pk']).first() - # domain_name = request.args.get('domain') + # domain_name = request.args.get('domain') answer.domain = vals['value'].replace('*','%').replace('?','_').lower() ub.session.commit() return "" @@ -2265,7 +2265,7 @@ def register(): content.nickname = to_save["nickname"] content.email = to_save["email"] password = helper.generate_random_password() - content.password = generate_password_hash(password) + content.password = generate_password_hash(password) content.role = config.config_default_role content.sidebar_view = config.config_default_show try: @@ -2528,9 +2528,9 @@ def search_to_shelf(shelf_id): flash(_(u"Books have been added to shelf: %(sname)s", sname=shelf.name), category="success") else: flash(_(u"Could not add books to shelf: %(sname)s", sname=shelf.name), category="error") - return redirect(url_for('index')) + return redirect(url_for('index')) + - @app.route("/shelf/remove//") @login_required def remove_from_shelf(shelf_id, book_id): @@ -2741,7 +2741,7 @@ def profile(): if config.config_public_reg and not check_valid_domain(to_save["email"]): flash(_(u"E-mail is not from valid domain"), category="error") return render_title_template("user_edit.html", content=content, downloads=downloads, - title=_(u"%(name)s's profile", name=current_user.nickname)) + title=_(u"%(name)s's profile", name=current_user.nickname)) content.email = to_save["email"] if "show_random" in to_save and to_save["show_random"] == "on": content.random_books = 1 @@ -3721,7 +3721,7 @@ def upload(): # create the function for sorting... db.session.connection().connection.connection.create_function("title_sort", 1, db.title_sort) db.session.connection().connection.connection.create_function('uuid4', 0, lambda: str(uuid4())) - + # check if file extension is correct if '.' in requested_file.filename: file_ext = requested_file.filename.rsplit('.', 1)[-1].lower() @@ -3733,7 +3733,7 @@ def upload(): else: flash(_('File to be uploaded must have an extension'), category="error") return redirect(url_for('index')) - + # extract metadata from file meta = uploader.upload(requested_file) title = meta.title @@ -3777,7 +3777,7 @@ def upload(): else: db_author = db.Authors(authr, helper.get_sorted_author(authr), "") db.session.add(db_author) - + # handle series db_series = None is_series = db.session.query(db.Series).filter(db.Series.name == series).first() @@ -3798,7 +3798,7 @@ def upload(): else: db_language = db.Languages(input_language) db.session.add(db_language) - + # combine path and normalize path from windows systems path = os.path.join(author_dir, title_dir).replace('\\', '/') db_book = db.Books(title, "", db_author.sort, datetime.datetime.now(), datetime.datetime(101, 1, 1), @@ -3810,13 +3810,13 @@ def upload(): db_book.languages.append(db_language) file_size = os.path.getsize(saved_filename) db_data = db.Data(db_book, meta.extension.upper()[1:], file_size, title_dir) - + # handle tags input_tags = tags.split(',') input_tags = list(map(lambda it: it.strip(), input_tags)) if input_tags[0] !="": modify_database_object(input_tags, db_book.tags, db.Tags, db.session, 'tags') - + # flush content, get db_book.id available db_book.data.append(db_data) db.session.add(db_book) @@ -3827,7 +3827,7 @@ def upload(): upload_comment = Markup(meta.description).unescape() if upload_comment != "": db.session.add(db.Comments(upload_comment, book_id)) - + # save data to database, reread data db.session.commit() db.session.connection().connection.connection.create_function("title_sort", 1, db.title_sort) @@ -3844,7 +3844,7 @@ def upload(): if error: flash(error, category="error") uploadText=_(u"File %(file)s uploaded", file=book.title) - helper.global_WorkerThread.add_upload(current_user.nickname, + helper.global_WorkerThread.add_upload(current_user.nickname, "" + uploadText + "") # create data for displaying display Full language name instead of iso639.part3language diff --git a/cps/worker.py b/cps/worker.py index c01d584e..de891916 100644 --- a/cps/worker.py +++ b/cps/worker.py @@ -33,12 +33,12 @@ from email.utils import formatdate from email.utils import make_msgid chunksize = 8192 - +# task 'status' consts STAT_WAITING = 0 STAT_FAIL = 1 STAT_STARTED = 2 STAT_FINISH_SUCCESS = 3 - +#taskType consts TASK_EMAIL = 1 TASK_CONVERT = 2 TASK_UPLOAD = 3 @@ -169,11 +169,11 @@ class WorkerThread(threading.Thread): doLock.acquire() if self.current != self.last: doLock.release() - if self.queue[self.current]['typ'] == TASK_EMAIL: + if self.queue[self.current]['taskType'] == TASK_EMAIL: self.send_raw_email() - if self.queue[self.current]['typ'] == TASK_CONVERT: + if self.queue[self.current]['taskType'] == TASK_CONVERT: self.convert_any_format() - if self.queue[self.current]['typ'] == TASK_CONVERT_ANY: + if self.queue[self.current]['taskType'] == TASK_CONVERT_ANY: self.convert_any_format() # TASK_UPLOAD is handled implicitly self.current += 1 @@ -203,7 +203,7 @@ class WorkerThread(threading.Thread): def get_taskstatus(self): if self.current < len(self.queue): if self.queue[self.current]['status'] == STAT_STARTED: - if self.queue[self.current]['typ'] == TASK_EMAIL: + if self.queue[self.current]['taskType'] == TASK_EMAIL: self.UIqueue[self.current]['progress'] = self.get_send_status() self.UIqueue[self.current]['runtime'] = self._formatRuntime( datetime.now() - self.queue[self.current]['starttime']) @@ -215,7 +215,7 @@ class WorkerThread(threading.Thread): self.UIqueue[self.current]['status'] = STAT_STARTED self.queue[self.current]['starttime'] = datetime.now() self.UIqueue[self.current]['formStarttime'] = self.queue[self.current]['starttime'] - curr_task = self.queue[self.current]['typ'] + curr_task = self.queue[self.current]['taskType'] filename = self.convert_ebook_format() if filename: if web.ub.config.config_use_google_drive: @@ -223,7 +223,7 @@ class WorkerThread(threading.Thread): if curr_task == TASK_CONVERT: self.add_email(_(u'Send to Kindle'), self.queue[self.current]['path'], filename, self.queue[self.current]['settings'], self.queue[self.current]['kindle'], - self.UIqueue[self.current]['user'], _(u"E-mail: %(book)s", book=self.queue[self.current]['title'])) + self.UIqueue[self.current]['user'], _(u"%(book)s", book=self.queue[self.current]['title'])) def convert_ebook_format(self): @@ -232,7 +232,7 @@ class WorkerThread(threading.Thread): bookid = self.queue[self.current]['bookid'] format_old_ext = u'.' + self.queue[self.current]['settings']['old_book_format'].lower() format_new_ext = u'.' + self.queue[self.current]['settings']['new_book_format'].lower() - + # check to see if destination format already exists - # if it does - mark the conversion task as complete and return a success # this will allow send to kindle workflow to continue to work @@ -245,12 +245,12 @@ class WorkerThread(threading.Thread): return file_path + format_new_ext else: web.app.logger.info("Book id %d - target format of %s does not existing. Moving forward with convert.", bookid, format_new_ext) - + # check if converter-executable is existing if not os.path.exists(web.ub.config.config_converterpath): self._handleError(_(u"Convertertool %(converter)s not found", converter=web.ub.config.config_converterpath)) return - + try: # check which converter to use kindlegen is "1" if format_old_ext == '.epub' and format_new_ext == '.mobi': @@ -339,7 +339,7 @@ class WorkerThread(threading.Thread): return - def add_convert(self, file_path, bookid, user_name, typ, settings, kindle_mail=None): + def add_convert(self, file_path, bookid, user_name, taskMessage, settings, kindle_mail=None): addLock = threading.Lock() addLock.acquire() if self.last >= 20: @@ -350,15 +350,15 @@ class WorkerThread(threading.Thread): if kindle_mail: task = TASK_CONVERT self.queue.append({'file_path':file_path, 'bookid':bookid, 'starttime': 0, 'kindle': kindle_mail, - 'status': STAT_WAITING, 'typ': task, 'settings':settings}) - self.UIqueue.append({'user': user_name, 'formStarttime': '', 'progress': " 0 %", 'type': typ, - 'runtime': '0 s', 'status': STAT_WAITING,'id': self.id } ) + 'status': STAT_WAITING, 'taskType': task, 'settings':settings}) + self.UIqueue.append({'user': user_name, 'formStarttime': '', 'progress': " 0 %", 'taskMessage': taskMessage, + 'runtime': '0 s', 'status': STAT_WAITING,'id': self.id, 'taskType': task } ) self.last=len(self.queue) addLock.release() - def add_email(self, subject, filepath, attachment, settings, recipient, user_name, typ, + def add_email(self, subject, filepath, attachment, settings, recipient, user_name, taskMessage, text=_(u'This e-mail has been sent via Calibre-Web.')): # if more than 20 entries in the list, clean the list addLock = threading.Lock() @@ -369,13 +369,13 @@ class WorkerThread(threading.Thread): self.id += 1 self.queue.append({'subject':subject, 'attachment':attachment, 'filepath':filepath, 'settings':settings, 'recipent':recipient, 'starttime': 0, - 'status': STAT_WAITING, 'typ': TASK_EMAIL, 'text':text}) - self.UIqueue.append({'user': user_name, 'formStarttime': '', 'progress': " 0 %", 'type': typ, - 'runtime': '0 s', 'status': STAT_WAITING,'id': self.id }) + 'status': STAT_WAITING, 'taskType': TASK_EMAIL, 'text':text}) + self.UIqueue.append({'user': user_name, 'formStarttime': '', 'progress': " 0 %", 'taskMessage': taskMessage, + 'runtime': '0 s', 'status': STAT_WAITING,'id': self.id, 'taskType': TASK_EMAIL }) self.last=len(self.queue) addLock.release() - def add_upload(self, user_name, typ): + def add_upload(self, user_name, taskMessage): # if more than 20 entries in the list, clean the list addLock = threading.Lock() addLock.acquire() @@ -383,9 +383,9 @@ class WorkerThread(threading.Thread): self.delete_completed_tasks() # progress=100%, runtime=0, and status finished self.id += 1 - self.queue.append({'starttime': datetime.now(), 'status': STAT_FINISH_SUCCESS, 'typ': TASK_UPLOAD}) - self.UIqueue.append({'user': user_name, 'formStarttime': '', 'progress': "100 %", 'type': typ, - 'runtime': '0 s', 'status': _('Finished'),'id': self.id }) + self.queue.append({'starttime': datetime.now(), 'status': STAT_FINISH_SUCCESS, 'taskType': TASK_UPLOAD}) + self.UIqueue.append({'user': user_name, 'formStarttime': '', 'progress': "100 %", 'taskMessage': taskMessage, + 'runtime': '0 s', 'status': _('Finished'),'id': self.id, 'taskType': TASK_UPLOAD}) self.UIqueue[self.current]['formStarttime'] = self.queue[self.current]['starttime'] self.last=len(self.queue) addLock.release() @@ -469,7 +469,7 @@ class WorkerThread(threading.Thread): if retVal == ' s': retVal = '0 s' return retVal - + def _handleError(self, error_message): web.app.logger.error(error_message) self.queue[self.current]['status'] = STAT_FAIL @@ -502,3 +502,4 @@ class StderrLogger(object): self.buffer = '' else: self.buffer += message + From b32ee84d4f89628e24a9262c2af28cc3f873cfc9 Mon Sep 17 00:00:00 2001 From: Victorhck Date: Thu, 4 Oct 2018 13:02:25 +0200 Subject: [PATCH 014/160] update Spanish translation (WIP --- cps/translations/es/LC_MESSAGES/messages.po | 262 ++++++++++++-------- 1 file changed, 152 insertions(+), 110 deletions(-) diff --git a/cps/translations/es/LC_MESSAGES/messages.po b/cps/translations/es/LC_MESSAGES/messages.po index f07c30b7..625bac88 100644 --- a/cps/translations/es/LC_MESSAGES/messages.po +++ b/cps/translations/es/LC_MESSAGES/messages.po @@ -2,20 +2,22 @@ # Copyright (C) 2016 Smart Cities Community # This file is distributed under the same license as the Calibre-Web # Juan F. Villa , 2016. +# victorhck , 2018. msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "POT-Creation-Date: 2018-09-14 21:11+0200\n" -"PO-Revision-Date: 2017-04-04 15:09+0200\n" -"Last-Translator: Juan F. Villa \n" +"PO-Revision-Date: 2018-10-04 13:01+0100\n" +"Last-Translator: victorhck \n" "Language: es\n" -"Language-Team: \n" +"Language-Team: Spanish <>\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.5.1\n" +"X-Generator: Lokalize 2.0\n" #: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 #: cps/converter.py:11 cps/converter.py:27 @@ -24,53 +26,55 @@ msgstr "No instalado" #: cps/converter.py:22 cps/converter.py:38 msgid "Excecution permissions missing" -msgstr "" +msgstr "Permisos de ejecución ausentes" #: cps/helper.py:57 #, python-format msgid "%(format)s format not found for book id: %(book)d" -msgstr "" +msgstr "%(format)s formato no encontrado para el id del libro: %(book)d" #: cps/helper.py:69 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" -msgstr "" +msgstr "%(format)s no encontrado en Google Drive: %(fn)s" #: cps/helper.py:76 #, python-format msgid "Convert: %(book)s" -msgstr "" +msgstr "Convertir: %(book)s" #: cps/helper.py:79 #, python-format msgid "Convert to %(format)s: %(book)s" -msgstr "" +msgstr "Convertir a %(format)s: %(book)s" #: cps/helper.py:86 #, python-format msgid "%(format)s not found: %(fn)s" -msgstr "" +msgstr "%(format)s no encontrado: %(fn)s" #: cps/helper.py:91 msgid "Calibre-Web test e-mail" -msgstr "" +msgstr "Calibre-Web comprobar correo electrónico" #: cps/helper.py:92 msgid "Test e-mail" -msgstr "" +msgstr "Comprobar correo electrónico" #: cps/helper.py:107 msgid "Get Started with Calibre-Web" -msgstr "" +msgstr "Primeros pasos con Calibre-Web" #: cps/helper.py:108 #, python-format msgid "Registration e-mail for user: %(name)s" -msgstr "" +msgstr "Registrar un correo electrónico para el usuario: %(name)s" #: cps/helper.py:131 cps/helper.py:141 msgid "Could not find any formats suitable for sending by e-mail" msgstr "" +"No se pudo encontrar ningún formato adecuado para enviar por correo" +" electrónico." #: cps/helper.py:143 cps/templates/detail.html:44 cps/worker.py:224 msgid "Send to Kindle" @@ -79,75 +83,87 @@ msgstr "Enviar a Kindle" #: cps/helper.py:144 cps/worker.py:226 #, python-format msgid "E-mail: %(book)s" -msgstr "" +msgstr "Correo electrónico´: %(book)s" #: cps/helper.py:146 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "" +"El fichero solicitado no puede ser leído. ¿Quizás existen problemas con los" +" permisos?" #: cps/helper.py:241 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" +"El renombrado del título de: '%(src)s' a '%(dest)s' falló con errores: " +"%(error)s" #: cps/helper.py:250 #, python-format -msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" +msgid "" +"Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" +"El renombrado del autor de: '%(src)s' a '%(dest)s' falló con errores: " +"%(error)s" #: cps/helper.py:272 cps/helper.py:281 #, python-format msgid "File %(file)s not found on Google Drive" -msgstr "" +msgstr "Fichero %(file)s no encontrado en Google Drive" #: cps/helper.py:299 #, python-format msgid "Book path %(path)s not found on Google Drive" -msgstr "" +msgstr "La ruta %(path)s del libro no fue encontrada en Google Drive" #: cps/helper.py:544 msgid "Error excecuting UnRar" -msgstr "" +msgstr "Error ejecutando UnRar" #: cps/helper.py:546 msgid "Unrar binary file not found" -msgstr "" +msgstr "Fichero binario Unrar no encontrado" #: cps/web.py:1112 cps/web.py:2778 msgid "Unknown" -msgstr "" +msgstr "Desconocido" #: cps/web.py:1121 cps/web.py:1152 msgid "HTTP Error" -msgstr "" +msgstr "Error HTTP" #: cps/web.py:1123 cps/web.py:1154 msgid "Connection error" -msgstr "" +msgstr "Error de conexión" #: cps/web.py:1125 cps/web.py:1156 msgid "Timeout while establishing connection" -msgstr "" +msgstr "Tiempo agotado mientras se trataba de establecer la conexión" #: cps/web.py:1127 cps/web.py:1158 msgid "General error" -msgstr "" +msgstr "Error general" #: cps/web.py:1133 msgid "Unexpected data while reading update information" -msgstr "" +msgstr "Dato inesperado mientras se elía la información de actualización" #: cps/web.py:1140 msgid "No update available. You already have the latest version installed" msgstr "" +"Actualización no disponible. Ya tienes la versión más reciente instalada" #: cps/web.py:1165 -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." #: cps/web.py:1215 msgid "Could not fetch update information" -msgstr "" +msgstr "No se puede conseguir información sobre la actualización" #: cps/web.py:1230 msgid "Requesting update package" @@ -179,23 +195,23 @@ msgstr "Actualización finalizada. Por favor, pulse OK y recargue la página" #: cps/web.py:1256 msgid "Recently Added Books" -msgstr "" +msgstr "Libros recientemente añadidos" #: cps/web.py:1266 msgid "Newest Books" -msgstr "" +msgstr "Libros más nuevos" #: cps/web.py:1278 msgid "Oldest Books" -msgstr "" +msgstr "Libros más antiguos" #: cps/web.py:1290 msgid "Books (A-Z)" -msgstr "" +msgstr "Libros (A-Z)" #: cps/web.py:1301 msgid "Books (Z-A)" -msgstr "" +msgstr "Libros (Z-A)" #: cps/web.py:1330 msgid "Hot Books (most downloaded)" @@ -215,7 +231,8 @@ msgstr "Lista de autores" #: cps/web.py:1382 cps/web.py:1445 cps/web.py:1600 cps/web.py:2152 msgid "Error opening eBook. File does not exist or file is not accessible:" -msgstr "Error en la apertura del eBook. El archivo no existe o no es accesible:" +msgstr "" +"Error en la apertura del eBook. El archivo no existe o no es accesible:" #: cps/templates/index.xml:73 cps/web.py:1429 msgid "Series list" @@ -228,16 +245,16 @@ msgstr "Series : %(serie)s" #: cps/web.py:1470 msgid "Available languages" -msgstr "Lenguajes disponibles" +msgstr "Idiomas disponibles" #: cps/web.py:1487 #, python-format msgid "Language: %(name)s" -msgstr "Lenguaje: %(name)s" +msgstr "Idioma: %(name)s" #: cps/templates/index.xml:66 cps/web.py:1498 msgid "Category list" -msgstr "Lista de categorias" +msgstr "Lista de categorías" #: cps/web.py:1512 #, python-format @@ -246,15 +263,19 @@ msgstr "Categoría : %(name)s" #: cps/templates/layout.html:71 cps/web.py:1651 msgid "Tasks" -msgstr "" +msgstr "Tareas" #: cps/web.py:1681 msgid "Statistics" -msgstr "Estadisticas" +msgstr "Estadísticas" #: cps/web.py:1786 -msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" +msgid "" +"Callback domain is not verified, please follow steps to verify domain in" +" google developer console" msgstr "" +"El dominio de devolución de llamada no se ha verificado, siga los pasos para" +" verificar el dominio en la consola de desarrollador de Google" #: cps/web.py:1861 msgid "Server restarted, please reload page" @@ -270,21 +291,21 @@ msgstr "Actualización realizada" #: cps/web.py:1953 msgid "Published after " -msgstr "" +msgstr "Publicado antes de" #: cps/web.py:1960 msgid "Published before " -msgstr "" +msgstr "Publicado después de" #: cps/web.py:1974 #, python-format msgid "Rating <= %(rating)s" -msgstr "" +msgstr "Clasificación <= %(rating)s" #: cps/web.py:1976 #, python-format msgid "Rating >= %(rating)s" -msgstr "" +msgstr "Clasificación >= %(rating)s" #: cps/web.py:2035 cps/web.py:2044 msgid "search" @@ -316,18 +337,21 @@ msgstr "registrarse" #: cps/web.py:2265 cps/web.py:3345 msgid "An unknown error occurred. Please try again later." msgstr "" +"Ha ocurrido un error desconocido. Por favor vuelva a intentarlo más tarde." #: cps/web.py:2268 msgid "Your e-mail is not allowed to register" -msgstr "" +msgstr "Su correo electrónico no está permitido para registrarse" #: cps/web.py:2271 msgid "Confirmation e-mail was send to your e-mail account." msgstr "" +"Se ha enviado un correo electrónico de verificación a su cuenta de correo" +" electrónico.´" #: cps/web.py:2274 msgid "This username or e-mail address is already in use." -msgstr "" +msgstr "Este nombre de usuario o correo electrónico ya están en uso." #: cps/web.py:2291 cps/web.py:2387 #, python-format @@ -344,33 +368,33 @@ msgstr "Iniciar sesión" #: cps/web.py:2335 cps/web.py:2366 msgid "Token not found" -msgstr "" +msgstr "Token no encontrado" #: cps/web.py:2343 cps/web.py:2374 msgid "Token has expired" -msgstr "" +msgstr "El token ha expirado" #: cps/web.py:2351 msgid "Success! Please return to your device" -msgstr "" +msgstr "¡Correcto! Por favor regrese a su dispositivo" #: cps/web.py:2401 msgid "Please configure the SMTP mail settings first..." -msgstr "Configurar primero los parametros SMTP por favor..." +msgstr "Configurar primero los parámetros SMTP por favor..." #: cps/web.py:2405 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" -msgstr "" +msgstr "Libro puesto en la cola de envío a %(kindlemail)s" #: cps/web.py:2409 #, python-format msgid "There was an error sending this book: %(res)s" -msgstr "Ha sucedido un error en el envio del Libro: %(res)s" +msgstr "Ha sucedido un error en el envío del libro: %(res)s" #: cps/web.py:2411 cps/web.py:3183 msgid "Please configure your kindle e-mail address first..." -msgstr "" +msgstr "Por favor configure primero la dirección de correo de su kindle..." #: cps/web.py:2455 #, python-format @@ -379,46 +403,47 @@ msgstr "El libro fue agregado a el estante: %(sname)s" #: cps/web.py:2466 msgid "Invalid shelf specified" -msgstr "" +msgstr "Estante especificado inválido" #: cps/web.py:2471 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" -msgstr "" +msgstr "No tiene permiso para añadir un libro a el estante: %(name)s" #: cps/web.py:2476 msgid "User is not allowed to edit public shelves" -msgstr "" +msgstr "El usuario no tiene permiso para editar estantes públicos" #: cps/web.py:2494 #, python-format msgid "Books are already part of the shelf: %(name)s" -msgstr "" +msgstr "Los libros ya forman parte del estante: %(name)s" #: cps/web.py:2508 #, python-format msgid "Books have been added to shelf: %(sname)s" -msgstr "" +msgstr "Los libros han sido añadidos al estante: %(sname)s" #: cps/web.py:2510 #, python-format msgid "Could not add books to shelf: %(sname)s" -msgstr "" +msgstr "No se pudieron agregar libros al estante: %(sname)s" #: cps/web.py:2547 #, python-format msgid "Book has been removed from shelf: %(sname)s" -msgstr "El libro fue removido del estante: %(sname)s" +msgstr "El libro fue eliminado del estante: %(sname)s" #: cps/web.py:2553 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" +"Lo siento, no tiene permiso para eliminar un libro del estante: %(sname)s" #: cps/web.py:2573 cps/web.py:2597 #, python-format msgid "A shelf with the name '%(title)s' already exists." -msgstr "Une étagère de ce nom '%(title)s' existe déjà." +msgstr "Un estante con el nombre '%(title)s' ya existe." #: cps/web.py:2578 #, python-format @@ -454,7 +479,7 @@ msgstr "Estante: '%(name)s'" #: cps/web.py:2662 msgid "Error opening shelf. Shelf does not exist or is not accessible" -msgstr "" +msgstr "Error al abrir un estante. El estante no existe o no es accesible" #: cps/web.py:2693 #, python-format @@ -463,7 +488,7 @@ msgstr "Cambiar orden del estante: '%(name)s'" #: cps/web.py:2722 cps/web.py:3135 msgid "E-mail is not from valid domain" -msgstr "" +msgstr "El correo electrónico no tiene un nombre de dominio válido" #: cps/web.py:2724 cps/web.py:2765 cps/web.py:2768 #, python-format @@ -473,6 +498,7 @@ msgstr "Perfil de %(name)s" #: cps/web.py:2763 msgid "Found an existing account for this e-mail address." msgstr "" +"Encontrada una cuenta existente para esa dirección de correo electrónico." #: cps/web.py:2766 msgid "Profile updated" @@ -484,11 +510,11 @@ msgstr "Página de administración" #: cps/web.py:2872 cps/web.py:3045 msgid "Calibre-Web configuration updated" -msgstr "onfiguración de Calibre-Web actualizada" +msgstr "Configuración de Calibre-Web actualizada" #: cps/templates/admin.html:100 cps/web.py:2885 msgid "UI Configuration" -msgstr "" +msgstr "Configuración de la interfaz del usuario" #: cps/web.py:2903 msgid "Import of optional Google Drive requirements missing" @@ -496,11 +522,11 @@ msgstr "" #: cps/web.py:2906 msgid "client_secrets.json is missing or not readable" -msgstr "" +msgstr "client_secrets.json está desaparecido o no se puede leer" #: cps/web.py:2911 cps/web.py:2938 msgid "client_secrets.json is not configured for web application" -msgstr "" +msgstr "client_secrets.json no está configurado para la aplicación web" #: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979 #: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060 @@ -511,18 +537,24 @@ msgstr "Configuración básica" #: cps/web.py:2964 msgid "Keyfile location is not valid, please enter correct path" msgstr "" +"La ubicación del fichero clave (Keyfile) no es válida, por favor introduzca" +" la ruta correcta" #: cps/web.py:2976 msgid "Certfile location is not valid, please enter correct path" msgstr "" +"La ubicación del fichero de certificado (Certfile) no es válida, por favor" +" introduzca la ruta correcta" #: cps/web.py:3018 msgid "Logfile location is not valid, please enter correct path" msgstr "" +"La ubicación del fichero de registro (Logfile) no es válida, por favor" +" introduzca la ruta correcta" #: cps/web.py:3057 msgid "DB location is not valid, please enter correct path" -msgstr "Localicación de la BD inválida. Por favor, introduzca la ruta correcta." +msgstr "Localización de la BD inválida, por favor introduzca la ruta correcta" #: cps/templates/admin.html:33 cps/web.py:3131 cps/web.py:3137 cps/web.py:3153 msgid "Add new user" @@ -536,6 +568,8 @@ msgstr "Usuario '%(user)s' creado" #: cps/web.py:3147 msgid "Found an existing account for this e-mail address or nickname." msgstr "" +"Encontrada una cuenta existente para este correo electrónico o nombre de" +" usuario" #: cps/web.py:3171 cps/web.py:3185 msgid "E-mail server settings updated" @@ -577,20 +611,21 @@ msgstr "Editar Usuario %(nick)s" #: cps/web.py:3342 #, python-format msgid "Password for user %(user)s reset" -msgstr "" +msgstr "Contraseña para el usuario %(user)s reinicializada" #: cps/web.py:3362 msgid "Error opening eBook. File does not exist or file is not accessible" -msgstr "" +msgstr "Error abriendo un eBook. El archivo no existe o no es accesible" #: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827 msgid "edit metadata" -msgstr "editar metainformación" +msgstr "editar metadatos" #: cps/web.py:3401 cps/web.py:3697 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" -msgstr "No se permite subir archivos con la extensión '%(ext)s' a este servidor" +msgstr "" +"No se permite subir archivos con la extensión '%(ext)s' a este servidor" #: cps/web.py:3405 cps/web.py:3701 msgid "File to be uploaded must have an extension" @@ -623,15 +658,15 @@ msgstr "" #: cps/web.py:3465 msgid "Cover-file is not a valid image file" -msgstr "" +msgstr "El archivo de imagen de la portada no es válido" #: cps/web.py:3482 cps/web.py:3486 msgid "unknown" -msgstr "" +msgstr "desconocido" #: cps/web.py:3508 msgid "Cover is not a jpg file, can't save" -msgstr "" +msgstr "La cubierta no es un archivo jpg, no se puede guardar" #: cps/web.py:3554 #, python-format @@ -700,15 +735,15 @@ msgstr "" #: cps/worker.py:388 cps/worker.py:484 msgid "Finished" -msgstr "" +msgstr "Finalizado" #: cps/worker.py:476 msgid "Failed" -msgstr "" +msgstr "Fallido" #: cps/templates/admin.html:6 msgid "User list" -msgstr "lista de usuarios" +msgstr "Lista de usuarios" #: cps/templates/admin.html:9 msgid "Nickname" @@ -716,7 +751,7 @@ msgstr "Nickname" #: cps/templates/admin.html:10 msgid "E-mail" -msgstr "" +msgstr "correo electrónico" #: cps/templates/admin.html:11 msgid "Kindle" @@ -805,7 +840,7 @@ msgstr "Registro público" #: cps/templates/admin.html:95 cps/templates/remote_login.html:4 msgid "Remote login" -msgstr "" +msgstr "Inicio de sesión remoto" #: cps/templates/admin.html:106 msgid "Administration" @@ -813,11 +848,11 @@ msgstr "Administración" #: cps/templates/admin.html:107 msgid "Reconnect to Calibre DB" -msgstr "Reconectar la BD Calibre" +msgstr "Reconectar a la BD Calibre" #: cps/templates/admin.html:108 msgid "Restart Calibre-Web" -msgstr "Reinicial Calibre-Web" +msgstr "Reiniciar Calibre-Web" #: cps/templates/admin.html:109 msgid "Stop Calibre-Web" @@ -825,23 +860,23 @@ msgstr "Detener Calibre-Web" #: cps/templates/admin.html:115 msgid "Update" -msgstr "" +msgstr "Actualizar" #: cps/templates/admin.html:119 msgid "Version" -msgstr "" +msgstr "Versión" #: cps/templates/admin.html:120 msgid "Details" -msgstr "" +msgstr "Detalles" #: cps/templates/admin.html:126 msgid "Current version" -msgstr "" +msgstr "Versión actual" #: cps/templates/admin.html:132 msgid "Check for update" -msgstr "Buscar actualizaciones" +msgstr "Comprobar actualizaciones" #: cps/templates/admin.html:133 msgid "Perform Update" @@ -849,7 +884,7 @@ msgstr "Actualizar" #: cps/templates/admin.html:145 msgid "Do you really want to restart Calibre-Web?" -msgstr "¿Seguro que quiere reiniciar Calibre-Web?" +msgstr "¿Realmente quiere reiniciar Calibre-Web?" #: cps/templates/admin.html:150 cps/templates/admin.html:164 #: cps/templates/admin.html:184 cps/templates/shelf.html:59 @@ -867,7 +902,7 @@ msgstr "Regresar" #: cps/templates/admin.html:163 msgid "Do you really want to stop Calibre-Web?" -msgstr "¿Seguro que quiere detener Calibre-Web?" +msgstr "¿Realmente quiere detener Calibre-Web?" #: cps/templates/admin.html:175 msgid "Updating, please do not reload page" @@ -875,28 +910,28 @@ msgstr "Actualizando. Por favor, no recargue la página." #: cps/templates/author.html:15 msgid "via" -msgstr "" +msgstr "via" #: cps/templates/author.html:23 msgid "In Library" -msgstr "" +msgstr "en Library" #: cps/templates/author.html:69 msgid "More by" -msgstr "" +msgstr "Más por" #: cps/templates/book_edit.html:16 msgid "Delete Book" -msgstr "" +msgstr "Borrar libro" #: cps/templates/book_edit.html:19 msgid "Delete formats:" -msgstr "" +msgstr "Borrar formatos:" #: cps/templates/book_edit.html:22 cps/templates/book_edit.html:199 #: cps/templates/email_edit.html:73 cps/templates/email_edit.html:74 msgid "Delete" -msgstr "" +msgstr "Borrar" #: cps/templates/book_edit.html:30 msgid "Convert book format:" @@ -908,19 +943,19 @@ msgstr "" #: cps/templates/book_edit.html:36 cps/templates/book_edit.html:43 msgid "select an option" -msgstr "" +msgstr "seleccionar una opción" #: cps/templates/book_edit.html:41 msgid "Convert to:" -msgstr "" +msgstr "Convertir a:" #: cps/templates/book_edit.html:50 msgid "Convert book" -msgstr "" +msgstr "Convertir libro" #: cps/templates/book_edit.html:59 cps/templates/search_form.html:6 msgid "Book Title" -msgstr "Titulo del Libro" +msgstr "Título del Libro" #: cps/templates/book_edit.html:63 cps/templates/book_edit.html:259 #: cps/templates/book_edit.html:277 cps/templates/search_form.html:10 @@ -930,11 +965,11 @@ msgstr "Autor" #: cps/templates/book_edit.html:67 cps/templates/book_edit.html:264 #: cps/templates/book_edit.html:279 cps/templates/search_form.html:106 msgid "Description" -msgstr "Descripcion" +msgstr "Descripción" #: cps/templates/book_edit.html:71 cps/templates/search_form.html:33 msgid "Tags" -msgstr "Etiqueta" +msgstr "Etiquetas" #: cps/templates/book_edit.html:75 cps/templates/layout.html:157 #: cps/templates/search_form.html:53 @@ -947,10 +982,12 @@ msgstr "Id de la serie" #: cps/templates/book_edit.html:83 msgid "Rating" -msgstr "Puntaje" +msgstr "Clasificación" #: cps/templates/book_edit.html:87 -msgid "Cover URL (jpg, cover is downloaded and stored in database, field is afterwards empty again)" +msgid "" +"Cover URL (jpg, cover is downloaded and stored in database, field is" +" afterwards empty again)" msgstr "" #: cps/templates/book_edit.html:91 @@ -973,7 +1010,7 @@ msgstr "Lenguaje" #: cps/templates/book_edit.html:117 cps/templates/search_form.html:117 msgid "Yes" -msgstr "Si" +msgstr "Sí" #: cps/templates/book_edit.html:118 cps/templates/search_form.html:118 msgid "No" @@ -985,11 +1022,11 @@ msgstr "Subir formato" #: cps/templates/book_edit.html:173 msgid "view book after edit" -msgstr "Ver libro tras la edicion" +msgstr "Ver libro tras la edición" #: cps/templates/book_edit.html:176 cps/templates/book_edit.html:212 msgid "Get metadata" -msgstr "Obtener metainformación" +msgstr "Obtener metadatos" #: cps/templates/book_edit.html:177 cps/templates/config_edit.html:210 #: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 @@ -1024,7 +1061,8 @@ msgstr "¡Vamos!" #: cps/templates/book_edit.html:222 msgid "Click the cover to load metadata to the form" -msgstr "Haga clic en la portada para cargar la metainformación en el formulario" +msgstr "" +"Haga clic en la portada para cargar la metainformación en el formulario" #: cps/templates/book_edit.html:234 cps/templates/book_edit.html:274 msgid "Loading..." @@ -1325,8 +1363,11 @@ msgid "Edit metadata" msgstr "Editar la metadata" #: cps/templates/email_edit.html:15 -msgid "SMTP port (usually 25 for plain SMTP and 465 for SSL and 587 for STARTTLS)" -msgstr "Puerto SMTP (por lo general 25 para SMTP plano, 465 para SSL y 587 para STARTTLS)" +msgid "" +"SMTP port (usually 25 for plain SMTP and 465 for SSL and 587 for STARTTLS)" +msgstr "" +"Puerto SMTP (por lo general 25 para SMTP plano, 465 para SSL y 587 para" +" STARTTLS)" #: cps/templates/email_edit.html:19 msgid "Encryption" @@ -1403,7 +1444,8 @@ msgstr "Libros Populares" #: cps/templates/index.xml:19 msgid "Popular publications from this catalog based on Downloads." -msgstr "Publicaciones mas populares para este catálogo basadas en las descargas." +msgstr "" +"Publicaciones mas populares para este catálogo basadas en las descargas." #: cps/templates/index.xml:22 cps/templates/layout.html:142 msgid "Best rated Books" From c09b7f39a529199df44a7c996dbce79ff88b71c0 Mon Sep 17 00:00:00 2001 From: Victorhck Date: Fri, 5 Oct 2018 11:28:06 +0200 Subject: [PATCH 015/160] spanish translation finished --- cps/translations/es/LC_MESSAGES/messages.po | 393 ++++++++++---------- 1 file changed, 202 insertions(+), 191 deletions(-) diff --git a/cps/translations/es/LC_MESSAGES/messages.po b/cps/translations/es/LC_MESSAGES/messages.po index 625bac88..c834d7dd 100644 --- a/cps/translations/es/LC_MESSAGES/messages.po +++ b/cps/translations/es/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "POT-Creation-Date: 2018-09-14 21:11+0200\n" -"PO-Revision-Date: 2018-10-04 13:01+0100\n" +"PO-Revision-Date: 2018-10-05 11:27+0100\n" "Last-Translator: victorhck \n" "Language: es\n" "Language-Team: Spanish <>\n" @@ -83,7 +83,7 @@ msgstr "Enviar a Kindle" #: cps/helper.py:144 cps/worker.py:226 #, python-format msgid "E-mail: %(book)s" -msgstr "Correo electrónico´: %(book)s" +msgstr "Correo electrónico: %(book)s" #: cps/helper.py:146 msgid "The requested file could not be read. Maybe wrong permissions?" @@ -146,7 +146,7 @@ msgstr "Error general" #: cps/web.py:1133 msgid "Unexpected data while reading update information" -msgstr "Dato inesperado mientras se elía la información de actualización" +msgstr "Dato inesperado mientras se leía la información de actualización" #: cps/web.py:1140 msgid "No update available. You already have the latest version installed" @@ -347,7 +347,7 @@ msgstr "Su correo electrónico no está permitido para registrarse" 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.´" +" electrónico." #: cps/web.py:2274 msgid "This username or e-mail address is already in use." @@ -356,11 +356,11 @@ msgstr "Este nombre de usuario o correo electrónico ya están en uso." #: cps/web.py:2291 cps/web.py:2387 #, python-format msgid "you are now logged in as: '%(nickname)s'" -msgstr "Sesion iniciada como : '%(nickname)s'" +msgstr "Sesión iniciada como : '%(nickname)s'" #: cps/web.py:2296 msgid "Wrong Username or Password" -msgstr "Usuario o contraseña invalido" +msgstr "Usuario o contraseña inválido" #: cps/web.py:2302 cps/web.py:2323 msgid "login" @@ -518,7 +518,7 @@ msgstr "Configuración de la interfaz del usuario" #: cps/web.py:2903 msgid "Import of optional Google Drive requirements missing" -msgstr "" +msgstr "Falta la importación de requisitos opcionales de Google Drive" #: cps/web.py:2906 msgid "client_secrets.json is missing or not readable" @@ -569,25 +569,25 @@ msgstr "Usuario '%(user)s' creado" msgid "Found an existing account for this e-mail address or nickname." msgstr "" "Encontrada una cuenta existente para este correo electrónico o nombre de" -" usuario" +" usuario." #: cps/web.py:3171 cps/web.py:3185 msgid "E-mail server settings updated" -msgstr "" +msgstr "Actualizados los ajustes del servidor de correo electrónico" #: cps/web.py:3178 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" -msgstr "" +msgstr "Correo electrónico de prueba enviado con éxito a %(kindlemail)s" #: cps/web.py:3181 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" -msgstr "" +msgstr "Ocurrió un error enviando el correo electrónico de prueba: %(res)s" #: cps/web.py:3186 msgid "Edit e-mail server settings" -msgstr "" +msgstr "Editar los ajustes del servidor de correo electrónico" #: cps/web.py:3211 #, python-format @@ -601,7 +601,7 @@ msgstr "Usuario '%(nick)s' actualizado" #: cps/web.py:3323 msgid "An unknown error occured." -msgstr "Error inesperado." +msgstr "Ocurrió un error inesperado." #: cps/web.py:3325 #, python-format @@ -634,27 +634,27 @@ msgstr "El archivo a subir debe tener una extensión" #: cps/web.py:3417 cps/web.py:3721 #, python-format msgid "Failed to create path %(path)s (Permission denied)." -msgstr "Fallo al crear la ruta %(path)s (permiso negado)" +msgstr "Fallo al crear la ruta %(path)s (permiso denegado)" #: cps/web.py:3422 #, python-format msgid "Failed to store file %(file)s." -msgstr "" +msgstr "Falla al guardar el archivo %(file)s." #: cps/web.py:3438 #, python-format msgid "File format %(ext)s added to %(book)s" -msgstr "" +msgstr "Fichero con formato %(ext)s añadido a %(book)s" #: cps/web.py:3455 #, python-format msgid "Failed to create path for cover %(path)s (Permission denied)." -msgstr "" +msgstr "Fallo al crear la ruta para la cubierta %(path)s (Permiso denegado)." #: cps/web.py:3462 #, python-format msgid "Failed to store cover-file %(cover)s." -msgstr "" +msgstr "Fallo al guardar el archivo de cubierta %(cover)s." #: cps/web.py:3465 msgid "Cover-file is not a valid image file" @@ -671,67 +671,69 @@ msgstr "La cubierta no es un archivo jpg, no se puede guardar" #: cps/web.py:3554 #, python-format msgid "%(langname)s is not a valid language" -msgstr "" +msgstr "%(langname)s no es un idioma válido" #: cps/web.py:3676 msgid "Error editing book, please check logfile for details" msgstr "" +"Error al editar el libro, por favor compruebe el fichero de registro" +" (logfile) para tener más detalles" #: cps/web.py:3726 #, python-format msgid "Failed to store file %(file)s (Permission denied)." -msgstr "Fallo al almacenar el archivo %(file)s (permiso negado)" +msgstr "Fallo al guardar el archivo %(file)s (permiso denegado)" #: cps/web.py:3731 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." -msgstr "Fallo al borrar el archivo %(file)s (permiso negado)" +msgstr "Fallo al borrar el archivo %(file)s (permiso denegado)" #: cps/web.py:3813 #, python-format msgid "File %(file)s uploaded" -msgstr "" +msgstr "Fichero %(file)s subido" #: cps/web.py:3843 msgid "Source or destination format for conversion missing" -msgstr "" +msgstr "Falta la fuente o el formato de destino para la conversión" #: cps/web.py:3853 #, python-format msgid "Book successfully queued for converting to %(book_format)s" -msgstr "" +msgstr "Libro puesto a la cola con éxito para convertirlo a %(book_format)s" #: cps/web.py:3857 #, python-format msgid "There was an error converting this book: %(res)s" -msgstr "" +msgstr "Ocurrió un error al convertir este libro: %(res)s" #: cps/worker.py:215 cps/worker.py:398 msgid "Started" -msgstr "" +msgstr "Comenzado" #: cps/worker.py:251 #, python-format msgid "Convertertool %(converter)s not found" -msgstr "" +msgstr "Convertertool %(converter)s no encontrado" #: cps/worker.py:287 #, python-format msgid "Ebook-converter failed: %(error)s" -msgstr "" +msgstr "Falló Ebook-converter: %(error)s" #: cps/worker.py:298 #, python-format msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" -msgstr "" +msgstr "Kindlegen falló con error %(error)s. Mensaje: %(message)s" #: cps/worker.py:355 cps/worker.py:374 msgid "Waiting" -msgstr "" +msgstr "Esperando" #: cps/worker.py:362 msgid "This e-mail has been sent via Calibre-Web." -msgstr "" +msgstr "Este correo electrónico ha sido enviado por Calibre-Web." #: cps/worker.py:388 cps/worker.py:484 msgid "Finished" @@ -751,7 +753,7 @@ msgstr "Nickname" #: cps/templates/admin.html:10 msgid "E-mail" -msgstr "correo electrónico" +msgstr "Correo electrónico" #: cps/templates/admin.html:11 msgid "Kindle" @@ -768,7 +770,7 @@ msgstr "Administración" #: cps/templates/admin.html:14 cps/templates/detail.html:22 #: cps/templates/detail.html:31 msgid "Download" -msgstr "Descarga" +msgstr "Descargar" #: cps/templates/admin.html:15 cps/templates/layout.html:64 msgid "Upload" @@ -780,15 +782,15 @@ msgstr "Editar" #: cps/templates/admin.html:39 msgid "SMTP e-mail server settings" -msgstr "" +msgstr "Ajustes SMTP del servidor de correo electrónico" #: cps/templates/admin.html:42 cps/templates/email_edit.html:11 msgid "SMTP hostname" -msgstr "Servidor smtp" +msgstr "Servidor SMTP" #: cps/templates/admin.html:43 msgid "SMTP port" -msgstr "Puerto smtp" +msgstr "Puerto SMTP" #: cps/templates/admin.html:44 msgid "SSL" @@ -804,7 +806,7 @@ msgstr "Desde el correo" #: cps/templates/admin.html:56 msgid "Change SMTP settings" -msgstr "Cambiar parametros smtp" +msgstr "Cambiar parámetros SMTP" #: cps/templates/admin.html:62 msgid "Configuration" @@ -816,7 +818,7 @@ msgstr "Dir DB Calibre" #: cps/templates/admin.html:69 msgid "Log level" -msgstr "" +msgstr "Nivel de registro" #: cps/templates/admin.html:73 msgid "Port" @@ -832,7 +834,7 @@ msgstr "Subiendo" #: cps/templates/admin.html:87 msgid "Anonymous browsing" -msgstr "" +msgstr "Navegación anónima" #: cps/templates/admin.html:91 msgid "Public registration" @@ -880,7 +882,7 @@ msgstr "Comprobar actualizaciones" #: cps/templates/admin.html:133 msgid "Perform Update" -msgstr "Actualizar" +msgstr "Realizar actualización" #: cps/templates/admin.html:145 msgid "Do you really want to restart Calibre-Web?" @@ -906,7 +908,7 @@ msgstr "¿Realmente quiere detener Calibre-Web?" #: cps/templates/admin.html:175 msgid "Updating, please do not reload page" -msgstr "Actualizando. Por favor, no recargue la página." +msgstr "Actualizando. Por favor, no recargue la página" #: cps/templates/author.html:15 msgid "via" @@ -935,11 +937,11 @@ msgstr "Borrar" #: cps/templates/book_edit.html:30 msgid "Convert book format:" -msgstr "" +msgstr "Convertir formato de libro:" #: cps/templates/book_edit.html:34 msgid "Convert from:" -msgstr "" +msgstr "Convertir desde:" #: cps/templates/book_edit.html:36 cps/templates/book_edit.html:43 msgid "select an option" @@ -955,7 +957,7 @@ msgstr "Convertir libro" #: cps/templates/book_edit.html:59 cps/templates/search_form.html:6 msgid "Book Title" -msgstr "Título del Libro" +msgstr "Título del libro" #: cps/templates/book_edit.html:63 cps/templates/book_edit.html:259 #: cps/templates/book_edit.html:277 cps/templates/search_form.html:10 @@ -978,7 +980,7 @@ msgstr "Series" #: cps/templates/book_edit.html:79 msgid "Series id" -msgstr "Id de la serie" +msgstr "Id de las series" #: cps/templates/book_edit.html:83 msgid "Rating" @@ -989,10 +991,13 @@ msgid "" "Cover URL (jpg, cover is downloaded and stored in database, field is" " afterwards empty again)" msgstr "" +"URL de la portada (jpg, la portada es descargada y almacenada en la base de" +" datos, el campo " +" está vacío de nuevo)" #: cps/templates/book_edit.html:91 msgid "Upload Cover from local drive" -msgstr "" +msgstr "Subir portada desde un medio de almacenamiento local" #: cps/templates/book_edit.html:96 cps/templates/detail.html:131 msgid "Publishing date" @@ -1006,7 +1011,7 @@ msgstr "Editor" #: cps/templates/book_edit.html:107 cps/templates/user_edit.html:33 msgid "Language" -msgstr "Lenguaje" +msgstr "Idioma" #: cps/templates/book_edit.html:117 cps/templates/search_form.html:117 msgid "Yes" @@ -1022,7 +1027,7 @@ msgstr "Subir formato" #: cps/templates/book_edit.html:173 msgid "view book after edit" -msgstr "Ver libro tras la edición" +msgstr "ver libro tras la edición" #: cps/templates/book_edit.html:176 cps/templates/book_edit.html:212 msgid "Get metadata" @@ -1037,15 +1042,15 @@ msgstr "Enviar" #: cps/templates/book_edit.html:191 msgid "Are you really sure?" -msgstr "" +msgstr "¿Estás realmente seguro?" #: cps/templates/book_edit.html:194 msgid "Book will be deleted from Calibre database" -msgstr "" +msgstr "El libro será eliminado de la base de datos de Calibre" #: cps/templates/book_edit.html:195 msgid "and from hard disk" -msgstr "" +msgstr "y del disco duro" #: cps/templates/book_edit.html:215 msgid "Keyword" @@ -1061,8 +1066,7 @@ msgstr "¡Vamos!" #: cps/templates/book_edit.html:222 msgid "Click the cover to load metadata to the form" -msgstr "" -"Haga clic en la portada para cargar la metainformación en el formulario" +msgstr "Haga clic en la portada para cargar los metadatos en el formulario" #: cps/templates/book_edit.html:234 cps/templates/book_edit.html:274 msgid "Loading..." @@ -1082,15 +1086,15 @@ msgstr "¡Error en la búsqueda!" #: cps/templates/book_edit.html:276 msgid "No Result(s) found! Please try aonther keyword." -msgstr "" +msgstr "¡No se encontraron resultados! Por favor intente otra palabra clave." #: cps/templates/config_edit.html:12 msgid "Library Configuration" -msgstr "" +msgstr "Configuración de la librería" #: cps/templates/config_edit.html:19 msgid "Location of Calibre database" -msgstr "Ubicación de la base de datos Calibre" +msgstr "Ubicación de la base de datos de Calibre" #: cps/templates/config_edit.html:24 msgid "Use Google Drive?" @@ -1098,19 +1102,19 @@ msgstr "¿Utiliza Google Drive?" #: cps/templates/config_edit.html:30 msgid "Google Drive config problem" -msgstr "" +msgstr "Problema con la configuración de Google Drive" #: cps/templates/config_edit.html:36 msgid "Authenticate Google Drive" -msgstr "" +msgstr "Autentificar Google Drive" #: cps/templates/config_edit.html:40 msgid "Please finish Google Drive setup after login" -msgstr "" +msgstr "Por favor finalice el ajuste de Google Drive después de iniciar sesión" #: cps/templates/config_edit.html:44 msgid "Google Drive Calibre folder" -msgstr "" +msgstr "Carpeta de Google Drive para Calibre" #: cps/templates/config_edit.html:52 msgid "Metadata Watch Channel ID" @@ -1118,11 +1122,11 @@ msgstr "Metadata Watch Channel ID" #: cps/templates/config_edit.html:55 msgid "Revoke" -msgstr "" +msgstr "Revocar" #: cps/templates/config_edit.html:73 msgid "Server Configuration" -msgstr "" +msgstr "Configuración del servidor" #: cps/templates/config_edit.html:80 msgid "Server Port" @@ -1131,14 +1135,17 @@ msgstr "Puerto del servidor" #: cps/templates/config_edit.html:84 msgid "SSL certfile location (leave it empty for non-SSL Servers)" msgstr "" +"Ubicación del archivo de certificado SSL (dejar en blanco si no hay un" +" servidor SSL)" #: cps/templates/config_edit.html:88 msgid "SSL Keyfile location (leave it empty for non-SSL Servers)" msgstr "" +"Ubicación del archivo clave SSL (dejar en blanco si no hay un servidor SSL)" #: cps/templates/config_edit.html:99 msgid "Logfile Configuration" -msgstr "" +msgstr "Configuración del archivo de registro" #: cps/templates/config_edit.html:106 msgid "Log Level" @@ -1147,10 +1154,12 @@ msgstr "Nivel de registro" #: cps/templates/config_edit.html:115 msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "" +"Ubicación y nombre del archivo de registro (si no se especifica será" +" calibre-web.log)" #: cps/templates/config_edit.html:126 msgid "Feature Configuration" -msgstr "" +msgstr "Configuración de características" #: cps/templates/config_edit.html:134 msgid "Enable uploading" @@ -1166,69 +1175,69 @@ msgstr "Permitir registro público" #: cps/templates/config_edit.html:146 msgid "Enable remote login (\"magic link\")" -msgstr "" +msgstr "Permitir inicio de sesión remoto (\"magic link\")" #: cps/templates/config_edit.html:151 msgid "Use" -msgstr "" +msgstr "Usar" #: cps/templates/config_edit.html:152 msgid "Obtain an API Key" -msgstr "" +msgstr "Obtener una API Key" #: cps/templates/config_edit.html:156 msgid "Goodreads API Key" -msgstr "" +msgstr "Goodreads API Key" #: cps/templates/config_edit.html:160 msgid "Goodreads API Secret" -msgstr "" +msgstr "Goodreads API Secret" #: cps/templates/config_edit.html:173 msgid "External binaries" -msgstr "" +msgstr "Binarios externos" #: cps/templates/config_edit.html:181 msgid "No converter" -msgstr "" +msgstr "No convertir" #: cps/templates/config_edit.html:183 msgid "Use Kindlegen" -msgstr "" +msgstr "Utilizar Kindlegen" #: cps/templates/config_edit.html:185 msgid "Use calibre's ebook converter" -msgstr "" +msgstr "Utilizar el convertidor de libros de Calibre" #: cps/templates/config_edit.html:189 msgid "E-Book converter settings" -msgstr "" +msgstr "Ajustes del convertidos E-Book" #: cps/templates/config_edit.html:193 msgid "Path to convertertool" -msgstr "" +msgstr "Ruta para convertertool" #: cps/templates/config_edit.html:199 msgid "Location of Unrar binary" -msgstr "" +msgstr "Ubicación del binario de Unrar" #: cps/templates/config_edit.html:215 cps/templates/layout.html:82 #: cps/templates/login.html:4 msgid "Login" -msgstr "Inicio de Sesion" +msgstr "Inicio de sesión" #: cps/templates/config_view_edit.html:12 msgid "View Configuration" -msgstr "" +msgstr "Ver configuración" #: cps/templates/config_view_edit.html:19 cps/templates/layout.html:133 #: cps/templates/layout.html:134 cps/templates/shelf_edit.html:7 msgid "Title" -msgstr "Titulo" +msgstr "Título" #: cps/templates/config_view_edit.html:27 msgid "No. of random books to show" -msgstr "Número de libros aletorios a mostrar" +msgstr "Número de libros aleatorios a mostrar" #: cps/templates/config_view_edit.html:31 msgid "Regular expression for ignoring columns" @@ -1236,7 +1245,7 @@ msgstr "Expresión regular para ignorar columnas" #: cps/templates/config_view_edit.html:35 msgid "Link read/unread status to Calibre column" -msgstr "" +msgstr "Enlace del estado de la columna de Calibre de leído/sin leer" #: cps/templates/config_view_edit.html:44 msgid "Regular expression for title sorting" @@ -1244,7 +1253,7 @@ msgstr "Expresión regular para ordenar títulos" #: cps/templates/config_view_edit.html:48 msgid "Tags for Mature Content" -msgstr "" +msgstr "Etiquetas para contenido para adultos" #: cps/templates/config_view_edit.html:62 msgid "Default settings for new users" @@ -1252,7 +1261,7 @@ msgstr "Ajustes por defecto para nuevos usuarios" #: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:108 msgid "Admin user" -msgstr "Usuario Administrador" +msgstr "Usuario administrador" #: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:117 msgid "Allow Downloads" @@ -1268,19 +1277,19 @@ msgstr "Permitir editar" #: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:129 msgid "Allow Delete books" -msgstr "" +msgstr "Permitir eliminar libros" #: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:134 msgid "Allow Changing Password" -msgstr "Permitir cambiar la clave" +msgstr "Permitir cambiar la contraseña" #: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:138 msgid "Allow Editing Public Shelfs" -msgstr "" +msgstr "Permitir editar estantes públicos" #: cps/templates/config_view_edit.html:104 msgid "Default visibilities for new users" -msgstr "" +msgstr "Visibilidad predeterminada para nuevos usuarios" #: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:60 msgid "Show random books" @@ -1288,11 +1297,11 @@ msgstr "Mostrar libros al azar" #: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:64 msgid "Show recent books" -msgstr "" +msgstr "Mostrar libros recientes" #: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:68 msgid "Show sorted books" -msgstr "" +msgstr "Mostrar libros ordenados" #: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:72 msgid "Show hot books" @@ -1304,7 +1313,7 @@ msgstr "Mostrar libros mejor valorados" #: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:80 msgid "Show language selection" -msgstr "Mostrar lenguaje seleccionado" +msgstr "Mostrar idioma seleccionado" #: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:84 msgid "Show series selection" @@ -1312,7 +1321,7 @@ msgstr "Mostrar series seleccionadas" #: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:88 msgid "Show category selection" -msgstr "Mostrar categorias elegidas" +msgstr "Mostrar categorías elegidas" #: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:92 msgid "Show author selection" @@ -1324,11 +1333,11 @@ msgstr "Mostrar leídos y no leídos" #: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:100 msgid "Show random books in detail view" -msgstr "Mostrar libro aleatorios con vista detallada" +msgstr "Mostrar libros aleatorios con vista detallada" #: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:113 msgid "Show mature content" -msgstr "" +msgstr "Mostrar contenido para adulto" #: cps/templates/detail.html:49 msgid "Read in browser" @@ -1344,7 +1353,7 @@ msgstr "de" #: cps/templates/detail.html:94 msgid "language" -msgstr "Lenguaje" +msgstr "idioma" #: cps/templates/detail.html:168 msgid "Read" @@ -1352,7 +1361,7 @@ msgstr "Leer" #: cps/templates/detail.html:177 msgid "Description:" -msgstr "Descripcion :" +msgstr "Descripción:" #: cps/templates/detail.html:189 cps/templates/search.html:14 msgid "Add to shelf" @@ -1360,7 +1369,7 @@ msgstr "Agregar al estante" #: cps/templates/detail.html:251 msgid "Edit metadata" -msgstr "Editar la metadata" +msgstr "Editar metadatos" #: cps/templates/email_edit.html:15 msgid "" @@ -1387,39 +1396,39 @@ msgstr "SSL/TLS" #: cps/templates/email_edit.html:31 msgid "SMTP password" -msgstr "Clave SMTP" +msgstr "Contraseña SMTP" #: cps/templates/email_edit.html:35 msgid "From e-mail" -msgstr "Desde el correo" +msgstr "Desde el correo electrónico" #: cps/templates/email_edit.html:38 msgid "Save settings" -msgstr "Guardar cambios" +msgstr "Guardar ajustes" #: cps/templates/email_edit.html:39 msgid "Save settings and send Test E-Mail" -msgstr "Guardar cambios y enviar un correo de prueba" +msgstr "Guardar ajustes y enviar un correo electrónico de prueba" #: cps/templates/email_edit.html:43 msgid "Allowed domains for registering" -msgstr "" +msgstr "Permitir dominios para registrarse" #: cps/templates/email_edit.html:47 msgid "Enter domainname" -msgstr "" +msgstr "Introducir nombre de dominio" #: cps/templates/email_edit.html:55 msgid "Add Domain" -msgstr "" +msgstr "Añadir dominio" #: cps/templates/email_edit.html:58 msgid "Add" -msgstr "" +msgstr "Añadir" #: cps/templates/email_edit.html:72 msgid "Do you really want to delete this domain rule?" -msgstr "" +msgstr "¿Realmente quiere eliminar esta regla de dominio?" #: cps/templates/feed.xml:21 cps/templates/layout.html:205 msgid "Next" @@ -1440,7 +1449,7 @@ msgstr "Iniciar" #: cps/templates/index.xml:15 cps/templates/layout.html:139 msgid "Hot Books" -msgstr "Libros Populares" +msgstr "Libros populares" #: cps/templates/index.xml:19 msgid "Popular publications from this catalog based on Downloads." @@ -1453,11 +1462,11 @@ msgstr "Libros mejor valorados" #: cps/templates/index.xml:26 msgid "Popular publications from this catalog based on Rating." -msgstr "Publicaciones populares del catalogo basados en el puntaje." +msgstr "Publicaciones populares del catálogo basados en la clasificación." #: cps/templates/index.xml:29 msgid "New Books" -msgstr "Nuevos libros" +msgstr "Libros nuevos" #: cps/templates/index.xml:33 msgid "The latest Books" @@ -1473,15 +1482,15 @@ msgstr "Autores" #: cps/templates/index.xml:63 msgid "Books ordered by Author" -msgstr "Libros ordenados por Autor" +msgstr "Libros ordenados por autor" #: cps/templates/index.xml:70 msgid "Books ordered by category" -msgstr "Libros ordenados por Categorias" +msgstr "Libros ordenados por categorías" #: cps/templates/index.xml:77 msgid "Books ordered by series" -msgstr "Libros ordenados por Series" +msgstr "Libros ordenados por series" #: cps/templates/index.xml:80 cps/templates/layout.html:166 msgid "Public Shelves" @@ -1489,7 +1498,7 @@ msgstr "Estantes públicos" #: cps/templates/index.xml:84 msgid "Books organized in public shelfs, visible to everyone" -msgstr "" +msgstr "Libros organizados en estantes públicos, visibles para todo el mundo" #: cps/templates/index.xml:88 cps/templates/layout.html:170 msgid "Your Shelves" @@ -1498,6 +1507,7 @@ msgstr "Sus estantes" #: cps/templates/index.xml:92 msgid "User's own shelfs, only visible to the current user himself" msgstr "" +"Los estantes propios del usuario, solo visibles para el propio usuario actual" #: cps/templates/layout.html:33 msgid "Toggle navigation" @@ -1505,7 +1515,7 @@ msgstr "Alternar navegación" #: cps/templates/layout.html:54 msgid "Advanced Search" -msgstr "Busqueda avanzada" +msgstr "Búsqueda avanzada" #: cps/templates/layout.html:78 msgid "Logout" @@ -1517,44 +1527,44 @@ msgstr "Registro" #: cps/templates/layout.html:108 msgid "Uploading..." -msgstr "" +msgstr "Cargando..." #: cps/templates/layout.html:109 msgid "please don't refresh the page" -msgstr "" +msgstr "por favor no recargue la página" #: cps/templates/layout.html:120 msgid "Browse" -msgstr "Explorar" +msgstr "Navegar" #: cps/templates/layout.html:122 msgid "Recently Added" -msgstr "" +msgstr "Añadido recientemente" #: cps/templates/layout.html:127 msgid "Sorted Books" -msgstr "" +msgstr "Libros ordenados" #: cps/templates/layout.html:131 cps/templates/layout.html:132 #: cps/templates/layout.html:133 cps/templates/layout.html:134 msgid "Sort By" -msgstr "" +msgstr "Ordenar por" #: cps/templates/layout.html:131 msgid "Newest" -msgstr "" +msgstr "Más nuevos" #: cps/templates/layout.html:132 msgid "Oldest" -msgstr "" +msgstr "Más antiguos" #: cps/templates/layout.html:133 msgid "Ascending" -msgstr "" +msgstr "Ascendente" #: cps/templates/layout.html:134 msgid "Descending" -msgstr "" +msgstr "Descendente" #: cps/templates/layout.html:151 msgid "Discover" @@ -1562,11 +1572,11 @@ msgstr "Descubrir" #: cps/templates/layout.html:154 msgid "Categories" -msgstr "Categoria" +msgstr "Categorías" #: cps/templates/layout.html:163 cps/templates/search_form.html:74 msgid "Languages" -msgstr "Lenguaje" +msgstr "Idioma" #: cps/templates/layout.html:175 msgid "Create a Shelf" @@ -1578,11 +1588,11 @@ msgstr "Acerca de" #: cps/templates/layout.html:190 msgid "Previous" -msgstr "" +msgstr "Previo" #: cps/templates/layout.html:217 msgid "Book Details" -msgstr "" +msgstr "Detalles del libro" #: cps/templates/login.html:8 cps/templates/login.html:9 #: cps/templates/register.html:7 cps/templates/user_edit.html:8 @@ -1592,7 +1602,7 @@ msgstr "Nombre de usuario" #: cps/templates/login.html:12 cps/templates/login.html:13 #: cps/templates/register.html:11 cps/templates/user_edit.html:21 msgid "Password" -msgstr "Clave" +msgstr "Contraseña" #: cps/templates/login.html:17 msgid "Remember me" @@ -1600,108 +1610,108 @@ msgstr "Recordarme" #: cps/templates/login.html:22 msgid "Log in with magic link" -msgstr "" +msgstr "Iniciar sesión con \"magic link\"" #: cps/templates/osd.xml:5 msgid "Calibre-Web ebook catalog" -msgstr "" +msgstr "Cátalogo de ebook de Calibre-Web" #: cps/templates/read.html:69 cps/templates/readcbr.html:79 #: cps/templates/readcbr.html:103 msgid "Settings" -msgstr "" +msgstr "Ajustes" #: cps/templates/read.html:72 msgid "Reflow text when sidebars are open." -msgstr "Redimensionar el texto cuando las barras laterales estan abiertas" +msgstr "Redimensionar el texto cuando las barras laterales están abiertas." #: cps/templates/readcbr.html:84 msgid "Keyboard Shortcuts" -msgstr "" +msgstr "Atajos de teclado" #: cps/templates/readcbr.html:87 msgid "Previous Page" -msgstr "" +msgstr "Página previa" #: cps/templates/readcbr.html:88 msgid "Next Page" -msgstr "" +msgstr "Página siguiente" #: cps/templates/readcbr.html:89 msgid "Scale to Best" -msgstr "" +msgstr "Escalar a mejor" #: cps/templates/readcbr.html:90 msgid "Scale to Width" -msgstr "" +msgstr "Escalar a la ancho" #: cps/templates/readcbr.html:91 msgid "Scale to Height" -msgstr "" +msgstr "Escalar a lo alto" #: cps/templates/readcbr.html:92 msgid "Scale to Native" -msgstr "" +msgstr "Escalado nativo" #: cps/templates/readcbr.html:93 msgid "Rotate Right" -msgstr "" +msgstr "Rotar hacia la derecha" #: cps/templates/readcbr.html:94 msgid "Rotate Left" -msgstr "" +msgstr "Rotar hacia la izquierda" #: cps/templates/readcbr.html:95 msgid "Flip Image" -msgstr "" +msgstr "Voltear imagen" #: cps/templates/readcbr.html:108 cps/templates/user_edit.html:41 msgid "Theme" -msgstr "" +msgstr "Tema" #: cps/templates/readcbr.html:111 msgid "Light" -msgstr "" +msgstr "Claro" #: cps/templates/readcbr.html:112 msgid "Dark" -msgstr "" +msgstr "Oscuro" #: cps/templates/readcbr.html:117 msgid "Scale" -msgstr "" +msgstr "Escalar" #: cps/templates/readcbr.html:120 msgid "Best" -msgstr "" +msgstr "Mejor" #: cps/templates/readcbr.html:121 msgid "Width" -msgstr "" +msgstr "Ancho" #: cps/templates/readcbr.html:122 msgid "Height" -msgstr "" +msgstr "Alto" #: cps/templates/readcbr.html:123 msgid "Native" -msgstr "" +msgstr "Nativo" #: cps/templates/readcbr.html:128 msgid "Rotate" -msgstr "" +msgstr "Rotar" #: cps/templates/readcbr.html:139 msgid "Flip" -msgstr "" +msgstr "Voltear" #: cps/templates/readcbr.html:142 msgid "Horizontal" -msgstr "" +msgstr "Horizontal" #: cps/templates/readcbr.html:143 msgid "Vertical" -msgstr "" +msgstr "Vertical" #: cps/templates/readpdf.html:29 msgid "PDF.js viewer" @@ -1717,31 +1727,32 @@ msgstr "Registre una cuenta nueva" #: cps/templates/register.html:8 msgid "Choose a username" -msgstr "Escoge un nombre de usuario" +msgstr "Escoger un nombre de usuario" #: cps/templates/register.html:12 msgid "Choose a password" -msgstr "Escoge una clave" +msgstr "Escoger una contraseña" #: cps/templates/register.html:15 cps/templates/user_edit.html:13 msgid "E-mail address" -msgstr "" +msgstr "Dirección de correo electrónico" #: cps/templates/register.html:16 msgid "Your email address" -msgstr "Tu direccion de correo" +msgstr "Tu dirección de correo" #: cps/templates/remote_login.html:6 msgid "Using your another device, visit" -msgstr "" +msgstr "Utilizando tu otro dispositivo, visitar" #: cps/templates/remote_login.html:6 msgid "and log in" -msgstr "" +msgstr "e iniciar sesión" #: cps/templates/remote_login.html:9 msgid "Once you do so, you will automatically get logged in on this device." msgstr "" +"Una vez que lo realice, iniciará sesión automáticamente en ese dispositivo." #: cps/templates/search.html:5 msgid "No Results for:" @@ -1749,7 +1760,7 @@ msgstr "Sin resultados para:" #: cps/templates/search.html:6 msgid "Please try a different search" -msgstr "Intente una busqueda diferente" +msgstr "Intente una búsqueda diferente" #: cps/templates/search.html:8 msgid "Results for:" @@ -1757,11 +1768,11 @@ msgstr "Resultados para:" #: cps/templates/search_form.html:19 msgid "Publishing date from" -msgstr "" +msgstr "Fecha de publicación desde" #: cps/templates/search_form.html:26 msgid "Publishing date to" -msgstr "" +msgstr "Fecha de publicación hasta" #: cps/templates/search_form.html:43 msgid "Exclude Tags" @@ -1777,11 +1788,11 @@ msgstr "Excluir idiomas" #: cps/templates/search_form.html:97 msgid "Rating bigger than" -msgstr "" +msgstr "Clasificación mayor que" #: cps/templates/search_form.html:101 msgid "Rating less than" -msgstr "" +msgstr "Clasificación menor que" #: cps/templates/shelf.html:7 msgid "Delete this Shelf" @@ -1789,7 +1800,7 @@ msgstr "Borrar este estante" #: cps/templates/shelf.html:8 msgid "Edit Shelf" -msgstr "" +msgstr "Editar estante" #: cps/templates/shelf.html:9 cps/templates/shelf_order.html:11 msgid "Change order" @@ -1797,11 +1808,11 @@ msgstr "Cambiar orden" #: cps/templates/shelf.html:54 msgid "Do you really want to delete the shelf?" -msgstr "" +msgstr "¿Realmente quiere eliminar este estante?" #: cps/templates/shelf.html:57 msgid "Shelf will be lost for everybody and forever!" -msgstr "" +msgstr "¡El estante se perderá para todo el mundo y para siempre!" #: cps/templates/shelf_edit.html:13 msgid "should the shelf be public?" @@ -1813,75 +1824,75 @@ msgstr "Pinchar y arrastrar para reordenar" #: cps/templates/stats.html:7 msgid "Calibre library statistics" -msgstr "Estadisticas de la Biblioteca" +msgstr "Estadísticas de la Biblioteca" #: cps/templates/stats.html:12 msgid "Books in this Library" -msgstr "Libros en esta Biblioteca" +msgstr "Libros en esta biblioteca" #: cps/templates/stats.html:16 msgid "Authors in this Library" -msgstr "Autores en esta Biblioteca" +msgstr "Autores en esta biblioteca" #: cps/templates/stats.html:20 msgid "Categories in this Library" -msgstr "Categorías en esta librería" +msgstr "Categorías en esta biblioteca" #: cps/templates/stats.html:24 msgid "Series in this Library" -msgstr "Series en esta librería" +msgstr "Series en esta biblioteca" #: cps/templates/stats.html:28 msgid "Linked libraries" -msgstr "Librerias vinculadas" +msgstr "Bibliotecas vinculadas" #: cps/templates/stats.html:32 msgid "Program library" -msgstr "Librerias del programa" +msgstr "Bibliotecas del programa" #: cps/templates/stats.html:33 msgid "Installed Version" -msgstr "Version instalada" +msgstr "Versión instalada" #: cps/templates/tasks.html:7 msgid "Tasks list" -msgstr "" +msgstr "Lista de tareas" #: cps/templates/tasks.html:12 msgid "User" -msgstr "" +msgstr "Usuario" #: cps/templates/tasks.html:14 msgid "Task" -msgstr "" +msgstr "Tarea" #: cps/templates/tasks.html:15 msgid "Status" -msgstr "" +msgstr "Estado" #: cps/templates/tasks.html:16 msgid "Progress" -msgstr "" +msgstr "Progreso" #: cps/templates/tasks.html:17 msgid "Runtime" -msgstr "" +msgstr "Tiempo de ejecución" #: cps/templates/tasks.html:18 msgid "Starttime" -msgstr "" +msgstr "Fecha de inicio" #: cps/templates/tasks.html:24 msgid "Delete finished tasks" -msgstr "" +msgstr "Eliminar tareas finalizadas" #: cps/templates/tasks.html:25 msgid "Hide all tasks" -msgstr "" +msgstr "Ocultar todas las tareas" #: cps/templates/user_edit.html:18 msgid "Reset user Password" -msgstr "" +msgstr "Resetear contraseña de usuario" #: cps/templates/user_edit.html:29 msgid "Kindle E-Mail" @@ -1889,19 +1900,19 @@ msgstr "Correo del Kindle" #: cps/templates/user_edit.html:43 msgid "Standard Theme" -msgstr "" +msgstr "Tema estándar" #: cps/templates/user_edit.html:44 msgid "caliBlur! Dark Theme (Beta)" -msgstr "" +msgstr "caliBlur! Dark Theme (Beta)" #: cps/templates/user_edit.html:49 msgid "Show books with language" -msgstr "Mostrar lenguaje de los libros" +msgstr "Mostrar libros con idioma" #: cps/templates/user_edit.html:51 msgid "Show all" -msgstr "Mostrar Todo" +msgstr "Mostrar todo" #: cps/templates/user_edit.html:145 msgid "Delete this user" @@ -1909,7 +1920,7 @@ msgstr "Borrar este usuario" #: cps/templates/user_edit.html:160 msgid "Recent Downloads" -msgstr "Descargas Recientes" +msgstr "Descargas recientes" #~ msgid "%s: %s" #~ msgstr "" From 13883db5a0a4b132f5eab18b56f170847d8432bb Mon Sep 17 00:00:00 2001 From: Chintogtokh Batbold Date: Tue, 9 Oct 2018 11:52:16 +0000 Subject: [PATCH 016/160] Add anchor tags to titles --- cps/templates/author.html | 4 +++- cps/templates/discover.html | 4 +++- cps/templates/index.html | 8 ++++++-- cps/templates/search.html | 6 ++++-- cps/templates/shelf.html | 4 +++- 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/cps/templates/author.html b/cps/templates/author.html index 78ddc8bb..14dd94ed 100644 --- a/cps/templates/author.html +++ b/cps/templates/author.html @@ -36,7 +36,9 @@
-

{{entry.title|shortentitle}}

+ +

{{entry.title|shortentitle}}

+

{% for author in entry.authors %} {{author.name.replace('|',',')}} diff --git a/cps/templates/discover.html b/cps/templates/discover.html index 3466597c..13dacb43 100644 --- a/cps/templates/discover.html +++ b/cps/templates/discover.html @@ -14,7 +14,9 @@ {% endif %}

-

{{entry.title|shortentitle}}

+ +

{{entry.title|shortentitle}}

+

{% for author in entry.authors %} {{author.name.replace('|',',')|shortentitle(30)}} diff --git a/cps/templates/index.html b/cps/templates/index.html index 9cc40d83..12fbd717 100755 --- a/cps/templates/index.html +++ b/cps/templates/index.html @@ -17,7 +17,9 @@

-

{{entry.title|shortentitle}}

+ +

{{entry.title|shortentitle}}

+

{% for author in entry.authors %} {{author.name.replace('|',',')|shortentitle(30)}} @@ -60,7 +62,9 @@

-

{{entry.title|shortentitle}}

+ +

{{entry.title|shortentitle}}

+

{% for author in entry.authors %} {{author.name.replace('|',',')|shortentitle(30)}} diff --git a/cps/templates/search.html b/cps/templates/search.html index 4a592d16..79bd1e98 100644 --- a/cps/templates/search.html +++ b/cps/templates/search.html @@ -5,7 +5,7 @@

{{_('No Results for:')}} {{searchterm}}

{{_('Please try a different search')}}

{% else %} -

{{entries|length}} {{_('Results for:')}} {{searchterm}}

+

{{entries|length}} {{_('Results for:')}} {{searchterm}}

{% if g.user.is_authenticated %} {% if g.user.shelf.all() or g.public_shelfes %}
-

{{entry.title|shortentitle}}

+ +

{{entry.title|shortentitle}}

+

{% for author in entry.authors %} {{author.name.replace('|',',')}} diff --git a/cps/templates/shelf.html b/cps/templates/shelf.html index 28cd20bb..a317c14b 100644 --- a/cps/templates/shelf.html +++ b/cps/templates/shelf.html @@ -23,7 +23,9 @@

-

{{entry.title|shortentitle}}

+ +

{{entry.title|shortentitle}}

+

{% for author in entry.authors %} {{author.name.replace('|',',')}} From e080c740324494ca87eb60d3ae06133d40b6b950 Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Sun, 28 Oct 2018 14:10:06 +0100 Subject: [PATCH 017/160] Merge remote-tracking branch 'ru-translation/patch-2' --- cps/translations/ru/LC_MESSAGES/messages.po | 330 ++++++++++---------- 1 file changed, 165 insertions(+), 165 deletions(-) diff --git a/cps/translations/ru/LC_MESSAGES/messages.po b/cps/translations/ru/LC_MESSAGES/messages.po index b6c1d418..e772f8a6 100644 --- a/cps/translations/ru/LC_MESSAGES/messages.po +++ b/cps/translations/ru/LC_MESSAGES/messages.po @@ -21,57 +21,57 @@ msgstr "" #: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 #: cps/converter.py:11 cps/converter.py:27 msgid "not installed" -msgstr "Отсутствует" +msgstr "не установлено" #: cps/converter.py:22 cps/converter.py:38 msgid "Excecution permissions missing" -msgstr "" +msgstr "Отсутствуют разрешения на выполнение" #: cps/helper.py:57 #, python-format msgid "%(format)s format not found for book id: %(book)d" -msgstr "" +msgstr "%(format)s форма не найден для книги с id: %(book)d" #: cps/helper.py:69 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" -msgstr "" +msgstr "%(format)s не найден на Google Drive: %(fn)s" #: cps/helper.py:76 #, python-format msgid "Convert: %(book)s" -msgstr "" +msgstr "Конвертировать: %(book)s" #: cps/helper.py:79 #, python-format msgid "Convert to %(format)s: %(book)s" -msgstr "" +msgstr "Конвертировать в %(format)s: %(book)s" #: cps/helper.py:86 #, python-format msgid "%(format)s not found: %(fn)s" -msgstr "" +msgstr "%(format)s не найден: %(fn)s" #: cps/helper.py:91 msgid "Calibre-Web test e-mail" -msgstr "" +msgstr "Тестовый e-mail для Calibre-Web" #: cps/helper.py:92 msgid "Test e-mail" -msgstr "" +msgstr "Тестовый e-mail" #: cps/helper.py:107 msgid "Get Started with Calibre-Web" -msgstr "" +msgstr "Начать работать с Calibre-Web" #: cps/helper.py:108 #, python-format msgid "Registration e-mail for user: %(name)s" -msgstr "" +msgstr "Регистрационный e-mail для пользователя: %(name)s" #: cps/helper.py:131 cps/helper.py:141 msgid "Could not find any formats suitable for sending by e-mail" -msgstr "" +msgstr "Не удалось найти форматы, которые подходят для отправки по e-mail" #: cps/helper.py:143 cps/templates/detail.html:44 cps/worker.py:224 msgid "Send to Kindle" @@ -80,39 +80,39 @@ msgstr "Отправить на Kindle" #: cps/helper.py:144 cps/worker.py:226 #, python-format msgid "E-mail: %(book)s" -msgstr "" +msgstr "Эл. почта: %(book)s" #: cps/helper.py:146 msgid "The requested file could not be read. Maybe wrong permissions?" -msgstr "" +msgstr "Запрашиваемый файл не может быть прочитан. Возможно не верные разрешения?" #: cps/helper.py:241 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" -msgstr "" +msgstr "Переименовывание заголовка с: '%(src)s' на '%(dest)s' не удалось из-за ошибки: %(error)s" #: cps/helper.py:250 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" -msgstr "" +msgstr "Переименовывание автора с: '%(src)s' на '%(dest)s' не удалось из-за ошибки: %(error)s" #: cps/helper.py:272 cps/helper.py:281 #, python-format msgid "File %(file)s not found on Google Drive" -msgstr "" +msgstr "Файл %(file)s не найден на Google Drive" #: cps/helper.py:299 #, python-format msgid "Book path %(path)s not found on Google Drive" -msgstr "" +msgstr "Путь книги %(path)s не найден на Google Drive" #: cps/helper.py:544 msgid "Error excecuting UnRar" -msgstr "" +msgstr "Ошибка извлечения UnRar" #: cps/helper.py:546 msgid "Unrar binary file not found" -msgstr "" +msgstr "Unrar двочиный файл не найден" #: cps/web.py:1112 cps/web.py:2778 msgid "Unknown" @@ -120,35 +120,35 @@ msgstr "Неизвестно" #: cps/web.py:1121 cps/web.py:1152 msgid "HTTP Error" -msgstr "" +msgstr "Ошибка HTTP" #: cps/web.py:1123 cps/web.py:1154 msgid "Connection error" -msgstr "" +msgstr "Ошибка соединения" #: cps/web.py:1125 cps/web.py:1156 msgid "Timeout while establishing connection" -msgstr "" +msgstr "Таймаут при установлении соединения" #: cps/web.py:1127 cps/web.py:1158 msgid "General error" -msgstr "" +msgstr "Общая ошибка" #: cps/web.py:1133 msgid "Unexpected data while reading update information" -msgstr "" +msgstr "Некорректные данные при чтении информации об обновлении" #: cps/web.py:1140 msgid "No update available. You already have the latest version installed" -msgstr "" +msgstr "Обновление недоступно. Вы используете самую последнюю версию" #: cps/web.py:1165 msgid "A new update is available. Click on the button below to update to the latest version." -msgstr "" +msgstr "Доступно обновление. Нажмите на кнопку, что бы обновиться до последней версии." #: cps/web.py:1215 msgid "Could not fetch update information" -msgstr "" +msgstr "Не удалось получить информацию об обновлении" #: cps/web.py:1230 msgid "Requesting update package" @@ -180,23 +180,23 @@ msgstr "Обновления установлены, нажмите okay и пе #: cps/web.py:1256 msgid "Recently Added Books" -msgstr "" +msgstr "Недавно Добавленные Книги" #: cps/web.py:1266 msgid "Newest Books" -msgstr "" +msgstr "Новые Книги" #: cps/web.py:1278 msgid "Oldest Books" -msgstr "" +msgstr "Старые Книги" #: cps/web.py:1290 msgid "Books (A-Z)" -msgstr "" +msgstr "Книги (А-Я)" #: cps/web.py:1301 msgid "Books (Z-A)" -msgstr "" +msgstr "Книги (Я-А)" #: cps/web.py:1330 msgid "Hot Books (most downloaded)" @@ -229,7 +229,7 @@ msgstr "Серии: %(serie)s" #: cps/web.py:1470 msgid "Available languages" -msgstr "Языки" +msgstr "Доступные языки" #: cps/web.py:1487 #, python-format @@ -255,7 +255,7 @@ msgstr "Статистика" #: cps/web.py:1786 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" -msgstr "" +msgstr "Не удалось проверить домен обратного вызова, пожалуйста, выполните шаги для проверки домена в консоли разработчика Google." #: cps/web.py:1861 msgid "Server restarted, please reload page" @@ -271,11 +271,11 @@ msgstr "Обновление закончено" #: cps/web.py:1953 msgid "Published after " -msgstr "Опубликовано до" +msgstr "Опубликовано до " #: cps/web.py:1960 msgid "Published before " -msgstr "Опубликовано после" +msgstr "Опубликовано после " #: cps/web.py:1974 #, python-format @@ -294,16 +294,16 @@ msgstr "поиск" #: cps/templates/index.xml:44 cps/templates/index.xml:48 #: cps/templates/layout.html:146 cps/web.py:2111 msgid "Read Books" -msgstr "Прочитанные" +msgstr "Прочитанные Книги" #: cps/templates/index.xml:52 cps/templates/index.xml:56 #: cps/templates/layout.html:148 cps/web.py:2114 msgid "Unread Books" -msgstr "Непрочитанные" +msgstr "Непрочитанные Книги" #: cps/web.py:2162 cps/web.py:2164 cps/web.py:2166 cps/web.py:2178 msgid "Read a Book" -msgstr "Читать книгу" +msgstr "Читать Книгу" #: cps/web.py:2244 cps/web.py:3129 msgid "Please fill out all fields!" @@ -312,7 +312,7 @@ msgstr "Пожалуйста, заполните все поля!" #: cps/web.py:2245 cps/web.py:2266 cps/web.py:2270 cps/web.py:2275 #: cps/web.py:2277 msgid "register" -msgstr "зарегистрироваться" +msgstr "регистрация" #: cps/web.py:2265 cps/web.py:3345 msgid "An unknown error occurred. Please try again later." @@ -320,7 +320,7 @@ msgstr "Неизвестная ошибка. Попробуйте позже." #: cps/web.py:2268 msgid "Your e-mail is not allowed to register" -msgstr "" +msgstr "Ваш e-mail не подходит для регистрации" #: cps/web.py:2271 msgid "Confirmation e-mail was send to your e-mail account." @@ -362,7 +362,7 @@ msgstr "Пожалуйста, сначала сконфигурируйте па #: cps/web.py:2405 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" -msgstr "" +msgstr "Книга успешно поставлена в очередь для отправки на %(kindlemail)s" #: cps/web.py:2409 #, python-format @@ -371,7 +371,7 @@ msgstr "Ошибка при отправке книги: %(res)s" #: cps/web.py:2411 cps/web.py:3183 msgid "Please configure your kindle e-mail address first..." -msgstr "Пожалуйста, сначала настройте e-mail на вашем kindle" +msgstr "Пожалуйста, сначала настройте e-mail на вашем kindle..." #: cps/web.py:2455 #, python-format @@ -380,51 +380,51 @@ msgstr "Книга добавлена на книжную полку: %(sname)s" #: cps/web.py:2466 msgid "Invalid shelf specified" -msgstr "" +msgstr "Указана неверная полка" #: cps/web.py:2471 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" -msgstr "" +msgstr "Вам не разрешено добавлять книгу на полку: %(name)s" #: cps/web.py:2476 msgid "User is not allowed to edit public shelves" -msgstr "" +msgstr "Пользователь не может редактировать общедоступные полки" #: cps/web.py:2494 #, python-format msgid "Books are already part of the shelf: %(name)s" -msgstr "" +msgstr "Книги уже размещены на полке: %(name)s" #: cps/web.py:2508 #, python-format msgid "Books have been added to shelf: %(sname)s" -msgstr "" +msgstr "Книги добавлены в полку: %(sname)s" #: cps/web.py:2510 #, python-format msgid "Could not add books to shelf: %(sname)s" -msgstr "" +msgstr "Не удалось добавить книги на полку: %(sname)s" #: cps/web.py:2547 #, python-format msgid "Book has been removed from shelf: %(sname)s" -msgstr "Книга удалена с книжной полки: %(sname)s" +msgstr "Книга удалена с полки: %(sname)s" #: cps/web.py:2553 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" -msgstr "" +msgstr "Извините, вы не можете удалить книгу с полки: %(sname)s" #: cps/web.py:2573 cps/web.py:2597 #, python-format msgid "A shelf with the name '%(title)s' already exists." -msgstr "Книжкная полка с названием '%(title)s' уже существует." +msgstr "Полка с названием '%(title)s' уже существует." #: cps/web.py:2578 #, python-format msgid "Shelf %(title)s created" -msgstr "Создана книжная полка %(title)s" +msgstr "Создана полка %(title)s" #: cps/web.py:2580 cps/web.py:2608 msgid "There was an error" @@ -432,35 +432,35 @@ msgstr "Произошла ошибка" #: cps/web.py:2581 cps/web.py:2583 msgid "create a shelf" -msgstr "создать книжную полку" +msgstr "создать полку" #: cps/web.py:2606 #, python-format msgid "Shelf %(title)s changed" -msgstr "Книжная полка %(title)s изменена" +msgstr "Колка %(title)s изменена" #: cps/web.py:2609 cps/web.py:2611 msgid "Edit a shelf" -msgstr "Изменить книжную полку" +msgstr "Изменить полку" #: cps/web.py:2632 #, python-format msgid "successfully deleted shelf %(name)s" -msgstr "Книжная полка %(name)s удалена" +msgstr "удачно удалена полка %(name)s" #: cps/web.py:2659 #, python-format msgid "Shelf: '%(name)s'" -msgstr "Книжная полка: '%(name)s'" +msgstr "Полка: '%(name)s'" #: cps/web.py:2662 msgid "Error opening shelf. Shelf does not exist or is not accessible" -msgstr "Ошибка открытия книжной полки. Полка не существует или недоступна" +msgstr "Ошибка открытия Полки. Полка не существует или недоступна" #: cps/web.py:2693 #, python-format msgid "Change order of Shelf: '%(name)s'" -msgstr "Изменить расположение книжной полки '%(name)s'" +msgstr "Изменить расположение полки '%(name)s'" #: cps/web.py:2722 cps/web.py:3135 msgid "E-mail is not from valid domain" @@ -473,7 +473,7 @@ msgstr "Профиль %(name)s" #: cps/web.py:2763 msgid "Found an existing account for this e-mail address." -msgstr "" +msgstr "Этот адрес электронной почты уже зарегистрирован." #: cps/web.py:2766 msgid "Profile updated" @@ -493,7 +493,7 @@ msgstr "Настройка интерфейса" #: cps/web.py:2903 msgid "Import of optional Google Drive requirements missing" -msgstr "" +msgstr "Импорт дополнительных требований к Google Диску отсутствует" #: cps/web.py:2906 msgid "client_secrets.json is missing or not readable" @@ -501,7 +501,7 @@ msgstr "client_secrets.json отсутствует или его невозмо #: cps/web.py:2911 cps/web.py:2938 msgid "client_secrets.json is not configured for web application" -msgstr "" +msgstr "client_secrets.json не настроен для веб-приложения" #: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979 #: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060 @@ -511,19 +511,19 @@ msgstr "Настройки сервера" #: cps/web.py:2964 msgid "Keyfile location is not valid, please enter correct path" -msgstr "" +msgstr "Неверное расположение файла-ключа, введите правильный путь" #: cps/web.py:2976 msgid "Certfile location is not valid, please enter correct path" -msgstr "" +msgstr "Неверное расположение сертификата, введите правильный путь" #: cps/web.py:3018 msgid "Logfile location is not valid, please enter correct path" -msgstr "" +msgstr "Неверное расположение лог-файла, введите правильный путь" #: cps/web.py:3057 msgid "DB location is not valid, please enter correct path" -msgstr "Неверный путь к фалу БД, пожалуйста, укажите правильное расположение БД" +msgstr "Неверное расположение базы данных, введите правильный путь" #: cps/templates/admin.html:33 cps/web.py:3131 cps/web.py:3137 cps/web.py:3153 msgid "Add new user" @@ -536,7 +536,7 @@ msgstr "Пользователь '%(user)s' добавлен" #: cps/web.py:3147 msgid "Found an existing account for this e-mail address or nickname." -msgstr "" +msgstr "Для этого адреса электронной почты или логина уже есть аккаунт." #: cps/web.py:3171 cps/web.py:3185 msgid "E-mail server settings updated" @@ -545,12 +545,12 @@ msgstr "Настройки E-mail сервера обновлены" #: cps/web.py:3178 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" -msgstr "" +msgstr "Тестовое письмо успешно отправлено на %(kindlemail)s" #: cps/web.py:3181 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" -msgstr "" +msgstr "Произошла ошибка при отправке тестового письма на: %(res)s" #: cps/web.py:3186 msgid "Edit e-mail server settings" @@ -582,7 +582,7 @@ msgstr "Пароль для пользователя %(user)s сброшен" #: cps/web.py:3362 msgid "Error opening eBook. File does not exist or file is not accessible" -msgstr "" +msgstr "Ошибка при открытии eBook. Файл не существует или файл недоступен" #: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827 msgid "edit metadata" @@ -600,27 +600,27 @@ msgstr "Загружаемый файл должен иметь расширен #: cps/web.py:3417 cps/web.py:3721 #, python-format msgid "Failed to create path %(path)s (Permission denied)." -msgstr "Ошибка при создании пути %(path)s (доступ запрещён)" +msgstr "Ошибка при создании пути %(path)s (Доступ запрещён)." #: cps/web.py:3422 #, python-format msgid "Failed to store file %(file)s." -msgstr "" +msgstr "Не удалось сохранить файл %(file)s." #: cps/web.py:3438 #, python-format msgid "File format %(ext)s added to %(book)s" -msgstr "" +msgstr "Формат файла %(ext)s добавлен в %(book)s" #: cps/web.py:3455 #, python-format msgid "Failed to create path for cover %(path)s (Permission denied)." -msgstr "" +msgstr "Не удалось создать путь для обложки %(path)s (Доступ запрещён)." #: cps/web.py:3462 #, python-format msgid "Failed to store cover-file %(cover)s." -msgstr "" +msgstr "Не удалось сохранить файл обложки %(cover)s." #: cps/web.py:3465 msgid "Cover-file is not a valid image file" @@ -637,7 +637,7 @@ msgstr "Обложка не jpg файл, невозможно сохранит #: cps/web.py:3554 #, python-format msgid "%(langname)s is not a valid language" -msgstr "" +msgstr "%(langname)s не допустимый язык" #: cps/web.py:3676 msgid "Error editing book, please check logfile for details" @@ -646,12 +646,12 @@ msgstr "Ошибка редактирования книги. Пожалуйст #: cps/web.py:3726 #, python-format msgid "Failed to store file %(file)s (Permission denied)." -msgstr "Ошибка записи файоа %(file)s (доступ запрещён)" +msgstr "Ошибка записи файла %(file)s (Доступ запрещён)." #: cps/web.py:3731 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." -msgstr "Ошибка удаления файла %(file)s (доступ запрещён)" +msgstr "Ошибка удаления файла %(file)s (Доступ запрещён)." #: cps/web.py:3813 #, python-format @@ -660,17 +660,17 @@ msgstr "Файл %(file)s загружен" #: cps/web.py:3843 msgid "Source or destination format for conversion missing" -msgstr "" +msgstr "Исходный или целевой формат для конвертирования отсутствует" #: cps/web.py:3853 #, python-format msgid "Book successfully queued for converting to %(book_format)s" -msgstr "" +msgstr "Книга успешно поставлена в очередь для конвертирования в %(book_format)s" #: cps/web.py:3857 #, python-format msgid "There was an error converting this book: %(res)s" -msgstr "" +msgstr "Произошла ошибка при конвертирования этой книги: %(res)s" #: cps/worker.py:215 cps/worker.py:398 msgid "Started" @@ -679,17 +679,17 @@ msgstr "Начало" #: cps/worker.py:251 #, python-format msgid "Convertertool %(converter)s not found" -msgstr "" +msgstr "Инструмент конвертирования %(converter)s не найден" #: cps/worker.py:287 #, python-format msgid "Ebook-converter failed: %(error)s" -msgstr "" +msgstr "Ошибка Ebook-конвертора: %(error)s" #: cps/worker.py:298 #, python-format msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" -msgstr "" +msgstr "Kindlegen - неудачно, с Ошибкой %(error)s. Сообщение: %(message)s" #: cps/worker.py:355 cps/worker.py:374 msgid "Waiting" @@ -697,7 +697,7 @@ msgstr "Ожидание" #: cps/worker.py:362 msgid "This e-mail has been sent via Calibre-Web." -msgstr "" +msgstr "Это электронное письмо было отправлено через Caliber-Web." #: cps/worker.py:388 cps/worker.py:484 msgid "Finished" @@ -782,7 +782,7 @@ msgstr "Папка Calibre DB" #: cps/templates/admin.html:69 msgid "Log level" -msgstr "" +msgstr "Уровень лога" #: cps/templates/admin.html:73 msgid "Port" @@ -798,7 +798,7 @@ msgstr "Загрузка на сервер" #: cps/templates/admin.html:87 msgid "Anonymous browsing" -msgstr "" +msgstr "Анонимный просмотр" #: cps/templates/admin.html:91 msgid "Public registration" @@ -826,19 +826,19 @@ msgstr "Остановить Calibre-Web" #: cps/templates/admin.html:115 msgid "Update" -msgstr "" +msgstr "Обновление" #: cps/templates/admin.html:119 msgid "Version" -msgstr "" +msgstr "Версия" #: cps/templates/admin.html:120 msgid "Details" -msgstr "" +msgstr "Подробности" #: cps/templates/admin.html:126 msgid "Current version" -msgstr "" +msgstr "Текущая версия" #: cps/templates/admin.html:132 msgid "Check for update" @@ -876,7 +876,7 @@ msgstr "Установка обновлений, пожалуйста, не об #: cps/templates/author.html:15 msgid "via" -msgstr "" +msgstr "с помощью" #: cps/templates/author.html:23 msgid "In Library" @@ -884,7 +884,7 @@ msgstr "В библиотеке" #: cps/templates/author.html:69 msgid "More by" -msgstr "" +msgstr "Ещё от" #: cps/templates/book_edit.html:16 msgid "Delete Book" @@ -892,7 +892,7 @@ msgstr "Удалить книгу" #: cps/templates/book_edit.html:19 msgid "Delete formats:" -msgstr "" +msgstr "Удалить форматы:" #: cps/templates/book_edit.html:22 cps/templates/book_edit.html:199 #: cps/templates/email_edit.html:73 cps/templates/email_edit.html:74 @@ -901,19 +901,19 @@ msgstr "Удалить" #: cps/templates/book_edit.html:30 msgid "Convert book format:" -msgstr "" +msgstr "Конвертировать формат книги:" #: cps/templates/book_edit.html:34 msgid "Convert from:" -msgstr "" +msgstr "Конвертировать из:" #: cps/templates/book_edit.html:36 cps/templates/book_edit.html:43 msgid "select an option" -msgstr "" +msgstr "выбрать вариант" #: cps/templates/book_edit.html:41 msgid "Convert to:" -msgstr "" +msgstr "Конвертировать в:" #: cps/templates/book_edit.html:50 msgid "Convert book" @@ -952,7 +952,7 @@ msgstr "Рейтинг" #: cps/templates/book_edit.html:87 msgid "Cover URL (jpg, cover is downloaded and stored in database, field is afterwards empty again)" -msgstr "" +msgstr "URL обложки(jpg, обложка загружается и сохраняется в базе данных, после этого поле снова пустое)" #: cps/templates/book_edit.html:91 msgid "Upload Cover from local drive" @@ -1017,11 +1017,11 @@ msgstr "Ключевое слово" #: cps/templates/book_edit.html:216 msgid " Search keyword " -msgstr " Поиск по ключевому слову" +msgstr " Поиск по ключевому слову " #: cps/templates/book_edit.html:218 cps/templates/layout.html:46 msgid "Go!" -msgstr "Искать" +msgstr "Старт!" #: cps/templates/book_edit.html:222 msgid "Click the cover to load metadata to the form" @@ -1045,7 +1045,7 @@ msgstr "Ошибка поиска!" #: cps/templates/book_edit.html:276 msgid "No Result(s) found! Please try aonther keyword." -msgstr "" +msgstr "Результат(ы) не найдены! Попробуйте другое ключевое слово." #: cps/templates/config_edit.html:12 msgid "Library Configuration" @@ -1069,15 +1069,15 @@ msgstr "Аутентификация Google Drive" #: cps/templates/config_edit.html:40 msgid "Please finish Google Drive setup after login" -msgstr "" +msgstr "Завершите настройку Google Диска после входа в систему" #: cps/templates/config_edit.html:44 msgid "Google Drive Calibre folder" -msgstr "" +msgstr "Google Диск Calibre папка" #: cps/templates/config_edit.html:52 msgid "Metadata Watch Channel ID" -msgstr "Metadata Watch Channel ID" +msgstr "ID Канала Просмотра Метаданных" #: cps/templates/config_edit.html:55 msgid "Revoke" @@ -1093,11 +1093,11 @@ msgstr "Порт сервера" #: cps/templates/config_edit.html:84 msgid "SSL certfile location (leave it empty for non-SSL Servers)" -msgstr "" +msgstr "Расположение SSL сертификата (оставьте его пустым для серверов без SSL)" #: cps/templates/config_edit.html:88 msgid "SSL Keyfile location (leave it empty for non-SSL Servers)" -msgstr "" +msgstr "Расположение SSL файла-ключа (оставьте его пустым для серверов без SSL)" #: cps/templates/config_edit.html:99 msgid "Logfile Configuration" @@ -1105,15 +1105,15 @@ msgstr "Настройки лог-файла" #: cps/templates/config_edit.html:106 msgid "Log Level" -msgstr "Уровень логирования" +msgstr "Уровень Логирования" #: cps/templates/config_edit.html:115 msgid "Location and name of logfile (calibre-web.log for no entry)" -msgstr "" +msgstr "Расположение и имя лог-файла (не вводите calibre-web.log)" #: cps/templates/config_edit.html:126 msgid "Feature Configuration" -msgstr "" +msgstr "Дополнительный Настройки" #: cps/templates/config_edit.html:134 msgid "Enable uploading" @@ -1137,48 +1137,48 @@ msgstr "Использовать" #: cps/templates/config_edit.html:152 msgid "Obtain an API Key" -msgstr "" +msgstr "Получить ключ API" #: cps/templates/config_edit.html:156 msgid "Goodreads API Key" -msgstr "" +msgstr "Ключ API Goodreads" #: cps/templates/config_edit.html:160 msgid "Goodreads API Secret" -msgstr "" +msgstr "Goodreads API Секрет" #: cps/templates/config_edit.html:173 msgid "External binaries" -msgstr "" +msgstr "Внешние двоичные файлы" #: cps/templates/config_edit.html:181 msgid "No converter" -msgstr "" +msgstr "Нет конвертера" #: cps/templates/config_edit.html:183 msgid "Use Kindlegen" -msgstr "" +msgstr "Использовать Kindlegen" #: cps/templates/config_edit.html:185 msgid "Use calibre's ebook converter" -msgstr "" +msgstr "Использовать конвертер calibre's ebook" #: cps/templates/config_edit.html:189 msgid "E-Book converter settings" -msgstr "" +msgstr "Настройки конвертера E-Book" #: cps/templates/config_edit.html:193 msgid "Path to convertertool" -msgstr "" +msgstr "Путь к конвертеру" #: cps/templates/config_edit.html:199 msgid "Location of Unrar binary" -msgstr "" +msgstr "Расположение двоичного файла Unrar" #: cps/templates/config_edit.html:215 cps/templates/layout.html:82 #: cps/templates/login.html:4 msgid "Login" -msgstr "Имя пользователя" +msgstr "Логин" #: cps/templates/config_view_edit.html:12 msgid "View Configuration" @@ -1199,7 +1199,7 @@ msgstr "Regexp для игнорирования столбцов" #: cps/templates/config_view_edit.html:35 msgid "Link read/unread status to Calibre column" -msgstr "" +msgstr "Ссылка на чтение/непрочитанный статус столбца Caliber" #: cps/templates/config_view_edit.html:44 msgid "Regular expression for title sorting" @@ -1207,7 +1207,7 @@ msgstr "Regexp для сортировки по названию" #: cps/templates/config_view_edit.html:48 msgid "Tags for Mature Content" -msgstr "" +msgstr "Теги для Зрелого Контента" #: cps/templates/config_view_edit.html:62 msgid "Default settings for new users" @@ -1243,7 +1243,7 @@ msgstr "Разрешить редактирование публичных кн #: cps/templates/config_view_edit.html:104 msgid "Default visibilities for new users" -msgstr "" +msgstr "Видимость для новых пользователей(по умолчанию)" #: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:60 msgid "Show random books" @@ -1327,7 +1327,7 @@ msgstr "Редактировать метаданные" #: cps/templates/email_edit.html:15 msgid "SMTP port (usually 25 for plain SMTP and 465 for SSL and 587 for STARTTLS)" -msgstr "SMTP-порт (обычно 25 для SMTP, 465 для SSL и 587 для STARTTLS" +msgstr "SMTP-порт (обычно 25 для SMTP, 465 для SSL и 587 для STARTTLS)" #: cps/templates/email_edit.html:19 msgid "Encryption" @@ -1363,11 +1363,11 @@ msgstr "Сохранить настройки и отправить тестов #: cps/templates/email_edit.html:43 msgid "Allowed domains for registering" -msgstr "" +msgstr "Допустимые домены для регистрации" #: cps/templates/email_edit.html:47 msgid "Enter domainname" -msgstr "" +msgstr "Введите доменное имя" #: cps/templates/email_edit.html:55 msgid "Add Domain" @@ -1392,7 +1392,7 @@ msgstr "Поиск" #: cps/templates/index.html:5 msgid "Discover (Random Books)" -msgstr "Обзор (случайные книги)" +msgstr "Обзор (Случайные Книги)" #: cps/templates/index.xml:6 msgid "Start" @@ -1400,11 +1400,11 @@ msgstr "Старт" #: cps/templates/index.xml:15 cps/templates/layout.html:139 msgid "Hot Books" -msgstr "Популярные книги" +msgstr "Популярные Книги" #: cps/templates/index.xml:19 msgid "Popular publications from this catalog based on Downloads." -msgstr "Популярные книги в этом каталоге, на основе количества скачиваний" +msgstr "Популярные книги в этом каталоге, на основе количества Скачиваний" #: cps/templates/index.xml:22 cps/templates/layout.html:142 msgid "Best rated Books" @@ -1412,19 +1412,19 @@ msgstr "Книги с наилучшим рейтингом" #: cps/templates/index.xml:26 msgid "Popular publications from this catalog based on Rating." -msgstr "Популярные книги из этого каталога на основании рейтинга" +msgstr "Популярные книги из этого каталога на основании Рейтинга" #: cps/templates/index.xml:29 msgid "New Books" -msgstr "Новые" +msgstr "Новые Книги" #: cps/templates/index.xml:33 msgid "The latest Books" -msgstr "Последние поступления" +msgstr "Последние Книги" #: cps/templates/index.xml:40 msgid "Show Random Books" -msgstr "Показывать случайные книги" +msgstr "Показывать Случайные Сниги" #: cps/templates/index.xml:59 cps/templates/layout.html:160 msgid "Authors" @@ -1432,7 +1432,7 @@ msgstr "Авторы" #: cps/templates/index.xml:63 msgid "Books ordered by Author" -msgstr "Книги, отсортированные по автору" +msgstr "Книги, отсортированные по Автору" #: cps/templates/index.xml:70 msgid "Books ordered by category" @@ -1444,7 +1444,7 @@ msgstr "Книги, отсортированные по серии" #: cps/templates/index.xml:80 cps/templates/layout.html:166 msgid "Public Shelves" -msgstr "Общие книжные полки" +msgstr "Общие полки" #: cps/templates/index.xml:84 msgid "Books organized in public shelfs, visible to everyone" @@ -1452,11 +1452,11 @@ msgstr "Книги размещены на полках, и доступны в #: cps/templates/index.xml:88 cps/templates/layout.html:170 msgid "Your Shelves" -msgstr "Ваши книжные полки" +msgstr "Ваши полки" #: cps/templates/index.xml:92 msgid "User's own shelfs, only visible to the current user himself" -msgstr "" +msgstr "Пользовательские полки, видимые только самому пользователю" #: cps/templates/layout.html:33 msgid "Toggle navigation" @@ -1488,11 +1488,11 @@ msgstr "Просмотр" #: cps/templates/layout.html:122 msgid "Recently Added" -msgstr "" +msgstr "Недавно Добавленные" #: cps/templates/layout.html:127 msgid "Sorted Books" -msgstr "" +msgstr "Сортировка Книг" #: cps/templates/layout.html:131 cps/templates/layout.html:132 #: cps/templates/layout.html:133 cps/templates/layout.html:134 @@ -1509,11 +1509,11 @@ msgstr "Старое" #: cps/templates/layout.html:133 msgid "Ascending" -msgstr "" +msgstr "По возрастанию" #: cps/templates/layout.html:134 msgid "Descending" -msgstr "" +msgstr "По убыванию" #: cps/templates/layout.html:151 msgid "Discover" @@ -1559,11 +1559,11 @@ msgstr "Запомнить меня" #: cps/templates/login.html:22 msgid "Log in with magic link" -msgstr "" +msgstr "Войти через магическую ссылку" #: cps/templates/osd.xml:5 msgid "Calibre-Web ebook catalog" -msgstr "" +msgstr "Каталог электронных книг Caliber-Web" #: cps/templates/read.html:69 cps/templates/readcbr.html:79 #: cps/templates/readcbr.html:103 @@ -1576,7 +1576,7 @@ msgstr "Обновить размещение текста при открыти #: cps/templates/readcbr.html:84 msgid "Keyboard Shortcuts" -msgstr "" +msgstr "Горячие клавиши" #: cps/templates/readcbr.html:87 msgid "Previous Page" @@ -1588,19 +1588,19 @@ msgstr "Следующая страница" #: cps/templates/readcbr.html:89 msgid "Scale to Best" -msgstr "" +msgstr "Масштабировать до лучшего" #: cps/templates/readcbr.html:90 msgid "Scale to Width" -msgstr "" +msgstr "Масштабироваать по ширине" #: cps/templates/readcbr.html:91 msgid "Scale to Height" -msgstr "" +msgstr "Масштабировать по высоте" #: cps/templates/readcbr.html:92 msgid "Scale to Native" -msgstr "" +msgstr "Масштабировать до оригинала" #: cps/templates/readcbr.html:93 msgid "Rotate Right" @@ -1644,7 +1644,7 @@ msgstr "Длина" #: cps/templates/readcbr.html:123 msgid "Native" -msgstr "" +msgstr "Оригинальный" #: cps/templates/readcbr.html:128 msgid "Rotate" @@ -1692,15 +1692,15 @@ msgstr "Ваш email-адрес" #: cps/templates/remote_login.html:6 msgid "Using your another device, visit" -msgstr "" +msgstr "Используйте другое устройство, посетите" #: cps/templates/remote_login.html:6 msgid "and log in" -msgstr "" +msgstr "и войти" #: cps/templates/remote_login.html:9 msgid "Once you do so, you will automatically get logged in on this device." -msgstr "" +msgstr "После этого вы автоматически войдете в систему на этом устройстве." #: cps/templates/search.html:5 msgid "No Results for:" @@ -1776,19 +1776,19 @@ msgstr "Статистика библиотеки Calibre" #: cps/templates/stats.html:12 msgid "Books in this Library" -msgstr "книг" +msgstr "Книг в этой Библиотеке" #: cps/templates/stats.html:16 msgid "Authors in this Library" -msgstr "авторов" +msgstr "Авторов в этой Библиотеке" #: cps/templates/stats.html:20 msgid "Categories in this Library" -msgstr "категорий" +msgstr "Категорий в этой Библиотеке" #: cps/templates/stats.html:24 msgid "Series in this Library" -msgstr "серий" +msgstr "Серий в этой Библиотеке" #: cps/templates/stats.html:28 msgid "Linked libraries" @@ -1800,7 +1800,7 @@ msgstr "Название" #: cps/templates/stats.html:33 msgid "Installed Version" -msgstr "Версия" +msgstr "Установленная версия" #: cps/templates/tasks.html:7 msgid "Tasks list" @@ -1812,7 +1812,7 @@ msgstr "Пользователь" #: cps/templates/tasks.html:14 msgid "Task" -msgstr "Залача" +msgstr "Задача" #: cps/templates/tasks.html:15 msgid "Status" @@ -1852,7 +1852,7 @@ msgstr "Стандартная тема" #: cps/templates/user_edit.html:44 msgid "caliBlur! Dark Theme (Beta)" -msgstr "" +msgstr "caliBlur! Темная тема (Бета)" #: cps/templates/user_edit.html:49 msgid "Show books with language" @@ -1860,7 +1860,7 @@ msgstr "Показать книги на языках" #: cps/templates/user_edit.html:51 msgid "Show all" -msgstr "Всех" +msgstr "Показать все" #: cps/templates/user_edit.html:145 msgid "Delete this user" @@ -1874,8 +1874,8 @@ msgstr "Недавние скачивания" #~ msgstr "Почта: %s" #~ msgid "Current commit timestamp" -#~ msgstr "" +#~ msgstr "Текущая метка фиксации" #~ msgid "Newest commit timestamp" -#~ msgstr "" +#~ msgstr "Новая метка фиксации" From 3f83be00fd103eded6aa1cc41f0bb7aae7311655 Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Mon, 29 Oct 2018 20:38:09 +0100 Subject: [PATCH 018/160] Fix #687 --- cps/helper.py | 53 +++++++++++++++++++++++++++++++++------------------ cps/web.py | 8 ++++++-- 2 files changed, 40 insertions(+), 21 deletions(-) diff --git a/cps/helper.py b/cps/helper.py index ae8c1534..7d67dffd 100755 --- a/cps/helper.py +++ b/cps/helper.py @@ -381,25 +381,40 @@ class Updater(threading.Thread): self.status = 0 def run(self): - self.status = 1 - r = requests.get('https://api.github.com/repos/janeczku/calibre-web/zipball/master', stream=True) - fname = re.findall("filename=(.+)", r.headers['content-disposition'])[0] - self.status = 2 - z = zipfile.ZipFile(BytesIO(r.content)) - self.status = 3 - tmp_dir = gettempdir() - z.extractall(tmp_dir) - self.status = 4 - self.update_source(os.path.join(tmp_dir, os.path.splitext(fname)[0]), ub.config.get_main_dir) - self.status = 5 - db.session.close() - db.engine.dispose() - ub.session.close() - ub.engine.dispose() - self.status = 6 - server.Server.setRestartTyp(True) - server.Server.stopServer() - self.status = 7 + try: + self.status = 1 + r = requests.get('https://api.github.com/repos/janeczku/calibre-web/zipball/master', stream=True) + r.raise_for_status() + + fname = re.findall("filename=(.+)", r.headers['content-disposition'])[0] + self.status = 2 + z = zipfile.ZipFile(BytesIO(r.content)) + self.status = 3 + tmp_dir = gettempdir() + z.extractall(tmp_dir) + self.status = 4 + self.update_source(os.path.join(tmp_dir, os.path.splitext(fname)[0]), ub.config.get_main_dir) + self.status = 5 + db.session.close() + db.engine.dispose() + ub.session.close() + ub.engine.dispose() + self.status = 6 + server.Server.setRestartTyp(True) + server.Server.stopServer() + self.status = 7 + except requests.exceptions.HTTPError as ex: + logging.getLogger('cps.web').info( u'HTTP Error' + ' ' + str(ex)) + self.status = 8 + except requests.exceptions.ConnectionError: + logging.getLogger('cps.web').info(u'Connection error') + self.status = 9 + except requests.exceptions.Timeout: + logging.getLogger('cps.web').info(u'Timeout while establishing connection') + self.status = 10 + except requests.exceptions.RequestException: + self.status = 11 + logging.getLogger('cps.web').info(u'General error') def get_update_status(self): return self.status diff --git a/cps/web.py b/cps/web.py index c0646b1d..28f9a05c 100644 --- a/cps/web.py +++ b/cps/web.py @@ -1292,7 +1292,11 @@ def get_updater_status(): "4": _(u'Files are replaced'), "5": _(u'Database connections are closed'), "6": _(u'Server is stopped'), - "7": _(u'Update finished, please press okay and reload page') + "7": _(u'Update finished, please press okay and reload page'), + "8": _(u'Update failed:') + u' ' + _(u'HTTP Error'), + "9": _(u'Update failed:') + u' ' + _(u'Connection error'), + "10": _(u'Update failed:') + u' ' + _(u'Timeout while establishing connection'), + "11": _(u'Update failed:') + u' ' + _(u'General error') } status['text'] = text helper.updater_thread = helper.Updater() @@ -1302,7 +1306,7 @@ def get_updater_status(): try: status['status'] = helper.updater_thread.get_update_status() except Exception: - status['status'] = 7 + status['status'] = 11 return json.dumps(status) From 5fc742c9c4b12a6e276ea735e6c114a0d2a49ac3 Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Tue, 30 Oct 2018 19:29:33 +0100 Subject: [PATCH 019/160] Fix #690 --- cps/server.py | 49 ++++++++++++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/cps/server.py b/cps/server.py index 6dd48ae7..59f20109 100644 --- a/cps/server.py +++ b/cps/server.py @@ -40,11 +40,16 @@ class server: else: self.wsgiserver = WSGIServer(('', web.ub.config.config_port), web.app, spawn=Pool(), **ssl_args) self.wsgiserver.serve_forever() - except SocketError: - web.app.logger.info('Unable to listen on \'\', trying on IPv4 only...') - self.wsgiserver = WSGIServer(('0.0.0.0', web.ub.config.config_port), web.app, spawn=Pool(), **ssl_args) - self.wsgiserver.serve_forever() + try: + web.app.logger.info('Unable to listen on \'\', trying on IPv4 only...') + self.wsgiserver = WSGIServer(('0.0.0.0', web.ub.config.config_port), web.app, spawn=Pool(), **ssl_args) + self.wsgiserver.serve_forever() + except (OSError, SocketError) as e: + web.app.logger.info("Error starting server: %s" % e.strerror) + print("Error starting server: %s" % e.strerror) + web.helper.global_WorkerThread.stop() + sys.exit(1) except Exception: web.app.logger.info("Unknown error while starting gevent") @@ -54,21 +59,27 @@ class server: # leave subprocess out to allow forking for fetchers and processors self.start_gevent() else: - web.app.logger.info('Starting Tornado server') - if web.ub.config.get_config_certfile() and web.ub.config.get_config_keyfile(): - ssl={"certfile": web.ub.config.get_config_certfile(), - "keyfile": web.ub.config.get_config_keyfile()} - else: - ssl=None - # Max Buffersize set to 200MB - http_server = HTTPServer(WSGIContainer(web.app), - max_buffer_size = 209700000, - ssl_options=ssl) - http_server.listen(web.ub.config.config_port) - self.wsgiserver=IOLoop.instance() - self.wsgiserver.start() - # wait for stop signal - self.wsgiserver.close(True) + try: + web.app.logger.info('Starting Tornado server') + if web.ub.config.get_config_certfile() and web.ub.config.get_config_keyfile(): + ssl={"certfile": web.ub.config.get_config_certfile(), + "keyfile": web.ub.config.get_config_keyfile()} + else: + ssl=None + # Max Buffersize set to 200MB + http_server = HTTPServer(WSGIContainer(web.app), + max_buffer_size = 209700000, + ssl_options=ssl) + http_server.listen(web.ub.config.config_port) + self.wsgiserver=IOLoop.instance() + self.wsgiserver.start() + # wait for stop signal + self.wsgiserver.close(True) + except SocketError as e: + web.app.logger.info("Error starting server: %s" % e.strerror) + print("Error starting server: %s" % e.strerror) + web.helper.global_WorkerThread.stop() + sys.exit(1) if self.restart == True: web.app.logger.info("Performing restart of Calibre-Web") From ee85492c7df32c00ecd69d1eef181a7ee5da3557 Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Tue, 30 Oct 2018 21:47:33 +0100 Subject: [PATCH 020/160] Fix #662 --- cps/helper.py | 17 +++++++++++------ cps/web.py | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/cps/helper.py b/cps/helper.py index 7d67dffd..5001f5d3 100755 --- a/cps/helper.py +++ b/cps/helper.py @@ -178,13 +178,18 @@ def get_valid_filename(value, replace_whitespace=True): def get_sorted_author(value): try: - regexes = ["^(JR|SR)\.?$", "^I{1,3}\.?$", "^IV\.?$"] - combined = "(" + ")|(".join(regexes) + ")" - value = value.split(" ") - if re.match(combined, value[-1].upper()): - value2 = value[-2] + ", " + " ".join(value[:-2]) + " " + value[-1] + if ',' not in value: + regexes = ["^(JR|SR)\.?$", "^I{1,3}\.?$", "^IV\.?$"] + combined = "(" + ")|(".join(regexes) + ")" + value = value.split(" ") + if re.match(combined, value[-1].upper()): + value2 = value[-2] + ", " + " ".join(value[:-2]) + " " + value[-1] + elif len(value) == 1: + value2 = value[0] + else: + value2 = value[-1] + ", " + " ".join(value[:-1]) else: - value2 = value[-1] + ", " + " ".join(value[:-1]) + value2 = value except Exception: web.app.logger.error("Sorting author " + str(value) + "failed") value2 = value diff --git a/cps/web.py b/cps/web.py index 28f9a05c..6bc179ee 100644 --- a/cps/web.py +++ b/cps/web.py @@ -588,7 +588,7 @@ def modify_database_object(input_elements, db_book_object, db_object, db_session # if no element is found add it # if new_element is None: if db_type == 'author': - new_element = db_object(add_element, add_element.replace('|', ','), "") + new_element = db_object(add_element, helper.get_sorted_author(add_element.replace('|', ',')), "") elif db_type == 'series': new_element = db_object(add_element, add_element) elif db_type == 'custom': From c1818e8f36539664375b321a0ba5d635dd2f311a Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Tue, 30 Oct 2018 22:33:19 +0100 Subject: [PATCH 021/160] Fix for #672 --- cps/templates/feed.xml | 14 ++++++++++---- cps/templates/index.xml | 5 ++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/cps/templates/feed.xml b/cps/templates/feed.xml index 82e92416..428dd363 100644 --- a/cps/templates/feed.xml +++ b/cps/templates/feed.xml @@ -27,7 +27,10 @@ href="{{request.script_root + request.path}}?offset={{ pagination.previous_offset }}" type="application/atom+xml;profile=opds-catalog;type=feed;kind=navigation"/> {% endif %} - + + {{instance}} {{instance}} @@ -43,9 +46,12 @@ {{entry.authors[0].name}} - - {{entry.publishers[0].name}} - + + {% if publishers.__len__() > 0 %} + + {{entry.publishers[0].name}} + + {% endif %} {{entry.language}} {% for tag in entry.tags %} - + + {{instance}} {{instance}} From cc7dcfb35abd6a70301329ee45e568a479e620dc Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Thu, 1 Nov 2018 13:44:00 +0100 Subject: [PATCH 022/160] Update Updater Bugfix author in opds-feed --- cps/helper.py | 7 ++----- cps/templates/feed.xml | 11 ++++++----- cps/web.py | 9 +++++---- 3 files changed, 13 insertions(+), 14 deletions(-) mode change 100755 => 100644 cps/helper.py diff --git a/cps/helper.py b/cps/helper.py old mode 100755 new mode 100644 index 5001f5d3..3b6be191 --- a/cps/helper.py +++ b/cps/helper.py @@ -399,15 +399,12 @@ class Updater(threading.Thread): z.extractall(tmp_dir) self.status = 4 self.update_source(os.path.join(tmp_dir, os.path.splitext(fname)[0]), ub.config.get_main_dir) - self.status = 5 - db.session.close() - db.engine.dispose() - ub.session.close() - ub.engine.dispose() self.status = 6 + time.sleep(2) server.Server.setRestartTyp(True) server.Server.stopServer() self.status = 7 + time.sleep(2) except requests.exceptions.HTTPError as ex: logging.getLogger('cps.web').info( u'HTTP Error' + ' ' + str(ex)) self.status = 8 diff --git a/cps/templates/feed.xml b/cps/templates/feed.xml index 428dd363..540f57ed 100644 --- a/cps/templates/feed.xml +++ b/cps/templates/feed.xml @@ -43,11 +43,12 @@ {{entry.title}} {{entry.uuid}} {{entry.atom_timestamp}} - - {{entry.authors[0].name}} - - - {% if publishers.__len__() > 0 %} + {% if entry.authors.__len__() > 0 %} + + {{entry.authors[0].name}} + + {% endif %} + {% if entry.publishers.__len__() > 0 %} {{entry.publishers[0].name}} diff --git a/cps/web.py b/cps/web.py index 6bc179ee..979cb64a 100644 --- a/cps/web.py +++ b/cps/web.py @@ -1289,9 +1289,9 @@ def get_updater_status(): "1": _(u'Requesting update package'), "2": _(u'Downloading update package'), "3": _(u'Unzipping update package'), - "4": _(u'Files are replaced'), + "4": _(u'Replacing files'), "5": _(u'Database connections are closed'), - "6": _(u'Server is stopped'), + "6": _(u'Stopping server'), "7": _(u'Update finished, please press okay and reload page'), "8": _(u'Update failed:') + u' ' + _(u'HTTP Error'), "9": _(u'Update failed:') + u' ' + _(u'Connection error'), @@ -1305,8 +1305,9 @@ def get_updater_status(): elif request.method == "GET": try: status['status'] = helper.updater_thread.get_update_status() - except Exception: - status['status'] = 11 + except Exception as e: + app.logger.exception(e) + status['status'] = 7 return json.dumps(status) From 0df35dcfea5cbd550257a0ee5e4044df25e9897d Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Thu, 1 Nov 2018 13:47:05 +0100 Subject: [PATCH 023/160] Update Updater --- cps/web.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cps/web.py b/cps/web.py index 979cb64a..a8515ce9 100644 --- a/cps/web.py +++ b/cps/web.py @@ -1305,9 +1305,11 @@ def get_updater_status(): elif request.method == "GET": try: status['status'] = helper.updater_thread.get_update_status() - except Exception as e: - app.logger.exception(e) + except AttributeError: + # thread is not active, occours after restart on update status['status'] = 7 + except Exception: + status['status'] = 11 return json.dumps(status) From c3bec48bc73e4db0266d765ce3848413b3db80ed Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Sat, 3 Nov 2018 13:43:38 +0100 Subject: [PATCH 024/160] Fix #617 Additional texts translated --- cps/helper.py | 72 +++++++++++++++++++++++++------------------ cps/web.py | 85 +++++++-------------------------------------------- cps/worker.py | 79 ++++++++++++++++++++++++----------------------- 3 files changed, 94 insertions(+), 142 deletions(-) diff --git a/cps/helper.py b/cps/helper.py index ed829c9e..9aa3d884 100644 --- a/cps/helper.py +++ b/cps/helper.py @@ -13,9 +13,10 @@ import unicodedata from io import BytesIO import worker import time - from flask import send_from_directory, make_response, redirect, abort from flask_babel import gettext as _ +from flask_login import current_user +from babel.dates import format_datetime import threading import shutil import requests @@ -73,10 +74,12 @@ def convert_book_format(book_id, calibrepath, old_book_format, new_book_format, # read settings and append converter task to queue if kindle_mail: settings = ub.get_mail_settings() - text = _(u"%(format)s: %(book)s", format=new_book_format, book=book.title) + settings['subject'] = _('Send to Kindle') # pretranslate Subject for e-mail + settings['body'] = _(u'This e-mail has been sent via Calibre-Web.') + # text = _(u"%(format)s: %(book)s", format=new_book_format, book=book.title) else: settings = dict() - text = _(u"%(format)s: %(book)s", format=new_book_format, book=book.title) + text = (u"%s -> %s: %s" % (old_book_format, new_book_format, book.title)) settings['old_book_format'] = old_book_format settings['new_book_format'] = new_book_format global_WorkerThread.add_convert(file_path, book.id, user_id, text, settings, kindle_mail) @@ -89,7 +92,8 @@ def convert_book_format(book_id, calibrepath, old_book_format, new_book_format, def send_test_mail(kindle_mail, user_name): global_WorkerThread.add_email(_(u'Calibre-Web test e-mail'),None, None, ub.get_mail_settings(), - kindle_mail, user_name, _(u"Test e-mail")) + kindle_mail, user_name, _(u"Test e-mail"), + _(u'This e-mail has been sent via Calibre-Web.')) return @@ -133,7 +137,7 @@ def send_mail(book_id, kindle_mail, calibrepath, user_id): if 'mobi' in formats: result = formats['mobi'] elif 'epub' in formats: - # returns None if sucess, otherwise errormessage + # returns None if success, otherwise errormessage return convert_book_format(book_id, calibrepath, u'epub', u'mobi', user_id, kindle_mail) elif 'pdf' in formats: result = formats['pdf'] # worker.get_attachment() @@ -591,32 +595,40 @@ def render_task_status(tasklist): renderedtasklist=list() for task in tasklist: - # localize the task status - if isinstance( task['status'], int ): - if task['status'] == worker.STAT_WAITING: - task['status'] = _('Waiting') - elif task['status'] == worker.STAT_FAIL: - task['status'] = _('Failed') - elif task['status'] == worker.STAT_STARTED: - task['status'] = _('Started') - elif task['status'] == worker.STAT_FINISH_SUCCESS: - task['status'] = _('Finished') - else: - task['status'] = _('Unknown Status') - - # localize the task type - if isinstance( task['taskType'], int ): - if task['taskType'] == worker.TASK_EMAIL: - task['taskMessage'] = _('EMAIL: ') + task['taskMessage'] - elif task['taskType'] == worker.TASK_CONVERT: - task['taskMessage'] = _('CONVERT: ') + task['taskMessage'] - elif task['taskType'] == worker.TASK_UPLOAD: - task['taskMessage'] = _('UPLOAD: ') + task['taskMessage'] - elif task['taskType'] == worker.TASK_CONVERT_ANY: - task['taskMessage'] = _('CONVERT: ') + task['taskMessage'] + if task['user'] == current_user.nickname or current_user.role_admin(): + if task['formStarttime']: + task['starttime'] = format_datetime(task['formStarttime'], format='short', locale=web.get_locale()) + task['formStarttime'] = "" else: - task['taskMessage'] = _('Unknown Task: ') + task['taskMessage'] + if 'starttime' not in task: + task['starttime'] = "" + + # localize the task status + if isinstance( task['stat'], int ): + if task['stat'] == worker.STAT_WAITING: + task['status'] = _(u'Waiting') + elif task['stat'] == worker.STAT_FAIL: + task['status'] = _(u'Failed') + elif task['stat'] == worker.STAT_STARTED: + task['status'] = _(u'Started') + elif task['stat'] == worker.STAT_FINISH_SUCCESS: + task['status'] = _(u'Finished') + else: + task['status'] = _(u'Unknown Status') + + # localize the task type + if isinstance( task['taskType'], int ): + if task['taskType'] == worker.TASK_EMAIL: + task['taskMessage'] = _(u'E-mail: ') + task['taskMess'] + elif task['taskType'] == worker.TASK_CONVERT: + task['taskMessage'] = _(u'Convert: ') + task['taskMess'] + elif task['taskType'] == worker.TASK_UPLOAD: + task['taskMessage'] = _(u'Upload: ') + task['taskMess'] + elif task['taskType'] == worker.TASK_CONVERT_ANY: + task['taskMessage'] = _(u'Convert: ') + task['taskMess'] + else: + task['taskMessage'] = _(u'Unknown Task: ') + task['taskMess'] - renderedtasklist.append(task) + renderedtasklist.append(task) return renderedtasklist diff --git a/cps/web.py b/cps/web.py index 9eaa7a12..e8a8b242 100644 --- a/cps/web.py +++ b/cps/web.py @@ -54,8 +54,9 @@ import tempfile from redirect import redirect_back import time import server -import copy +# import copy from reverseproxy import ReverseProxied + try: from googleapiclient.errors import HttpError except ImportError: @@ -116,44 +117,6 @@ EXTENSIONS_CONVERT = {'pdf', 'epub', 'mobi', 'azw3', 'docx', 'rtf', 'fb2', 'lit' # EXTENSIONS_READER = set(['txt', 'pdf', 'epub', 'zip', 'cbz', 'tar', 'cbt'] + (['rar','cbr'] if rar_support else [])) -'''class ReverseProxied(object): - """Wrap the application in this middleware and configure the - front-end server to add these headers, to let you quietly bind - this to a URL other than / and to an HTTP scheme that is - different than what is used locally. - - Code courtesy of: http://flask.pocoo.org/snippets/35/ - - In nginx: - location /myprefix { - proxy_pass http://127.0.0.1:8083; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Scheme $scheme; - proxy_set_header X-Script-Name /myprefix; - } - """ - - def __init__(self, application): - self.app = application - - def __call__(self, environ, start_response): - script_name = environ.get('HTTP_X_SCRIPT_NAME', '') - if script_name: - environ['SCRIPT_NAME'] = script_name - path_info = environ.get('PATH_INFO', '') - if path_info and path_info.startswith(script_name): - environ['PATH_INFO'] = path_info[len(script_name):] - - scheme = environ.get('HTTP_X_SCHEME', '') - if scheme: - environ['wsgi.url_scheme'] = scheme - servr = environ.get('HTTP_X_FORWARDED_SERVER', '') - if servr: - environ['HTTP_HOST'] = servr - return self.app(environ, start_response)''' - - # Main code mimetypes.init() mimetypes.add_type('application/xhtml+xml', '.xhtml') @@ -897,14 +860,6 @@ def get_opds_download_link(book_id, book_format): except KeyError: headers["Content-Type"] = "application/octet-stream" return helper.do_download_file(book, book_format, data, headers) - #if config.config_use_google_drive: - # app.logger.info(time.time() - startTime) - # df = gdriveutils.getFileFromEbooksFolder(book.path, data.name + "." + book_format) - # return do_gdrive_download(df, headers) - #else: - # response = make_response(send_from_directory(os.path.join(config.config_calibre_dir, book.path), data.name + "." + book_format)) - # response.headers = headers - # return response @app.route("/ajax/book/") @@ -923,7 +878,7 @@ def get_metadata_calibre_companion(uuid): @login_required def get_email_status_json(): answer=list() - UIanswer = list() + # UIanswer = list() tasks=helper.global_WorkerThread.get_taskstatus() if not current_user.role_admin(): for task in tasks: @@ -945,10 +900,10 @@ def get_email_status_json(): task['starttime'] = "" answer = tasks - UIanswer = copy.deepcopy(answer) - UIanswer = helper.render_task_status(UIanswer) + # UIanswer = copy.deepcopy(answer) + answer = helper.render_task_status(answer) - js=json.dumps(UIanswer) + js=json.dumps(answer) response = make_response(js) response.headers["Content-Type"] = "application/json; charset=utf-8" return response @@ -1734,32 +1689,14 @@ def bookmark(book_id, book_format): def get_tasks_status(): # if current user admin, show all email, otherwise only own emails answer=list() - UIanswer=list() + # UIanswer=list() tasks=helper.global_WorkerThread.get_taskstatus() - if not current_user.role_admin(): - for task in tasks: - if task['user'] == current_user.nickname: - if task['formStarttime']: - task['starttime'] = format_datetime(task['formStarttime'], format='short', locale=get_locale()) - task['formStarttime'] = "" - else: - if 'starttime' not in task: - task['starttime'] = "" - answer.append(task) - else: - for task in tasks: - if task['formStarttime']: - task['starttime'] = format_datetime(task['formStarttime'], format='short', locale=get_locale()) - task['formStarttime'] = "" - else: - if 'starttime' not in task: - task['starttime'] = "" - answer = tasks + # answer = tasks - UIanswer = copy.deepcopy(answer) - UIanswer = helper.render_task_status(UIanswer) + # UIanswer = copy.deepcopy(answer) + answer = helper.render_task_status(tasks) # foreach row format row - return render_title_template('tasks.html', entries=UIanswer, title=_(u"Tasks")) + return render_title_template('tasks.html', entries=answer, title=_(u"Tasks")) @app.route("/admin") diff --git a/cps/worker.py b/cps/worker.py index de891916..23d6beb3 100644 --- a/cps/worker.py +++ b/cps/worker.py @@ -170,11 +170,11 @@ class WorkerThread(threading.Thread): if self.current != self.last: doLock.release() if self.queue[self.current]['taskType'] == TASK_EMAIL: - self.send_raw_email() + self._send_raw_email() if self.queue[self.current]['taskType'] == TASK_CONVERT: - self.convert_any_format() + self._convert_any_format() if self.queue[self.current]['taskType'] == TASK_CONVERT_ANY: - self.convert_any_format() + self._convert_any_format() # TASK_UPLOAD is handled implicitly self.current += 1 else: @@ -190,7 +190,7 @@ class WorkerThread(threading.Thread): else: return "0 %" - def delete_completed_tasks(self): + def _delete_completed_tasks(self): for index, task in reversed(list(enumerate(self.UIqueue))): if task['progress'] == "100 %": # delete tasks @@ -202,31 +202,30 @@ class WorkerThread(threading.Thread): def get_taskstatus(self): if self.current < len(self.queue): - if self.queue[self.current]['status'] == STAT_STARTED: + if self.UIqueue[self.current]['stat'] == STAT_STARTED: if self.queue[self.current]['taskType'] == TASK_EMAIL: self.UIqueue[self.current]['progress'] = self.get_send_status() self.UIqueue[self.current]['runtime'] = self._formatRuntime( datetime.now() - self.queue[self.current]['starttime']) return self.UIqueue - def convert_any_format(self): + def _convert_any_format(self): # convert book, and upload in case of google drive - self.queue[self.current]['status'] = STAT_STARTED - self.UIqueue[self.current]['status'] = STAT_STARTED + self.UIqueue[self.current]['stat'] = STAT_STARTED self.queue[self.current]['starttime'] = datetime.now() self.UIqueue[self.current]['formStarttime'] = self.queue[self.current]['starttime'] curr_task = self.queue[self.current]['taskType'] - filename = self.convert_ebook_format() + filename = self._convert_ebook_format() if filename: if web.ub.config.config_use_google_drive: gd.updateGdriveCalibreFromLocal() if curr_task == TASK_CONVERT: - self.add_email(_(u'Send to Kindle'), self.queue[self.current]['path'], filename, - self.queue[self.current]['settings'], self.queue[self.current]['kindle'], - self.UIqueue[self.current]['user'], _(u"%(book)s", book=self.queue[self.current]['title'])) + self.add_email(self.queue[self.current]['settings']['subject'], self.queue[self.current]['path'], + filename, self.queue[self.current]['settings'], self.queue[self.current]['kindle'], + self.UIqueue[self.current]['user'], self.queue[self.current]['title'], + self.queue[self.current]['settings']['body']) - - def convert_ebook_format(self): + def _convert_ebook_format(self): error_message = None file_path = self.queue[self.current]['file_path'] bookid = self.queue[self.current]['bookid'] @@ -244,11 +243,12 @@ class WorkerThread(threading.Thread): self._handleSuccess() return file_path + format_new_ext else: - web.app.logger.info("Book id %d - target format of %s does not existing. Moving forward with convert.", bookid, format_new_ext) + web.app.logger.info("Book id %d - target format of %s does not exist. Moving forward with convert.", bookid, format_new_ext) # check if converter-executable is existing if not os.path.exists(web.ub.config.config_converterpath): - self._handleError(_(u"Convertertool %(converter)s not found", converter=web.ub.config.config_converterpath)) + # ToDo Text is not translated + self._handleError(u"Convertertool %s not found" % web.ub.config.config_converterpath) return try: @@ -343,35 +343,34 @@ class WorkerThread(threading.Thread): addLock = threading.Lock() addLock.acquire() if self.last >= 20: - self.delete_completed_tasks() + self._delete_completed_tasks() # progress, runtime, and status = 0 self.id += 1 task = TASK_CONVERT_ANY if kindle_mail: task = TASK_CONVERT self.queue.append({'file_path':file_path, 'bookid':bookid, 'starttime': 0, 'kindle': kindle_mail, - 'status': STAT_WAITING, 'taskType': task, 'settings':settings}) - self.UIqueue.append({'user': user_name, 'formStarttime': '', 'progress': " 0 %", 'taskMessage': taskMessage, - 'runtime': '0 s', 'status': STAT_WAITING,'id': self.id, 'taskType': task } ) + 'taskType': task, 'settings':settings}) + self.UIqueue.append({'user': user_name, 'formStarttime': '', 'progress': " 0 %", 'taskMess': taskMessage, + 'runtime': '0 s', 'stat': STAT_WAITING,'id': self.id, 'taskType': task } ) self.last=len(self.queue) addLock.release() - def add_email(self, subject, filepath, attachment, settings, recipient, user_name, taskMessage, - text=_(u'This e-mail has been sent via Calibre-Web.')): + text): # if more than 20 entries in the list, clean the list addLock = threading.Lock() addLock.acquire() if self.last >= 20: - self.delete_completed_tasks() + self._delete_completed_tasks() # progress, runtime, and status = 0 self.id += 1 self.queue.append({'subject':subject, 'attachment':attachment, 'filepath':filepath, 'settings':settings, 'recipent':recipient, 'starttime': 0, - 'status': STAT_WAITING, 'taskType': TASK_EMAIL, 'text':text}) - self.UIqueue.append({'user': user_name, 'formStarttime': '', 'progress': " 0 %", 'taskMessage': taskMessage, - 'runtime': '0 s', 'status': STAT_WAITING,'id': self.id, 'taskType': TASK_EMAIL }) + 'taskType': TASK_EMAIL, 'text':text}) + self.UIqueue.append({'user': user_name, 'formStarttime': '', 'progress': " 0 %", 'taskMess': taskMessage, + 'runtime': '0 s', 'stat': STAT_WAITING,'id': self.id, 'taskType': TASK_EMAIL }) self.last=len(self.queue) addLock.release() @@ -380,22 +379,22 @@ class WorkerThread(threading.Thread): addLock = threading.Lock() addLock.acquire() if self.last >= 20: - self.delete_completed_tasks() + self._delete_completed_tasks() # progress=100%, runtime=0, and status finished self.id += 1 - self.queue.append({'starttime': datetime.now(), 'status': STAT_FINISH_SUCCESS, 'taskType': TASK_UPLOAD}) - self.UIqueue.append({'user': user_name, 'formStarttime': '', 'progress': "100 %", 'taskMessage': taskMessage, - 'runtime': '0 s', 'status': _('Finished'),'id': self.id, 'taskType': TASK_UPLOAD}) + self.queue.append({'starttime': datetime.now(), 'taskType': TASK_UPLOAD}) + self.UIqueue.append({'user': user_name, 'formStarttime': '', 'progress': "100 %", 'taskMess': taskMessage, + 'runtime': '0 s', 'stat': STAT_FINISH_SUCCESS,'id': self.id, 'taskType': TASK_UPLOAD}) self.UIqueue[self.current]['formStarttime'] = self.queue[self.current]['starttime'] self.last=len(self.queue) addLock.release() - def send_raw_email(self): + def _send_raw_email(self): self.queue[self.current]['starttime'] = datetime.now() self.UIqueue[self.current]['formStarttime'] = self.queue[self.current]['starttime'] - self.queue[self.current]['status'] = STAT_STARTED - self.UIqueue[self.current]['status'] = STAT_STARTED + # self.queue[self.current]['status'] = STAT_STARTED + self.UIqueue[self.current]['stat'] = STAT_STARTED obj=self.queue[self.current] # create MIME message msg = MIMEMultipart() @@ -452,7 +451,11 @@ class WorkerThread(threading.Thread): self._handleError(u'Error sending email: ' + e.message) return None except (smtplib.SMTPException) as e: - self._handleError(u'Error sending email: ' + e.smtp_error.replace("\n",'. ')) + if hasattr(e, "smtp_error"): + text = e.smtp_error.replace("\n",'. ') + else: + text = '' + self._handleError(u'Error sending email: ' + text) return None except (socket.error) as e: self._handleError(u'Error sending email: ' + e.strerror) @@ -472,16 +475,16 @@ class WorkerThread(threading.Thread): def _handleError(self, error_message): web.app.logger.error(error_message) - self.queue[self.current]['status'] = STAT_FAIL - self.UIqueue[self.current]['status'] = STAT_FAIL + # self.queue[self.current]['status'] = STAT_FAIL + self.UIqueue[self.current]['stat'] = STAT_FAIL self.UIqueue[self.current]['progress'] = "100 %" self.UIqueue[self.current]['runtime'] = self._formatRuntime( datetime.now() - self.queue[self.current]['starttime']) self.UIqueue[self.current]['message'] = error_message def _handleSuccess(self): - self.queue[self.current]['status'] = STAT_FINISH_SUCCESS - self.UIqueue[self.current]['status'] = STAT_FINISH_SUCCESS + # self.queue[self.current]['status'] = STAT_FINISH_SUCCESS + self.UIqueue[self.current]['stat'] = STAT_FINISH_SUCCESS self.UIqueue[self.current]['progress'] = "100 %" self.UIqueue[self.current]['runtime'] = self._formatRuntime( datetime.now() - self.queue[self.current]['starttime']) From c05687b89635b8cd4c1fa837c6f13a384b5cb6c3 Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Sat, 3 Nov 2018 13:59:11 +0100 Subject: [PATCH 025/160] Fix #668 --- cps/static/js/main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cps/static/js/main.js b/cps/static/js/main.js index 38a7fb87..2b08fdf4 100644 --- a/cps/static/js/main.js +++ b/cps/static/js/main.js @@ -122,7 +122,7 @@ $(function() { .removeClass("hidden") .find("span").html(data.commit); - data.history.reverse().forEach((entry, index) => { + data.history.reverse().forEach(function(entry, index) { $("" + entry[0] + "" + entry[1] + "").appendTo($("#update_table")); }); cssClass = 'alert-warning' From 38c180a9ea0de85abe60700188aedf65509d8d37 Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Sat, 3 Nov 2018 14:05:02 +0100 Subject: [PATCH 026/160] Update translation files --- cps/translations/de/LC_MESSAGES/messages.mo | Bin 46086 -> 46877 bytes cps/translations/de/LC_MESSAGES/messages.po | 602 ++++++++------- cps/translations/es/LC_MESSAGES/messages.po | 525 +++++++------ cps/translations/fr/LC_MESSAGES/messages.po | 606 ++++++++------- cps/translations/hu/LC_MESSAGES/messages.po | 691 +++++++++--------- cps/translations/it/LC_MESSAGES/messages.po | 604 ++++++++------- cps/translations/ja/LC_MESSAGES/messages.po | 604 ++++++++------- cps/translations/km/LC_MESSAGES/messages.po | 604 ++++++++------- cps/translations/nl/LC_MESSAGES/messages.po | 606 ++++++++------- cps/translations/pl/LC_MESSAGES/messages.po | 604 ++++++++------- cps/translations/ru/LC_MESSAGES/messages.po | 454 ++++++------ .../zh_Hans_CN/LC_MESSAGES/messages.po | 606 ++++++++------- messages.pot | 431 +++++------ 13 files changed, 3788 insertions(+), 3149 deletions(-) diff --git a/cps/translations/de/LC_MESSAGES/messages.mo b/cps/translations/de/LC_MESSAGES/messages.mo index 49e8d232c7aad382026e5c30ed9703594f3ff0f2..5d20a5b6ab7ea56f08ae334e621525acd0f982be 100644 GIT binary patch delta 14866 zcmYk?d4SK={>Sm}tY)!}8Ozwd#tdWZ+oVBc4>cGwby0lHe2p<k8{rFEbsF^=kxha?r+|O;B`L)JDF`RNDQ9F7==k#8QYrOP!kNW=Y!1=Se5p%SPjcC9Ph(WT!dP1 z87h#~sCl2Pc}p2wZJu0fRQ(PJW5t9R>8K|2ya65y9>3k zLad9EustqC1$Yo+Sl{!OHJm|3_$6whAJhS>rnwU}Mh$F^vDg;1vp%SCw^{uT(}#6w zACDS07o%|@DzH`PXou@5)Wqje9gkRtcdh=h`8jHW3#iooj0)fyYQo?yu2HBA#8^E6 zHGc}~F5QG$C%p^juZgl~P)bK&#aW^zEJHn?ff_j5EXRs7L%pF*9`A`e(L*4#Es7#&3)>x?z`PXZd+Q)t1Lj|w^71(;z1W%(b-*(iF z-oh~a*1UubsQ+s9*uL(#c+@R#f|{=zD)qfl^JMfT|4K~>4O(b9R$NAGOnnQ6;xW|D z-$UK{Pfv@)SZd%=k`xV^=pOU*aItJKU6^Js14;g6m%wYQ44QGE%X9b!h@&< zj+kGg`i1m&Z*eTvqJ9fW2k_>MmFepzNerw z{{=O1^g#D6#GrPTh8(MB2x{V0n1ZjMc5=bIj7;eH9d%^EgWOD3LhUpLm62Mgz%nts z;{B(f2$!JFWE(2QZ=y2svDGi47W@;VG5l6Hr7@@-)yH5=K#fnrid5V4?x?`}pcecOyQ3Gb8GI2j@p~ct)SEFw2KCFVDVtu@bl`--*cgM9*J8p~$ED5!d7N`$g zH`JXPijE3}6e95f)WR!J1J|I=>~Yi)?M0>d9aNwnp~iiVQTQEd+^^HE|Erf&;95D5~Eb_B`LMOGLuF*6wLgnm zXGc2u*N?#-8Y*^R{));(&|o)p5tv3j9(5#{r~rMa0P|5_xDwRF3sIR{hWg9r8C1W0 zsEoW}9(O3{>^?%B=~t+Uub=|>(+nNrE*y<&uZ`;85H)d2Yww5(unShhey9a+H%Fu9 z&qHO(DWRYVr=Y%A4)O=CXE|!(Bd8s{hdQcLs0l8h#{Gm^;F{Hghq{49Vi($LqXNo6 z%{R)-MFMac`EKsQzbA^PR&O zyoix{|No|-%MqF3cC3P$xF%{qJ=E<_wC8E44D>+t8-UGmC|1YmsJrx_`7kOI8&I$7 zS=8OQj*)u*)gj*MjZqV(SiL>QQSX9UUf9&p~THjvDwO#^M>&&*@L7-~Y;47AR_5dsKio zp#tk~rlaP`$|C>jFp>r>Jk}l*qAp1(D&qT56D+dlk3=8lrw=lCTXXqu%p7Q1gt#I4nc`J+Kh< zg*=AZ@wcdXFQEc-exabqJa@QXx+t?gYT?$Xg>SI>O{j_bnYUsM>KUk`^rQMuMFo1V z)#soBd;ojnDr6qV^NCyVd|_TdE&K!O4qQbYP1wI&tDtrehw2xP+DQ|8-rDM^_WWk_ z@_Ya)Gx?|^n}zN5{x7AV1rA~(Jc63=J8X-;Vn=K?+)d?3Y)O3z>e4-h%HToN&W~am zzK=IxwGnQ>{ZR7`LIr+1R?+)Enu5--(41)<7Gqu7SD_-_iAwPS)Q9GMRO-J%1#lJB zFNpu@P`~P^1rt&8w?Vx%-BFi&7*_oKpG!d*C`1jIggUEP*1j0Evz4d`)|tCd6CFYY z^fBsazC+D(33c25Km}0gPPboeRG`Usl7CHj0}Zut5b7_T98`+tV=Y{UO>q-8!{eBU zS5XVpzsn6c8T(W3g#Bx^=Dn1oumB`UR@P?_mx&(qB; z)WUb7#^<5lib<&c)6Kb9kNP6iW!{9!%pR-1>QK$Yj)I8iSg6 z9V)=5PyuX1rE;&;-?aJ%s3ZFlHSRl9fLBoCuc6wVV4oX66skikD$;mNz+`J5XzfE# zDIH}Np#pGF;}@eAUV)ltjny}!`t3k1ydUZBcn(>Iqo_>0k2>>DQ9JwvbreBk+{;%J z)t-#H107L2`WNc*jX~X|T+_i;)K{VAc^wt#hZS{)9}xA(F@p6yEhs2u9Z{+2V)b5DAAowz zhN4pHx926Oj7>w0n``ZhtX_@^c#ZiC_M`qH_Q4=O`PaaH6m*NzQD-~SEI(m;{`RhSb8j`RTs-A&5lHsU{ zvN04VppK##!|(yrf=e+RA4VO)dTZZ_8uub<+&eo;^ z_}l7Hx$Z*M&DyBT*bv)b3ToovsCh=CcI?NSaFRXWjXKho913kI97Cn}Z`5t=FwXt2 zTpzZlz6dMfe$)boFanQa5}vg7>t=AC`yGiujjN2xOe{uXQ)_qH+Jnxhvmb!EWW!On zbsR?GObo~Q<`UGzE6qnyJAE4KCTjjKFq-u}-%!xNUr?zI&3Au< zZa{S$femmBDl_+@cCr{1;40JtkE70f8)}CERKU-p#=VJ}=R;J#U$C~`|KC->m;%=n zOrhQrwZH`If|F4T2hfWzqwc~P)Pm=%{xvFN-=q5ff>HPv>e59{aNFynqY08IXg~|I z1M17x1@%1L%rr-!CiYoX!V8WGE`uzP?=m~^(Qcz`qLB0zZTwQ9rj{Z>aU_Q z@E2Cb=7sL>e=2GRccR8kM5S^HYJnN%Tx(xwE=7%d2$hLVsJjs;B>$}`9H-$%{0pmM z=OXva`k{83iOR%XsOLHMyaa=(&qAH;TvY!jPys!QdMkFJ7CeYe@GNQrAkK$O|f%@RoE^&99h1!4* zmC;<(Mx0U#)hNtCEmV#%xE^(;yHJrIMNRMxs^5>O3H~snO5L5-MP(obHE##2_d;Ff zK^Ti!NFa_U-yTdcXPb*qf3vMLcc21$3v1#TY=xJxIyNeEGuIXs*uPKh8xglK7yU7pRjtRsazQ9-LW&S#AbLLHStw5Y?}L@YBe#H_Wr0J zBL{U9Ytf5)u@Ro0M*h{|4;pki>fGa|I2)CsGE}59Q5ksvwWEiueVw&$HlH*1qcZXq zD#Pz!L;MU|;@=pLEuHD^H@_c_rePE+wFgiOzlU1*EGpt}QAZRt!#&fwsDN5wAMAw6 z$UUeHEI=)^9CZh_Vmo{l6_|5{f-Y6aOm{$>*$_2xGgJU=te%ECvYu8Sgj!%2s$UT* zz-ib47g+l%sK5?mcRY!#>v(E$1iF>USO;&k`cN|)HLw)5quJ&{a|QOMeI06NU*KSj zy_c^d`Y{bZ!DOsG%l*Tq2Zpk~CyRn69)U_x4r+%}P=U=x9Yr~I#Pz6Owf9l4=SQgV zXHglrVC`415%u3u3&+oP|DCWGs{aJZ`kqM?v_l8$;)AG#H)1_}0d++0qZT-idfzXb zf1!>ldX8&N)a9#(TBtEMU9(>4RHx-zHM0XeL=kiugxX@$rLWrpaJpsxjS!yjj4A;9Yq%E z12h^H=wz#}z^2rnMFsvYhT_*)8!w_34xQ)DAC1aHEGA*wdE`HZLKY30U=}L%D^US$ zL`A#dcZC@(Girg*2i-r#B2Y&Zjgja@?KlN>H`=0( ztP@t%`#+q5Qk;hxFdem{c~}`2qb}nbY=Ezz?#OA>2kRm#(6Ghsj^j`ZH9;+$jM`vp z^kOFJ5>CPdz5mN8RK?w>gggEyQtgz9V+D^OI$0X`p023Hb9MQj=EEAP#Z`^ zWv-V!zs;TxLq`jYunwix!9iu>K5JisRj9AF`X*Ec0+@`iq56N1+WA%UIx4WBrS1_` zF>7E&;7iHBzC;aZ&;o-|1MV`%qt0>?>i2x1wf`Hn;4#!hAEEBfXQ-WrEORp!g?ft; zQ1hmu#`QD@EhGOmXvm^Ljzgtt8dhY$>Pt}X|7z4k&!Yl9hzj5YYT;8@6+gpj_#n6IRC_*c*qS7Fvl~=n2%sJ5USmM=f{=HSU@5#NT|K?Z8UQP>i5QE$l#RLZy5 z^F7#$`aaZa9Q=^mFA*#L_rIRcH zIFAbKGHU17P~#(3x*MsAnx`37{QG}v3ffUuv%hs1hD!Me)B-u?-KdPrMD27HYT?H* z4!5BC{~MK&du$2=$$qg8I8)0csxSkQI)a@1ZW$Db#y>4waG1_T00^%}h8d@MyCZ zDy5CB-W;`XN9>5*P?xh9YvO#j-SMoYppGX{-|&x7sreH-W8_-*+uswl)2Y}2S7AIJ zK^@U~)I3*EslSeWvF|!J;0I9~T8;|*F|4NF|7R&EqL)w+9!CZ66}G_3sD&Cl>e?BV z>I~G`=cD@1MlG-yb(CvS0c}U!u@_M595z3Z`u)E|K^;TayOC8vO;88xVGGoe^g}H? z#LPoowpmtRjXHu|sI%US3h0Q{PnqAM0{;V@MigQmb0=z#t*H-0rF0tB$NRA*K8Y!K z0+aDN>arz0?)GnqgQ(w#192W|=kKC2`vq#f-%tV6d4l{a(l$@HJMUo*MC~*S^Xr`+}`sD6!63$;XLuD!MQMrAr36~Jf=Lnn`d7A`_vvPq~*cQ0yz zwWxucQQ!Q%s2v~26g-VeZTQpfgt6F|dOSA7uBg{|1nRP`z;N8^)*a7t6cqVU)B+!& zCior`vD!vABOOr_4nk!j9~G#Bx=d?O3+%#Hcm#FXu3-|^-Q6ltwW`L7b@V_&37<@`f1cWUt%Tv4wbnps7!`#cK>0b2KJ^t1}lF5 zH&Rf?-Kf;Qfg12GYQnSF2G67JMy+Su=dDqfunUIa0F1=J);=6HUmj|nGSmj9W5veM ziK1a0g{HU()$urLqLZjVKEqJ_9+kSEPzy#r>t>=FYRB=Y1rn^@2{o=8CSXt0ynfWY zMbDCd4V-Qd=A!D0F#=bjB3*CKx1s`k-rR@L)L+LN@dPTc=q>KJ8mOadghQ|+>iIm> zMiy=1{JT-uK*LS=IkrddRyXAtm_~gLD)N1(2@azIJchcIA6omb=5^F}BzT*

Wg} zuqtZdM67~c916O%x1fGx#@K@ysK^(h7Jdx1^JmPRs7$?J&kvyHc?(ywlUC0IM3t4h?+OXGmD!mVpUT z_5G#39ABx=TT+&t?Jp@ATUJmo)mt`^Hh)eaFY|0zQ-86Sc}hKl|Cuk%o0MGWo8WI= z^1rr{K#vitgDX!g@MY%}=6c8G75D=u@5~Jer2B>k)%JI5Ff^!YyLPSGcJQ|AnAWyKi?;1HgcSvaq_%FmA!1^sP%rx~uRkRr`u}1K zgiQV-s798*xWJ$5FD~@v`iqKl3fb)xKf9e?BdGko88LykW;`Ai7&E6dJaB%&;>e)E zfwFR6a2q$-{zC8Mvf>=@7mqC}$SwBgWsmdv@=MEnBs$MuTzHtSC6;DkJD(}CuZZkh;`hT1Bj>{{YRyM6{?7^3FiE~m>@i<>05eKe3-8!gB zhK|MW&2SIJyJ>h>lQI5$UtwV>cjdna^G_3tjm`Cq@t05DICzsml8_)xuAXiv>iA;x0u6JK!oT0#XFU{d_aOecipUd+$H*nK@H_^P4&63Eo}tuh5x4h5BE| zhcEW{zy4vKmx$pNRQsR*yKuMXm7sbN)A0`0!TK4le}Ak_eKN-5D(s0nQ2nDDdtMA? zVgzPmG`4qj-|J2xiiX}u4Bj9tf&q-hT=NOk1as{90`nz|qkRJw$6XkSA7MBiMlE;@ z708#Ud4DW??t9*4>u}xt3$;*m6VEG)aj2aoqZVk23a}k2Sv{~A=3-@>it4u#wXv<3 zfV;5)eufG#tSR%dzE^~T8Y-e9td5!}O&#z7)I@_&{YGLb%th^N25Q_qt1mOxU;^!% zQR6)REmXy=HD)Bx;_b zsK85Fdu7!4>dnZ%7EY%j1+%a=4#hgS0GZRFdmg6ZYAlVP zpfda|Cg4r0$KT_5yhvUxpMrKg5EW?-YR3~$DVkzVN9}YD>Z}W_eFbXVI#dQ;Ma{PZ z%i}(*f~Qdd+(89Yt~vJ!{rVJidl#Z6T8+xcCe#E$dwvvk8Be47T|%ylcLNnz`n}Ff z)a7iAN^vh#00GpvXHZ8u9~tL+t6jl+#X9UT-$L!=ebkPRS^HOb7xf>^Yp4LCTDS#D zppLE_DkE)B8|;9Mus14zc^J$3-YN=;_*GQLeOMVkMO~Ups0D9h4J_8u9Zf^jjxtdJ zw89kZfK@Rcm7yir4?n|dShtn?Vs^zi*7wF!(3#IbMLY-f`Yb?AyxQuo*z-5BA?@#> zzL-~0cjbn8$Bbz0=8Z*d=q{{;=~xxJpsxk;DHL8d)Q+d4Ztr|lAnQ>X*o8{n0n{Bi zh3fwU>Z~uJGV+HRp6xaii&`fhb@?iwGSx7f{HIaqOM_mkIrd-|Du6Snz^un(ukk-CEX${3|sZX;5kopmul;tKba`$AtUb zjw_+wf>hLwv#W^X#>T9q89ze}|3(H|bdlygxjMDqxgo4hx z1#034F$Mdhb~Xb!1#dZO;_tB*Mt5*2Zivy;?=w3i6MMZ-M==nKU;wq_TvTSpVFSJY zK?+*<94gX_sI!Uf=u(}6%19Hdw?{457mMOhjKN%tz{wbj(@;k>9o2u4Jzs$eY%M0S zzPHI54x%p6QPhCbsKCym7P^4d@FwcgCU$cDvoMi*dyK{5s2z{P!ZSt%HXXH**{BcR zOX%xzZKog)qjvHWYT+xWfxn~9?l06)m3zRYI1LqO25Q{BsD<01#`Q4!p!y9&%{$V} zeSrL{VFC?tI2AR)T+{^1P!q32o#`fP-;V0H+n(=3ZQzjA&!bX&*}QJ;w^131=1vp ze}IBgbqux83DlSC4DyGn_bY1R)UIwv=@>`7F=~SQP~*Cw7I?_&15tqu$7c8#DxlX< z^X+x|-bWM^z!6l+K1ZeS6l&sMQ4`;=y4TIsqfq@zpe8JX>R-v~HLPCOY=r9H3^iX% zjMw|$o`QDLA9Xo~qdJa8O*|GgU=r%~KV{FCp~kI5_1lE0xE)L2m#Dk+i+LTDiIDE@ zb-f46>HY6RK@;VpzIabqeGzKGm8hfGi3;o@YNuDtTc`|%^l*15618wiRA7}*^CzRm z*GFB-4D>ZoX9_y22T=ouqIR5vdOp$WK5D{QR$qV$@CDQY+wA$9sB!zuk5Th|YMw#` z{9O<7uZYgkP!cbo0?@x8wNO!1U?owPr;4@LMUA@~OJOtA&uSNYJ_^-84;9!{R6w)L z`Ka+rdXj&2SWbf$++Yv3Vm$Sos7Mc>COB-*|8Dg!P;bMx<|S*tgW5>MgKk_2)H-Fc za3j`U*QcQOz7cAnmZ*;RS-lG?bv;o53_$(31h5{CK)v6~Q1fiU(zpxt_rM|4moe@k zx8qu!G_n`jRJd4U;SRc3ZVyNGUQrH+f zqXK>gHScq%z?Wh%z5lBz=nS`-?^=hWm_YkURK%B2Dfarh4@@ak>T93^XpEYtCF-r{ zin_$ZP)9Newb5y)KxUz@GbykKt5F>{p(fa7eu$dr3)GkG0%}Kpq9zLEpEtVI#ZUnx zp!%hv0?$Ov*AC0#0Ms8cJ%zNSIo!(u77#d#!^u0rJ*v{cmVlVO4?b6u4XUPjvhuWI2v{9C!+dKHD_W4>hn;S zbu%g>d#wHe>S&H(d;ALZ83g5B%A*-K6?dTk8 z+(lG?*HGhcTYLCG7eFlPc^OooiC7i=S`_r46Y4>C)EN#k$D#sw64h@3YT+fQ{wu7$ z1=Vi{DxiI+{s&S0KSgEY1nQ{2MKV!UnlZQW~}MTB!C6)E&4VwX;W2mv21k zGCghdjSWeXk7#yhrmO5r?vz6cf2a?~x~ zfSTxa)cd~2>Ibm~_0Oz+9hLe&QR5>6?g&c+IDe(QG!0s)E-H|QsEM1QQr^nidtf;A zeyDMSP!mtW2z<)wv#kC+s{c}}FGmIbvejP;kbf-{q(Q!gx_tYv9v-odf1)M|8|HQz zjm@biUZwg zf>F2)m6G6&hd^4Nc9Ks55PciP*>5 zCt%?~jHZ1iDzN#e{spM#>o6L(SbZld(6>?Re1vSk_l{7|rTYezx(n8!;z;*tt$}*p z67`xsfLdTU>ZrzG1DuT2@HKmW3@cJUh04HnjKT0xZoW7SXML{%1??aSmD1{{0U4+X zvQcM07>zaAX14xgh2o3{(c1qrUa6uqHl)vqL;@8Y(kIa@~K=FN69y?}%0K8BD=fPuCg zKg=4&qi(N{+UaamASfbI5wW z_mVwWkL`JI6t!@|I5#jE6>(!!dkfUv=!6QO7wVGbS^H$G&p>TxE-E8S&9&CP4J+#X zf0Keze-gF88PtS7qrQAsuoM=5%mq>%HE~_kC2DLo$GfPvL5+V1weZ8Jc}H9OL{tW* zsa@~?d^Y0&EwGueIPtK&fGS*TR5KrOr-weUMw84sY2 zp*E<12ciNUjSX?KwfkEsD8e`KUOa#bAnFNs856J^^;%YMjn%35u=*q{O??j5!quq2 z51Ick&tNv~=TIB2J(XWTz5o3waG$)bn29wwlA1UWHSuiJZC!<$cpYkouc3Cn5B1g@ zLLJd*Y=l3dKHU|kx!1G`YJ5#pM$$1-?|&AB$~3e_Ej$EM@j29h-R66!Onrb=i2+oF!FhuIGcfB%P4&_bh76Xm0Rgyv%d3}On&b%Ea<51MCe-?GOp2rkiW96&!~;f+bi6SEB-a!|MM)1@a5(3mX5lJIWL+OTEt1_=g6R7^@QGx!7TKF$izr-2tmZxKN>H&NJ=U`|20y|>rOwK=o!uXkPCsR-p z&qQ6O`51{WVNHA)btw;_F5!2m@543JTNC|^3#dG1QBTDVILzuhur~Eecn?;!}Ps5 zZsHgWqeEF#YAT>!#}OEdYcUzOV^utfO8qU=LNU)e6R-&NRI4{Kvr+T+z)!%B6az7Dm(7JL4oJ^vJyiR0G(4Hl#Rv(;~+-j=X=?(&vG z^}h#|;kM|j(2;^7>xw#~{^lSoj2!hLdK9(5YE=KN=3A)OZa?bx{VQvapYIl|gqo)& zDwFk58|yxw^H<9H(4f~T4>j>jRHO^d<*3(dgSiKlsZZ?rajSoW`VRbznkQ<33%DdI zfGVhkQ!x(fFChQLDcnng7VL~Vir%ORhM_K99%{iESOOPdHm*VSJBP~571YGu^KQZ7 zs0GVn39MxGdZ_*xK85=!WZQ$esD&1xCSHX)qAjRPvmN!R-HqyZ1QqZp)Iw)bm+yi- zzh-rBp?e;K%0vlN0Dd`pkc^7Fu64-5yQpWQCVbF*7`5;StLK|jP?vNDD&Uo<4Xi~i zxDD&z8>l1y5y`mk{b3y<3*7&5ArAE(cSCg?hdP?)P-nZu>OoW{_M$#i|3GD^_#(H{ z(q{F=mC^~QR82+g=s9zlJzs~)&=%AJJI#Hl zd5)qsa2~brWz;AA4=nuqKYp>>X=T)9Y>Y}_TU0s)=t4~=%{?+kW8kD+)s0mh~cDMz#!yqbv4^R^xMlJjmYTUP0zi3{; zY}#*N8O&Ph#&t&>$zW`Uk1yr?b=f|mK|4EdUPJ|Q6_xV8P)AT?nX@7)p!%o{G_`sQ z)I9CX&Zr-wo>&(1v2eqvU%`bw1x>UV^?_K4`omxwYNCtgRr7b$W%>(sDPvx6J1dLo zpNz^(9aP}yW)>==ZLQuJwXWZXLL&-8urw~ilDO5{-$!-4f%H% z0G6Zvgw>azQoR**q`OfYJ7D$W<~c0G`rZu+l`(FmnZagO9bgYA`u@)Y| zns^g+sj94U{cB=J>UU!YdbOxzjY-r$L}lPCYMra7`kmFBzfu~z#{Ewu%b-3a`Pd96U={{Z zDg70-z)e&DAuqeLErF^hq86xaW}wEk#KPASHNLa8_j=iP4FhRV3P+-Lo{Q-?3pL?e zs7vz^>P~!tI+_dC{yVB)v9)fYa;VHzLbcaNWx5$EfR3nudioT!a9>m=2BR+9Bd7&t zp$0C-!f!e1HouL9mkMi9KW=qzotrogtI%EwD`5ueb?u3|tn*Oo`WvlbD=N|hsD(a9 zO>iEoW6XM&nKaad_n|TpKm|MrHSuDsi(65b?KIZFKT!RvZg7_`1KFVOb)uk1`k*o} z$m*j}JIq4`G!2#d#i&3xnL$)a-^EBgfI9P|sLY)}W%4{`<8P>Wn{L!|&c7`MrL-5S z<4}ymu~-i$qVB{dd;T}nWjlfqcp4S>_tt&^HQ#O2JW-om;BlzHt6(zL!NR})yHn5v zeXuY945vO8^`4GLEi@N3K>oNRSp7}ZxP4d^_oL?hCu-iSsBzvau00wH|NCD& zg=pH#qf%4NI;5j^(9CRw+F3hniak+*%}0$}j5?~d*cJEK^CFwwMoQp4w5MQm3~VO< z4JfRmL8(58nHaUjMc4|pKu1)7-B6dWueDD$r(qcFGf_L7gZknvL}hRjD!}(pm-Gng zH{;wE&R-8gUUiWd#~A9>Q9DmF??z3WWzVxw6Fq=+aX1#m#TbigQ1fg>1-1wEHob$I z_iHSIXMGCl_^UPCLVZ#rUUT34(ils<0jA--sQzP6JD7;N0|lrZZ$K^Z4(cdAK&AW? z*1|Gd-T0Q6Ox^E5L9a=kJ(!MKa4zaHy@=ZRD%1iSQ48)x?dUVq(OkibcpH;2VVm1P zChE0&2#euz?1r0>b$stn3N>gbvfV{iAC^^;b=jT#X0x(lo*s$LvJF#&b^G;Jxs((TaylDPr?YB*Dhf8e)>IjliZ$neez+R}= zay}|E2T==ugUZZRR0eM2T^JJNpLI%gNecQ_mqqQQF{)#0jK_AEg8i^IK8?!2cGUQ{ zP-p)xrsC;faC63%h~Uhuc_G1i%@2k~=MKuxpOBL`wBTPY&h}2KQFB;M-lK!YrRHZ+ z9-NaiIyK*Goik>9Aa7jKxSY)Yl>hHjI^^U$!k{6pcOWk{KWR+PxTIk@kBu1`{JP~k z;lZ`{-5*grke@UtFOZZM$bDqckigL3`3}iNg0&w!6A{elw=gt#YQT`NA|vyY^2g=m z=JL4V;K3omtwU;t6jTcQ9!we5KfK`OQGE+yN6!kb7(FyJSZ7RDNN_?= %(rating)s" msgstr "Bewertung >= %(rating)s" -#: cps/web.py:2035 cps/web.py:2044 +#: cps/web.py:2089 cps/web.py:2098 msgid "search" msgstr "Suche" -#: cps/templates/index.xml:44 cps/templates/index.xml:48 -#: cps/templates/layout.html:146 cps/web.py:2111 +#: cps/templates/index.xml:47 cps/templates/index.xml:51 +#: cps/templates/layout.html:146 cps/web.py:2165 msgid "Read Books" msgstr "Gelesene Bücher" -#: cps/templates/index.xml:52 cps/templates/index.xml:56 -#: cps/templates/layout.html:148 cps/web.py:2114 +#: cps/templates/index.xml:55 cps/templates/index.xml:59 +#: cps/templates/layout.html:148 cps/web.py:2168 msgid "Unread Books" msgstr "Ungelesene Bücher" -#: cps/web.py:2162 cps/web.py:2164 cps/web.py:2166 cps/web.py:2178 +#: cps/web.py:2216 cps/web.py:2218 cps/web.py:2220 cps/web.py:2232 msgid "Read a Book" msgstr "Lese ein Buch" -#: cps/web.py:2244 cps/web.py:3129 +#: cps/web.py:2298 cps/web.py:3201 msgid "Please fill out all fields!" msgstr "Bitte alle Felder ausfüllen!" -#: cps/web.py:2245 cps/web.py:2266 cps/web.py:2270 cps/web.py:2275 -#: cps/web.py:2277 +#: cps/web.py:2299 cps/web.py:2320 cps/web.py:2324 cps/web.py:2329 +#: cps/web.py:2331 msgid "register" msgstr "Registieren" -#: cps/web.py:2265 cps/web.py:3345 +#: cps/web.py:2319 cps/web.py:3417 msgid "An unknown error occurred. Please try again later." msgstr "Es ist ein unbekannter Fehler aufgetreten. Bitte später erneut versuchen." -#: cps/web.py:2268 +#: cps/web.py:2322 msgid "Your e-mail is not allowed to register" msgstr "Diese E-Mail ist nicht für die Registrierung zugelassen" -#: cps/web.py:2271 +#: cps/web.py:2325 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Eine Bestätigungs E-Mail wurde an den E-Mail Account versendet" -#: cps/web.py:2274 +#: cps/web.py:2328 msgid "This username or e-mail address is already in use." msgstr "Benutzername oder E-Mailadresse ist bereits in Verwendung." -#: cps/web.py:2291 cps/web.py:2387 +#: cps/web.py:2345 cps/web.py:2441 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "Du bist nun eingeloggt als '%(nickname)s'" -#: cps/web.py:2296 +#: cps/web.py:2350 msgid "Wrong Username or Password" msgstr "Falscher Benutzername oder Passwort" -#: cps/web.py:2302 cps/web.py:2323 +#: cps/web.py:2356 cps/web.py:2377 msgid "login" msgstr "Login" -#: cps/web.py:2335 cps/web.py:2366 +#: cps/web.py:2389 cps/web.py:2420 msgid "Token not found" msgstr "Token wurde nicht gefunden" -#: cps/web.py:2343 cps/web.py:2374 +#: cps/web.py:2397 cps/web.py:2428 msgid "Token has expired" msgstr "Das Token ist abgelaufen" -#: cps/web.py:2351 +#: cps/web.py:2405 msgid "Success! Please return to your device" msgstr "Erfolg! Bitte zum Gerät zurückkehren" -#: cps/web.py:2401 +#: cps/web.py:2455 msgid "Please configure the SMTP mail settings first..." msgstr "Bitte zuerst die SMTP Mail Einstellung konfigurieren ..." -#: cps/web.py:2405 +#: cps/web.py:2459 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Buch erfolgreich zum Senden an %(kindlemail)s eingereiht" -#: cps/web.py:2409 +#: cps/web.py:2463 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Beim Senden des Buchs trat ein Fehler auf: %(res)s" -#: cps/web.py:2411 cps/web.py:3183 +#: cps/web.py:2465 cps/web.py:3255 msgid "Please configure your kindle e-mail address first..." msgstr "Bitte zuerst die Kindle E-Mailadresse konfigurieren..." -#: cps/web.py:2455 +#: cps/web.py:2476 cps/web.py:2528 +msgid "Invalid shelf specified" +msgstr "Ungültiges Bücherregal angegeben" + +#: cps/web.py:2483 +#, python-format +msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" +msgstr "Keine Erlaubnis ein Buch zum Bücherregale %(shelfname)s hinzuzufügen vorhanden" + +#: cps/web.py:2491 +msgid "You are not allowed to edit public shelves" +msgstr "Keine Erlaubnis öffentliche Bücherregale zu editieren vorhanden" + +#: cps/web.py:2500 +#, python-format +msgid "Book is already part of the shelf: %(shelfname)s" +msgstr "Buch ist bereits Teil des Bücherregals %(shelfname)s" + +#: cps/web.py:2514 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Das Buch wurde dem Bücherregal: %(sname)s hinzugefügt" -#: cps/web.py:2466 -msgid "Invalid shelf specified" -msgstr "Ungültiges Bücherregal angegeben" - -#: cps/web.py:2471 +#: cps/web.py:2533 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Keine Erlaubnis ein Buch zum Bücherregal %(name)s hinzuzufügen" -#: cps/web.py:2476 +#: cps/web.py:2538 msgid "User is not allowed to edit public shelves" msgstr "Benutzer hat keine Erlaubnis öffentliche Bücherregale zu editieren" -#: cps/web.py:2494 +#: cps/web.py:2556 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "Bücher sind bereits Teil des Bücherregals %(name)s" -#: cps/web.py:2508 +#: cps/web.py:2570 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "Bücher wurden zum Bücherregal %(sname)s hinzugefügt" -#: cps/web.py:2510 +#: cps/web.py:2572 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "Bücher konnten nicht zum Bücherregal %(sname)s hinzugefügt werden" -#: cps/web.py:2547 +#: cps/web.py:2609 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Das Buch wurde aus dem Bücherregal: %(sname)s entfernt" -#: cps/web.py:2553 +#: cps/web.py:2615 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Keine Erlaubnis das Buch aus dem Bücherregal %(sname)s zu entfernen" -#: cps/web.py:2573 cps/web.py:2597 +#: cps/web.py:2635 cps/web.py:2659 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Es existiert bereits ein Bücheregal mit dem Titel '%(title)s'" -#: cps/web.py:2578 +#: cps/web.py:2640 #, python-format msgid "Shelf %(title)s created" msgstr "Bücherregal %(title)s erzeugt" -#: cps/web.py:2580 cps/web.py:2608 +#: cps/web.py:2642 cps/web.py:2670 msgid "There was an error" msgstr "Es trat ein Fehler auf" -#: cps/web.py:2581 cps/web.py:2583 +#: cps/web.py:2643 cps/web.py:2645 msgid "create a shelf" msgstr "Bücherregal erzeugen" -#: cps/web.py:2606 +#: cps/web.py:2668 #, python-format msgid "Shelf %(title)s changed" msgstr "Bücherregal %(title)s verändert" -#: cps/web.py:2609 cps/web.py:2611 +#: cps/web.py:2671 cps/web.py:2673 msgid "Edit a shelf" msgstr "Bücherregal editieren" -#: cps/web.py:2632 +#: cps/web.py:2694 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "Bücherregal %(name)s erfolgreich gelöscht" -#: cps/web.py:2659 +#: cps/web.py:2721 #, python-format msgid "Shelf: '%(name)s'" msgstr "Bücherregal: '%(name)s'" -#: cps/web.py:2662 +#: cps/web.py:2724 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Fehler beim Öffnen. Bücherregel exisitert nicht oder ist nicht zugänglich" -#: cps/web.py:2693 +#: cps/web.py:2755 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Reihenfolge in Bücherregal '%(name)s' verändern" -#: cps/web.py:2722 cps/web.py:3135 +#: cps/web.py:2784 cps/web.py:3207 msgid "E-mail is not from valid domain" msgstr "E-Mail ist nicht Teil einer gültigen Domain" -#: cps/web.py:2724 cps/web.py:2765 cps/web.py:2768 +#: cps/web.py:2786 cps/web.py:2829 cps/web.py:2832 #, python-format msgid "%(name)s's profile" msgstr "%(name)s's Profil" -#: cps/web.py:2763 +#: cps/web.py:2827 msgid "Found an existing account for this e-mail address." msgstr "Es exisitert bereits ein Benutzer für diese E-Mailadresse" -#: cps/web.py:2766 +#: cps/web.py:2830 msgid "Profile updated" msgstr "Profil aktualisiert" -#: cps/web.py:2794 +#: cps/web.py:2858 msgid "Admin page" msgstr "Admin Seite" -#: cps/web.py:2872 cps/web.py:3045 +#: cps/web.py:2938 cps/web.py:3112 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web Konfiguration wurde aktualisiert" -#: cps/templates/admin.html:100 cps/web.py:2885 +#: cps/templates/admin.html:100 cps/web.py:2951 msgid "UI Configuration" msgstr "Konfiguration Benutzeroberfläche" -#: cps/web.py:2903 +#: cps/web.py:2969 msgid "Import of optional Google Drive requirements missing" msgstr "Optionale Abhängigkeiten für Google Drive fehlen" -#: cps/web.py:2906 +#: cps/web.py:2972 msgid "client_secrets.json is missing or not readable" msgstr "client_secrets.json nicht vorhanden, oder nicht lesbar" -#: cps/web.py:2911 cps/web.py:2938 +#: cps/web.py:2977 cps/web.py:3004 msgid "client_secrets.json is not configured for web application" msgstr "client_secrets.json nicht als Webapplication konfiguriert" -#: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979 -#: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060 -#: cps/web.py:3077 +#: cps/templates/admin.html:99 cps/web.py:3007 cps/web.py:3033 cps/web.py:3045 +#: cps/web.py:3088 cps/web.py:3103 cps/web.py:3120 cps/web.py:3127 +#: cps/web.py:3142 msgid "Basic Configuration" msgstr "Basis Konfiguration" -#: cps/web.py:2964 +#: cps/web.py:3030 msgid "Keyfile location is not valid, please enter correct path" msgstr "SSL-Keydatei Speicherort ist ungültig, bitte gültigen Pfad angeben" -#: cps/web.py:2976 +#: cps/web.py:3042 msgid "Certfile location is not valid, please enter correct path" msgstr "SSL-Certdatei Speicherort ist ungültig, bitte gültigen Pfad angeben" -#: cps/web.py:3018 +#: cps/web.py:3085 msgid "Logfile location is not valid, please enter correct path" msgstr "Speicherort Logdatei ist ungültig, bitte Pfad korrigieren" -#: cps/web.py:3057 +#: cps/web.py:3124 msgid "DB location is not valid, please enter correct path" msgstr "DB Speicherort ist ungültig, bitte Pfad korrigieren" -#: cps/templates/admin.html:33 cps/web.py:3131 cps/web.py:3137 cps/web.py:3153 +#: cps/templates/admin.html:33 cps/web.py:3203 cps/web.py:3209 cps/web.py:3225 msgid "Add new user" msgstr "Neuen Benutzer hinzufügen" -#: cps/web.py:3143 +#: cps/web.py:3215 #, python-format msgid "User '%(user)s' created" msgstr "Benutzer '%(user)s' angelegt" -#: cps/web.py:3147 +#: cps/web.py:3219 msgid "Found an existing account for this e-mail address or nickname." msgstr "Es exisitert bereits ein Account für diese E-Mailadresse oder Benutzernamen" -#: cps/web.py:3171 cps/web.py:3185 +#: cps/web.py:3243 cps/web.py:3257 msgid "E-mail server settings updated" msgstr "E-Mail Server Einstellungen aktualisiert" -#: cps/web.py:3178 +#: cps/web.py:3250 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "Test E-Mail wurde erfolgreich an %(kindlemail)s versendet" -#: cps/web.py:3181 +#: cps/web.py:3253 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Es trat ein Fehler beim Versenden der Test E-Mail auf: %(res)s" -#: cps/web.py:3186 +#: cps/web.py:3258 msgid "Edit e-mail server settings" msgstr "E-Mail Server Einstellungen bearbeiten" -#: cps/web.py:3211 +#: cps/web.py:3283 #, python-format msgid "User '%(nick)s' deleted" msgstr "Benutzer '%(nick)s' gelöscht" -#: cps/web.py:3320 +#: cps/web.py:3392 #, python-format msgid "User '%(nick)s' updated" msgstr "Benutzer '%(nick)s' aktualisiert" -#: cps/web.py:3323 +#: cps/web.py:3395 msgid "An unknown error occured." msgstr "Es ist ein unbekanter Fehler aufgetreten" -#: cps/web.py:3325 +#: cps/web.py:3397 #, python-format msgid "Edit User %(nick)s" msgstr "Benutzer %(nick)s bearbeiten" -#: cps/web.py:3342 +#: cps/web.py:3414 #, python-format msgid "Password for user %(user)s reset" msgstr "Passwort für Benutzer %(user)s wurde zurückgesetzt" -#: cps/web.py:3362 +#: cps/web.py:3428 cps/web.py:3629 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Buch öffnen fehlgeschlagen. Datei existiert nicht, oder ist nicht zugänglich" -#: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827 +#: cps/web.py:3453 cps/web.py:3912 msgid "edit metadata" msgstr "Metadaten editieren" -#: cps/web.py:3401 cps/web.py:3697 +#: cps/web.py:3546 cps/web.py:3782 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Dateiendung '%(ext)s' kann nicht auf diesen Server hochgeladen werden" -#: cps/web.py:3405 cps/web.py:3701 +#: cps/web.py:3550 cps/web.py:3786 msgid "File to be uploaded must have an extension" msgstr "Dateien müssen eine Erweiterung haben, um hochgeladen zu werden" -#: cps/web.py:3417 cps/web.py:3721 +#: cps/web.py:3562 cps/web.py:3806 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Fehler beim Erzeugen des Pfads %(path)s (Zugriff verweigert)" -#: cps/web.py:3422 +#: cps/web.py:3567 #, python-format msgid "Failed to store file %(file)s." msgstr "Fehler beim speichern der Datei %(file)s." -#: cps/web.py:3438 +#: cps/web.py:3583 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Dateiformat %(ext)s zu %(book)s hinzugefügt" -#: cps/web.py:3455 +#: cps/web.py:3601 #, python-format msgid "Failed to create path for cover %(path)s (Permission denied)." msgstr "Fehler beim Erzeugen des Pfads für das Cover %(path)s (Zugriff verweigert)" -#: cps/web.py:3462 +#: cps/web.py:3608 #, python-format msgid "Failed to store cover-file %(cover)s." msgstr "Fehler beim Speichern des Covers %(cover)s." -#: cps/web.py:3465 +#: cps/web.py:3611 msgid "Cover-file is not a valid image file" msgstr "Cover-Datei ist keine gültige Bilddatei" -#: cps/web.py:3482 cps/web.py:3486 +#: cps/web.py:3641 cps/web.py:3650 cps/web.py:3654 msgid "unknown" msgstr "Unbekannt" -#: cps/web.py:3508 +#: cps/web.py:3673 msgid "Cover is not a jpg file, can't save" msgstr "Cover ist keine JPG Datei, konnte nicht gespeichert werden" -#: cps/web.py:3554 +#: cps/web.py:3721 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s ist keine gültige Sprache" -#: cps/web.py:3676 +#: cps/web.py:3752 +msgid "Metadata successfully updated" +msgstr "Metadaten wurden erfolgreich aktualisiert" + +#: cps/web.py:3761 msgid "Error editing book, please check logfile for details" msgstr "Fehler beim Editieren des Buchs, Details im Logfile" -#: cps/web.py:3726 +#: cps/web.py:3811 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "Fehler beim speichern der Datei %(file)s (Zugriff verweigert)" -#: cps/web.py:3731 +#: cps/web.py:3816 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "Fehler beim Löschen von Datei %(file)s (Zugriff verweigert)" -#: cps/web.py:3813 +#: cps/web.py:3898 #, python-format msgid "File %(file)s uploaded" msgstr "Datei %(file)s hochgeladen" -#: cps/web.py:3843 +#: cps/web.py:3928 msgid "Source or destination format for conversion missing" msgstr "Quell- oder Zielformat für Konvertierung fehlt" -#: cps/web.py:3853 +#: cps/web.py:3938 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Buch wurde erfolgreich für die Konvertierung in das %(book_format)s Format eingereiht" -#: cps/web.py:3857 +#: cps/web.py:3942 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Es trat ein Fehlker beim Konvertieren des Buches auf: %(res)s" -#: cps/worker.py:215 cps/worker.py:398 -msgid "Started" -msgstr "Gestartet" - -#: cps/worker.py:251 -#, python-format -msgid "Convertertool %(converter)s not found" -msgstr "Konvertertool %(converter)s nicht gefunden" - #: cps/worker.py:287 #, python-format msgid "Ebook-converter failed: %(error)s" @@ -691,22 +747,6 @@ msgstr "Fehler EBook-converter: %(error)s" msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "Kindlegen Aufruf mit Fehler %(error)s. Text: %(message)s fehlgeschlagen " -#: cps/worker.py:355 cps/worker.py:374 -msgid "Waiting" -msgstr "Wartend" - -#: cps/worker.py:362 -msgid "This e-mail has been sent via Calibre-Web." -msgstr "Diese E-Mail wurde durch Calibre-Web versendet." - -#: cps/worker.py:388 cps/worker.py:484 -msgid "Finished" -msgstr "Beendet" - -#: cps/worker.py:476 -msgid "Failed" -msgstr "Fehlgeschlagen" - #: cps/templates/admin.html:6 msgid "User list" msgstr "Benutzerliste" @@ -853,16 +893,16 @@ msgid "Do you really want to restart Calibre-Web?" msgstr "Calibre-Web wirklich neustarten?" #: cps/templates/admin.html:150 cps/templates/admin.html:164 -#: cps/templates/admin.html:184 cps/templates/shelf.html:59 +#: cps/templates/admin.html:184 cps/templates/shelf.html:61 msgid "Ok" msgstr "Ok" #: cps/templates/admin.html:151 cps/templates/admin.html:165 #: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200 -#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164 +#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:168 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75 -#: cps/templates/shelf.html:60 cps/templates/shelf_edit.html:19 -#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:153 +#: cps/templates/shelf.html:62 cps/templates/shelf_edit.html:19 +#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:155 msgid "Back" msgstr "Zurück" @@ -958,17 +998,17 @@ msgstr "Cover URL (jpg, Cover wird heruntergeladen und in der Datenbank gespeich msgid "Upload Cover from local drive" msgstr "Cover von lokalem Laufwerk hinzufügen" -#: cps/templates/book_edit.html:96 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:96 cps/templates/detail.html:135 msgid "Publishing date" msgstr "Herausgabedatum" #: cps/templates/book_edit.html:103 cps/templates/book_edit.html:261 -#: cps/templates/book_edit.html:278 cps/templates/detail.html:126 +#: cps/templates/book_edit.html:278 cps/templates/detail.html:127 #: cps/templates/search_form.html:14 msgid "Publisher" msgstr "Herausgeber" -#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:33 +#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:31 msgid "Language" msgstr "Sprache" @@ -993,9 +1033,9 @@ msgid "Get metadata" msgstr "Metadaten laden" #: cps/templates/book_edit.html:177 cps/templates/config_edit.html:210 -#: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 +#: cps/templates/config_view_edit.html:167 cps/templates/login.html:20 #: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 -#: cps/templates/user_edit.html:151 +#: cps/templates/user_edit.html:153 msgid "Submit" msgstr "Abschicken" @@ -1031,7 +1071,7 @@ msgstr "Klicke auf das Bild um die Metadaten zu übertragen" msgid "Loading..." msgstr "Lade..." -#: cps/templates/book_edit.html:239 cps/templates/layout.html:221 +#: cps/templates/book_edit.html:239 cps/templates/layout.html:224 msgid "Close" msgstr "Schließen" @@ -1213,31 +1253,31 @@ msgstr "Kategorien für Erwachsenencontent" msgid "Default settings for new users" msgstr "Default Einstellungen für neue Benutzer" -#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:108 +#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:110 msgid "Admin user" msgstr "Admin Benutzer" -#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:117 +#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:119 msgid "Allow Downloads" msgstr "Downloads erlauben" -#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:121 +#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:123 msgid "Allow Uploads" msgstr "Uploads erlauben" -#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:125 +#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:127 msgid "Allow Edit" msgstr "Bearbeiten erlauben" -#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:129 +#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:131 msgid "Allow Delete books" msgstr "Bücher löschen erlauben" -#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:134 +#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:136 msgid "Allow Changing Password" msgstr "Passwort ändern erlauben" -#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:138 +#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:140 msgid "Allow Editing Public Shelfs" msgstr "Öffentliche Bücherregale editieren erlauben" @@ -1245,51 +1285,55 @@ msgstr "Öffentliche Bücherregale editieren erlauben" msgid "Default visibilities for new users" msgstr "Default Sichtbarkeiten für neue Benutzer" -#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:60 +#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:58 msgid "Show random books" msgstr "Zeige Zufällige Bücher" -#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:64 +#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:62 msgid "Show recent books" msgstr "Zeige kürzlich hinzugefügte Bücher" -#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:68 +#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:66 msgid "Show sorted books" msgstr "Zeige Bücher sortiert" -#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:72 +#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:70 msgid "Show hot books" msgstr "Zeige Auswahl Beliebte Bücher" -#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:76 +#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:74 msgid "Show best rated books" msgstr "Zeige am besten bewertete Bücher" -#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:80 +#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:78 msgid "Show language selection" msgstr "Zeige Sprachauswahl" -#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:84 +#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:82 msgid "Show series selection" msgstr "Zeige Serienauswahl" -#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:88 +#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:86 msgid "Show category selection" msgstr "Zeige Kategorienauswahl" -#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:92 +#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:90 msgid "Show author selection" msgstr "Zeige Autorenauswahl" -#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:96 +#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:94 +msgid "Show publisher selection" +msgstr "Zeige Verleger Auswahl" + +#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:98 msgid "Show read and unread" msgstr "Zeige Gelesen/Ungelesen Auswahl" -#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:100 +#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:102 msgid "Show random books in detail view" msgstr "Zeige zufällige Bücher in der Detailansicht" -#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:113 +#: cps/templates/config_view_edit.html:160 cps/templates/user_edit.html:115 msgid "Show mature content" msgstr "Erwachsenencontent anzeigen" @@ -1309,19 +1353,19 @@ msgstr "von" msgid "language" msgstr "Sprache" -#: cps/templates/detail.html:168 +#: cps/templates/detail.html:172 msgid "Read" msgstr "Gelesen" -#: cps/templates/detail.html:177 +#: cps/templates/detail.html:182 msgid "Description:" msgstr "Beschreibung" -#: cps/templates/detail.html:189 cps/templates/search.html:14 +#: cps/templates/detail.html:195 cps/templates/search.html:14 msgid "Add to shelf" msgstr "Zu Bücherregal hinzufügen" -#: cps/templates/detail.html:251 +#: cps/templates/detail.html:257 msgid "Edit metadata" msgstr "Metadaten bearbeiten" @@ -1381,11 +1425,11 @@ msgstr "Hinzufügen" msgid "Do you really want to delete this domain rule?" msgstr "Soll diese Domain Regel wirklich gelöscht werden?" -#: cps/templates/feed.xml:21 cps/templates/layout.html:205 +#: cps/templates/feed.xml:21 cps/templates/layout.html:208 msgid "Next" msgstr "Nächste" -#: cps/templates/feed.xml:30 cps/templates/index.xml:8 +#: cps/templates/feed.xml:33 cps/templates/index.xml:11 #: cps/templates/layout.html:43 cps/templates/layout.html:44 msgid "Search" msgstr "Suche" @@ -1398,63 +1442,71 @@ msgstr "Entdecke (Zufälliges Buch)" msgid "Start" msgstr "Start" -#: cps/templates/index.xml:15 cps/templates/layout.html:139 +#: cps/templates/index.xml:18 cps/templates/layout.html:139 msgid "Hot Books" msgstr "Beliebte Bücher" -#: cps/templates/index.xml:19 +#: cps/templates/index.xml:22 msgid "Popular publications from this catalog based on Downloads." msgstr "Beliebte Publikationen aus dieser Bibliothek basierend auf Downloadzahlen" -#: cps/templates/index.xml:22 cps/templates/layout.html:142 +#: cps/templates/index.xml:25 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "Best bewertete Bücher" -#: cps/templates/index.xml:26 +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Rating." msgstr "Beliebte Veröffentlichungen dieses Katalogs basierend auf Bewertungen" -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:32 msgid "New Books" msgstr "Neue Bücher" -#: cps/templates/index.xml:33 +#: cps/templates/index.xml:36 msgid "The latest Books" msgstr "Die neuesten Bücher" -#: cps/templates/index.xml:40 +#: cps/templates/index.xml:43 msgid "Show Random Books" msgstr "Zeige zufällige Bücher" -#: cps/templates/index.xml:59 cps/templates/layout.html:160 +#: cps/templates/index.xml:62 cps/templates/layout.html:160 msgid "Authors" msgstr "Autoren" -#: cps/templates/index.xml:63 +#: cps/templates/index.xml:66 msgid "Books ordered by Author" msgstr "Bücher nach Autoren sortiert" -#: cps/templates/index.xml:70 +#: cps/templates/index.xml:69 cps/templates/layout.html:163 +msgid "Publishers" +msgstr "Verleger" + +#: cps/templates/index.xml:73 +msgid "Books ordered by publisher" +msgstr "Bücher nach Verlegern geordnet" + +#: cps/templates/index.xml:80 msgid "Books ordered by category" msgstr "Bücher nach Kategorien sortiert" -#: cps/templates/index.xml:77 +#: cps/templates/index.xml:87 msgid "Books ordered by series" msgstr "Bücher nach Reihen geordnet" -#: cps/templates/index.xml:80 cps/templates/layout.html:166 +#: cps/templates/index.xml:90 cps/templates/layout.html:169 msgid "Public Shelves" msgstr "Öffentliche Bücherregale" -#: cps/templates/index.xml:84 +#: cps/templates/index.xml:94 msgid "Books organized in public shelfs, visible to everyone" msgstr "Bücher organisiert in öffentlichem Bücherregal, sichtbar für jedermann" -#: cps/templates/index.xml:88 cps/templates/layout.html:170 +#: cps/templates/index.xml:98 cps/templates/layout.html:173 msgid "Your Shelves" msgstr "Deine Bücherregale" -#: cps/templates/index.xml:92 +#: cps/templates/index.xml:102 msgid "User's own shelfs, only visible to the current user himself" msgstr "Persönliches Bücherregal des Benutzers, nur sichtbar für den aktuellen Benutzer" @@ -1470,7 +1522,7 @@ msgstr "Erweiterte Suche" msgid "Logout" msgstr "Logout" -#: cps/templates/layout.html:83 cps/templates/register.html:18 +#: cps/templates/layout.html:83 cps/templates/register.html:14 msgid "Register" msgstr "Registrieren" @@ -1523,23 +1575,23 @@ msgstr "Entdecke" msgid "Categories" msgstr "Kategorien" -#: cps/templates/layout.html:163 cps/templates/search_form.html:74 +#: cps/templates/layout.html:166 cps/templates/search_form.html:74 msgid "Languages" msgstr "Sprachen" -#: cps/templates/layout.html:175 +#: cps/templates/layout.html:178 msgid "Create a Shelf" msgstr "Bücherregal erzeugen" -#: cps/templates/layout.html:176 cps/templates/stats.html:3 +#: cps/templates/layout.html:179 cps/templates/stats.html:3 msgid "About" msgstr "Über" -#: cps/templates/layout.html:190 +#: cps/templates/layout.html:193 msgid "Previous" msgstr "Vorheriger" -#: cps/templates/layout.html:217 +#: cps/templates/layout.html:220 msgid "Book Details" msgstr "Buchdetails" @@ -1549,7 +1601,7 @@ msgid "Username" msgstr "Benutzername" #: cps/templates/login.html:12 cps/templates/login.html:13 -#: cps/templates/register.html:11 cps/templates/user_edit.html:21 +#: cps/templates/user_edit.html:21 msgid "Password" msgstr "Passwort" @@ -1614,7 +1666,7 @@ msgstr "Links rotieren" msgid "Flip Image" msgstr "Bild umdrehen" -#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:41 +#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:39 msgid "Theme" msgstr "Theme" @@ -1678,15 +1730,11 @@ msgstr "Neues Benutzerkonto erzeugen" msgid "Choose a username" msgstr "Wähle einen Benutzernamen" -#: cps/templates/register.html:12 -msgid "Choose a password" -msgstr "Wähle ein Passwort" - -#: cps/templates/register.html:15 cps/templates/user_edit.html:13 +#: cps/templates/register.html:11 cps/templates/user_edit.html:13 msgid "E-mail address" msgstr "E-Mail Adresse" -#: cps/templates/register.html:16 +#: cps/templates/register.html:12 msgid "Your email address" msgstr "Deine E-Mail Adresse" @@ -1754,11 +1802,11 @@ msgstr "Bücherregal editieren" msgid "Change order" msgstr "Reihenfolge ändern" -#: cps/templates/shelf.html:54 +#: cps/templates/shelf.html:56 msgid "Do you really want to delete the shelf?" msgstr "Wirklich das Bücherregal löschen?" -#: cps/templates/shelf.html:57 +#: cps/templates/shelf.html:59 msgid "Shelf will be lost for everybody and forever!" msgstr "Das Bücherregal wird für alle und für immer gelöscht" @@ -1842,31 +1890,31 @@ msgstr "Alle Aufgaben verstecken" msgid "Reset user Password" msgstr "Benutzer Passwort zurücksetzen" -#: cps/templates/user_edit.html:29 +#: cps/templates/user_edit.html:27 msgid "Kindle E-Mail" msgstr "Kindle E-Mail" -#: cps/templates/user_edit.html:43 +#: cps/templates/user_edit.html:41 msgid "Standard Theme" msgstr "Standard Theme" -#: cps/templates/user_edit.html:44 +#: cps/templates/user_edit.html:42 msgid "caliBlur! Dark Theme (Beta)" msgstr "caliBlur! Dunkles Theme (Beta)" -#: cps/templates/user_edit.html:49 +#: cps/templates/user_edit.html:47 msgid "Show books with language" msgstr "Zeige nur Bücher mit dieser Sprache" -#: cps/templates/user_edit.html:51 +#: cps/templates/user_edit.html:49 msgid "Show all" msgstr "Zeige alle" -#: cps/templates/user_edit.html:145 +#: cps/templates/user_edit.html:147 msgid "Delete this user" msgstr "Benutzer löschen" -#: cps/templates/user_edit.html:160 +#: cps/templates/user_edit.html:162 msgid "Recent Downloads" msgstr "Letzte Downloads" @@ -1876,3 +1924,21 @@ msgstr "Letzte Downloads" #~ msgid "Newest commit timestamp" #~ msgstr "Neuestes Commit Datum" +#~ msgid "Convert: %(book)s" +#~ msgstr "Konvertiere: %(book)s" + +#~ msgid "Convert to %(format)s: %(book)s" +#~ msgstr "Konvertiere %(book)s in %(format)s: " + +#~ msgid "Files are replaced" +#~ msgstr "Ersetze Dateien" + +#~ msgid "Server is stopped" +#~ msgstr "Stoppe Server" + +#~ msgid "Convertertool %(converter)s not found" +#~ msgstr "Konvertertool %(converter)s nicht gefunden" + +#~ msgid "Choose a password" +#~ msgstr "Wähle ein Passwort" + diff --git a/cps/translations/es/LC_MESSAGES/messages.po b/cps/translations/es/LC_MESSAGES/messages.po index 0bd70509..785838a4 100644 --- a/cps/translations/es/LC_MESSAGES/messages.po +++ b/cps/translations/es/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2018-10-15 20:28+0200\n" +"POT-Creation-Date: 2018-11-03 14:03+0100\n" "PO-Revision-Date: 2018-10-05 11:27+0100\n" "Last-Translator: victorhck \n" "Language: es\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.5.1\n" +"Generated-By: Babel 2.6.0\n" #: cps/book_formats.py:129 cps/book_formats.py:130 cps/book_formats.py:134 #: cps/book_formats.py:138 cps/converter.py:11 cps/converter.py:27 @@ -31,678 +31,712 @@ msgstr "Permisos de ejecución ausentes" msgid "not configured" msgstr "" -#: cps/helper.py:57 +#: cps/helper.py:58 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "%(format)s formato no encontrado para el id del libro: %(book)d" -#: cps/helper.py:69 +#: cps/helper.py:70 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "%(format)s no encontrado en Google Drive: %(fn)s" -#: cps/helper.py:76 -#, python-format -msgid "Convert: %(book)s" -msgstr "Convertir: %(book)s" +#: cps/helper.py:77 cps/helper.py:147 cps/templates/detail.html:44 +msgid "Send to Kindle" +msgstr "Enviar a Kindle" -#: cps/helper.py:79 -#, python-format -msgid "Convert to %(format)s: %(book)s" -msgstr "Convertir a %(format)s: %(book)s" +#: cps/helper.py:78 cps/helper.py:96 +msgid "This e-mail has been sent via Calibre-Web." +msgstr "Este correo electrónico ha sido enviado por Calibre-Web." -#: cps/helper.py:86 +#: cps/helper.py:89 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "%(format)s no encontrado: %(fn)s" -#: cps/helper.py:91 +#: cps/helper.py:94 msgid "Calibre-Web test e-mail" msgstr "Calibre-Web comprobar correo electrónico" -#: cps/helper.py:92 +#: cps/helper.py:95 msgid "Test e-mail" msgstr "Comprobar correo electrónico" -#: cps/helper.py:107 +#: cps/helper.py:111 msgid "Get Started with Calibre-Web" msgstr "Primeros pasos con Calibre-Web" -#: cps/helper.py:108 +#: cps/helper.py:112 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "Registrar un correo electrónico para el usuario: %(name)s" -#: cps/helper.py:131 cps/helper.py:141 +#: cps/helper.py:135 cps/helper.py:145 msgid "Could not find any formats suitable for sending by e-mail" msgstr "No se pudo encontrar ningún formato adecuado para enviar por correo electrónico." -#: cps/helper.py:143 cps/templates/detail.html:44 cps/worker.py:224 -msgid "Send to Kindle" -msgstr "Enviar a Kindle" - -#: cps/helper.py:144 cps/worker.py:226 +#: cps/helper.py:148 #, python-format msgid "E-mail: %(book)s" msgstr "Correo electrónico: %(book)s" -#: cps/helper.py:146 +#: cps/helper.py:150 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "El fichero solicitado no puede ser leído. ¿Quizás existen problemas con los permisos?" -#: cps/helper.py:241 +#: cps/helper.py:250 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "El renombrado del título de: '%(src)s' a '%(dest)s' falló con errores: %(error)s" -#: cps/helper.py:250 +#: cps/helper.py:259 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "El renombrado del autor de: '%(src)s' a '%(dest)s' falló con errores: %(error)s" -#: cps/helper.py:272 cps/helper.py:281 +#: cps/helper.py:281 cps/helper.py:290 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "Fichero %(file)s no encontrado en Google Drive" -#: cps/helper.py:299 +#: cps/helper.py:308 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "La ruta %(path)s del libro no fue encontrada en Google Drive" -#: cps/helper.py:544 +#: cps/helper.py:565 msgid "Error excecuting UnRar" msgstr "Error ejecutando UnRar" -#: cps/helper.py:546 +#: cps/helper.py:567 msgid "Unrar binary file not found" msgstr "Fichero binario Unrar no encontrado" -#: cps/web.py:1111 cps/web.py:2791 +#: cps/helper.py:609 +msgid "Waiting" +msgstr "Esperando" + +#: cps/helper.py:611 +msgid "Failed" +msgstr "Fallido" + +#: cps/helper.py:613 +msgid "Started" +msgstr "Comenzado" + +#: cps/helper.py:615 +msgid "Finished" +msgstr "Finalizado" + +#: cps/helper.py:617 +msgid "Unknown Status" +msgstr "" + +#: cps/helper.py:622 +msgid "E-mail: " +msgstr "" + +#: cps/helper.py:624 cps/helper.py:628 +msgid "Convert: " +msgstr "" + +#: cps/helper.py:626 +msgid "Upload: " +msgstr "" + +#: cps/helper.py:630 +msgid "Unknown Task: " +msgstr "" + +#: cps/web.py:1132 cps/web.py:2842 msgid "Unknown" msgstr "Desconocido" -#: cps/web.py:1120 cps/web.py:1151 +#: cps/web.py:1141 cps/web.py:1172 cps/web.py:1257 msgid "HTTP Error" msgstr "Error HTTP" -#: cps/web.py:1122 cps/web.py:1153 +#: cps/web.py:1143 cps/web.py:1174 cps/web.py:1258 msgid "Connection error" msgstr "Error de conexión" -#: cps/web.py:1124 cps/web.py:1155 +#: cps/web.py:1145 cps/web.py:1176 cps/web.py:1259 msgid "Timeout while establishing connection" msgstr "Tiempo agotado mientras se trataba de establecer la conexión" -#: cps/web.py:1126 cps/web.py:1157 +#: cps/web.py:1147 cps/web.py:1178 cps/web.py:1260 msgid "General error" msgstr "Error general" -#: cps/web.py:1132 +#: cps/web.py:1153 msgid "Unexpected data while reading update information" msgstr "Dato inesperado mientras se leía la información de actualización" -#: cps/web.py:1139 +#: cps/web.py:1160 msgid "No update available. You already have the latest version installed" msgstr "Actualización no disponible. Ya tienes la versión más reciente instalada" -#: cps/web.py:1164 +#: cps/web.py:1185 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "Una nueva actualización está disponible. Haz clic en el botón inferior para actualizar a la versión más reciente." -#: cps/web.py:1214 +#: cps/web.py:1235 msgid "Could not fetch update information" msgstr "No se puede conseguir información sobre la actualización" -#: cps/web.py:1229 +#: cps/web.py:1250 msgid "Requesting update package" msgstr "Solicitando paquete de actualización" -#: cps/web.py:1230 +#: cps/web.py:1251 msgid "Downloading update package" msgstr "Descargando paquete de actualización" -#: cps/web.py:1231 +#: cps/web.py:1252 msgid "Unzipping update package" msgstr "Descomprimiendo paquete de actualización" -#: cps/web.py:1232 -msgid "Files are replaced" -msgstr "Ficheros sustituidos" +#: cps/web.py:1253 +msgid "Replacing files" +msgstr "" -#: cps/web.py:1233 +#: cps/web.py:1254 msgid "Database connections are closed" msgstr "Los conexiones de base datos están cerradas" -#: cps/web.py:1234 -msgid "Server is stopped" -msgstr "El servidor está detenido" +#: cps/web.py:1255 +msgid "Stopping server" +msgstr "" -#: cps/web.py:1235 +#: cps/web.py:1256 msgid "Update finished, please press okay and reload page" msgstr "Actualización finalizada. Por favor, pulse OK y recargue la página" -#: cps/web.py:1255 +#: cps/web.py:1257 cps/web.py:1258 cps/web.py:1259 cps/web.py:1260 +msgid "Update failed:" +msgstr "" + +#: cps/web.py:1283 msgid "Recently Added Books" msgstr "Libros recientemente añadidos" -#: cps/web.py:1265 +#: cps/web.py:1293 msgid "Newest Books" msgstr "Libros más nuevos" -#: cps/web.py:1277 +#: cps/web.py:1305 msgid "Oldest Books" msgstr "Libros más antiguos" -#: cps/web.py:1289 +#: cps/web.py:1317 msgid "Books (A-Z)" msgstr "Libros (A-Z)" -#: cps/web.py:1300 +#: cps/web.py:1328 msgid "Books (Z-A)" msgstr "Libros (Z-A)" -#: cps/web.py:1329 +#: cps/web.py:1357 msgid "Hot Books (most downloaded)" msgstr "Libros populares (los mas descargados)" -#: cps/web.py:1342 +#: cps/web.py:1370 msgid "Best rated books" msgstr "Libros mejor valorados" -#: cps/templates/index.xml:36 cps/web.py:1354 +#: cps/templates/index.xml:39 cps/web.py:1383 msgid "Random Books" msgstr "Libros al azar" -#: cps/web.py:1369 +#: cps/web.py:1398 msgid "Author list" msgstr "Lista de autores" -#: cps/web.py:1381 cps/web.py:1444 cps/web.py:1599 cps/web.py:2157 +#: cps/web.py:1410 cps/web.py:1501 cps/web.py:1663 cps/web.py:2206 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "Error en la apertura del eBook. El archivo no existe o no es accesible:" -#: cps/templates/index.xml:73 cps/web.py:1428 +#: cps/web.py:1438 +msgid "Publisher list" +msgstr "" + +#: cps/web.py:1452 +#, python-format +msgid "Publisher: %(name)s" +msgstr "" + +#: cps/templates/index.xml:83 cps/web.py:1484 msgid "Series list" msgstr "Lista de series" -#: cps/web.py:1442 +#: cps/web.py:1499 #, python-format msgid "Series: %(serie)s" msgstr "Series : %(serie)s" -#: cps/web.py:1469 +#: cps/web.py:1528 msgid "Available languages" msgstr "Idiomas disponibles" -#: cps/web.py:1486 +#: cps/web.py:1548 #, python-format msgid "Language: %(name)s" msgstr "Idioma: %(name)s" -#: cps/templates/index.xml:66 cps/web.py:1497 +#: cps/templates/index.xml:76 cps/web.py:1559 msgid "Category list" msgstr "Lista de categorías" -#: cps/web.py:1511 +#: cps/web.py:1573 #, python-format msgid "Category: %(name)s" msgstr "Categoría : %(name)s" -#: cps/templates/layout.html:71 cps/web.py:1650 +#: cps/templates/layout.html:71 cps/web.py:1699 msgid "Tasks" msgstr "Tareas" -#: cps/web.py:1684 +#: cps/web.py:1733 msgid "Statistics" msgstr "Estadísticas" -#: cps/web.py:1791 +#: cps/web.py:1840 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "El dominio de devolución de llamada no se ha verificado, siga los pasos para verificar el dominio en la consola de desarrollador de Google" -#: cps/web.py:1866 +#: cps/web.py:1915 msgid "Server restarted, please reload page" msgstr "Servidor reiniciado. Por favor, recargue la página" -#: cps/web.py:1869 +#: cps/web.py:1918 msgid "Performing shutdown of server, please close window" msgstr "Servidor en proceso de apagado. Por favor, cierre la ventana." -#: cps/web.py:1888 +#: cps/web.py:1937 msgid "Update done" msgstr "Actualización realizada" -#: cps/web.py:1958 +#: cps/web.py:2007 msgid "Published after " msgstr "Publicado antes de" -#: cps/web.py:1965 +#: cps/web.py:2014 msgid "Published before " msgstr "Publicado después de" -#: cps/web.py:1979 +#: cps/web.py:2028 #, python-format msgid "Rating <= %(rating)s" msgstr "Clasificación <= %(rating)s" -#: cps/web.py:1981 +#: cps/web.py:2030 #, python-format msgid "Rating >= %(rating)s" msgstr "Clasificación >= %(rating)s" -#: cps/web.py:2040 cps/web.py:2049 +#: cps/web.py:2089 cps/web.py:2098 msgid "search" msgstr "búsqueda" -#: cps/templates/index.xml:44 cps/templates/index.xml:48 -#: cps/templates/layout.html:146 cps/web.py:2116 +#: cps/templates/index.xml:47 cps/templates/index.xml:51 +#: cps/templates/layout.html:146 cps/web.py:2165 msgid "Read Books" msgstr "Libros leídos" -#: cps/templates/index.xml:52 cps/templates/index.xml:56 -#: cps/templates/layout.html:148 cps/web.py:2119 +#: cps/templates/index.xml:55 cps/templates/index.xml:59 +#: cps/templates/layout.html:148 cps/web.py:2168 msgid "Unread Books" msgstr "Libros no leídos" -#: cps/web.py:2167 cps/web.py:2169 cps/web.py:2171 cps/web.py:2183 +#: cps/web.py:2216 cps/web.py:2218 cps/web.py:2220 cps/web.py:2232 msgid "Read a Book" msgstr "Leer un libro" -#: cps/web.py:2249 cps/web.py:3146 +#: cps/web.py:2298 cps/web.py:3201 msgid "Please fill out all fields!" msgstr "¡Por favor completar todos los campos!" -#: cps/web.py:2250 cps/web.py:2271 cps/web.py:2275 cps/web.py:2280 -#: cps/web.py:2282 +#: cps/web.py:2299 cps/web.py:2320 cps/web.py:2324 cps/web.py:2329 +#: cps/web.py:2331 msgid "register" msgstr "registrarse" -#: cps/web.py:2270 cps/web.py:3362 +#: cps/web.py:2319 cps/web.py:3417 msgid "An unknown error occurred. Please try again later." msgstr "Ha ocurrido un error desconocido. Por favor vuelva a intentarlo más tarde." -#: cps/web.py:2273 +#: cps/web.py:2322 msgid "Your e-mail is not allowed to register" msgstr "Su correo electrónico no está permitido para registrarse" -#: cps/web.py:2276 +#: cps/web.py:2325 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Se ha enviado un correo electrónico de verificación a su cuenta de correo electrónico." -#: cps/web.py:2279 +#: cps/web.py:2328 msgid "This username or e-mail address is already in use." msgstr "Este nombre de usuario o correo electrónico ya están en uso." -#: cps/web.py:2296 cps/web.py:2392 +#: cps/web.py:2345 cps/web.py:2441 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "Sesión iniciada como : '%(nickname)s'" -#: cps/web.py:2301 +#: cps/web.py:2350 msgid "Wrong Username or Password" msgstr "Usuario o contraseña inválido" -#: cps/web.py:2307 cps/web.py:2328 +#: cps/web.py:2356 cps/web.py:2377 msgid "login" msgstr "Iniciar sesión" -#: cps/web.py:2340 cps/web.py:2371 +#: cps/web.py:2389 cps/web.py:2420 msgid "Token not found" msgstr "Token no encontrado" -#: cps/web.py:2348 cps/web.py:2379 +#: cps/web.py:2397 cps/web.py:2428 msgid "Token has expired" msgstr "El token ha expirado" -#: cps/web.py:2356 +#: cps/web.py:2405 msgid "Success! Please return to your device" msgstr "¡Correcto! Por favor regrese a su dispositivo" -#: cps/web.py:2406 +#: cps/web.py:2455 msgid "Please configure the SMTP mail settings first..." msgstr "Configurar primero los parámetros SMTP por favor..." -#: cps/web.py:2410 +#: cps/web.py:2459 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Libro puesto en la cola de envío a %(kindlemail)s" -#: cps/web.py:2414 +#: cps/web.py:2463 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Ha sucedido un error en el envío del libro: %(res)s" -#: cps/web.py:2416 cps/web.py:3200 +#: cps/web.py:2465 cps/web.py:3255 msgid "Please configure your kindle e-mail address first..." msgstr "Por favor configure primero la dirección de correo de su kindle..." -#: cps/web.py:2427 cps/web.py:2479 +#: cps/web.py:2476 cps/web.py:2528 msgid "Invalid shelf specified" msgstr "Estante especificado inválido" -#: cps/web.py:2434 +#: cps/web.py:2483 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" msgstr "" -#: cps/web.py:2442 +#: cps/web.py:2491 msgid "You are not allowed to edit public shelves" msgstr "" -#: cps/web.py:2451 +#: cps/web.py:2500 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" msgstr "" -#: cps/web.py:2465 +#: cps/web.py:2514 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "El libro fue agregado a el estante: %(sname)s" -#: cps/web.py:2484 +#: cps/web.py:2533 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "No tiene permiso para añadir un libro a el estante: %(name)s" -#: cps/web.py:2489 +#: cps/web.py:2538 msgid "User is not allowed to edit public shelves" msgstr "El usuario no tiene permiso para editar estantes públicos" -#: cps/web.py:2507 +#: cps/web.py:2556 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "Los libros ya forman parte del estante: %(name)s" -#: cps/web.py:2521 +#: cps/web.py:2570 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "Los libros han sido añadidos al estante: %(sname)s" -#: cps/web.py:2523 +#: cps/web.py:2572 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "No se pudieron agregar libros al estante: %(sname)s" -#: cps/web.py:2560 +#: cps/web.py:2609 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "El libro fue eliminado del estante: %(sname)s" -#: cps/web.py:2566 +#: cps/web.py:2615 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Lo siento, no tiene permiso para eliminar un libro del estante: %(sname)s" -#: cps/web.py:2586 cps/web.py:2610 +#: cps/web.py:2635 cps/web.py:2659 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Un estante con el nombre '%(title)s' ya existe." -#: cps/web.py:2591 +#: cps/web.py:2640 #, python-format msgid "Shelf %(title)s created" msgstr "Estante %(title)s creado" -#: cps/web.py:2593 cps/web.py:2621 +#: cps/web.py:2642 cps/web.py:2670 msgid "There was an error" msgstr "Ha sucedido un error" -#: cps/web.py:2594 cps/web.py:2596 +#: cps/web.py:2643 cps/web.py:2645 msgid "create a shelf" msgstr "crear un estante" -#: cps/web.py:2619 +#: cps/web.py:2668 #, python-format msgid "Shelf %(title)s changed" msgstr "Estante %(title)s cambiado" -#: cps/web.py:2622 cps/web.py:2624 +#: cps/web.py:2671 cps/web.py:2673 msgid "Edit a shelf" msgstr "Editar un estante" -#: cps/web.py:2645 +#: cps/web.py:2694 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "Estante %(name)s fue borrado correctamente" -#: cps/web.py:2672 +#: cps/web.py:2721 #, python-format msgid "Shelf: '%(name)s'" msgstr "Estante: '%(name)s'" -#: cps/web.py:2675 +#: cps/web.py:2724 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Error al abrir un estante. El estante no existe o no es accesible" -#: cps/web.py:2706 +#: cps/web.py:2755 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Cambiar orden del estante: '%(name)s'" -#: cps/web.py:2735 cps/web.py:3152 +#: cps/web.py:2784 cps/web.py:3207 msgid "E-mail is not from valid domain" msgstr "El correo electrónico no tiene un nombre de dominio válido" -#: cps/web.py:2737 cps/web.py:2778 cps/web.py:2781 +#: cps/web.py:2786 cps/web.py:2829 cps/web.py:2832 #, python-format msgid "%(name)s's profile" msgstr "Perfil de %(name)s" -#: cps/web.py:2776 +#: cps/web.py:2827 msgid "Found an existing account for this e-mail address." msgstr "Encontrada una cuenta existente para esa dirección de correo electrónico." -#: cps/web.py:2779 +#: cps/web.py:2830 msgid "Profile updated" msgstr "Perfil actualizado" -#: cps/web.py:2807 +#: cps/web.py:2858 msgid "Admin page" msgstr "Página de administración" -#: cps/web.py:2885 cps/web.py:3059 +#: cps/web.py:2938 cps/web.py:3112 msgid "Calibre-Web configuration updated" msgstr "Configuración de Calibre-Web actualizada" -#: cps/templates/admin.html:100 cps/web.py:2898 +#: cps/templates/admin.html:100 cps/web.py:2951 msgid "UI Configuration" msgstr "Configuración de la interfaz del usuario" -#: cps/web.py:2916 +#: cps/web.py:2969 msgid "Import of optional Google Drive requirements missing" msgstr "Falta la importación de requisitos opcionales de Google Drive" -#: cps/web.py:2919 +#: cps/web.py:2972 msgid "client_secrets.json is missing or not readable" msgstr "client_secrets.json está desaparecido o no se puede leer" -#: cps/web.py:2924 cps/web.py:2951 +#: cps/web.py:2977 cps/web.py:3004 msgid "client_secrets.json is not configured for web application" msgstr "client_secrets.json no está configurado para la aplicación web" -#: cps/templates/admin.html:99 cps/web.py:2954 cps/web.py:2980 cps/web.py:2992 -#: cps/web.py:3035 cps/web.py:3050 cps/web.py:3067 cps/web.py:3074 -#: cps/web.py:3089 +#: cps/templates/admin.html:99 cps/web.py:3007 cps/web.py:3033 cps/web.py:3045 +#: cps/web.py:3088 cps/web.py:3103 cps/web.py:3120 cps/web.py:3127 +#: cps/web.py:3142 msgid "Basic Configuration" msgstr "Configuración básica" -#: cps/web.py:2977 +#: cps/web.py:3030 msgid "Keyfile location is not valid, please enter correct path" msgstr "La ubicación del fichero clave (Keyfile) no es válida, por favor introduzca la ruta correcta" -#: cps/web.py:2989 +#: cps/web.py:3042 msgid "Certfile location is not valid, please enter correct path" msgstr "La ubicación del fichero de certificado (Certfile) no es válida, por favor introduzca la ruta correcta" -#: cps/web.py:3032 +#: cps/web.py:3085 msgid "Logfile location is not valid, please enter correct path" msgstr "La ubicación del fichero de registro (Logfile) no es válida, por favor introduzca la ruta correcta" -#: cps/web.py:3071 +#: cps/web.py:3124 msgid "DB location is not valid, please enter correct path" msgstr "Localización de la BD inválida, por favor introduzca la ruta correcta" -#: cps/templates/admin.html:33 cps/web.py:3148 cps/web.py:3154 cps/web.py:3170 +#: cps/templates/admin.html:33 cps/web.py:3203 cps/web.py:3209 cps/web.py:3225 msgid "Add new user" msgstr "Agregar un nuevo usuario" -#: cps/web.py:3160 +#: cps/web.py:3215 #, python-format msgid "User '%(user)s' created" msgstr "Usuario '%(user)s' creado" -#: cps/web.py:3164 +#: cps/web.py:3219 msgid "Found an existing account for this e-mail address or nickname." msgstr "Encontrada una cuenta existente para este correo electrónico o nombre de usuario." -#: cps/web.py:3188 cps/web.py:3202 +#: cps/web.py:3243 cps/web.py:3257 msgid "E-mail server settings updated" msgstr "Actualizados los ajustes del servidor de correo electrónico" -#: cps/web.py:3195 +#: cps/web.py:3250 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "Correo electrónico de prueba enviado con éxito a %(kindlemail)s" -#: cps/web.py:3198 +#: cps/web.py:3253 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Ocurrió un error enviando el correo electrónico de prueba: %(res)s" -#: cps/web.py:3203 +#: cps/web.py:3258 msgid "Edit e-mail server settings" msgstr "Editar los ajustes del servidor de correo electrónico" -#: cps/web.py:3228 +#: cps/web.py:3283 #, python-format msgid "User '%(nick)s' deleted" msgstr "Usuario '%(nick)s' borrado" -#: cps/web.py:3337 +#: cps/web.py:3392 #, python-format msgid "User '%(nick)s' updated" msgstr "Usuario '%(nick)s' actualizado" -#: cps/web.py:3340 +#: cps/web.py:3395 msgid "An unknown error occured." msgstr "Ocurrió un error inesperado." -#: cps/web.py:3342 +#: cps/web.py:3397 #, python-format msgid "Edit User %(nick)s" msgstr "Editar Usuario %(nick)s" -#: cps/web.py:3359 +#: cps/web.py:3414 #, python-format msgid "Password for user %(user)s reset" msgstr "Contraseña para el usuario %(user)s reinicializada" -#: cps/web.py:3373 cps/web.py:3574 +#: cps/web.py:3428 cps/web.py:3629 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Error abriendo un eBook. El archivo no existe o no es accesible" -#: cps/web.py:3398 cps/web.py:3854 +#: cps/web.py:3453 cps/web.py:3912 msgid "edit metadata" msgstr "editar metadatos" -#: cps/web.py:3491 cps/web.py:3724 +#: cps/web.py:3546 cps/web.py:3782 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "No se permite subir archivos con la extensión '%(ext)s' a este servidor" -#: cps/web.py:3495 cps/web.py:3728 +#: cps/web.py:3550 cps/web.py:3786 msgid "File to be uploaded must have an extension" msgstr "El archivo a subir debe tener una extensión" -#: cps/web.py:3507 cps/web.py:3748 +#: cps/web.py:3562 cps/web.py:3806 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Fallo al crear la ruta %(path)s (permiso denegado)" -#: cps/web.py:3512 +#: cps/web.py:3567 #, python-format msgid "Failed to store file %(file)s." msgstr "Falla al guardar el archivo %(file)s." -#: cps/web.py:3528 +#: cps/web.py:3583 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Fichero con formato %(ext)s añadido a %(book)s" -#: cps/web.py:3546 +#: cps/web.py:3601 #, python-format msgid "Failed to create path for cover %(path)s (Permission denied)." msgstr "Fallo al crear la ruta para la cubierta %(path)s (Permiso denegado)." -#: cps/web.py:3553 +#: cps/web.py:3608 #, python-format msgid "Failed to store cover-file %(cover)s." msgstr "Fallo al guardar el archivo de cubierta %(cover)s." -#: cps/web.py:3556 +#: cps/web.py:3611 msgid "Cover-file is not a valid image file" msgstr "El archivo de imagen de la portada no es válido" -#: cps/web.py:3586 cps/web.py:3595 cps/web.py:3599 +#: cps/web.py:3641 cps/web.py:3650 cps/web.py:3654 msgid "unknown" msgstr "desconocido" -#: cps/web.py:3618 +#: cps/web.py:3673 msgid "Cover is not a jpg file, can't save" msgstr "La cubierta no es un archivo jpg, no se puede guardar" -#: cps/web.py:3663 +#: cps/web.py:3721 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s no es un idioma válido" -#: cps/web.py:3694 +#: cps/web.py:3752 msgid "Metadata successfully updated" msgstr "" -#: cps/web.py:3703 +#: cps/web.py:3761 msgid "Error editing book, please check logfile for details" msgstr "Error al editar el libro, por favor compruebe el fichero de registro (logfile) para tener más detalles" -#: cps/web.py:3753 +#: cps/web.py:3811 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "Fallo al guardar el archivo %(file)s (permiso denegado)" -#: cps/web.py:3758 +#: cps/web.py:3816 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "Fallo al borrar el archivo %(file)s (permiso denegado)" -#: cps/web.py:3840 +#: cps/web.py:3898 #, python-format msgid "File %(file)s uploaded" msgstr "Fichero %(file)s subido" -#: cps/web.py:3870 +#: cps/web.py:3928 msgid "Source or destination format for conversion missing" msgstr "Falta la fuente o el formato de destino para la conversión" -#: cps/web.py:3880 +#: cps/web.py:3938 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Libro puesto a la cola con éxito para convertirlo a %(book_format)s" -#: cps/web.py:3884 +#: cps/web.py:3942 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Ocurrió un error al convertir este libro: %(res)s" -#: cps/worker.py:215 cps/worker.py:398 -msgid "Started" -msgstr "Comenzado" - -#: cps/worker.py:251 -#, python-format -msgid "Convertertool %(converter)s not found" -msgstr "Convertertool %(converter)s no encontrado" - #: cps/worker.py:287 #, python-format msgid "Ebook-converter failed: %(error)s" @@ -713,22 +747,6 @@ msgstr "Falló Ebook-converter: %(error)s" msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "Kindlegen falló con error %(error)s. Mensaje: %(message)s" -#: cps/worker.py:355 cps/worker.py:374 -msgid "Waiting" -msgstr "Esperando" - -#: cps/worker.py:362 -msgid "This e-mail has been sent via Calibre-Web." -msgstr "Este correo electrónico ha sido enviado por Calibre-Web." - -#: cps/worker.py:388 cps/worker.py:484 -msgid "Finished" -msgstr "Finalizado" - -#: cps/worker.py:476 -msgid "Failed" -msgstr "Fallido" - #: cps/templates/admin.html:6 msgid "User list" msgstr "Lista de usuarios" @@ -881,10 +899,10 @@ msgstr "Ok" #: cps/templates/admin.html:151 cps/templates/admin.html:165 #: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200 -#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164 +#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:168 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75 #: cps/templates/shelf.html:62 cps/templates/shelf_edit.html:19 -#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:151 +#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:155 msgid "Back" msgstr "Regresar" @@ -980,12 +998,12 @@ msgstr "URL de la portada (jpg, la portada es descargada y almacenada en la base msgid "Upload Cover from local drive" msgstr "Subir portada desde un medio de almacenamiento local" -#: cps/templates/book_edit.html:96 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:96 cps/templates/detail.html:135 msgid "Publishing date" msgstr "Fecha de publicación" #: cps/templates/book_edit.html:103 cps/templates/book_edit.html:261 -#: cps/templates/book_edit.html:278 cps/templates/detail.html:126 +#: cps/templates/book_edit.html:278 cps/templates/detail.html:127 #: cps/templates/search_form.html:14 msgid "Publisher" msgstr "Editor" @@ -1015,9 +1033,9 @@ msgid "Get metadata" msgstr "Obtener metadatos" #: cps/templates/book_edit.html:177 cps/templates/config_edit.html:210 -#: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 +#: cps/templates/config_view_edit.html:167 cps/templates/login.html:20 #: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 -#: cps/templates/user_edit.html:149 +#: cps/templates/user_edit.html:153 msgid "Submit" msgstr "Enviar" @@ -1053,7 +1071,7 @@ msgstr "Haga clic en la portada para cargar los metadatos en el formulario" msgid "Loading..." msgstr "Cargando..." -#: cps/templates/book_edit.html:239 cps/templates/layout.html:221 +#: cps/templates/book_edit.html:239 cps/templates/layout.html:224 msgid "Close" msgstr "Cerrar" @@ -1235,31 +1253,31 @@ msgstr "Etiquetas para contenido para adultos" msgid "Default settings for new users" msgstr "Ajustes por defecto para nuevos usuarios" -#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:106 +#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:110 msgid "Admin user" msgstr "Usuario administrador" -#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:115 +#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:119 msgid "Allow Downloads" msgstr "Permitir descargas" -#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:119 +#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:123 msgid "Allow Uploads" msgstr "Permitir subidas de archivos" -#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:123 +#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:127 msgid "Allow Edit" msgstr "Permitir editar" -#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:127 +#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:131 msgid "Allow Delete books" msgstr "Permitir eliminar libros" -#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:132 +#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:136 msgid "Allow Changing Password" msgstr "Permitir cambiar la contraseña" -#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:136 +#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:140 msgid "Allow Editing Public Shelfs" msgstr "Permitir editar estantes públicos" @@ -1304,14 +1322,18 @@ msgid "Show author selection" msgstr "Mostrar selección de autores" #: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:94 +msgid "Show publisher selection" +msgstr "" + +#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:98 msgid "Show read and unread" msgstr "Mostrar leídos y no leídos" -#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:98 +#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:102 msgid "Show random books in detail view" msgstr "Mostrar libros aleatorios con vista detallada" -#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:111 +#: cps/templates/config_view_edit.html:160 cps/templates/user_edit.html:115 msgid "Show mature content" msgstr "Mostrar contenido para adulto" @@ -1331,19 +1353,19 @@ msgstr "de" msgid "language" msgstr "idioma" -#: cps/templates/detail.html:168 +#: cps/templates/detail.html:172 msgid "Read" msgstr "Leer" -#: cps/templates/detail.html:178 +#: cps/templates/detail.html:182 msgid "Description:" msgstr "Descripción:" -#: cps/templates/detail.html:191 cps/templates/search.html:14 +#: cps/templates/detail.html:195 cps/templates/search.html:14 msgid "Add to shelf" msgstr "Agregar al estante" -#: cps/templates/detail.html:253 +#: cps/templates/detail.html:257 msgid "Edit metadata" msgstr "Editar metadatos" @@ -1403,11 +1425,11 @@ msgstr "Añadir" msgid "Do you really want to delete this domain rule?" msgstr "¿Realmente quiere eliminar esta regla de dominio?" -#: cps/templates/feed.xml:21 cps/templates/layout.html:205 +#: cps/templates/feed.xml:21 cps/templates/layout.html:208 msgid "Next" msgstr "Siguiente" -#: cps/templates/feed.xml:30 cps/templates/index.xml:8 +#: cps/templates/feed.xml:33 cps/templates/index.xml:11 #: cps/templates/layout.html:43 cps/templates/layout.html:44 msgid "Search" msgstr "Buscar" @@ -1420,63 +1442,71 @@ msgstr "Descubrir (Libros al azar)" msgid "Start" msgstr "Iniciar" -#: cps/templates/index.xml:15 cps/templates/layout.html:139 +#: cps/templates/index.xml:18 cps/templates/layout.html:139 msgid "Hot Books" msgstr "Libros populares" -#: cps/templates/index.xml:19 +#: cps/templates/index.xml:22 msgid "Popular publications from this catalog based on Downloads." msgstr "Publicaciones mas populares para este catálogo basadas en las descargas." -#: cps/templates/index.xml:22 cps/templates/layout.html:142 +#: cps/templates/index.xml:25 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "Libros mejor valorados" -#: cps/templates/index.xml:26 +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Rating." msgstr "Publicaciones populares del catálogo basados en la clasificación." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:32 msgid "New Books" msgstr "Libros nuevos" -#: cps/templates/index.xml:33 +#: cps/templates/index.xml:36 msgid "The latest Books" msgstr "Libros recientes" -#: cps/templates/index.xml:40 +#: cps/templates/index.xml:43 msgid "Show Random Books" msgstr "Mostrar libros al azar" -#: cps/templates/index.xml:59 cps/templates/layout.html:160 +#: cps/templates/index.xml:62 cps/templates/layout.html:160 msgid "Authors" msgstr "Autores" -#: cps/templates/index.xml:63 +#: cps/templates/index.xml:66 msgid "Books ordered by Author" msgstr "Libros ordenados por autor" -#: cps/templates/index.xml:70 +#: cps/templates/index.xml:69 cps/templates/layout.html:163 +msgid "Publishers" +msgstr "" + +#: cps/templates/index.xml:73 +msgid "Books ordered by publisher" +msgstr "" + +#: cps/templates/index.xml:80 msgid "Books ordered by category" msgstr "Libros ordenados por categorías" -#: cps/templates/index.xml:77 +#: cps/templates/index.xml:87 msgid "Books ordered by series" msgstr "Libros ordenados por series" -#: cps/templates/index.xml:80 cps/templates/layout.html:166 +#: cps/templates/index.xml:90 cps/templates/layout.html:169 msgid "Public Shelves" msgstr "Estantes públicos" -#: cps/templates/index.xml:84 +#: cps/templates/index.xml:94 msgid "Books organized in public shelfs, visible to everyone" msgstr "Libros organizados en estantes públicos, visibles para todo el mundo" -#: cps/templates/index.xml:88 cps/templates/layout.html:170 +#: cps/templates/index.xml:98 cps/templates/layout.html:173 msgid "Your Shelves" msgstr "Sus estantes" -#: cps/templates/index.xml:92 +#: cps/templates/index.xml:102 msgid "User's own shelfs, only visible to the current user himself" msgstr "Los estantes propios del usuario, solo visibles para el propio usuario actual" @@ -1545,23 +1575,23 @@ msgstr "Descubrir" msgid "Categories" msgstr "Categorías" -#: cps/templates/layout.html:163 cps/templates/search_form.html:74 +#: cps/templates/layout.html:166 cps/templates/search_form.html:74 msgid "Languages" msgstr "Idioma" -#: cps/templates/layout.html:175 +#: cps/templates/layout.html:178 msgid "Create a Shelf" msgstr "Crear un estante" -#: cps/templates/layout.html:176 cps/templates/stats.html:3 +#: cps/templates/layout.html:179 cps/templates/stats.html:3 msgid "About" msgstr "Acerca de" -#: cps/templates/layout.html:190 +#: cps/templates/layout.html:193 msgid "Previous" msgstr "Previo" -#: cps/templates/layout.html:217 +#: cps/templates/layout.html:220 msgid "Book Details" msgstr "Detalles del libro" @@ -1880,11 +1910,11 @@ msgstr "Mostrar libros con idioma" msgid "Show all" msgstr "Mostrar todo" -#: cps/templates/user_edit.html:143 +#: cps/templates/user_edit.html:147 msgid "Delete this user" msgstr "Borrar este usuario" -#: cps/templates/user_edit.html:158 +#: cps/templates/user_edit.html:162 msgid "Recent Downloads" msgstr "Descargas recientes" @@ -1930,3 +1960,18 @@ msgstr "Descargas recientes" #~ msgid "Choose a password" #~ msgstr "Escoger una contraseña" +#~ msgid "Convert: %(book)s" +#~ msgstr "Convertir: %(book)s" + +#~ msgid "Convert to %(format)s: %(book)s" +#~ msgstr "Convertir a %(format)s: %(book)s" + +#~ msgid "Files are replaced" +#~ msgstr "Ficheros sustituidos" + +#~ msgid "Server is stopped" +#~ msgstr "El servidor está detenido" + +#~ msgid "Convertertool %(converter)s not found" +#~ msgstr "Convertertool %(converter)s no encontrado" + diff --git a/cps/translations/fr/LC_MESSAGES/messages.po b/cps/translations/fr/LC_MESSAGES/messages.po index ba13d27e..c97506c4 100644 --- a/cps/translations/fr/LC_MESSAGES/messages.po +++ b/cps/translations/fr/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2018-09-23 19:00+0200\n" +"POT-Creation-Date: 2018-11-03 14:03+0100\n" "PO-Revision-Date: 2018-09-16 00:46+0200\n" "Last-Translator: Nicolas Roudninski \n" "Language: fr\n" @@ -16,10 +16,10 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.5.1\n" +"Generated-By: Babel 2.6.0\n" -#: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 -#: cps/converter.py:11 cps/converter.py:27 +#: cps/book_formats.py:129 cps/book_formats.py:130 cps/book_formats.py:134 +#: cps/book_formats.py:138 cps/converter.py:11 cps/converter.py:27 msgid "not installed" msgstr "non installé" @@ -27,660 +27,716 @@ msgstr "non installé" msgid "Excecution permissions missing" msgstr "Permission d’exécution manquante" -#: cps/helper.py:57 +#: cps/converter.py:48 +msgid "not configured" +msgstr "" + +#: cps/helper.py:58 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "le format %(format)s est introuvable pour le livre : %(book)d" -#: cps/helper.py:69 +#: cps/helper.py:70 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "le %(format)s est introuvable sur Google Drive : %(fn)s" -#: cps/helper.py:76 -#, python-format -msgid "Convert: %(book)s" -msgstr "Conversion : %(book)s" +#: cps/helper.py:77 cps/helper.py:147 cps/templates/detail.html:44 +msgid "Send to Kindle" +msgstr "Envoyer vers Kindle" -#: cps/helper.py:79 -#, python-format -msgid "Convert to %(format)s: %(book)s" -msgstr "Conversion vers %(format)s : %(book)s" +#: cps/helper.py:78 cps/helper.py:96 +msgid "This e-mail has been sent via Calibre-Web." +msgstr "Ce courriel a été envoyé depuis Calibre-Web" -#: cps/helper.py:86 +#: cps/helper.py:89 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "%(format)s introuvable : %(fn)s" -#: cps/helper.py:91 +#: cps/helper.py:94 msgid "Calibre-Web test e-mail" msgstr "Courriel de test de Calibre-Web" -#: cps/helper.py:92 +#: cps/helper.py:95 msgid "Test e-mail" msgstr "Courriel de test" -#: cps/helper.py:107 +#: cps/helper.py:111 msgid "Get Started with Calibre-Web" msgstr "Bien démarrer avec Calibre-Web" -#: cps/helper.py:108 +#: cps/helper.py:112 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "Courriel d’inscription pour l’utilisateur : %(name)s" -#: cps/helper.py:131 cps/helper.py:141 +#: cps/helper.py:135 cps/helper.py:145 msgid "Could not find any formats suitable for sending by e-mail" msgstr "Aucun format supporté pour l’envois par courriel n’a été trouvé" -#: cps/helper.py:143 cps/templates/detail.html:44 cps/worker.py:224 -msgid "Send to Kindle" -msgstr "Envoyer vers Kindle" - -#: cps/helper.py:144 cps/worker.py:226 +#: cps/helper.py:148 #, python-format msgid "E-mail: %(book)s" msgstr "Courriel : %(book)s" -#: cps/helper.py:146 +#: cps/helper.py:150 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "Le fichier demandé n’a pu être lu. Problème de permission d’accès ?" -#: cps/helper.py:241 +#: cps/helper.py:250 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "Renommer le titre de : '%(src)s' à '%(dest)s' a échoué avec l’erreur : %(error)s" -#: cps/helper.py:250 +#: cps/helper.py:259 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "Renommer l’auteur de : '%(src)s' à '%(dest)s' a échoué avec l’erreur : %(error)s" -#: cps/helper.py:272 cps/helper.py:281 +#: cps/helper.py:281 cps/helper.py:290 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "Le fichier %(file)s est introuvable sur Google Drive" -#: cps/helper.py:299 +#: cps/helper.py:308 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "Le chemin d’accès %(path)s du livre est introuvable sur Google Drive" -#: cps/helper.py:544 +#: cps/helper.py:565 msgid "Error excecuting UnRar" msgstr "Erreur d’exécution de la commande UnRar" -#: cps/helper.py:546 +#: cps/helper.py:567 msgid "Unrar binary file not found" msgstr "Le fichier exécutable UnRar est introuvable" -#: cps/web.py:1112 cps/web.py:2778 +#: cps/helper.py:609 +msgid "Waiting" +msgstr "En attente" + +#: cps/helper.py:611 +msgid "Failed" +msgstr "Echec" + +#: cps/helper.py:613 +msgid "Started" +msgstr "Démarré" + +#: cps/helper.py:615 +msgid "Finished" +msgstr "Terminé" + +#: cps/helper.py:617 +msgid "Unknown Status" +msgstr "" + +#: cps/helper.py:622 +msgid "E-mail: " +msgstr "" + +#: cps/helper.py:624 cps/helper.py:628 +msgid "Convert: " +msgstr "" + +#: cps/helper.py:626 +msgid "Upload: " +msgstr "" + +#: cps/helper.py:630 +msgid "Unknown Task: " +msgstr "" + +#: cps/web.py:1132 cps/web.py:2842 msgid "Unknown" msgstr "Inconnu" -#: cps/web.py:1121 cps/web.py:1152 +#: cps/web.py:1141 cps/web.py:1172 cps/web.py:1257 msgid "HTTP Error" msgstr "Erreur HTTP" -#: cps/web.py:1123 cps/web.py:1154 +#: cps/web.py:1143 cps/web.py:1174 cps/web.py:1258 msgid "Connection error" msgstr "Erreur de connexion" -#: cps/web.py:1125 cps/web.py:1156 +#: cps/web.py:1145 cps/web.py:1176 cps/web.py:1259 msgid "Timeout while establishing connection" msgstr "Délai d'attente dépassé lors de l'établissement de connexion" -#: cps/web.py:1127 cps/web.py:1158 +#: cps/web.py:1147 cps/web.py:1178 cps/web.py:1260 msgid "General error" msgstr "Erreur générale" -#: cps/web.py:1133 +#: cps/web.py:1153 msgid "Unexpected data while reading update information" msgstr "Données inattendues lors de la lecture des informations de mise à jour" -#: cps/web.py:1140 +#: cps/web.py:1160 msgid "No update available. You already have the latest version installed" msgstr "Aucune mise à jour disponible. Vous avez déjà la dernière version installée" -#: cps/web.py:1165 +#: cps/web.py:1185 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "Une nouvelle mise à jour est disponible. Cliquez sur le bouton ci-dessous pour charger la dernière version." -#: cps/web.py:1215 +#: cps/web.py:1235 msgid "Could not fetch update information" msgstr "Impossible d'extraire les informations de mise à jour" -#: cps/web.py:1230 +#: cps/web.py:1250 msgid "Requesting update package" msgstr "Demander une mise à jour" -#: cps/web.py:1231 +#: cps/web.py:1251 msgid "Downloading update package" msgstr "Téléchargement la mise à jour" -#: cps/web.py:1232 +#: cps/web.py:1252 msgid "Unzipping update package" msgstr "Décompression de la mise à jour" -#: cps/web.py:1233 -msgid "Files are replaced" -msgstr "Fichiers remplacés" +#: cps/web.py:1253 +msgid "Replacing files" +msgstr "" -#: cps/web.py:1234 +#: cps/web.py:1254 msgid "Database connections are closed" msgstr "Connexion à la base de donnée fermée" -#: cps/web.py:1235 -msgid "Server is stopped" -msgstr "Serveur arrêté" +#: cps/web.py:1255 +msgid "Stopping server" +msgstr "" -#: cps/web.py:1236 +#: cps/web.py:1256 msgid "Update finished, please press okay and reload page" msgstr "Mise à jour terminée, merci d’appuyer sur okay et de rafraîchir la page" -#: cps/web.py:1256 +#: cps/web.py:1257 cps/web.py:1258 cps/web.py:1259 cps/web.py:1260 +msgid "Update failed:" +msgstr "" + +#: cps/web.py:1283 msgid "Recently Added Books" msgstr "Ajouts récents" -#: cps/web.py:1266 +#: cps/web.py:1293 msgid "Newest Books" msgstr "Livres récents" -#: cps/web.py:1278 +#: cps/web.py:1305 msgid "Oldest Books" msgstr "Anciens livres" -#: cps/web.py:1290 +#: cps/web.py:1317 msgid "Books (A-Z)" msgstr "Livres (A-Z)" -#: cps/web.py:1301 +#: cps/web.py:1328 msgid "Books (Z-A)" msgstr "Livres (Z-A)" -#: cps/web.py:1330 +#: cps/web.py:1357 msgid "Hot Books (most downloaded)" msgstr "Livres populaires (les plus téléchargés)" -#: cps/web.py:1343 +#: cps/web.py:1370 msgid "Best rated books" msgstr "Livres les mieux notés" -#: cps/templates/index.xml:36 cps/web.py:1355 +#: cps/templates/index.xml:39 cps/web.py:1383 msgid "Random Books" msgstr "Livres au hasard" -#: cps/web.py:1370 +#: cps/web.py:1398 msgid "Author list" msgstr "Liste des auteurs" -#: cps/web.py:1382 cps/web.py:1445 cps/web.py:1600 cps/web.py:2152 +#: cps/web.py:1410 cps/web.py:1501 cps/web.py:1663 cps/web.py:2206 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "Erreur d'ouverture du livre numérique. Le fichier n'existe pas ou n'est pas accessible :" -#: cps/templates/index.xml:73 cps/web.py:1429 +#: cps/web.py:1438 +msgid "Publisher list" +msgstr "" + +#: cps/web.py:1452 +#, python-format +msgid "Publisher: %(name)s" +msgstr "" + +#: cps/templates/index.xml:83 cps/web.py:1484 msgid "Series list" msgstr "Liste des séries" -#: cps/web.py:1443 +#: cps/web.py:1499 #, python-format msgid "Series: %(serie)s" msgstr "Séries : %(serie)s" -#: cps/web.py:1470 +#: cps/web.py:1528 msgid "Available languages" msgstr "Langues disponibles" -#: cps/web.py:1487 +#: cps/web.py:1548 #, python-format msgid "Language: %(name)s" msgstr "Langue : %(name)s" -#: cps/templates/index.xml:66 cps/web.py:1498 +#: cps/templates/index.xml:76 cps/web.py:1559 msgid "Category list" msgstr "Liste des catégories" -#: cps/web.py:1512 +#: cps/web.py:1573 #, python-format msgid "Category: %(name)s" msgstr "Catégorie : %(name)s" -#: cps/templates/layout.html:71 cps/web.py:1651 +#: cps/templates/layout.html:71 cps/web.py:1699 msgid "Tasks" msgstr "Tâches" -#: cps/web.py:1681 +#: cps/web.py:1733 msgid "Statistics" msgstr "Statistiques" -#: cps/web.py:1786 +#: cps/web.py:1840 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "Le domaine de retour d’appel (Callback domain) est non vérifié, Veuillez suivre les étapes nécessaires pour vérifier le domaine dans la console de développement de Google" -#: cps/web.py:1861 +#: cps/web.py:1915 msgid "Server restarted, please reload page" msgstr "Serveur redémarré, merci de rafraîchir la page" -#: cps/web.py:1864 +#: cps/web.py:1918 msgid "Performing shutdown of server, please close window" msgstr "Arrêt du serveur en cours, merci de fermer la fenêtre" -#: cps/web.py:1883 +#: cps/web.py:1937 msgid "Update done" msgstr "Mise à jour effectuée" -#: cps/web.py:1953 +#: cps/web.py:2007 msgid "Published after " msgstr "Publié après le " -#: cps/web.py:1960 +#: cps/web.py:2014 msgid "Published before " msgstr "Publié avant le " -#: cps/web.py:1974 +#: cps/web.py:2028 #, python-format msgid "Rating <= %(rating)s" msgstr "Évaluation <= %(rating)s" -#: cps/web.py:1976 +#: cps/web.py:2030 #, python-format msgid "Rating >= %(rating)s" msgstr "Évaluation >= %(rating)s" -#: cps/web.py:2035 cps/web.py:2044 +#: cps/web.py:2089 cps/web.py:2098 msgid "search" msgstr "recherche" -#: cps/templates/index.xml:44 cps/templates/index.xml:48 -#: cps/templates/layout.html:146 cps/web.py:2111 +#: cps/templates/index.xml:47 cps/templates/index.xml:51 +#: cps/templates/layout.html:146 cps/web.py:2165 msgid "Read Books" msgstr "Livres lus" -#: cps/templates/index.xml:52 cps/templates/index.xml:56 -#: cps/templates/layout.html:148 cps/web.py:2114 +#: cps/templates/index.xml:55 cps/templates/index.xml:59 +#: cps/templates/layout.html:148 cps/web.py:2168 msgid "Unread Books" msgstr "Livres non-lus" -#: cps/web.py:2162 cps/web.py:2164 cps/web.py:2166 cps/web.py:2178 +#: cps/web.py:2216 cps/web.py:2218 cps/web.py:2220 cps/web.py:2232 msgid "Read a Book" msgstr "Lire un livre" -#: cps/web.py:2244 cps/web.py:3129 +#: cps/web.py:2298 cps/web.py:3201 msgid "Please fill out all fields!" msgstr "SVP, complétez tous les champs !" -#: cps/web.py:2245 cps/web.py:2266 cps/web.py:2270 cps/web.py:2275 -#: cps/web.py:2277 +#: cps/web.py:2299 cps/web.py:2320 cps/web.py:2324 cps/web.py:2329 +#: cps/web.py:2331 msgid "register" msgstr "s’enregistrer" -#: cps/web.py:2265 cps/web.py:3345 +#: cps/web.py:2319 cps/web.py:3417 msgid "An unknown error occurred. Please try again later." msgstr "Une erreur inconnue est survenue. Veuillez réessayer plus tard." -#: cps/web.py:2268 +#: cps/web.py:2322 msgid "Your e-mail is not allowed to register" msgstr "Votre adresse de courriel n’est pas autorisé pour une inscription" -#: cps/web.py:2271 +#: cps/web.py:2325 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Le courriel de confirmation a été envoyé à votre adresse." -#: cps/web.py:2274 +#: cps/web.py:2328 msgid "This username or e-mail address is already in use." msgstr "Ce nom d’utilisateur ou cette adresse de courriel sont déjà utilisés." -#: cps/web.py:2291 cps/web.py:2387 +#: cps/web.py:2345 cps/web.py:2441 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "Vous êtes maintenant connecté sous : '%(nickname)s'" -#: cps/web.py:2296 +#: cps/web.py:2350 msgid "Wrong Username or Password" msgstr "Mauvais nom d'utilisateur ou mot de passe" -#: cps/web.py:2302 cps/web.py:2323 +#: cps/web.py:2356 cps/web.py:2377 msgid "login" msgstr "connexion" -#: cps/web.py:2335 cps/web.py:2366 +#: cps/web.py:2389 cps/web.py:2420 msgid "Token not found" msgstr "Jeton non trouvé" -#: cps/web.py:2343 cps/web.py:2374 +#: cps/web.py:2397 cps/web.py:2428 msgid "Token has expired" msgstr "Jeton expiré" -#: cps/web.py:2351 +#: cps/web.py:2405 msgid "Success! Please return to your device" msgstr "Réussite! Merci de vous tourner vers votre appareil" -#: cps/web.py:2401 +#: cps/web.py:2455 msgid "Please configure the SMTP mail settings first..." msgstr "Veuillez configurer les paramètres SMTP au préalable…" -#: cps/web.py:2405 +#: cps/web.py:2459 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Le livre a été mis en file de traitement avec succès pour un envois vers %(kindlemail)s" -#: cps/web.py:2409 +#: cps/web.py:2463 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Il y a eu une erreur en envoyant ce livre : %(res)s" -#: cps/web.py:2411 cps/web.py:3183 +#: cps/web.py:2465 cps/web.py:3255 msgid "Please configure your kindle e-mail address first..." msgstr "Veuillez configurer votre adresse de courriel Kindle en premier lieu…" -#: cps/web.py:2455 +#: cps/web.py:2476 cps/web.py:2528 +msgid "Invalid shelf specified" +msgstr "L’étagère indiquée est invalide" + +#: cps/web.py:2483 +#, python-format +msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" +msgstr "" + +#: cps/web.py:2491 +msgid "You are not allowed to edit public shelves" +msgstr "" + +#: cps/web.py:2500 +#, python-format +msgid "Book is already part of the shelf: %(shelfname)s" +msgstr "" + +#: cps/web.py:2514 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Le livre a bien été ajouté à l'étagère : %(sname)s" -#: cps/web.py:2466 -msgid "Invalid shelf specified" -msgstr "L’étagère indiquée est invalide" - -#: cps/web.py:2471 +#: cps/web.py:2533 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Vous n’êtes pas autorisé à ajouter un livre dans l’étagère %(name)s" -#: cps/web.py:2476 +#: cps/web.py:2538 msgid "User is not allowed to edit public shelves" msgstr "L’utilisateur n’est pas autorisé à éditer les étagères publiques" -#: cps/web.py:2494 +#: cps/web.py:2556 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "Ces livres sont déjà sur l’étagère : %(name)s" -#: cps/web.py:2508 +#: cps/web.py:2570 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "Les livres ont été ajoutés à l’étagère : %(sname)s" -#: cps/web.py:2510 +#: cps/web.py:2572 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "Impossible d’ajouter les livres à l’étagère : %(sname)s" -#: cps/web.py:2547 +#: cps/web.py:2609 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Le livre a été supprimé de l'étagère %(sname)s" -#: cps/web.py:2553 +#: cps/web.py:2615 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Désolé, vous n’êtes pas autorisé à enlever un livre de cette étagère : %(sname)s" -#: cps/web.py:2573 cps/web.py:2597 +#: cps/web.py:2635 cps/web.py:2659 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Une étagère de ce nom '%(title)s' existe déjà." -#: cps/web.py:2578 +#: cps/web.py:2640 #, python-format msgid "Shelf %(title)s created" msgstr "Étagère %(title)s créée" -#: cps/web.py:2580 cps/web.py:2608 +#: cps/web.py:2642 cps/web.py:2670 msgid "There was an error" msgstr "Il y a eu une erreur" -#: cps/web.py:2581 cps/web.py:2583 +#: cps/web.py:2643 cps/web.py:2645 msgid "create a shelf" msgstr "Créer une étagère" -#: cps/web.py:2606 +#: cps/web.py:2668 #, python-format msgid "Shelf %(title)s changed" msgstr "L’étagère %(title)s a été modifiée" -#: cps/web.py:2609 cps/web.py:2611 +#: cps/web.py:2671 cps/web.py:2673 msgid "Edit a shelf" msgstr "Modifier une étagère" -#: cps/web.py:2632 +#: cps/web.py:2694 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "l’étagère %(name)s a été supprimé avec succès" -#: cps/web.py:2659 +#: cps/web.py:2721 #, python-format msgid "Shelf: '%(name)s'" msgstr "Étagère : '%(name)s'" -#: cps/web.py:2662 +#: cps/web.py:2724 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Erreur à l’ouverture de l’étagère. Elle n’existe plus ou n’est plus accessible." -#: cps/web.py:2693 +#: cps/web.py:2755 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Modifier l’arrangement de l’étagère : ‘%(name)s’" -#: cps/web.py:2722 cps/web.py:3135 +#: cps/web.py:2784 cps/web.py:3207 msgid "E-mail is not from valid domain" msgstr "Cette adresse de courriel n’appartient pas à un domaine valide" -#: cps/web.py:2724 cps/web.py:2765 cps/web.py:2768 +#: cps/web.py:2786 cps/web.py:2829 cps/web.py:2832 #, python-format msgid "%(name)s's profile" msgstr "Profil de %(name)s" -#: cps/web.py:2763 +#: cps/web.py:2827 msgid "Found an existing account for this e-mail address." msgstr "Un compte existant a été trouvé pour cette adresse de courriel" -#: cps/web.py:2766 +#: cps/web.py:2830 msgid "Profile updated" msgstr "Profil mis à jour" -#: cps/web.py:2794 +#: cps/web.py:2858 msgid "Admin page" msgstr "Page administrateur" -#: cps/web.py:2872 cps/web.py:3045 +#: cps/web.py:2938 cps/web.py:3112 msgid "Calibre-Web configuration updated" msgstr "Configuration de Calibre-Web mise à jour" -#: cps/templates/admin.html:100 cps/web.py:2885 +#: cps/templates/admin.html:100 cps/web.py:2951 msgid "UI Configuration" msgstr "Configuration de l’interface utilisateur" -#: cps/web.py:2903 +#: cps/web.py:2969 msgid "Import of optional Google Drive requirements missing" msgstr "L’import des pré-requis optionnels pour Google Drive est manquant" -#: cps/web.py:2906 +#: cps/web.py:2972 msgid "client_secrets.json is missing or not readable" msgstr "client_secrets.json est manquant ou ne peut être lu" -#: cps/web.py:2911 cps/web.py:2938 +#: cps/web.py:2977 cps/web.py:3004 msgid "client_secrets.json is not configured for web application" msgstr "client_secrets.json n’est pas configuré pour une application web" -#: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979 -#: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060 -#: cps/web.py:3077 +#: cps/templates/admin.html:99 cps/web.py:3007 cps/web.py:3033 cps/web.py:3045 +#: cps/web.py:3088 cps/web.py:3103 cps/web.py:3120 cps/web.py:3127 +#: cps/web.py:3142 msgid "Basic Configuration" msgstr "Configuration principale" -#: cps/web.py:2964 +#: cps/web.py:3030 msgid "Keyfile location is not valid, please enter correct path" msgstr "L’emplacement du fichier de la clé de chiffrement (keyfile) n’est pas valide, veuillez saisir un chemin d’accès correct" -#: cps/web.py:2976 +#: cps/web.py:3042 msgid "Certfile location is not valid, please enter correct path" msgstr "L’emplacement du fichier de certificat (cert) n’est pas valide, veuillez saisir un chemin d’accès correct" -#: cps/web.py:3018 +#: cps/web.py:3085 msgid "Logfile location is not valid, please enter correct path" msgstr "L’emplacement du fichier de Log n’est pas valide, veuillez saisir un chemin d’accès correct" -#: cps/web.py:3057 +#: cps/web.py:3124 msgid "DB location is not valid, please enter correct path" msgstr "L’emplacement du fichier de base de donnée (DB) n’est pas valide, veuillez saisir un chemin d’accès correct" -#: cps/templates/admin.html:33 cps/web.py:3131 cps/web.py:3137 cps/web.py:3153 +#: cps/templates/admin.html:33 cps/web.py:3203 cps/web.py:3209 cps/web.py:3225 msgid "Add new user" msgstr "Ajouter un nouvel utilisateur" -#: cps/web.py:3143 +#: cps/web.py:3215 #, python-format msgid "User '%(user)s' created" msgstr "Utilisateur '%(user)s' créé" -#: cps/web.py:3147 +#: cps/web.py:3219 msgid "Found an existing account for this e-mail address or nickname." msgstr "Un compte existant a été trouvé pour cette adresse de courriel ou pour ce surnom." -#: cps/web.py:3171 cps/web.py:3185 +#: cps/web.py:3243 cps/web.py:3257 msgid "E-mail server settings updated" msgstr "Les paramètres du serveur de courriels ont été mis à jour" -#: cps/web.py:3178 +#: cps/web.py:3250 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "Courriel de test envoyé avec succès sur %(kindlemail)s" -#: cps/web.py:3181 +#: cps/web.py:3253 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Il y a eu une erreur pendant l’envoi du courriel de test : %(res)s" -#: cps/web.py:3186 +#: cps/web.py:3258 msgid "Edit e-mail server settings" msgstr "Modifier les paramètres du serveur de courriels" -#: cps/web.py:3211 +#: cps/web.py:3283 #, python-format msgid "User '%(nick)s' deleted" msgstr "Utilisateur '%(nick)s' supprimé" -#: cps/web.py:3320 +#: cps/web.py:3392 #, python-format msgid "User '%(nick)s' updated" msgstr "Utilisateur '%(nick)s' mis à jour" -#: cps/web.py:3323 +#: cps/web.py:3395 msgid "An unknown error occured." msgstr "Oups ! Une erreur inconnue a eu lieu." -#: cps/web.py:3325 +#: cps/web.py:3397 #, python-format msgid "Edit User %(nick)s" msgstr "Éditer l'utilisateur %(nick)s" -#: cps/web.py:3342 +#: cps/web.py:3414 #, python-format msgid "Password for user %(user)s reset" msgstr "Le mot de passe de l’utilisateur %(user)s a été réinitialisé" -#: cps/web.py:3362 +#: cps/web.py:3428 cps/web.py:3629 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Erreur à l’ouverture du livre. Le fichier n’existe pas ou n’est pas accessible" -#: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827 +#: cps/web.py:3453 cps/web.py:3912 msgid "edit metadata" msgstr "modifier les métadonnées" -#: cps/web.py:3401 cps/web.py:3697 +#: cps/web.py:3546 cps/web.py:3782 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "L’extension de fichier '%(ext)s' n’est pas autorisée pour être déposée sur ce serveur" -#: cps/web.py:3405 cps/web.py:3701 +#: cps/web.py:3550 cps/web.py:3786 msgid "File to be uploaded must have an extension" msgstr "Pour être déposé le fichier doit avoir une extension" -#: cps/web.py:3417 cps/web.py:3721 +#: cps/web.py:3562 cps/web.py:3806 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Impossible de créer le chemin %(path)s (permission refusée)" -#: cps/web.py:3422 +#: cps/web.py:3567 #, python-format msgid "Failed to store file %(file)s." msgstr "Echec de la sauvegarde du fichier %(file)s." -#: cps/web.py:3438 +#: cps/web.py:3583 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Le format de fichier %(ext)s a été ajouté à %(book)s" -#: cps/web.py:3455 +#: cps/web.py:3601 #, python-format msgid "Failed to create path for cover %(path)s (Permission denied)." msgstr "Impossible de créer le chemin d’accès pour la couverture %(path)s (Autorisation refusée)" -#: cps/web.py:3462 +#: cps/web.py:3608 #, python-format msgid "Failed to store cover-file %(cover)s." msgstr "Echec de la sauvegarde du fichier de couverture %(cover)s." -#: cps/web.py:3465 +#: cps/web.py:3611 msgid "Cover-file is not a valid image file" msgstr "Le fichier de couverture n’est pas un fichier d’image valide" -#: cps/web.py:3482 cps/web.py:3486 +#: cps/web.py:3641 cps/web.py:3650 cps/web.py:3654 msgid "unknown" msgstr "inconnu" -#: cps/web.py:3508 +#: cps/web.py:3673 msgid "Cover is not a jpg file, can't save" msgstr "Le fichier de couverture n’est pas au format jpg, impossible de sauvegarder" -#: cps/web.py:3554 +#: cps/web.py:3721 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s n'est pas une langue valide" -#: cps/web.py:3676 +#: cps/web.py:3752 +msgid "Metadata successfully updated" +msgstr "" + +#: cps/web.py:3761 msgid "Error editing book, please check logfile for details" msgstr "Erreur d’édition du livre, veuillez consulter le journal (log) pour plus de détails" -#: cps/web.py:3726 +#: cps/web.py:3811 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "Impossible d'enregistrer le fichier %(file)s (permission refusée)" -#: cps/web.py:3731 +#: cps/web.py:3816 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "Impossible de supprimer le fichier %(file)s (permission refusée)" -#: cps/web.py:3813 +#: cps/web.py:3898 #, python-format msgid "File %(file)s uploaded" msgstr "Fichier %(file)s déposé" -#: cps/web.py:3843 +#: cps/web.py:3928 msgid "Source or destination format for conversion missing" msgstr "Le format de conversion de la source ou de la destination est manquant" -#: cps/web.py:3853 +#: cps/web.py:3938 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Le livre a été mis avec succès en file de traitement pour conversion vers %(book_format)s" -#: cps/web.py:3857 +#: cps/web.py:3942 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Une erreur est survenue au cours de la conversion du livre : %(res)s" -#: cps/worker.py:215 cps/worker.py:398 -msgid "Started" -msgstr "Démarré" - -#: cps/worker.py:251 -#, python-format -msgid "Convertertool %(converter)s not found" -msgstr "Outil de conversion %(converter)s introuvable" - #: cps/worker.py:287 #, python-format msgid "Ebook-converter failed: %(error)s" @@ -691,22 +747,6 @@ msgstr "La commande ebook-convert a échouée : %(error)s" msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "La commande Kindlegen a échouée avec le code d’erreur : %(error)s et le message : %(message)s" -#: cps/worker.py:355 cps/worker.py:374 -msgid "Waiting" -msgstr "En attente" - -#: cps/worker.py:362 -msgid "This e-mail has been sent via Calibre-Web." -msgstr "Ce courriel a été envoyé depuis Calibre-Web" - -#: cps/worker.py:388 cps/worker.py:484 -msgid "Finished" -msgstr "Terminé" - -#: cps/worker.py:476 -msgid "Failed" -msgstr "Echec" - #: cps/templates/admin.html:6 msgid "User list" msgstr "Liste des utilisateurs" @@ -853,16 +893,16 @@ msgid "Do you really want to restart Calibre-Web?" msgstr "Voulez-vous vraiment redémarrer Calibre-Web?" #: cps/templates/admin.html:150 cps/templates/admin.html:164 -#: cps/templates/admin.html:184 cps/templates/shelf.html:59 +#: cps/templates/admin.html:184 cps/templates/shelf.html:61 msgid "Ok" msgstr "D’accord" #: cps/templates/admin.html:151 cps/templates/admin.html:165 #: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200 -#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164 +#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:168 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75 -#: cps/templates/shelf.html:60 cps/templates/shelf_edit.html:19 -#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:153 +#: cps/templates/shelf.html:62 cps/templates/shelf_edit.html:19 +#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:155 msgid "Back" msgstr "Retour" @@ -958,17 +998,17 @@ msgstr "URL de la couverture (jpg, la couverture est déposée sur le serveur et msgid "Upload Cover from local drive" msgstr "Déposer la couverture depuis un fichier en local…" -#: cps/templates/book_edit.html:96 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:96 cps/templates/detail.html:135 msgid "Publishing date" msgstr "Date de publication " #: cps/templates/book_edit.html:103 cps/templates/book_edit.html:261 -#: cps/templates/book_edit.html:278 cps/templates/detail.html:126 +#: cps/templates/book_edit.html:278 cps/templates/detail.html:127 #: cps/templates/search_form.html:14 msgid "Publisher" msgstr "Editeur " -#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:33 +#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:31 msgid "Language" msgstr "Langue" @@ -993,9 +1033,9 @@ msgid "Get metadata" msgstr "Obtenir les métadonnées" #: cps/templates/book_edit.html:177 cps/templates/config_edit.html:210 -#: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 +#: cps/templates/config_view_edit.html:167 cps/templates/login.html:20 #: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 -#: cps/templates/user_edit.html:151 +#: cps/templates/user_edit.html:153 msgid "Submit" msgstr "Soumettre" @@ -1031,7 +1071,7 @@ msgstr "Cliquer sur la couverture pour importer les métadonnées dans le formul msgid "Loading..." msgstr "Chargement…" -#: cps/templates/book_edit.html:239 cps/templates/layout.html:221 +#: cps/templates/book_edit.html:239 cps/templates/layout.html:224 msgid "Close" msgstr "Fermer" @@ -1213,31 +1253,31 @@ msgstr "Mots clés pour contenue pour adulte" msgid "Default settings for new users" msgstr "Réglages par défaut pour les nouveaux utilisateurs" -#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:108 +#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:110 msgid "Admin user" msgstr "Utilisateur admin" -#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:117 +#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:119 msgid "Allow Downloads" msgstr "Permettre les téléchargements" -#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:121 +#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:123 msgid "Allow Uploads" msgstr "Permettre le dépôt de fichiers" -#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:125 +#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:127 msgid "Allow Edit" msgstr "Permettre l'édition" -#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:129 +#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:131 msgid "Allow Delete books" msgstr "Autoriser la suppression des livres" -#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:134 +#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:136 msgid "Allow Changing Password" msgstr "Permettre le changement de mot de passe" -#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:138 +#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:140 msgid "Allow Editing Public Shelfs" msgstr "Autoriser la modification d’étagères publiques" @@ -1245,51 +1285,55 @@ msgstr "Autoriser la modification d’étagères publiques" msgid "Default visibilities for new users" msgstr "Mode de visualisation par défaut pour les nouveaux utulisateurs" -#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:60 +#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:58 msgid "Show random books" msgstr "Montrer des livres au hasard" -#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:64 +#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:62 msgid "Show recent books" msgstr "Afficher les livres récents" -#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:68 +#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:66 msgid "Show sorted books" msgstr "Afficher les livres triés" -#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:72 +#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:70 msgid "Show hot books" msgstr "Montrer les livres populaires" -#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:76 +#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:74 msgid "Show best rated books" msgstr "Montrer les livres les mieux notés" -#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:80 +#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:78 msgid "Show language selection" msgstr "Montrer la sélection par langue" -#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:84 +#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:82 msgid "Show series selection" msgstr "Montrer la sélection par séries" -#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:88 +#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:86 msgid "Show category selection" msgstr "Montrer la sélection par catégories" -#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:92 +#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:90 msgid "Show author selection" msgstr "Montrer la sélection par auteur" -#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:96 +#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:94 +msgid "Show publisher selection" +msgstr "" + +#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:98 msgid "Show read and unread" msgstr "Montrer lu et non-lu" -#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:100 +#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:102 msgid "Show random books in detail view" msgstr "Montrer aléatoirement des livres dans la vue détaillée" -#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:113 +#: cps/templates/config_view_edit.html:160 cps/templates/user_edit.html:115 msgid "Show mature content" msgstr "Montrer le contenu pour adulte" @@ -1309,19 +1353,19 @@ msgstr "de" msgid "language" msgstr "langue" -#: cps/templates/detail.html:168 +#: cps/templates/detail.html:172 msgid "Read" msgstr "Lu" -#: cps/templates/detail.html:177 +#: cps/templates/detail.html:182 msgid "Description:" msgstr "Description :" -#: cps/templates/detail.html:189 cps/templates/search.html:14 +#: cps/templates/detail.html:195 cps/templates/search.html:14 msgid "Add to shelf" msgstr "Ajouter à l'étagère" -#: cps/templates/detail.html:251 +#: cps/templates/detail.html:257 msgid "Edit metadata" msgstr "Éditer les métadonnées" @@ -1381,11 +1425,11 @@ msgstr "Ajouter" msgid "Do you really want to delete this domain rule?" msgstr "Souhaitez-vous vraiment supprimer cette règle de domaine ?" -#: cps/templates/feed.xml:21 cps/templates/layout.html:205 +#: cps/templates/feed.xml:21 cps/templates/layout.html:208 msgid "Next" msgstr "Suivant" -#: cps/templates/feed.xml:30 cps/templates/index.xml:8 +#: cps/templates/feed.xml:33 cps/templates/index.xml:11 #: cps/templates/layout.html:43 cps/templates/layout.html:44 msgid "Search" msgstr "Chercher" @@ -1398,63 +1442,71 @@ msgstr "Découverte (livres au hasard)" msgid "Start" msgstr "Démarrer" -#: cps/templates/index.xml:15 cps/templates/layout.html:139 +#: cps/templates/index.xml:18 cps/templates/layout.html:139 msgid "Hot Books" msgstr "Livres populaires" -#: cps/templates/index.xml:19 +#: cps/templates/index.xml:22 msgid "Popular publications from this catalog based on Downloads." msgstr "Publications populaires depuis le catalogue basées sur les téléchargements." -#: cps/templates/index.xml:22 cps/templates/layout.html:142 +#: cps/templates/index.xml:25 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "Livres les mieux notés" -#: cps/templates/index.xml:26 +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Rating." msgstr "Publications populaires de ce catalogue sur la base de notes." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:32 msgid "New Books" msgstr "Nouveaux livres" -#: cps/templates/index.xml:33 +#: cps/templates/index.xml:36 msgid "The latest Books" msgstr "Les derniers livres" -#: cps/templates/index.xml:40 +#: cps/templates/index.xml:43 msgid "Show Random Books" msgstr "Montrer des livres au hasard" -#: cps/templates/index.xml:59 cps/templates/layout.html:160 +#: cps/templates/index.xml:62 cps/templates/layout.html:160 msgid "Authors" msgstr "Auteurs" -#: cps/templates/index.xml:63 +#: cps/templates/index.xml:66 msgid "Books ordered by Author" msgstr "Livres classés par auteur" -#: cps/templates/index.xml:70 +#: cps/templates/index.xml:69 cps/templates/layout.html:163 +msgid "Publishers" +msgstr "" + +#: cps/templates/index.xml:73 +msgid "Books ordered by publisher" +msgstr "" + +#: cps/templates/index.xml:80 msgid "Books ordered by category" msgstr "Livres classés par catégorie" -#: cps/templates/index.xml:77 +#: cps/templates/index.xml:87 msgid "Books ordered by series" msgstr "Livres classés par série" -#: cps/templates/index.xml:80 cps/templates/layout.html:166 +#: cps/templates/index.xml:90 cps/templates/layout.html:169 msgid "Public Shelves" msgstr "Étagères publiques" -#: cps/templates/index.xml:84 +#: cps/templates/index.xml:94 msgid "Books organized in public shelfs, visible to everyone" msgstr "Livres disponibles dans les étagères publiques, visibles par tous" -#: cps/templates/index.xml:88 cps/templates/layout.html:170 +#: cps/templates/index.xml:98 cps/templates/layout.html:173 msgid "Your Shelves" msgstr "Vos étagères" -#: cps/templates/index.xml:92 +#: cps/templates/index.xml:102 msgid "User's own shelfs, only visible to the current user himself" msgstr "Etagères personnelles, seulement visible de l’utilisateur propréitaire" @@ -1470,7 +1522,7 @@ msgstr "Recherche avancée" msgid "Logout" msgstr "Déconnexion" -#: cps/templates/layout.html:83 cps/templates/register.html:18 +#: cps/templates/layout.html:83 cps/templates/register.html:14 msgid "Register" msgstr "S'enregistrer" @@ -1523,23 +1575,23 @@ msgstr "Découvrir" msgid "Categories" msgstr "Catégories" -#: cps/templates/layout.html:163 cps/templates/search_form.html:74 +#: cps/templates/layout.html:166 cps/templates/search_form.html:74 msgid "Languages" msgstr "Langues" -#: cps/templates/layout.html:175 +#: cps/templates/layout.html:178 msgid "Create a Shelf" msgstr "Créer une étagère" -#: cps/templates/layout.html:176 cps/templates/stats.html:3 +#: cps/templates/layout.html:179 cps/templates/stats.html:3 msgid "About" msgstr "À propos" -#: cps/templates/layout.html:190 +#: cps/templates/layout.html:193 msgid "Previous" msgstr "Précédent" -#: cps/templates/layout.html:217 +#: cps/templates/layout.html:220 msgid "Book Details" msgstr "Détails du livre" @@ -1549,7 +1601,7 @@ msgid "Username" msgstr "Nom d'utilisateur" #: cps/templates/login.html:12 cps/templates/login.html:13 -#: cps/templates/register.html:11 cps/templates/user_edit.html:21 +#: cps/templates/user_edit.html:21 msgid "Password" msgstr "Mot de passe" @@ -1614,7 +1666,7 @@ msgstr "Rotation gauche" msgid "Flip Image" msgstr "Inverser l’image" -#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:41 +#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:39 msgid "Theme" msgstr "Thème" @@ -1678,15 +1730,11 @@ msgstr "Enregistrer un nouveau compte" msgid "Choose a username" msgstr "Choisissez un nom d'utilisateur" -#: cps/templates/register.html:12 -msgid "Choose a password" -msgstr "Choisissez un mot de passe" - -#: cps/templates/register.html:15 cps/templates/user_edit.html:13 +#: cps/templates/register.html:11 cps/templates/user_edit.html:13 msgid "E-mail address" msgstr "Adresse de courriel" -#: cps/templates/register.html:16 +#: cps/templates/register.html:12 msgid "Your email address" msgstr "Votre adresse de courriel" @@ -1754,11 +1802,11 @@ msgstr "Modifier l’étagère" msgid "Change order" msgstr "Modifier l’ordre" -#: cps/templates/shelf.html:54 +#: cps/templates/shelf.html:56 msgid "Do you really want to delete the shelf?" msgstr "Voulez-vous vraiment supprimer l’étagère?" -#: cps/templates/shelf.html:57 +#: cps/templates/shelf.html:59 msgid "Shelf will be lost for everybody and forever!" msgstr "L’étagère sera supprimée pour tout le monde et de façon définitive !" @@ -1842,31 +1890,31 @@ msgstr "Masquer toutes les tâches" msgid "Reset user Password" msgstr "Réinitialiser le mot de passe de l’utilisateur" -#: cps/templates/user_edit.html:29 +#: cps/templates/user_edit.html:27 msgid "Kindle E-Mail" msgstr "Adresse de courriel Kindle" -#: cps/templates/user_edit.html:43 +#: cps/templates/user_edit.html:41 msgid "Standard Theme" msgstr "Thème par défaut" -#: cps/templates/user_edit.html:44 +#: cps/templates/user_edit.html:42 msgid "caliBlur! Dark Theme (Beta)" msgstr "Thème caliBur! Dark Theme (Beta)" -#: cps/templates/user_edit.html:49 +#: cps/templates/user_edit.html:47 msgid "Show books with language" msgstr "Montrer les livres dans la langue" -#: cps/templates/user_edit.html:51 +#: cps/templates/user_edit.html:49 msgid "Show all" msgstr "Montrer tout" -#: cps/templates/user_edit.html:145 +#: cps/templates/user_edit.html:147 msgid "Delete this user" msgstr "Supprimer cet utilisateur" -#: cps/templates/user_edit.html:160 +#: cps/templates/user_edit.html:162 msgid "Recent Downloads" msgstr "Téléchargements récents" @@ -1876,3 +1924,21 @@ msgstr "Téléchargements récents" #~ msgid "Newest commit timestamp" #~ msgstr "Horodatage de la version la plus récente " +#~ msgid "Convert: %(book)s" +#~ msgstr "Conversion : %(book)s" + +#~ msgid "Convert to %(format)s: %(book)s" +#~ msgstr "Conversion vers %(format)s : %(book)s" + +#~ msgid "Files are replaced" +#~ msgstr "Fichiers remplacés" + +#~ msgid "Server is stopped" +#~ msgstr "Serveur arrêté" + +#~ msgid "Convertertool %(converter)s not found" +#~ msgstr "Outil de conversion %(converter)s introuvable" + +#~ msgid "Choose a password" +#~ msgstr "Choisissez un mot de passe" + diff --git a/cps/translations/hu/LC_MESSAGES/messages.po b/cps/translations/hu/LC_MESSAGES/messages.po index 99c9c610..27550189 100644 --- a/cps/translations/hu/LC_MESSAGES/messages.po +++ b/cps/translations/hu/LC_MESSAGES/messages.po @@ -1,4 +1,4 @@ -# Translations template for PROJECT. +# Hungarian translations for PROJECT. # Copyright (C) 2018 ORGANIZATION # This file is distributed under the same license as the PROJECT project. # FIRST AUTHOR , 2018. @@ -7,20 +7,19 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-09-14 21:11+0200\n" +"POT-Creation-Date: 2018-11-03 14:03+0100\n" "PO-Revision-Date: 2018-10-11 18:13+0200\n" +"Last-Translator: \n" +"Language: hu\n" "Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.5.1\n" -"X-Generator: Poedit 2.1.1\n" -"Last-Translator: \n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"Language: hu\n" +"Generated-By: Babel 2.6.0\n" -#: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 -#: cps/converter.py:11 cps/converter.py:27 +#: cps/book_formats.py:129 cps/book_formats.py:130 cps/book_formats.py:134 +#: cps/book_formats.py:138 cps/converter.py:11 cps/converter.py:27 msgid "not installed" msgstr "nincs telepítve" @@ -28,684 +27,716 @@ msgstr "nincs telepítve" msgid "Excecution permissions missing" msgstr "Nincs jogosultság a futtatáshoz" -#: cps/helper.py:57 +#: cps/converter.py:48 +msgid "not configured" +msgstr "" + +#: cps/helper.py:58 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "A(z) %(format)s formátum nem található a következő könyvhöz: %(book)d" -#: cps/helper.py:69 +#: cps/helper.py:70 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "%(format)s nem található a Google Drive-on: %(fn)s" -#: cps/helper.py:76 -#, python-format -msgid "Convert: %(book)s" -msgstr "Konvertálás: %(book)s" +#: cps/helper.py:77 cps/helper.py:147 cps/templates/detail.html:44 +msgid "Send to Kindle" +msgstr "Küldés Kindle-re" -#: cps/helper.py:79 -#, python-format -msgid "Convert to %(format)s: %(book)s" -msgstr "Konvertálás %(format)s-ba: %(book)s" +#: cps/helper.py:78 cps/helper.py:96 +msgid "This e-mail has been sent via Calibre-Web." +msgstr "Ez az e-mail a Calibre-Web-en keresztül lett küldve." -#: cps/helper.py:86 +#: cps/helper.py:89 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "%(format)s nem található: %(fn)s" -#: cps/helper.py:91 +#: cps/helper.py:94 msgid "Calibre-Web test e-mail" msgstr "Calibre-Web teszt e-mail" -#: cps/helper.py:92 +#: cps/helper.py:95 msgid "Test e-mail" msgstr "Teszt e-mail" -#: cps/helper.py:107 +#: cps/helper.py:111 msgid "Get Started with Calibre-Web" msgstr "Kezdő lépések a Calibre-Web-bel" -#: cps/helper.py:108 +#: cps/helper.py:112 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "Regisztrációs e-mail a következő felhasználóhoz: %(name)s" -#: cps/helper.py:131 cps/helper.py:141 +#: cps/helper.py:135 cps/helper.py:145 msgid "Could not find any formats suitable for sending by e-mail" msgstr "Az e-mail küldéséhez nem található megfelelő formátum" -#: cps/helper.py:143 cps/templates/detail.html:44 cps/worker.py:224 -msgid "Send to Kindle" -msgstr "Küldés Kindle-re" - -#: cps/helper.py:144 cps/worker.py:226 +#: cps/helper.py:148 #, python-format msgid "E-mail: %(book)s" msgstr "E-mail: %(book)s" -#: cps/helper.py:146 +#: cps/helper.py:150 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "A kért fájl nem olvasható. Esetleg jogosultsági probléma lenne?" -#: cps/helper.py:241 +#: cps/helper.py:250 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" -msgstr "" -"A cím átnevezése \"%(src)s\"-ról \"%(dest)s\"-ra nem sikerült a következő " -"hiba miatt: %(error)s" +msgstr "A cím átnevezése \"%(src)s\"-ról \"%(dest)s\"-ra nem sikerült a következő hiba miatt: %(error)s" -#: cps/helper.py:250 +#: cps/helper.py:259 #, python-format -msgid "" -"Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" -msgstr "" -"A szerző átnevezése \"%(src)s\"-ról \"%(dest)s\"-ra nem sikerült a következő " -"hiba miatt: %(error)s" +msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" +msgstr "A szerző átnevezése \"%(src)s\"-ról \"%(dest)s\"-ra nem sikerült a következő hiba miatt: %(error)s" -#: cps/helper.py:272 cps/helper.py:281 +#: cps/helper.py:281 cps/helper.py:290 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "A \"%(file)s\" fájl nem található a Google Drive-on" -#: cps/helper.py:299 +#: cps/helper.py:308 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "A könyv elérési útja (\"%(path)s\") nem található a Google Drive-on" -#: cps/helper.py:544 +#: cps/helper.py:565 msgid "Error excecuting UnRar" msgstr "Hiba az UnRar futtatásakor" -#: cps/helper.py:546 +#: cps/helper.py:567 msgid "Unrar binary file not found" msgstr "Az Unrar futtatható állománya nem található" -#: cps/web.py:1112 cps/web.py:2778 +#: cps/helper.py:609 +msgid "Waiting" +msgstr "Várakozás" + +#: cps/helper.py:611 +msgid "Failed" +msgstr "Nem sikerült" + +#: cps/helper.py:613 +msgid "Started" +msgstr "Elindítva" + +#: cps/helper.py:615 +msgid "Finished" +msgstr "Végrehajtva" + +#: cps/helper.py:617 +msgid "Unknown Status" +msgstr "" + +#: cps/helper.py:622 +msgid "E-mail: " +msgstr "" + +#: cps/helper.py:624 cps/helper.py:628 +msgid "Convert: " +msgstr "" + +#: cps/helper.py:626 +msgid "Upload: " +msgstr "" + +#: cps/helper.py:630 +msgid "Unknown Task: " +msgstr "" + +#: cps/web.py:1132 cps/web.py:2842 msgid "Unknown" msgstr "Ismeretlen" -#: cps/web.py:1121 cps/web.py:1152 +#: cps/web.py:1141 cps/web.py:1172 cps/web.py:1257 msgid "HTTP Error" msgstr "HTTP hiba" -#: cps/web.py:1123 cps/web.py:1154 +#: cps/web.py:1143 cps/web.py:1174 cps/web.py:1258 msgid "Connection error" msgstr "Kapcsolódási hiba" -#: cps/web.py:1125 cps/web.py:1156 +#: cps/web.py:1145 cps/web.py:1176 cps/web.py:1259 msgid "Timeout while establishing connection" msgstr "Időtúllépés a kapcsolódás során" -#: cps/web.py:1127 cps/web.py:1158 +#: cps/web.py:1147 cps/web.py:1178 cps/web.py:1260 msgid "General error" msgstr "Általános hiba" -#: cps/web.py:1133 +#: cps/web.py:1153 msgid "Unexpected data while reading update information" msgstr "Ismeretlen adat a frissítési információk olvasásakor" -#: cps/web.py:1140 +#: cps/web.py:1160 msgid "No update available. You already have the latest version installed" msgstr "Nem érhető el újabb frissítés. Már a legújabb verzió van telepítve." -#: cps/web.py:1165 -msgid "" -"A new update is available. Click on the button below to update to the latest " -"version." -msgstr "" -"Egy új frissítés érhető el. Kattints a lenti gombra a legújabb verzió " -"frissítésére" +#: cps/web.py:1185 +msgid "A new update is available. Click on the button below to update to the latest version." +msgstr "Egy új frissítés érhető el. Kattints a lenti gombra a legújabb verzió frissítésére" -#: cps/web.py:1215 +#: cps/web.py:1235 msgid "Could not fetch update information" msgstr "Nem lehetett begyűjteni a frissítési információkat" -#: cps/web.py:1230 +#: cps/web.py:1250 msgid "Requesting update package" msgstr "Frissítési csomag kérése" -#: cps/web.py:1231 +#: cps/web.py:1251 msgid "Downloading update package" msgstr "Frissítési csomag letöltése" -#: cps/web.py:1232 +#: cps/web.py:1252 msgid "Unzipping update package" msgstr "Frissítési csomag kitömörítése" -#: cps/web.py:1233 -msgid "Files are replaced" -msgstr "Fájlok cserélve" +#: cps/web.py:1253 +msgid "Replacing files" +msgstr "" -#: cps/web.py:1234 +#: cps/web.py:1254 msgid "Database connections are closed" msgstr "Adatbázis kapcsolatok lezárva" -#: cps/web.py:1235 -msgid "Server is stopped" -msgstr "A kiszolgáló leállt." +#: cps/web.py:1255 +msgid "Stopping server" +msgstr "" -#: cps/web.py:1236 +#: cps/web.py:1256 msgid "Update finished, please press okay and reload page" msgstr "A frissítés települt, kattints az OK-ra és újra tölt az oldal" -#: cps/web.py:1256 +#: cps/web.py:1257 cps/web.py:1258 cps/web.py:1259 cps/web.py:1260 +msgid "Update failed:" +msgstr "" + +#: cps/web.py:1283 msgid "Recently Added Books" msgstr "Legutóbb hozzáadott könyvek" -#: cps/web.py:1266 +#: cps/web.py:1293 msgid "Newest Books" msgstr "Legújabb könyvek" -#: cps/web.py:1278 +#: cps/web.py:1305 msgid "Oldest Books" msgstr "Legrégebbi könyvek" -#: cps/web.py:1290 +#: cps/web.py:1317 msgid "Books (A-Z)" msgstr "Könyvek (A-Zs)" -#: cps/web.py:1301 +#: cps/web.py:1328 msgid "Books (Z-A)" msgstr "Könyvek (Zs-A)" -#: cps/web.py:1330 +#: cps/web.py:1357 msgid "Hot Books (most downloaded)" msgstr "Kelendő könyvek (legtöbbet letöltöttek)" -#: cps/web.py:1343 +#: cps/web.py:1370 msgid "Best rated books" msgstr "Legjobbra értékelt könyvek" -#: cps/templates/index.xml:36 cps/web.py:1355 +#: cps/templates/index.xml:39 cps/web.py:1383 msgid "Random Books" msgstr "Könyvek találomra" -#: cps/web.py:1370 +#: cps/web.py:1398 msgid "Author list" msgstr "Szerzők listája" -#: cps/web.py:1382 cps/web.py:1445 cps/web.py:1600 cps/web.py:2152 +#: cps/web.py:1410 cps/web.py:1501 cps/web.py:1663 cps/web.py:2206 msgid "Error opening eBook. File does not exist or file is not accessible:" +msgstr "Hiba történt az e-könyv megnyitásakor. A fájl nem létezik vagy nem érhető el:" + +#: cps/web.py:1438 +msgid "Publisher list" +msgstr "" + +#: cps/web.py:1452 +#, python-format +msgid "Publisher: %(name)s" msgstr "" -"Hiba történt az e-könyv megnyitásakor. A fájl nem létezik vagy nem érhető el:" -#: cps/templates/index.xml:73 cps/web.py:1429 +#: cps/templates/index.xml:83 cps/web.py:1484 msgid "Series list" msgstr "Sorozatok listája" -#: cps/web.py:1443 +#: cps/web.py:1499 #, python-format msgid "Series: %(serie)s" msgstr "Sorozat: %(serie)s" -#: cps/web.py:1470 +#: cps/web.py:1528 msgid "Available languages" msgstr "Elérhető nyelvek" -#: cps/web.py:1487 +#: cps/web.py:1548 #, python-format msgid "Language: %(name)s" msgstr "Nyelv: %(name)s" -#: cps/templates/index.xml:66 cps/web.py:1498 +#: cps/templates/index.xml:76 cps/web.py:1559 msgid "Category list" msgstr "Címkék listája" -#: cps/web.py:1512 +#: cps/web.py:1573 #, python-format msgid "Category: %(name)s" msgstr "Címke: %(name)s" -#: cps/templates/layout.html:71 cps/web.py:1651 +#: cps/templates/layout.html:71 cps/web.py:1699 msgid "Tasks" msgstr "Feladatok" -#: cps/web.py:1681 +#: cps/web.py:1733 msgid "Statistics" msgstr "Statisztika" -#: cps/web.py:1786 -msgid "" -"Callback domain is not verified, please follow steps to verify domain in " -"google developer console" -msgstr "" -"A visszahívási tartomány nem ellenőrzött, kövesd az alábbi lépéseket a " -"tartomány ellenőrzéséhez a Google Developer Console-ban:" +#: cps/web.py:1840 +msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" +msgstr "A visszahívási tartomány nem ellenőrzött, kövesd az alábbi lépéseket a tartomány ellenőrzéséhez a Google Developer Console-ban:" -#: cps/web.py:1861 +#: cps/web.py:1915 msgid "Server restarted, please reload page" msgstr "A kiszolgáló újraindult, tölts be újra az oldalt!" -#: cps/web.py:1864 +#: cps/web.py:1918 msgid "Performing shutdown of server, please close window" msgstr "A kiszolgáló leállítása folyamatban, zárd be ezt az ablakot" -#: cps/web.py:1883 +#: cps/web.py:1937 msgid "Update done" msgstr "A frissítés kész" -#: cps/web.py:1953 +#: cps/web.py:2007 msgid "Published after " msgstr "Kiadva ezután: " -#: cps/web.py:1960 +#: cps/web.py:2014 msgid "Published before " msgstr "Kiadva ezelőtt: " -#: cps/web.py:1974 +#: cps/web.py:2028 #, python-format msgid "Rating <= %(rating)s" msgstr "Értékelés <= %(rating)s" -#: cps/web.py:1976 +#: cps/web.py:2030 #, python-format msgid "Rating >= %(rating)s" msgstr "Értékelés <= %(rating)s" -#: cps/web.py:2035 cps/web.py:2044 +#: cps/web.py:2089 cps/web.py:2098 msgid "search" msgstr "keresés" -#: cps/templates/index.xml:44 cps/templates/index.xml:48 -#: cps/templates/layout.html:146 cps/web.py:2111 +#: cps/templates/index.xml:47 cps/templates/index.xml:51 +#: cps/templates/layout.html:146 cps/web.py:2165 msgid "Read Books" msgstr "Olvasott könyvek" -#: cps/templates/index.xml:52 cps/templates/index.xml:56 -#: cps/templates/layout.html:148 cps/web.py:2114 +#: cps/templates/index.xml:55 cps/templates/index.xml:59 +#: cps/templates/layout.html:148 cps/web.py:2168 msgid "Unread Books" msgstr "Olvasatlan könyvek" -#: cps/web.py:2162 cps/web.py:2164 cps/web.py:2166 cps/web.py:2178 +#: cps/web.py:2216 cps/web.py:2218 cps/web.py:2220 cps/web.py:2232 msgid "Read a Book" msgstr "Egy olvasott könyv" -#: cps/web.py:2244 cps/web.py:3129 +#: cps/web.py:2298 cps/web.py:3201 msgid "Please fill out all fields!" msgstr "Az összes mezőt ki kell tölteni!" -#: cps/web.py:2245 cps/web.py:2266 cps/web.py:2270 cps/web.py:2275 -#: cps/web.py:2277 +#: cps/web.py:2299 cps/web.py:2320 cps/web.py:2324 cps/web.py:2329 +#: cps/web.py:2331 msgid "register" msgstr "regisztrálás" -#: cps/web.py:2265 cps/web.py:3345 +#: cps/web.py:2319 cps/web.py:3417 msgid "An unknown error occurred. Please try again later." msgstr "Ismeretlen hiba történt. Próbáld újra később!" -#: cps/web.py:2268 +#: cps/web.py:2322 msgid "Your e-mail is not allowed to register" msgstr "Nem engedélyezett a megadott e-mail cím bejegyzése" -#: cps/web.py:2271 +#: cps/web.py:2325 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Jóváhagyó levél elküldve az email címedre." -#: cps/web.py:2274 +#: cps/web.py:2328 msgid "This username or e-mail address is already in use." msgstr "Ez a felhasználónév vagy e-mail cím már használatban van." -#: cps/web.py:2291 cps/web.py:2387 +#: cps/web.py:2345 cps/web.py:2441 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "Be vagy jelentkezve mint: %(nickname)s" -#: cps/web.py:2296 +#: cps/web.py:2350 msgid "Wrong Username or Password" msgstr "Rossz felhasználó név vagy jelszó!" -#: cps/web.py:2302 cps/web.py:2323 +#: cps/web.py:2356 cps/web.py:2377 msgid "login" msgstr "belépés" -#: cps/web.py:2335 cps/web.py:2366 +#: cps/web.py:2389 cps/web.py:2420 msgid "Token not found" msgstr "A token nem található." -#: cps/web.py:2343 cps/web.py:2374 +#: cps/web.py:2397 cps/web.py:2428 msgid "Token has expired" msgstr "A token érvényessége lejárt." -#: cps/web.py:2351 +#: cps/web.py:2405 msgid "Success! Please return to your device" msgstr "Sikerült! Újra használható az eszköz." -#: cps/web.py:2401 +#: cps/web.py:2455 msgid "Please configure the SMTP mail settings first..." msgstr "Először be kell állítani az SMTP levelező beállításokat..." -#: cps/web.py:2405 +#: cps/web.py:2459 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" -msgstr "" -"A könyv sikeresen küldésre lett jelölve a következő címre: %(kindlemail)s" +msgstr "A könyv sikeresen küldésre lett jelölve a következő címre: %(kindlemail)s" -#: cps/web.py:2409 +#: cps/web.py:2463 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Hiba történt a könyv küldésekor: %(res)s" -#: cps/web.py:2411 cps/web.py:3183 +#: cps/web.py:2465 cps/web.py:3255 msgid "Please configure your kindle e-mail address first..." msgstr "Először be kell állítani a kindle e-mail címet..." -#: cps/web.py:2455 +#: cps/web.py:2476 cps/web.py:2528 +msgid "Invalid shelf specified" +msgstr "A megadott polc érvénytelen!" + +#: cps/web.py:2483 +#, python-format +msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" +msgstr "" + +#: cps/web.py:2491 +msgid "You are not allowed to edit public shelves" +msgstr "" + +#: cps/web.py:2500 +#, python-format +msgid "Book is already part of the shelf: %(shelfname)s" +msgstr "" + +#: cps/web.py:2514 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "A könyv hozzá lett adva a következő polchoz: %(sname)s" -#: cps/web.py:2466 -msgid "Invalid shelf specified" -msgstr "A megadott polc érvénytelen!" - -#: cps/web.py:2471 +#: cps/web.py:2533 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Nincs jogosultságod könyvet tenni a következő polcra: %(name)s." -#: cps/web.py:2476 +#: cps/web.py:2538 msgid "User is not allowed to edit public shelves" msgstr "A felhasználó nem szerkeszthet nyilvános polcokat" -#: cps/web.py:2494 +#: cps/web.py:2556 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "A könyvek már a következő polcon vannak: %(name)s" -#: cps/web.py:2508 +#: cps/web.py:2570 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "A könyvek hozzá lettek adva a következő polchoz: %(sname)s" -#: cps/web.py:2510 +#: cps/web.py:2572 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "Nem sikerült hozzáadni a könyveket a polchoz: %(sname)s" -#: cps/web.py:2547 +#: cps/web.py:2609 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "A könyv el lett távolítva a polcról: %(sname)s" -#: cps/web.py:2553 +#: cps/web.py:2615 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" -msgstr "" -"Sajnálom, nincs jogosultságot eltávolítani könyvet erről a polcról: %(sname)s" +msgstr "Sajnálom, nincs jogosultságot eltávolítani könyvet erről a polcról: %(sname)s" -#: cps/web.py:2573 cps/web.py:2597 +#: cps/web.py:2635 cps/web.py:2659 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Már létezik \"%(title)s\" nevű polc!" -#: cps/web.py:2578 +#: cps/web.py:2640 #, python-format msgid "Shelf %(title)s created" msgstr "A következő polc létre lett hozva: %(title)s" -#: cps/web.py:2580 cps/web.py:2608 +#: cps/web.py:2642 cps/web.py:2670 msgid "There was an error" msgstr "Hiba történt" -#: cps/web.py:2581 cps/web.py:2583 +#: cps/web.py:2643 cps/web.py:2645 msgid "create a shelf" msgstr "Polc készítése" -#: cps/web.py:2606 +#: cps/web.py:2668 #, python-format msgid "Shelf %(title)s changed" msgstr "A következő polc megváltoztatva: %(title)s" -#: cps/web.py:2609 cps/web.py:2611 +#: cps/web.py:2671 cps/web.py:2673 msgid "Edit a shelf" msgstr "Polc szerkesztése" -#: cps/web.py:2632 +#: cps/web.py:2694 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "A következő polc sikeresen törölve: %(name)s" -#: cps/web.py:2659 +#: cps/web.py:2721 #, python-format msgid "Shelf: '%(name)s'" msgstr "Polc: '%(name)s'" -#: cps/web.py:2662 +#: cps/web.py:2724 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Hiba a polc megnyitásakor. A polc nem létezik vagy nem elérhető." -#: cps/web.py:2693 +#: cps/web.py:2755 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "A következő polc átrendezése: %(name)s" -#: cps/web.py:2722 cps/web.py:3135 +#: cps/web.py:2784 cps/web.py:3207 msgid "E-mail is not from valid domain" msgstr "Az e-mail tartománya nem érvényes." -#: cps/web.py:2724 cps/web.py:2765 cps/web.py:2768 +#: cps/web.py:2786 cps/web.py:2829 cps/web.py:2832 #, python-format msgid "%(name)s's profile" msgstr "%(name)s profilja" -#: cps/web.py:2763 +#: cps/web.py:2827 msgid "Found an existing account for this e-mail address." msgstr "Már létezik felhasználó ehhez az e-mail címhez." -#: cps/web.py:2766 +#: cps/web.py:2830 msgid "Profile updated" msgstr "A profil frissítve." -#: cps/web.py:2794 +#: cps/web.py:2858 msgid "Admin page" msgstr "Rendszergazda oldala" -#: cps/web.py:2872 cps/web.py:3045 +#: cps/web.py:2938 cps/web.py:3112 msgid "Calibre-Web configuration updated" msgstr "A Calibre-Web konfigurációja frissítve." -#: cps/templates/admin.html:100 cps/web.py:2885 +#: cps/templates/admin.html:100 cps/web.py:2951 msgid "UI Configuration" msgstr "Felhasználói felület beállításai" -#: cps/web.py:2903 +#: cps/web.py:2969 msgid "Import of optional Google Drive requirements missing" msgstr "Hiányzanak a Google Drive használatához szükséges komponensek" -#: cps/web.py:2906 +#: cps/web.py:2972 msgid "client_secrets.json is missing or not readable" msgstr "A client_secrets.json hiányzik vagy nem olvasható." -#: cps/web.py:2911 cps/web.py:2938 +#: cps/web.py:2977 cps/web.py:3004 msgid "client_secrets.json is not configured for web application" msgstr "A client_secrets.json nincs beállítva a web alkalmazáshoz." -#: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979 -#: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060 -#: cps/web.py:3077 +#: cps/templates/admin.html:99 cps/web.py:3007 cps/web.py:3033 cps/web.py:3045 +#: cps/web.py:3088 cps/web.py:3103 cps/web.py:3120 cps/web.py:3127 +#: cps/web.py:3142 msgid "Basic Configuration" msgstr "Alapvető beállítások" -#: cps/web.py:2964 +#: cps/web.py:3030 msgid "Keyfile location is not valid, please enter correct path" msgstr "A kulcsfájl helye nem érvényes, adj meg érvényes elérési utat" -#: cps/web.py:2976 +#: cps/web.py:3042 msgid "Certfile location is not valid, please enter correct path" msgstr "A tanusítványfájl helye nem érvényes, adj meg érvényes elérési utat" -#: cps/web.py:3018 +#: cps/web.py:3085 msgid "Logfile location is not valid, please enter correct path" msgstr "A naplófájl helye nem érvényes, adj meg érvényes elérési utat" -#: cps/web.py:3057 +#: cps/web.py:3124 msgid "DB location is not valid, please enter correct path" msgstr "Az adatbázis helye nem érvényes, adj meg érvényes elérési utat" -#: cps/templates/admin.html:33 cps/web.py:3131 cps/web.py:3137 cps/web.py:3153 +#: cps/templates/admin.html:33 cps/web.py:3203 cps/web.py:3209 cps/web.py:3225 msgid "Add new user" msgstr "Új felhasználó hozzáadása" -#: cps/web.py:3143 +#: cps/web.py:3215 #, python-format msgid "User '%(user)s' created" msgstr "A következő felhasználó létrehozva: %(user)s" -#: cps/web.py:3147 +#: cps/web.py:3219 msgid "Found an existing account for this e-mail address or nickname." -msgstr "" -"Már létezik felhasználó ehhez az e-mail címhez vagy felhasználói névhez." +msgstr "Már létezik felhasználó ehhez az e-mail címhez vagy felhasználói névhez." -#: cps/web.py:3171 cps/web.py:3185 +#: cps/web.py:3243 cps/web.py:3257 msgid "E-mail server settings updated" msgstr "Az e-mail kiszolgáló beállításai frissítve." -#: cps/web.py:3178 +#: cps/web.py:3250 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "A teszt levél sikeresen elküldve ide: %(kindlemail)s" -#: cps/web.py:3181 +#: cps/web.py:3253 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Hiba történt a teszt levél küldése során: %(res)s" -#: cps/web.py:3186 +#: cps/web.py:3258 msgid "Edit e-mail server settings" msgstr "Az e-mail kiszolgáló beállításainak módosítása" -#: cps/web.py:3211 +#: cps/web.py:3283 #, python-format msgid "User '%(nick)s' deleted" msgstr "A felhasználó törölve: %(nick)s" -#: cps/web.py:3320 +#: cps/web.py:3392 #, python-format msgid "User '%(nick)s' updated" msgstr "A felhasználó frissítve: %(nick)s" -#: cps/web.py:3323 +#: cps/web.py:3395 msgid "An unknown error occured." msgstr "Ismeretlen hiba történt." -#: cps/web.py:3325 +#: cps/web.py:3397 #, python-format msgid "Edit User %(nick)s" msgstr " A felhasználó szerkesztése: %(nick)s" -#: cps/web.py:3342 +#: cps/web.py:3414 #, python-format msgid "Password for user %(user)s reset" msgstr "A(z) %(user)s felhasználó jelszavának alaphelyzetbe állítása" -#: cps/web.py:3362 +#: cps/web.py:3428 cps/web.py:3629 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Hiba az ekönyv megnyitásakor. A fájl nem létezik vagy nem elérhető." -#: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827 +#: cps/web.py:3453 cps/web.py:3912 msgid "edit metadata" msgstr "Metaadatok szerkesztése" -#: cps/web.py:3401 cps/web.py:3697 +#: cps/web.py:3546 cps/web.py:3782 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" -msgstr "" -"A(z) \"%(ext)s\" kiterjesztésű fájlok feltöltése nincs engedélyezve ezen a " -"szerveren." +msgstr "A(z) \"%(ext)s\" kiterjesztésű fájlok feltöltése nincs engedélyezve ezen a szerveren." -#: cps/web.py:3405 cps/web.py:3701 +#: cps/web.py:3550 cps/web.py:3786 msgid "File to be uploaded must have an extension" msgstr "A feltöltendő fájlnak kiterjesztéssel kell rendelkeznie!" -#: cps/web.py:3417 cps/web.py:3721 +#: cps/web.py:3562 cps/web.py:3806 #, python-format msgid "Failed to create path %(path)s (Permission denied)." -msgstr "" -"Nem sikerült létrehozni az elérési utat (engedély megtagadva): %(path)s." +msgstr "Nem sikerült létrehozni az elérési utat (engedély megtagadva): %(path)s." -#: cps/web.py:3422 +#: cps/web.py:3567 #, python-format msgid "Failed to store file %(file)s." msgstr "Nem sikerült elmenteni a %(file)s fájlt." -#: cps/web.py:3438 +#: cps/web.py:3583 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "A(z) %(ext)s fájlformátum hozzáadva a könyvhez: %(book)s." -#: cps/web.py:3455 +#: cps/web.py:3601 #, python-format msgid "Failed to create path for cover %(path)s (Permission denied)." -msgstr "" -"Nem sikerült létrehozni az elérési utat a borítóhoz (engedély megtagadva): " -"%(path)s." +msgstr "Nem sikerült létrehozni az elérési utat a borítóhoz (engedély megtagadva): %(path)s." -#: cps/web.py:3462 +#: cps/web.py:3608 #, python-format msgid "Failed to store cover-file %(cover)s." msgstr "Nem sikerült elmenteni a borító-fájlt: %(cover)s." -#: cps/web.py:3465 +#: cps/web.py:3611 msgid "Cover-file is not a valid image file" msgstr "A borító-fájl nem érvényes képfájl!" -#: cps/web.py:3482 cps/web.py:3486 +#: cps/web.py:3641 cps/web.py:3650 cps/web.py:3654 msgid "unknown" msgstr "ismeretlen" -#: cps/web.py:3508 +#: cps/web.py:3673 msgid "Cover is not a jpg file, can't save" msgstr "A borító nem jpg fájl, nem lehet elmenteni." -#: cps/web.py:3554 +#: cps/web.py:3721 #, python-format msgid "%(langname)s is not a valid language" msgstr "A(z) %(langname)s nem érvényes nyelv" -#: cps/web.py:3676 +#: cps/web.py:3752 +msgid "Metadata successfully updated" +msgstr "" + +#: cps/web.py:3761 msgid "Error editing book, please check logfile for details" msgstr "Hiba a könyv szerkesztése során, további részletek a naplófájlban." -#: cps/web.py:3726 +#: cps/web.py:3811 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "Nem sikerült elmenteni a %(file)s fájlt." -#: cps/web.py:3731 +#: cps/web.py:3816 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "Nem sikerült törölni a %(file)s fájlt." -#: cps/web.py:3813 +#: cps/web.py:3898 #, python-format msgid "File %(file)s uploaded" msgstr "A %(file)s fájl feltöltve." -#: cps/web.py:3843 +#: cps/web.py:3928 msgid "Source or destination format for conversion missing" msgstr "Az átalakításhoz hiányzik a forrás- vagy a célformátum!" -#: cps/web.py:3853 +#: cps/web.py:3938 #, python-format msgid "Book successfully queued for converting to %(book_format)s" -msgstr "" -"A könyv sikeresen átalakításra lett jelölve a következő formátumra: " -"%(book_format)s" +msgstr "A könyv sikeresen átalakításra lett jelölve a következő formátumra: %(book_format)s" -#: cps/web.py:3857 +#: cps/web.py:3942 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Hiba történt a könyv átalakításakor: %(res)s" -#: cps/worker.py:215 cps/worker.py:398 -msgid "Started" -msgstr "Elindítva" - -#: cps/worker.py:251 -#, python-format -msgid "Convertertool %(converter)s not found" -msgstr "Az átalakító-eszköz nem található: %(converter)s." - #: cps/worker.py:287 #, python-format msgid "Ebook-converter failed: %(error)s" @@ -714,25 +745,7 @@ msgstr "Az e-könyv átalakítás nem sikerült: %(error)s" #: cps/worker.py:298 #, python-format msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" -msgstr "" -"A Kindlegen futtatása nem sikerült a(z) %(error)s hiba miatt. Üzenet: " -"%(message)s" - -#: cps/worker.py:355 cps/worker.py:374 -msgid "Waiting" -msgstr "Várakozás" - -#: cps/worker.py:362 -msgid "This e-mail has been sent via Calibre-Web." -msgstr "Ez az e-mail a Calibre-Web-en keresztül lett küldve." - -#: cps/worker.py:388 cps/worker.py:484 -msgid "Finished" -msgstr "Végrehajtva" - -#: cps/worker.py:476 -msgid "Failed" -msgstr "Nem sikerült" +msgstr "A Kindlegen futtatása nem sikerült a(z) %(error)s hiba miatt. Üzenet: %(message)s" #: cps/templates/admin.html:6 msgid "User list" @@ -880,16 +893,16 @@ msgid "Do you really want to restart Calibre-Web?" msgstr "Valóban újra akarod indítani a Calibre-Web-et?" #: cps/templates/admin.html:150 cps/templates/admin.html:164 -#: cps/templates/admin.html:184 cps/templates/shelf.html:59 +#: cps/templates/admin.html:184 cps/templates/shelf.html:61 msgid "Ok" msgstr "OK" #: cps/templates/admin.html:151 cps/templates/admin.html:165 #: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200 -#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164 +#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:168 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75 -#: cps/templates/shelf.html:60 cps/templates/shelf_edit.html:19 -#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:153 +#: cps/templates/shelf.html:62 cps/templates/shelf_edit.html:19 +#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:155 msgid "Back" msgstr "Vissza" @@ -978,28 +991,24 @@ msgid "Rating" msgstr "Értékelés" #: cps/templates/book_edit.html:87 -msgid "" -"Cover URL (jpg, cover is downloaded and stored in database, field is " -"afterwards empty again)" -msgstr "" -"Borító URL (jpg, borító letöltve és elmentve az adatbázisban, a mező újra " -"üres lesz utána)" +msgid "Cover URL (jpg, cover is downloaded and stored in database, field is afterwards empty again)" +msgstr "Borító URL (jpg, borító letöltve és elmentve az adatbázisban, a mező újra üres lesz utána)" #: cps/templates/book_edit.html:91 msgid "Upload Cover from local drive" msgstr "Borító feltöltése helyi meghajtóról" -#: cps/templates/book_edit.html:96 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:96 cps/templates/detail.html:135 msgid "Publishing date" msgstr "Kiadás éve" #: cps/templates/book_edit.html:103 cps/templates/book_edit.html:261 -#: cps/templates/book_edit.html:278 cps/templates/detail.html:126 +#: cps/templates/book_edit.html:278 cps/templates/detail.html:127 #: cps/templates/search_form.html:14 msgid "Publisher" msgstr "Kiadó" -#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:33 +#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:31 msgid "Language" msgstr "Nyelv" @@ -1024,9 +1033,9 @@ msgid "Get metadata" msgstr "Metaadatok beszerzése" #: cps/templates/book_edit.html:177 cps/templates/config_edit.html:210 -#: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 +#: cps/templates/config_view_edit.html:167 cps/templates/login.html:20 #: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 -#: cps/templates/user_edit.html:151 +#: cps/templates/user_edit.html:153 msgid "Submit" msgstr "Küldés" @@ -1062,7 +1071,7 @@ msgstr "Kattints a borítóra a metadatok betöltésére" msgid "Loading..." msgstr "Betöltés..." -#: cps/templates/book_edit.html:239 cps/templates/layout.html:221 +#: cps/templates/book_edit.html:239 cps/templates/layout.html:224 msgid "Close" msgstr "Bezárás" @@ -1244,31 +1253,31 @@ msgstr "Felnőtt tartalom címkéi" msgid "Default settings for new users" msgstr "Új felhasználók alapértelmezett beállításai" -#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:108 +#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:110 msgid "Admin user" msgstr "Rendszergazda felhasználó" -#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:117 +#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:119 msgid "Allow Downloads" msgstr "Letöltés engedélyezése" -#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:121 +#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:123 msgid "Allow Uploads" msgstr "Feltöltés engedélyezése" -#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:125 +#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:127 msgid "Allow Edit" msgstr "Szerkesztés engedélyezése" -#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:129 +#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:131 msgid "Allow Delete books" msgstr "Könyv törlés engedélyezése" -#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:134 +#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:136 msgid "Allow Changing Password" msgstr "Jelszó változtatásának engedélyezése" -#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:138 +#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:140 msgid "Allow Editing Public Shelfs" msgstr "Nyilvános polcok szerkesztésének engedélyezése" @@ -1276,51 +1285,55 @@ msgstr "Nyilvános polcok szerkesztésének engedélyezése" msgid "Default visibilities for new users" msgstr "Új felhasználók alapértelmezett látható elemei" -#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:60 +#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:58 msgid "Show random books" msgstr "Könyvek találomra mutatása" -#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:64 +#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:62 msgid "Show recent books" msgstr "Legutóbbi könyvek mutatása" -#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:68 +#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:66 msgid "Show sorted books" msgstr "Rendezett könyvek mutatása" -#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:72 +#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:70 msgid "Show hot books" msgstr "Kelendő könyvek mutatása" -#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:76 +#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:74 msgid "Show best rated books" msgstr "Legjobbra értékelt könyvek mutatása" -#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:80 +#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:78 msgid "Show language selection" msgstr "Nyelv választó mutatása" -#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:84 +#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:82 msgid "Show series selection" msgstr "Sorozat választó mutatása" -#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:88 +#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:86 msgid "Show category selection" msgstr "Címke választó mutatása" -#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:92 +#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:90 msgid "Show author selection" msgstr "Szerző választó mutatása" -#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:96 +#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:94 +msgid "Show publisher selection" +msgstr "" + +#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:98 msgid "Show read and unread" msgstr "Mutassa az olvasva/olvasatlan állapotot" -#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:100 +#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:102 msgid "Show random books in detail view" msgstr "Mutasson könyveket találomra a részletes nézetben" -#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:113 +#: cps/templates/config_view_edit.html:160 cps/templates/user_edit.html:115 msgid "Show mature content" msgstr "Mutassa a felnőtt tartalmat" @@ -1340,27 +1353,25 @@ msgstr "kötete a sorozatnak:" msgid "language" msgstr "nyelv" -#: cps/templates/detail.html:168 +#: cps/templates/detail.html:172 msgid "Read" msgstr "Olvasva" -#: cps/templates/detail.html:177 +#: cps/templates/detail.html:182 msgid "Description:" msgstr "Ismertető:" -#: cps/templates/detail.html:189 cps/templates/search.html:14 +#: cps/templates/detail.html:195 cps/templates/search.html:14 msgid "Add to shelf" msgstr "Hozzáadás polchoz" -#: cps/templates/detail.html:251 +#: cps/templates/detail.html:257 msgid "Edit metadata" msgstr "Metaadatok szerkesztése" #: cps/templates/email_edit.html:15 -msgid "" -"SMTP port (usually 25 for plain SMTP and 465 for SSL and 587 for STARTTLS)" -msgstr "" -"SMTP port (egyszerű SMTP-hez rendszerint 25, SSL-hez 465 és STARTTLS-hez 587)" +msgid "SMTP port (usually 25 for plain SMTP and 465 for SSL and 587 for STARTTLS)" +msgstr "SMTP port (egyszerű SMTP-hez rendszerint 25, SSL-hez 465 és STARTTLS-hez 587)" #: cps/templates/email_edit.html:19 msgid "Encryption" @@ -1414,11 +1425,11 @@ msgstr "Hozzáadás" msgid "Do you really want to delete this domain rule?" msgstr "Valóban törölni akarod ezt a tartomány-szabályt?" -#: cps/templates/feed.xml:21 cps/templates/layout.html:205 +#: cps/templates/feed.xml:21 cps/templates/layout.html:208 msgid "Next" msgstr "Következő" -#: cps/templates/feed.xml:30 cps/templates/index.xml:8 +#: cps/templates/feed.xml:33 cps/templates/index.xml:11 #: cps/templates/layout.html:43 cps/templates/layout.html:44 msgid "Search" msgstr "Keresés" @@ -1431,63 +1442,71 @@ msgstr "Felfedezés (könyvek találomra)" msgid "Start" msgstr "Kezdés" -#: cps/templates/index.xml:15 cps/templates/layout.html:139 +#: cps/templates/index.xml:18 cps/templates/layout.html:139 msgid "Hot Books" msgstr "Kelendő könyvek" -#: cps/templates/index.xml:19 +#: cps/templates/index.xml:22 msgid "Popular publications from this catalog based on Downloads." msgstr "Ebből a katalógusból származó népszerű kiadványok letöltések alapján." -#: cps/templates/index.xml:22 cps/templates/layout.html:142 +#: cps/templates/index.xml:25 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "Legjobb könyvek" -#: cps/templates/index.xml:26 +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Rating." msgstr "Ebből a katalógusból származó népszerű kiadványok értékelések alapján." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:32 msgid "New Books" msgstr "Új könyvek" -#: cps/templates/index.xml:33 +#: cps/templates/index.xml:36 msgid "The latest Books" msgstr "A legfrissebb könyvek" -#: cps/templates/index.xml:40 +#: cps/templates/index.xml:43 msgid "Show Random Books" msgstr "Mutass könyveket találomra" -#: cps/templates/index.xml:59 cps/templates/layout.html:160 +#: cps/templates/index.xml:62 cps/templates/layout.html:160 msgid "Authors" msgstr "Szerzők" -#: cps/templates/index.xml:63 +#: cps/templates/index.xml:66 msgid "Books ordered by Author" msgstr "Könyvek szerző szerint rendezve" -#: cps/templates/index.xml:70 +#: cps/templates/index.xml:69 cps/templates/layout.html:163 +msgid "Publishers" +msgstr "" + +#: cps/templates/index.xml:73 +msgid "Books ordered by publisher" +msgstr "" + +#: cps/templates/index.xml:80 msgid "Books ordered by category" msgstr "Könyvek címke szerint rendezve" -#: cps/templates/index.xml:77 +#: cps/templates/index.xml:87 msgid "Books ordered by series" msgstr "Könyvek sorozat szerint rendezve" -#: cps/templates/index.xml:80 cps/templates/layout.html:166 +#: cps/templates/index.xml:90 cps/templates/layout.html:169 msgid "Public Shelves" msgstr "Nyilvános polcok" -#: cps/templates/index.xml:84 +#: cps/templates/index.xml:94 msgid "Books organized in public shelfs, visible to everyone" msgstr "Könyvek nyilvános polcokra rakva, mindenkinek látható" -#: cps/templates/index.xml:88 cps/templates/layout.html:170 +#: cps/templates/index.xml:98 cps/templates/layout.html:173 msgid "Your Shelves" msgstr "Saját polcok" -#: cps/templates/index.xml:92 +#: cps/templates/index.xml:102 msgid "User's own shelfs, only visible to the current user himself" msgstr "A felhasználó saját polcai, csak a jelenlegi felhasználónak láthatóak" @@ -1503,7 +1522,7 @@ msgstr "Részletes keresés" msgid "Logout" msgstr "Kilépés" -#: cps/templates/layout.html:83 cps/templates/register.html:18 +#: cps/templates/layout.html:83 cps/templates/register.html:14 msgid "Register" msgstr "Regisztrálás" @@ -1556,23 +1575,23 @@ msgstr "Felfedezés" msgid "Categories" msgstr "Címkék" -#: cps/templates/layout.html:163 cps/templates/search_form.html:74 +#: cps/templates/layout.html:166 cps/templates/search_form.html:74 msgid "Languages" msgstr "Nyelvek" -#: cps/templates/layout.html:175 +#: cps/templates/layout.html:178 msgid "Create a Shelf" msgstr "Polc készítése" -#: cps/templates/layout.html:176 cps/templates/stats.html:3 +#: cps/templates/layout.html:179 cps/templates/stats.html:3 msgid "About" msgstr "Névjegy" -#: cps/templates/layout.html:190 +#: cps/templates/layout.html:193 msgid "Previous" msgstr "Előző" -#: cps/templates/layout.html:217 +#: cps/templates/layout.html:220 msgid "Book Details" msgstr "Könyv részletei" @@ -1582,7 +1601,7 @@ msgid "Username" msgstr "Felhasználó név" #: cps/templates/login.html:12 cps/templates/login.html:13 -#: cps/templates/register.html:11 cps/templates/user_edit.html:21 +#: cps/templates/user_edit.html:21 msgid "Password" msgstr "Jelszó" @@ -1647,7 +1666,7 @@ msgstr "Forgatás jobbra" msgid "Flip Image" msgstr "Kép tükrözése" -#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:41 +#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:39 msgid "Theme" msgstr "Téma" @@ -1711,15 +1730,11 @@ msgstr "Új felhasználó regisztrálása" msgid "Choose a username" msgstr "Válassz egy felhasználónevet" -#: cps/templates/register.html:12 -msgid "Choose a password" -msgstr "Válassz egy jelszót" - -#: cps/templates/register.html:15 cps/templates/user_edit.html:13 +#: cps/templates/register.html:11 cps/templates/user_edit.html:13 msgid "E-mail address" msgstr "E-mail cím" -#: cps/templates/register.html:16 +#: cps/templates/register.html:12 msgid "Your email address" msgstr "Az e-mail címed" @@ -1733,8 +1748,7 @@ msgstr "és lépj be" #: cps/templates/remote_login.html:9 msgid "Once you do so, you will automatically get logged in on this device." -msgstr "" -"Az első belépés után automatikusan be leszel léptetve ezen az eszközön." +msgstr "Az első belépés után automatikusan be leszel léptetve ezen az eszközön." #: cps/templates/search.html:5 msgid "No Results for:" @@ -1788,11 +1802,11 @@ msgstr "Polc szerkesztése" msgid "Change order" msgstr "Sorrend változtatása" -#: cps/templates/shelf.html:54 +#: cps/templates/shelf.html:56 msgid "Do you really want to delete the shelf?" msgstr "Valóban törölni akarod a polcot?" -#: cps/templates/shelf.html:57 +#: cps/templates/shelf.html:59 msgid "Shelf will be lost for everybody and forever!" msgstr "A polc el fog tűnni mindenki számára és örökké!" @@ -1876,30 +1890,49 @@ msgstr "Összes feladat elrejtése" msgid "Reset user Password" msgstr "Felhasználó jelszavának alaphelyzetbe állítása" -#: cps/templates/user_edit.html:29 +#: cps/templates/user_edit.html:27 msgid "Kindle E-Mail" msgstr "Kindle e-mail" -#: cps/templates/user_edit.html:43 +#: cps/templates/user_edit.html:41 msgid "Standard Theme" msgstr "Alapértelmezett téma" -#: cps/templates/user_edit.html:44 +#: cps/templates/user_edit.html:42 msgid "caliBlur! Dark Theme (Beta)" msgstr "caliBlur! sötét téma (béta)" -#: cps/templates/user_edit.html:49 +#: cps/templates/user_edit.html:47 msgid "Show books with language" msgstr "Mutasd a könyveket a következő nyelvvel" -#: cps/templates/user_edit.html:51 +#: cps/templates/user_edit.html:49 msgid "Show all" msgstr "Mindent mutass" -#: cps/templates/user_edit.html:145 +#: cps/templates/user_edit.html:147 msgid "Delete this user" msgstr "A felhasználó törlése" -#: cps/templates/user_edit.html:160 +#: cps/templates/user_edit.html:162 msgid "Recent Downloads" msgstr "Utolsó letöltések" + +#~ msgid "Convert: %(book)s" +#~ msgstr "Konvertálás: %(book)s" + +#~ msgid "Convert to %(format)s: %(book)s" +#~ msgstr "Konvertálás %(format)s-ba: %(book)s" + +#~ msgid "Files are replaced" +#~ msgstr "Fájlok cserélve" + +#~ msgid "Server is stopped" +#~ msgstr "A kiszolgáló leállt." + +#~ msgid "Convertertool %(converter)s not found" +#~ msgstr "Az átalakító-eszköz nem található: %(converter)s." + +#~ msgid "Choose a password" +#~ msgstr "Válassz egy jelszót" + diff --git a/cps/translations/it/LC_MESSAGES/messages.po b/cps/translations/it/LC_MESSAGES/messages.po index daa6aa6f..f276928f 100644 --- a/cps/translations/it/LC_MESSAGES/messages.po +++ b/cps/translations/it/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2018-09-14 21:11+0200\n" +"POT-Creation-Date: 2018-11-03 14:03+0100\n" "PO-Revision-Date: 2017-04-04 15:09+0200\n" "Last-Translator: Marco Picone \n" "Language: it\n" @@ -15,10 +15,10 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.5.1\n" +"Generated-By: Babel 2.6.0\n" -#: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 -#: cps/converter.py:11 cps/converter.py:27 +#: cps/book_formats.py:129 cps/book_formats.py:130 cps/book_formats.py:134 +#: cps/book_formats.py:138 cps/converter.py:11 cps/converter.py:27 msgid "not installed" msgstr "non installato" @@ -26,660 +26,716 @@ msgstr "non installato" msgid "Excecution permissions missing" msgstr "Mancano autorizzazioni di esecuzione" -#: cps/helper.py:57 +#: cps/converter.py:48 +msgid "not configured" +msgstr "" + +#: cps/helper.py:58 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "" -#: cps/helper.py:69 +#: cps/helper.py:70 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "" -#: cps/helper.py:76 -#, python-format -msgid "Convert: %(book)s" -msgstr "" +#: cps/helper.py:77 cps/helper.py:147 cps/templates/detail.html:44 +msgid "Send to Kindle" +msgstr "Invia a Kindle" -#: cps/helper.py:79 -#, python-format -msgid "Convert to %(format)s: %(book)s" +#: cps/helper.py:78 cps/helper.py:96 +msgid "This e-mail has been sent via Calibre-Web." msgstr "" -#: cps/helper.py:86 +#: cps/helper.py:89 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "" -#: cps/helper.py:91 +#: cps/helper.py:94 msgid "Calibre-Web test e-mail" msgstr "" -#: cps/helper.py:92 +#: cps/helper.py:95 msgid "Test e-mail" msgstr "" -#: cps/helper.py:107 +#: cps/helper.py:111 msgid "Get Started with Calibre-Web" msgstr "" -#: cps/helper.py:108 +#: cps/helper.py:112 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "" -#: cps/helper.py:131 cps/helper.py:141 +#: cps/helper.py:135 cps/helper.py:145 msgid "Could not find any formats suitable for sending by e-mail" msgstr "" -#: cps/helper.py:143 cps/templates/detail.html:44 cps/worker.py:224 -msgid "Send to Kindle" -msgstr "Invia a Kindle" - -#: cps/helper.py:144 cps/worker.py:226 +#: cps/helper.py:148 #, python-format msgid "E-mail: %(book)s" msgstr "" -#: cps/helper.py:146 +#: cps/helper.py:150 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "" -#: cps/helper.py:241 +#: cps/helper.py:250 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:250 +#: cps/helper.py:259 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:272 cps/helper.py:281 +#: cps/helper.py:281 cps/helper.py:290 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "" -#: cps/helper.py:299 +#: cps/helper.py:308 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "" -#: cps/helper.py:544 +#: cps/helper.py:565 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:546 +#: cps/helper.py:567 msgid "Unrar binary file not found" msgstr "" -#: cps/web.py:1112 cps/web.py:2778 +#: cps/helper.py:609 +msgid "Waiting" +msgstr "" + +#: cps/helper.py:611 +msgid "Failed" +msgstr "" + +#: cps/helper.py:613 +msgid "Started" +msgstr "" + +#: cps/helper.py:615 +msgid "Finished" +msgstr "" + +#: cps/helper.py:617 +msgid "Unknown Status" +msgstr "" + +#: cps/helper.py:622 +msgid "E-mail: " +msgstr "" + +#: cps/helper.py:624 cps/helper.py:628 +msgid "Convert: " +msgstr "" + +#: cps/helper.py:626 +msgid "Upload: " +msgstr "" + +#: cps/helper.py:630 +msgid "Unknown Task: " +msgstr "" + +#: cps/web.py:1132 cps/web.py:2842 msgid "Unknown" msgstr "" -#: cps/web.py:1121 cps/web.py:1152 +#: cps/web.py:1141 cps/web.py:1172 cps/web.py:1257 msgid "HTTP Error" msgstr "" -#: cps/web.py:1123 cps/web.py:1154 +#: cps/web.py:1143 cps/web.py:1174 cps/web.py:1258 msgid "Connection error" msgstr "" -#: cps/web.py:1125 cps/web.py:1156 +#: cps/web.py:1145 cps/web.py:1176 cps/web.py:1259 msgid "Timeout while establishing connection" msgstr "" -#: cps/web.py:1127 cps/web.py:1158 +#: cps/web.py:1147 cps/web.py:1178 cps/web.py:1260 msgid "General error" msgstr "" -#: cps/web.py:1133 +#: cps/web.py:1153 msgid "Unexpected data while reading update information" msgstr "" -#: cps/web.py:1140 +#: cps/web.py:1160 msgid "No update available. You already have the latest version installed" msgstr "" -#: cps/web.py:1165 +#: cps/web.py:1185 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "" -#: cps/web.py:1215 +#: cps/web.py:1235 msgid "Could not fetch update information" msgstr "" -#: cps/web.py:1230 +#: cps/web.py:1250 msgid "Requesting update package" msgstr "Richiesta del pacchetto di aggiornamento" -#: cps/web.py:1231 +#: cps/web.py:1251 msgid "Downloading update package" msgstr "Scaricare il pacchetto di aggiornamento" -#: cps/web.py:1232 +#: cps/web.py:1252 msgid "Unzipping update package" msgstr "Decomprimere pacchetto di aggiornamento" -#: cps/web.py:1233 -msgid "Files are replaced" -msgstr "I file vengono sostituiti" +#: cps/web.py:1253 +msgid "Replacing files" +msgstr "" -#: cps/web.py:1234 +#: cps/web.py:1254 msgid "Database connections are closed" msgstr "Le connessioni di database sono chiuse" -#: cps/web.py:1235 -msgid "Server is stopped" -msgstr "Il server viene arrestato" +#: cps/web.py:1255 +msgid "Stopping server" +msgstr "" -#: cps/web.py:1236 +#: cps/web.py:1256 msgid "Update finished, please press okay and reload page" msgstr "Aggiornamento completato, prego premere bene e ricaricare pagina" -#: cps/web.py:1256 +#: cps/web.py:1257 cps/web.py:1258 cps/web.py:1259 cps/web.py:1260 +msgid "Update failed:" +msgstr "" + +#: cps/web.py:1283 msgid "Recently Added Books" msgstr "Libri aggiunti di recente" -#: cps/web.py:1266 +#: cps/web.py:1293 msgid "Newest Books" msgstr "I più nuovi libri" -#: cps/web.py:1278 +#: cps/web.py:1305 msgid "Oldest Books" msgstr "Libri più vecchi" -#: cps/web.py:1290 +#: cps/web.py:1317 msgid "Books (A-Z)" msgstr "Ebook (A-Z)" -#: cps/web.py:1301 +#: cps/web.py:1328 msgid "Books (Z-A)" msgstr "Ebook (Z-A)" -#: cps/web.py:1330 +#: cps/web.py:1357 msgid "Hot Books (most downloaded)" msgstr "Hot Books (più scaricati)" -#: cps/web.py:1343 +#: cps/web.py:1370 msgid "Best rated books" msgstr "I migliori libri valutati" -#: cps/templates/index.xml:36 cps/web.py:1355 +#: cps/templates/index.xml:39 cps/web.py:1383 msgid "Random Books" msgstr "Libri casuali" -#: cps/web.py:1370 +#: cps/web.py:1398 msgid "Author list" msgstr "Elenco degli autori" -#: cps/web.py:1382 cps/web.py:1445 cps/web.py:1600 cps/web.py:2152 +#: cps/web.py:1410 cps/web.py:1501 cps/web.py:1663 cps/web.py:2206 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "Errore durante l'apertura di eBook. Il file non esiste o il file non è accessibile:" -#: cps/templates/index.xml:73 cps/web.py:1429 +#: cps/web.py:1438 +msgid "Publisher list" +msgstr "" + +#: cps/web.py:1452 +#, python-format +msgid "Publisher: %(name)s" +msgstr "" + +#: cps/templates/index.xml:83 cps/web.py:1484 msgid "Series list" msgstr "Lista delle serie" -#: cps/web.py:1443 +#: cps/web.py:1499 #, python-format msgid "Series: %(serie)s" msgstr "Serie :" -#: cps/web.py:1470 +#: cps/web.py:1528 msgid "Available languages" msgstr "Lingue disponibili" -#: cps/web.py:1487 +#: cps/web.py:1548 #, python-format msgid "Language: %(name)s" msgstr "Lingue: %(name)s" -#: cps/templates/index.xml:66 cps/web.py:1498 +#: cps/templates/index.xml:76 cps/web.py:1559 msgid "Category list" msgstr "Elenco categorie" -#: cps/web.py:1512 +#: cps/web.py:1573 #, python-format msgid "Category: %(name)s" msgstr "Categoria : %(name)s" -#: cps/templates/layout.html:71 cps/web.py:1651 +#: cps/templates/layout.html:71 cps/web.py:1699 msgid "Tasks" msgstr "" -#: cps/web.py:1681 +#: cps/web.py:1733 msgid "Statistics" msgstr "Statistica" -#: cps/web.py:1786 +#: cps/web.py:1840 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "" -#: cps/web.py:1861 +#: cps/web.py:1915 msgid "Server restarted, please reload page" msgstr "Server riavviato, ricarica pagina" -#: cps/web.py:1864 +#: cps/web.py:1918 msgid "Performing shutdown of server, please close window" msgstr "Eseguire l'arresto del server, chiudi la finestra." -#: cps/web.py:1883 +#: cps/web.py:1937 msgid "Update done" msgstr "Aggiornamento fatto" -#: cps/web.py:1953 +#: cps/web.py:2007 msgid "Published after " msgstr "" -#: cps/web.py:1960 +#: cps/web.py:2014 msgid "Published before " msgstr "" -#: cps/web.py:1974 +#: cps/web.py:2028 #, python-format msgid "Rating <= %(rating)s" msgstr "" -#: cps/web.py:1976 +#: cps/web.py:2030 #, python-format msgid "Rating >= %(rating)s" msgstr "" -#: cps/web.py:2035 cps/web.py:2044 +#: cps/web.py:2089 cps/web.py:2098 msgid "search" msgstr "ricerca" -#: cps/templates/index.xml:44 cps/templates/index.xml:48 -#: cps/templates/layout.html:146 cps/web.py:2111 +#: cps/templates/index.xml:47 cps/templates/index.xml:51 +#: cps/templates/layout.html:146 cps/web.py:2165 msgid "Read Books" msgstr "Leggere libri" -#: cps/templates/index.xml:52 cps/templates/index.xml:56 -#: cps/templates/layout.html:148 cps/web.py:2114 +#: cps/templates/index.xml:55 cps/templates/index.xml:59 +#: cps/templates/layout.html:148 cps/web.py:2168 msgid "Unread Books" msgstr "Libri non letti" -#: cps/web.py:2162 cps/web.py:2164 cps/web.py:2166 cps/web.py:2178 +#: cps/web.py:2216 cps/web.py:2218 cps/web.py:2220 cps/web.py:2232 msgid "Read a Book" msgstr "Leggere un libro" -#: cps/web.py:2244 cps/web.py:3129 +#: cps/web.py:2298 cps/web.py:3201 msgid "Please fill out all fields!" msgstr "Compila tutti i campi" -#: cps/web.py:2245 cps/web.py:2266 cps/web.py:2270 cps/web.py:2275 -#: cps/web.py:2277 +#: cps/web.py:2299 cps/web.py:2320 cps/web.py:2324 cps/web.py:2329 +#: cps/web.py:2331 msgid "register" msgstr "Registrare" -#: cps/web.py:2265 cps/web.py:3345 +#: cps/web.py:2319 cps/web.py:3417 msgid "An unknown error occurred. Please try again later." msgstr "" -#: cps/web.py:2268 +#: cps/web.py:2322 msgid "Your e-mail is not allowed to register" msgstr "" -#: cps/web.py:2271 +#: cps/web.py:2325 msgid "Confirmation e-mail was send to your e-mail account." msgstr "" -#: cps/web.py:2274 +#: cps/web.py:2328 msgid "This username or e-mail address is already in use." msgstr "" -#: cps/web.py:2291 cps/web.py:2387 +#: cps/web.py:2345 cps/web.py:2441 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "ora sei connesso come : '%(nickname)s'" -#: cps/web.py:2296 +#: cps/web.py:2350 msgid "Wrong Username or Password" msgstr "Nome utente o password errata" -#: cps/web.py:2302 cps/web.py:2323 +#: cps/web.py:2356 cps/web.py:2377 msgid "login" msgstr "Accesso" -#: cps/web.py:2335 cps/web.py:2366 +#: cps/web.py:2389 cps/web.py:2420 msgid "Token not found" msgstr "Token non trovato" -#: cps/web.py:2343 cps/web.py:2374 +#: cps/web.py:2397 cps/web.py:2428 msgid "Token has expired" msgstr "Il token è scaduto" -#: cps/web.py:2351 +#: cps/web.py:2405 msgid "Success! Please return to your device" msgstr "Successo! Torna al tuo dispositivo" -#: cps/web.py:2401 +#: cps/web.py:2455 msgid "Please configure the SMTP mail settings first..." msgstr "Configurare prima le impostazioni della posta SMTP..." -#: cps/web.py:2405 +#: cps/web.py:2459 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "" -#: cps/web.py:2409 +#: cps/web.py:2463 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Si è verificato un errore durante l'invio di questo libro: %(res)s" -#: cps/web.py:2411 cps/web.py:3183 +#: cps/web.py:2465 cps/web.py:3255 msgid "Please configure your kindle e-mail address first..." msgstr "" -#: cps/web.py:2455 +#: cps/web.py:2476 cps/web.py:2528 +msgid "Invalid shelf specified" +msgstr "" + +#: cps/web.py:2483 #, python-format -msgid "Book has been added to shelf: %(sname)s" -msgstr "Il libro è stato aggiunto alla mensola: %(sname)s" +msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" +msgstr "" -#: cps/web.py:2466 -msgid "Invalid shelf specified" +#: cps/web.py:2491 +msgid "You are not allowed to edit public shelves" +msgstr "" + +#: cps/web.py:2500 +#, python-format +msgid "Book is already part of the shelf: %(shelfname)s" msgstr "" -#: cps/web.py:2471 +#: cps/web.py:2514 +#, python-format +msgid "Book has been added to shelf: %(sname)s" +msgstr "Il libro è stato aggiunto alla mensola: %(sname)s" + +#: cps/web.py:2533 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "" -#: cps/web.py:2476 +#: cps/web.py:2538 msgid "User is not allowed to edit public shelves" msgstr "" -#: cps/web.py:2494 +#: cps/web.py:2556 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "" -#: cps/web.py:2508 +#: cps/web.py:2570 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "" -#: cps/web.py:2510 +#: cps/web.py:2572 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "" -#: cps/web.py:2547 +#: cps/web.py:2609 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Il libro è stato rimosso dalla mensola: %(sname)s" -#: cps/web.py:2553 +#: cps/web.py:2615 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" -#: cps/web.py:2573 cps/web.py:2597 +#: cps/web.py:2635 cps/web.py:2659 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Uno scaffale con il nome '%(title)s' esiste già." -#: cps/web.py:2578 +#: cps/web.py:2640 #, python-format msgid "Shelf %(title)s created" msgstr "Mensola %(title)s creato" -#: cps/web.py:2580 cps/web.py:2608 +#: cps/web.py:2642 cps/web.py:2670 msgid "There was an error" msgstr "c'era un errore" -#: cps/web.py:2581 cps/web.py:2583 +#: cps/web.py:2643 cps/web.py:2645 msgid "create a shelf" msgstr "creare uno scaffale" -#: cps/web.py:2606 +#: cps/web.py:2668 #, python-format msgid "Shelf %(title)s changed" msgstr "Mensola %(title)s cambiato" -#: cps/web.py:2609 cps/web.py:2611 +#: cps/web.py:2671 cps/web.py:2673 msgid "Edit a shelf" msgstr "Modifica un ripiano" -#: cps/web.py:2632 +#: cps/web.py:2694 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "cancellato con successo il ripiano %(name)s" -#: cps/web.py:2659 +#: cps/web.py:2721 #, python-format msgid "Shelf: '%(name)s'" msgstr "Mensola: '%(name)s'" -#: cps/web.py:2662 +#: cps/web.py:2724 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Errore durante l'apertura dello scaffale. La mensola non esiste o non è accessibile" -#: cps/web.py:2693 +#: cps/web.py:2755 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Modificare l'ordine della mensola: '%(name)s'" -#: cps/web.py:2722 cps/web.py:3135 +#: cps/web.py:2784 cps/web.py:3207 msgid "E-mail is not from valid domain" msgstr "" -#: cps/web.py:2724 cps/web.py:2765 cps/web.py:2768 +#: cps/web.py:2786 cps/web.py:2829 cps/web.py:2832 #, python-format msgid "%(name)s's profile" msgstr "Profilo di %(name)s" -#: cps/web.py:2763 +#: cps/web.py:2827 msgid "Found an existing account for this e-mail address." msgstr "" -#: cps/web.py:2766 +#: cps/web.py:2830 msgid "Profile updated" msgstr "Profilo aggiornato" -#: cps/web.py:2794 +#: cps/web.py:2858 msgid "Admin page" msgstr "Pagina di amministrazione" -#: cps/web.py:2872 cps/web.py:3045 +#: cps/web.py:2938 cps/web.py:3112 msgid "Calibre-Web configuration updated" msgstr "Aggiornamento della configurazione del calibro-web" -#: cps/templates/admin.html:100 cps/web.py:2885 +#: cps/templates/admin.html:100 cps/web.py:2951 msgid "UI Configuration" msgstr "" -#: cps/web.py:2903 +#: cps/web.py:2969 msgid "Import of optional Google Drive requirements missing" msgstr "" -#: cps/web.py:2906 +#: cps/web.py:2972 msgid "client_secrets.json is missing or not readable" msgstr "" -#: cps/web.py:2911 cps/web.py:2938 +#: cps/web.py:2977 cps/web.py:3004 msgid "client_secrets.json is not configured for web application" msgstr "" -#: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979 -#: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060 -#: cps/web.py:3077 +#: cps/templates/admin.html:99 cps/web.py:3007 cps/web.py:3033 cps/web.py:3045 +#: cps/web.py:3088 cps/web.py:3103 cps/web.py:3120 cps/web.py:3127 +#: cps/web.py:3142 msgid "Basic Configuration" msgstr "Configurazione di base" -#: cps/web.py:2964 +#: cps/web.py:3030 msgid "Keyfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2976 +#: cps/web.py:3042 msgid "Certfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:3018 +#: cps/web.py:3085 msgid "Logfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:3057 +#: cps/web.py:3124 msgid "DB location is not valid, please enter correct path" msgstr "Posizione DB non valida. Inserisci il percorso corretto." -#: cps/templates/admin.html:33 cps/web.py:3131 cps/web.py:3137 cps/web.py:3153 +#: cps/templates/admin.html:33 cps/web.py:3203 cps/web.py:3209 cps/web.py:3225 msgid "Add new user" msgstr "Aggiungi un nuovo utente" -#: cps/web.py:3143 +#: cps/web.py:3215 #, python-format msgid "User '%(user)s' created" msgstr "utente '%(user)s' creato" -#: cps/web.py:3147 +#: cps/web.py:3219 msgid "Found an existing account for this e-mail address or nickname." msgstr "" -#: cps/web.py:3171 cps/web.py:3185 +#: cps/web.py:3243 cps/web.py:3257 msgid "E-mail server settings updated" msgstr "" -#: cps/web.py:3178 +#: cps/web.py:3250 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "" -#: cps/web.py:3181 +#: cps/web.py:3253 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "" -#: cps/web.py:3186 +#: cps/web.py:3258 msgid "Edit e-mail server settings" msgstr "" -#: cps/web.py:3211 +#: cps/web.py:3283 #, python-format msgid "User '%(nick)s' deleted" msgstr "utente '%(nick)s' cancellati" -#: cps/web.py:3320 +#: cps/web.py:3392 #, python-format msgid "User '%(nick)s' updated" msgstr "utente '%(nick)s' aggiornato" -#: cps/web.py:3323 +#: cps/web.py:3395 msgid "An unknown error occured." msgstr "Errore imprevisto." -#: cps/web.py:3325 +#: cps/web.py:3397 #, python-format msgid "Edit User %(nick)s" msgstr "Modifica utente %(nick)s" -#: cps/web.py:3342 +#: cps/web.py:3414 #, python-format msgid "Password for user %(user)s reset" msgstr "" -#: cps/web.py:3362 +#: cps/web.py:3428 cps/web.py:3629 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Errore durante l'apertura di eBook. Il file non esiste o il file non è accessibile" -#: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827 +#: cps/web.py:3453 cps/web.py:3912 msgid "edit metadata" msgstr "modificare la metainformazione" -#: cps/web.py:3401 cps/web.py:3697 +#: cps/web.py:3546 cps/web.py:3782 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Non è consentito caricare i file con l'estensione '%(ext)s' a questo server" -#: cps/web.py:3405 cps/web.py:3701 +#: cps/web.py:3550 cps/web.py:3786 msgid "File to be uploaded must have an extension" msgstr "Il file da caricare deve avere un'estensione" -#: cps/web.py:3417 cps/web.py:3721 +#: cps/web.py:3562 cps/web.py:3806 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Impossibile creare il percorso %(path)s (autorizzazione negata)" -#: cps/web.py:3422 +#: cps/web.py:3567 #, python-format msgid "Failed to store file %(file)s." msgstr "" -#: cps/web.py:3438 +#: cps/web.py:3583 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "" -#: cps/web.py:3455 +#: cps/web.py:3601 #, python-format msgid "Failed to create path for cover %(path)s (Permission denied)." msgstr "" -#: cps/web.py:3462 +#: cps/web.py:3608 #, python-format msgid "Failed to store cover-file %(cover)s." msgstr "" -#: cps/web.py:3465 +#: cps/web.py:3611 msgid "Cover-file is not a valid image file" msgstr "" -#: cps/web.py:3482 cps/web.py:3486 +#: cps/web.py:3641 cps/web.py:3650 cps/web.py:3654 msgid "unknown" msgstr "Sconosciuto" -#: cps/web.py:3508 +#: cps/web.py:3673 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/web.py:3554 +#: cps/web.py:3721 #, python-format msgid "%(langname)s is not a valid language" msgstr "" -#: cps/web.py:3676 +#: cps/web.py:3752 +msgid "Metadata successfully updated" +msgstr "" + +#: cps/web.py:3761 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/web.py:3726 +#: cps/web.py:3811 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "Impossibile archiviare il file %(file)s (autorizzazione negata)" -#: cps/web.py:3731 +#: cps/web.py:3816 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "Impossibile eliminare il file %(file)s (autorizzazione negata)" -#: cps/web.py:3813 +#: cps/web.py:3898 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/web.py:3843 +#: cps/web.py:3928 msgid "Source or destination format for conversion missing" msgstr "" -#: cps/web.py:3853 +#: cps/web.py:3938 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "" -#: cps/web.py:3857 +#: cps/web.py:3942 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "" -#: cps/worker.py:215 cps/worker.py:398 -msgid "Started" -msgstr "" - -#: cps/worker.py:251 -#, python-format -msgid "Convertertool %(converter)s not found" -msgstr "" - #: cps/worker.py:287 #, python-format msgid "Ebook-converter failed: %(error)s" @@ -690,22 +746,6 @@ msgstr "" msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "errore" -#: cps/worker.py:355 cps/worker.py:374 -msgid "Waiting" -msgstr "" - -#: cps/worker.py:362 -msgid "This e-mail has been sent via Calibre-Web." -msgstr "" - -#: cps/worker.py:388 cps/worker.py:484 -msgid "Finished" -msgstr "" - -#: cps/worker.py:476 -msgid "Failed" -msgstr "" - #: cps/templates/admin.html:6 msgid "User list" msgstr "elenco utenti" @@ -852,16 +892,16 @@ msgid "Do you really want to restart Calibre-Web?" msgstr "Vuoi veramente riavviare Caliber-web?" #: cps/templates/admin.html:150 cps/templates/admin.html:164 -#: cps/templates/admin.html:184 cps/templates/shelf.html:59 +#: cps/templates/admin.html:184 cps/templates/shelf.html:61 msgid "Ok" msgstr "Ok" #: cps/templates/admin.html:151 cps/templates/admin.html:165 #: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200 -#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164 +#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:168 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75 -#: cps/templates/shelf.html:60 cps/templates/shelf_edit.html:19 -#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:153 +#: cps/templates/shelf.html:62 cps/templates/shelf_edit.html:19 +#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:155 msgid "Back" msgstr "Indietro" @@ -957,17 +997,17 @@ msgstr "" msgid "Upload Cover from local drive" msgstr "" -#: cps/templates/book_edit.html:96 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:96 cps/templates/detail.html:135 msgid "Publishing date" msgstr "Data di pubblicazione" #: cps/templates/book_edit.html:103 cps/templates/book_edit.html:261 -#: cps/templates/book_edit.html:278 cps/templates/detail.html:126 +#: cps/templates/book_edit.html:278 cps/templates/detail.html:127 #: cps/templates/search_form.html:14 msgid "Publisher" msgstr "Editore" -#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:33 +#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:31 msgid "Language" msgstr "Lingua" @@ -992,9 +1032,9 @@ msgid "Get metadata" msgstr "Ottieni metadati" #: cps/templates/book_edit.html:177 cps/templates/config_edit.html:210 -#: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 +#: cps/templates/config_view_edit.html:167 cps/templates/login.html:20 #: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 -#: cps/templates/user_edit.html:151 +#: cps/templates/user_edit.html:153 msgid "Submit" msgstr "Sottoscrivi" @@ -1030,7 +1070,7 @@ msgstr "Fai clic sul coperchio per caricare i metadati nel modulo" msgid "Loading..." msgstr "Caricamento in corso..." -#: cps/templates/book_edit.html:239 cps/templates/layout.html:221 +#: cps/templates/book_edit.html:239 cps/templates/layout.html:224 msgid "Close" msgstr "Chiuso" @@ -1212,31 +1252,31 @@ msgstr "Tags per Contenuti maturi" msgid "Default settings for new users" msgstr "Impostazioni predefinite per i nuovi utenti" -#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:108 +#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:110 msgid "Admin user" msgstr "Utente amministratore" -#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:117 +#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:119 msgid "Allow Downloads" msgstr "Consenti download" -#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:121 +#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:123 msgid "Allow Uploads" msgstr "Consenti caricamenti" -#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:125 +#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:127 msgid "Allow Edit" msgstr "Consenti Modifica" -#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:129 +#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:131 msgid "Allow Delete books" msgstr "Consenti l'eliminazione di libri" -#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:134 +#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:136 msgid "Allow Changing Password" msgstr "Consenti la modifica della password" -#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:138 +#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:140 msgid "Allow Editing Public Shelfs" msgstr "Consenti la modifica dei ripiani pubblici" @@ -1244,51 +1284,55 @@ msgstr "Consenti la modifica dei ripiani pubblici" msgid "Default visibilities for new users" msgstr "" -#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:60 +#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:58 msgid "Show random books" msgstr "Mostra libro a caso" -#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:64 +#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:62 msgid "Show recent books" msgstr "" -#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:68 +#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:66 msgid "Show sorted books" msgstr "" -#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:72 +#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:70 msgid "Show hot books" msgstr "Mostra libri popolari" -#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:76 +#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:74 msgid "Show best rated books" msgstr "Mostra sezione più votati" -#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:80 +#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:78 msgid "Show language selection" msgstr "Mostra sezione lingua" -#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:84 +#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:82 msgid "Show series selection" msgstr "Mostra sezione serie" -#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:88 +#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:86 msgid "Show category selection" msgstr "Mostra sezione categorie" -#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:92 +#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:90 msgid "Show author selection" msgstr "Mostra sezione autore" -#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:96 +#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:94 +msgid "Show publisher selection" +msgstr "" + +#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:98 msgid "Show read and unread" msgstr "Mostra letto e non letto" -#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:100 +#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:102 msgid "Show random books in detail view" msgstr "Un libro a caso" -#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:113 +#: cps/templates/config_view_edit.html:160 cps/templates/user_edit.html:115 msgid "Show mature content" msgstr "Mostra sezione adulti" @@ -1308,19 +1352,19 @@ msgstr "di" msgid "language" msgstr "Lingua" -#: cps/templates/detail.html:168 +#: cps/templates/detail.html:172 msgid "Read" msgstr "Leggere" -#: cps/templates/detail.html:177 +#: cps/templates/detail.html:182 msgid "Description:" msgstr "Descrizione :" -#: cps/templates/detail.html:189 cps/templates/search.html:14 +#: cps/templates/detail.html:195 cps/templates/search.html:14 msgid "Add to shelf" msgstr "Aggiungi al ripiano" -#: cps/templates/detail.html:251 +#: cps/templates/detail.html:257 msgid "Edit metadata" msgstr "Modifica metadati" @@ -1380,11 +1424,11 @@ msgstr "" msgid "Do you really want to delete this domain rule?" msgstr "" -#: cps/templates/feed.xml:21 cps/templates/layout.html:205 +#: cps/templates/feed.xml:21 cps/templates/layout.html:208 msgid "Next" msgstr "Prossimo" -#: cps/templates/feed.xml:30 cps/templates/index.xml:8 +#: cps/templates/feed.xml:33 cps/templates/index.xml:11 #: cps/templates/layout.html:43 cps/templates/layout.html:44 msgid "Search" msgstr "Cerca" @@ -1397,63 +1441,71 @@ msgstr "Scoprire (Libri casuali)" msgid "Start" msgstr "Inizio" -#: cps/templates/index.xml:15 cps/templates/layout.html:139 +#: cps/templates/index.xml:18 cps/templates/layout.html:139 msgid "Hot Books" msgstr "Hot Ebook" -#: cps/templates/index.xml:19 +#: cps/templates/index.xml:22 msgid "Popular publications from this catalog based on Downloads." msgstr "Pubblicazioni popolari di questo catalogo in base ai download." -#: cps/templates/index.xml:22 cps/templates/layout.html:142 +#: cps/templates/index.xml:25 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "Libri più votati" -#: cps/templates/index.xml:26 +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Rating." msgstr "Pubblicazioni popolari di questo catalogo basate su Rating." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:32 msgid "New Books" msgstr "Nuovi libri" -#: cps/templates/index.xml:33 +#: cps/templates/index.xml:36 msgid "The latest Books" msgstr "Gli ultimi Libri" -#: cps/templates/index.xml:40 +#: cps/templates/index.xml:43 msgid "Show Random Books" msgstr "Mostra libri casuali" -#: cps/templates/index.xml:59 cps/templates/layout.html:160 +#: cps/templates/index.xml:62 cps/templates/layout.html:160 msgid "Authors" msgstr "Autori" -#: cps/templates/index.xml:63 +#: cps/templates/index.xml:66 msgid "Books ordered by Author" msgstr "Libri ordinati dall'autore" -#: cps/templates/index.xml:70 +#: cps/templates/index.xml:69 cps/templates/layout.html:163 +msgid "Publishers" +msgstr "" + +#: cps/templates/index.xml:73 +msgid "Books ordered by publisher" +msgstr "" + +#: cps/templates/index.xml:80 msgid "Books ordered by category" msgstr "Libri ordinati per categoria" -#: cps/templates/index.xml:77 +#: cps/templates/index.xml:87 msgid "Books ordered by series" msgstr "Libri ordinati per serie" -#: cps/templates/index.xml:80 cps/templates/layout.html:166 +#: cps/templates/index.xml:90 cps/templates/layout.html:169 msgid "Public Shelves" msgstr "Ripiani pubblici" -#: cps/templates/index.xml:84 +#: cps/templates/index.xml:94 msgid "Books organized in public shelfs, visible to everyone" msgstr "" -#: cps/templates/index.xml:88 cps/templates/layout.html:170 +#: cps/templates/index.xml:98 cps/templates/layout.html:173 msgid "Your Shelves" msgstr "I tuoi scaffali" -#: cps/templates/index.xml:92 +#: cps/templates/index.xml:102 msgid "User's own shelfs, only visible to the current user himself" msgstr "" @@ -1469,7 +1521,7 @@ msgstr "Ricerca avanzata" msgid "Logout" msgstr "Logout" -#: cps/templates/layout.html:83 cps/templates/register.html:18 +#: cps/templates/layout.html:83 cps/templates/register.html:14 msgid "Register" msgstr "Registrare" @@ -1522,23 +1574,23 @@ msgstr "Per scoprire" msgid "Categories" msgstr "Categoria" -#: cps/templates/layout.html:163 cps/templates/search_form.html:74 +#: cps/templates/layout.html:166 cps/templates/search_form.html:74 msgid "Languages" msgstr "lingua" -#: cps/templates/layout.html:175 +#: cps/templates/layout.html:178 msgid "Create a Shelf" msgstr "Crea una mensola" -#: cps/templates/layout.html:176 cps/templates/stats.html:3 +#: cps/templates/layout.html:179 cps/templates/stats.html:3 msgid "About" msgstr "Di" -#: cps/templates/layout.html:190 +#: cps/templates/layout.html:193 msgid "Previous" msgstr "Precedente" -#: cps/templates/layout.html:217 +#: cps/templates/layout.html:220 msgid "Book Details" msgstr "Dettagli ebook" @@ -1548,7 +1600,7 @@ msgid "Username" msgstr "Username" #: cps/templates/login.html:12 cps/templates/login.html:13 -#: cps/templates/register.html:11 cps/templates/user_edit.html:21 +#: cps/templates/user_edit.html:21 msgid "Password" msgstr "Password" @@ -1613,7 +1665,7 @@ msgstr "" msgid "Flip Image" msgstr "" -#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:41 +#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:39 msgid "Theme" msgstr "" @@ -1677,15 +1729,11 @@ msgstr "Registra un nuovo account" msgid "Choose a username" msgstr "Scegli un nome utente" -#: cps/templates/register.html:12 -msgid "Choose a password" -msgstr "Scegli una chiave" - -#: cps/templates/register.html:15 cps/templates/user_edit.html:13 +#: cps/templates/register.html:11 cps/templates/user_edit.html:13 msgid "E-mail address" msgstr "" -#: cps/templates/register.html:16 +#: cps/templates/register.html:12 msgid "Your email address" msgstr "Il tuo indirizzo e-mail" @@ -1753,11 +1801,11 @@ msgstr "" msgid "Change order" msgstr "Cambia ordine" -#: cps/templates/shelf.html:54 +#: cps/templates/shelf.html:56 msgid "Do you really want to delete the shelf?" msgstr "Vuoi davvero eliminare lo scaffale?" -#: cps/templates/shelf.html:57 +#: cps/templates/shelf.html:59 msgid "Shelf will be lost for everybody and forever!" msgstr "La mensola sarà perduta per tutti e per sempre!" @@ -1841,31 +1889,31 @@ msgstr "" msgid "Reset user Password" msgstr "" -#: cps/templates/user_edit.html:29 +#: cps/templates/user_edit.html:27 msgid "Kindle E-Mail" msgstr "Email Kindle" -#: cps/templates/user_edit.html:43 +#: cps/templates/user_edit.html:41 msgid "Standard Theme" msgstr "" -#: cps/templates/user_edit.html:44 +#: cps/templates/user_edit.html:42 msgid "caliBlur! Dark Theme (Beta)" msgstr "" -#: cps/templates/user_edit.html:49 +#: cps/templates/user_edit.html:47 msgid "Show books with language" msgstr "Mostra libri per lingua" -#: cps/templates/user_edit.html:51 +#: cps/templates/user_edit.html:49 msgid "Show all" msgstr "Mostra tutto" -#: cps/templates/user_edit.html:145 +#: cps/templates/user_edit.html:147 msgid "Delete this user" msgstr "Elimina questo utente" -#: cps/templates/user_edit.html:160 +#: cps/templates/user_edit.html:162 msgid "Recent Downloads" msgstr "Download Recenti" @@ -1908,3 +1956,21 @@ msgstr "Download Recenti" #~ msgid "Newest commit timestamp" #~ msgstr "Più recente commit timestamp" +#~ msgid "Convert: %(book)s" +#~ msgstr "" + +#~ msgid "Convert to %(format)s: %(book)s" +#~ msgstr "" + +#~ msgid "Files are replaced" +#~ msgstr "I file vengono sostituiti" + +#~ msgid "Server is stopped" +#~ msgstr "Il server viene arrestato" + +#~ msgid "Convertertool %(converter)s not found" +#~ msgstr "" + +#~ msgid "Choose a password" +#~ msgstr "Scegli una chiave" + diff --git a/cps/translations/ja/LC_MESSAGES/messages.po b/cps/translations/ja/LC_MESSAGES/messages.po index 88ddeee1..28c198b0 100644 --- a/cps/translations/ja/LC_MESSAGES/messages.po +++ b/cps/translations/ja/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2018-09-14 21:11+0200\n" +"POT-Creation-Date: 2018-11-03 14:03+0100\n" "PO-Revision-Date: 2018-02-07 02:20-0500\n" "Last-Translator: white \n" "Language: ja\n" @@ -16,10 +16,10 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.5.1\n" +"Generated-By: Babel 2.6.0\n" -#: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 -#: cps/converter.py:11 cps/converter.py:27 +#: cps/book_formats.py:129 cps/book_formats.py:130 cps/book_formats.py:134 +#: cps/book_formats.py:138 cps/converter.py:11 cps/converter.py:27 msgid "not installed" msgstr "インストールされません" @@ -27,660 +27,716 @@ msgstr "インストールされません" msgid "Excecution permissions missing" msgstr "実行許可はありません" -#: cps/helper.py:57 +#: cps/converter.py:48 +msgid "not configured" +msgstr "" + +#: cps/helper.py:58 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "" -#: cps/helper.py:69 +#: cps/helper.py:70 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "" -#: cps/helper.py:76 -#, python-format -msgid "Convert: %(book)s" -msgstr "" +#: cps/helper.py:77 cps/helper.py:147 cps/templates/detail.html:44 +msgid "Send to Kindle" +msgstr "Kindleに送信する" -#: cps/helper.py:79 -#, python-format -msgid "Convert to %(format)s: %(book)s" +#: cps/helper.py:78 cps/helper.py:96 +msgid "This e-mail has been sent via Calibre-Web." msgstr "" -#: cps/helper.py:86 +#: cps/helper.py:89 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "" -#: cps/helper.py:91 +#: cps/helper.py:94 msgid "Calibre-Web test e-mail" msgstr "" -#: cps/helper.py:92 +#: cps/helper.py:95 msgid "Test e-mail" msgstr "" -#: cps/helper.py:107 +#: cps/helper.py:111 msgid "Get Started with Calibre-Web" msgstr "" -#: cps/helper.py:108 +#: cps/helper.py:112 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "" -#: cps/helper.py:131 cps/helper.py:141 +#: cps/helper.py:135 cps/helper.py:145 msgid "Could not find any formats suitable for sending by e-mail" msgstr "" -#: cps/helper.py:143 cps/templates/detail.html:44 cps/worker.py:224 -msgid "Send to Kindle" -msgstr "Kindleに送信する" - -#: cps/helper.py:144 cps/worker.py:226 +#: cps/helper.py:148 #, python-format msgid "E-mail: %(book)s" msgstr "" -#: cps/helper.py:146 +#: cps/helper.py:150 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "" -#: cps/helper.py:241 +#: cps/helper.py:250 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:250 +#: cps/helper.py:259 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:272 cps/helper.py:281 +#: cps/helper.py:281 cps/helper.py:290 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "" -#: cps/helper.py:299 +#: cps/helper.py:308 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "" -#: cps/helper.py:544 +#: cps/helper.py:565 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:546 +#: cps/helper.py:567 msgid "Unrar binary file not found" msgstr "" -#: cps/web.py:1112 cps/web.py:2778 +#: cps/helper.py:609 +msgid "Waiting" +msgstr "" + +#: cps/helper.py:611 +msgid "Failed" +msgstr "" + +#: cps/helper.py:613 +msgid "Started" +msgstr "" + +#: cps/helper.py:615 +msgid "Finished" +msgstr "" + +#: cps/helper.py:617 +msgid "Unknown Status" +msgstr "" + +#: cps/helper.py:622 +msgid "E-mail: " +msgstr "" + +#: cps/helper.py:624 cps/helper.py:628 +msgid "Convert: " +msgstr "" + +#: cps/helper.py:626 +msgid "Upload: " +msgstr "" + +#: cps/helper.py:630 +msgid "Unknown Task: " +msgstr "" + +#: cps/web.py:1132 cps/web.py:2842 msgid "Unknown" msgstr "" -#: cps/web.py:1121 cps/web.py:1152 +#: cps/web.py:1141 cps/web.py:1172 cps/web.py:1257 msgid "HTTP Error" msgstr "" -#: cps/web.py:1123 cps/web.py:1154 +#: cps/web.py:1143 cps/web.py:1174 cps/web.py:1258 msgid "Connection error" msgstr "" -#: cps/web.py:1125 cps/web.py:1156 +#: cps/web.py:1145 cps/web.py:1176 cps/web.py:1259 msgid "Timeout while establishing connection" msgstr "" -#: cps/web.py:1127 cps/web.py:1158 +#: cps/web.py:1147 cps/web.py:1178 cps/web.py:1260 msgid "General error" msgstr "" -#: cps/web.py:1133 +#: cps/web.py:1153 msgid "Unexpected data while reading update information" msgstr "" -#: cps/web.py:1140 +#: cps/web.py:1160 msgid "No update available. You already have the latest version installed" msgstr "" -#: cps/web.py:1165 +#: cps/web.py:1185 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "" -#: cps/web.py:1215 +#: cps/web.py:1235 msgid "Could not fetch update information" msgstr "" -#: cps/web.py:1230 +#: cps/web.py:1250 msgid "Requesting update package" msgstr "更新パッケージを要求します" -#: cps/web.py:1231 +#: cps/web.py:1251 msgid "Downloading update package" msgstr "更新パッケージをダウンロードします" -#: cps/web.py:1232 +#: cps/web.py:1252 msgid "Unzipping update package" msgstr "更新パッケージをZIP解凍します" -#: cps/web.py:1233 -msgid "Files are replaced" -msgstr "ファイルを書き換えました" +#: cps/web.py:1253 +msgid "Replacing files" +msgstr "" -#: cps/web.py:1234 +#: cps/web.py:1254 msgid "Database connections are closed" msgstr "データベースの接続が閉じられました" -#: cps/web.py:1235 -msgid "Server is stopped" -msgstr "サーバがシャットダウンされました" +#: cps/web.py:1255 +msgid "Stopping server" +msgstr "" -#: cps/web.py:1236 +#: cps/web.py:1256 msgid "Update finished, please press okay and reload page" msgstr "更新完了、Okayまたは再読み込みボタンを押してください" -#: cps/web.py:1256 +#: cps/web.py:1257 cps/web.py:1258 cps/web.py:1259 cps/web.py:1260 +msgid "Update failed:" +msgstr "" + +#: cps/web.py:1283 msgid "Recently Added Books" msgstr "最近追加された本" -#: cps/web.py:1266 +#: cps/web.py:1293 msgid "Newest Books" msgstr "最新の本" -#: cps/web.py:1278 +#: cps/web.py:1305 msgid "Oldest Books" msgstr "最古の本" -#: cps/web.py:1290 +#: cps/web.py:1317 msgid "Books (A-Z)" msgstr "本(A-Z)" -#: cps/web.py:1301 +#: cps/web.py:1328 msgid "Books (Z-A)" msgstr "本 (Z-A)" -#: cps/web.py:1330 +#: cps/web.py:1357 msgid "Hot Books (most downloaded)" msgstr "有名な本(ダウンロード数)" -#: cps/web.py:1343 +#: cps/web.py:1370 msgid "Best rated books" msgstr "最高評判の本" -#: cps/templates/index.xml:36 cps/web.py:1355 +#: cps/templates/index.xml:39 cps/web.py:1383 msgid "Random Books" msgstr "任意の本" -#: cps/web.py:1370 +#: cps/web.py:1398 msgid "Author list" msgstr "著者リスト" -#: cps/web.py:1382 cps/web.py:1445 cps/web.py:1600 cps/web.py:2152 +#: cps/web.py:1410 cps/web.py:1501 cps/web.py:1663 cps/web.py:2206 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "電子本を開けません。ファイルは存在しないまたはアクセスできません" -#: cps/templates/index.xml:73 cps/web.py:1429 +#: cps/web.py:1438 +msgid "Publisher list" +msgstr "" + +#: cps/web.py:1452 +#, python-format +msgid "Publisher: %(name)s" +msgstr "" + +#: cps/templates/index.xml:83 cps/web.py:1484 msgid "Series list" msgstr "叢書リスト" -#: cps/web.py:1443 +#: cps/web.py:1499 #, python-format msgid "Series: %(serie)s" msgstr "叢書: %(serie)s" -#: cps/web.py:1470 +#: cps/web.py:1528 msgid "Available languages" msgstr "利用可能な言語" -#: cps/web.py:1487 +#: cps/web.py:1548 #, python-format msgid "Language: %(name)s" msgstr "言語: %(name)s" -#: cps/templates/index.xml:66 cps/web.py:1498 +#: cps/templates/index.xml:76 cps/web.py:1559 msgid "Category list" msgstr "カテゴリーリスト" -#: cps/web.py:1512 +#: cps/web.py:1573 #, python-format msgid "Category: %(name)s" msgstr "カテゴリー: %(name)s" -#: cps/templates/layout.html:71 cps/web.py:1651 +#: cps/templates/layout.html:71 cps/web.py:1699 msgid "Tasks" msgstr "" -#: cps/web.py:1681 +#: cps/web.py:1733 msgid "Statistics" msgstr "統計" -#: cps/web.py:1786 +#: cps/web.py:1840 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "" -#: cps/web.py:1861 +#: cps/web.py:1915 msgid "Server restarted, please reload page" msgstr "サーバを再起動しました、ページを再読み込みしてください" -#: cps/web.py:1864 +#: cps/web.py:1918 msgid "Performing shutdown of server, please close window" msgstr "サーバをシャットダウンします、ページを閉じてください" -#: cps/web.py:1883 +#: cps/web.py:1937 msgid "Update done" msgstr "更新完了" -#: cps/web.py:1953 +#: cps/web.py:2007 msgid "Published after " msgstr "" -#: cps/web.py:1960 +#: cps/web.py:2014 msgid "Published before " msgstr "" -#: cps/web.py:1974 +#: cps/web.py:2028 #, python-format msgid "Rating <= %(rating)s" msgstr "" -#: cps/web.py:1976 +#: cps/web.py:2030 #, python-format msgid "Rating >= %(rating)s" msgstr "" -#: cps/web.py:2035 cps/web.py:2044 +#: cps/web.py:2089 cps/web.py:2098 msgid "search" msgstr "検索" -#: cps/templates/index.xml:44 cps/templates/index.xml:48 -#: cps/templates/layout.html:146 cps/web.py:2111 +#: cps/templates/index.xml:47 cps/templates/index.xml:51 +#: cps/templates/layout.html:146 cps/web.py:2165 msgid "Read Books" msgstr "既読の本" -#: cps/templates/index.xml:52 cps/templates/index.xml:56 -#: cps/templates/layout.html:148 cps/web.py:2114 +#: cps/templates/index.xml:55 cps/templates/index.xml:59 +#: cps/templates/layout.html:148 cps/web.py:2168 msgid "Unread Books" msgstr "未読の本" -#: cps/web.py:2162 cps/web.py:2164 cps/web.py:2166 cps/web.py:2178 +#: cps/web.py:2216 cps/web.py:2218 cps/web.py:2220 cps/web.py:2232 msgid "Read a Book" msgstr "本を読む" -#: cps/web.py:2244 cps/web.py:3129 +#: cps/web.py:2298 cps/web.py:3201 msgid "Please fill out all fields!" msgstr "全ての項目を入力してください" -#: cps/web.py:2245 cps/web.py:2266 cps/web.py:2270 cps/web.py:2275 -#: cps/web.py:2277 +#: cps/web.py:2299 cps/web.py:2320 cps/web.py:2324 cps/web.py:2329 +#: cps/web.py:2331 msgid "register" msgstr "登録" -#: cps/web.py:2265 cps/web.py:3345 +#: cps/web.py:2319 cps/web.py:3417 msgid "An unknown error occurred. Please try again later." msgstr "" -#: cps/web.py:2268 +#: cps/web.py:2322 msgid "Your e-mail is not allowed to register" msgstr "" -#: cps/web.py:2271 +#: cps/web.py:2325 msgid "Confirmation e-mail was send to your e-mail account." msgstr "" -#: cps/web.py:2274 +#: cps/web.py:2328 msgid "This username or e-mail address is already in use." msgstr "" -#: cps/web.py:2291 cps/web.py:2387 +#: cps/web.py:2345 cps/web.py:2441 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "%(nickname)s としてログインします" -#: cps/web.py:2296 +#: cps/web.py:2350 msgid "Wrong Username or Password" msgstr "ユーザ名またはパスワードは間違いました" -#: cps/web.py:2302 cps/web.py:2323 +#: cps/web.py:2356 cps/web.py:2377 msgid "login" msgstr "ログイン" -#: cps/web.py:2335 cps/web.py:2366 +#: cps/web.py:2389 cps/web.py:2420 msgid "Token not found" msgstr "トークンは見つかりません" -#: cps/web.py:2343 cps/web.py:2374 +#: cps/web.py:2397 cps/web.py:2428 msgid "Token has expired" msgstr "トークンは失効されました" -#: cps/web.py:2351 +#: cps/web.py:2405 msgid "Success! Please return to your device" msgstr "成功しまた!端末に戻ってください" -#: cps/web.py:2401 +#: cps/web.py:2455 msgid "Please configure the SMTP mail settings first..." msgstr "SMTPメールをまず設定してください" -#: cps/web.py:2405 +#: cps/web.py:2459 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "" -#: cps/web.py:2409 +#: cps/web.py:2463 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "%(res)s を送信する際にエーラが発生しました" -#: cps/web.py:2411 cps/web.py:3183 +#: cps/web.py:2465 cps/web.py:3255 msgid "Please configure your kindle e-mail address first..." msgstr "" -#: cps/web.py:2455 +#: cps/web.py:2476 cps/web.py:2528 +msgid "Invalid shelf specified" +msgstr "" + +#: cps/web.py:2483 #, python-format -msgid "Book has been added to shelf: %(sname)s" -msgstr "本 %(sname)s を書架に追加されました" +msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" +msgstr "" -#: cps/web.py:2466 -msgid "Invalid shelf specified" +#: cps/web.py:2491 +msgid "You are not allowed to edit public shelves" +msgstr "" + +#: cps/web.py:2500 +#, python-format +msgid "Book is already part of the shelf: %(shelfname)s" msgstr "" -#: cps/web.py:2471 +#: cps/web.py:2514 +#, python-format +msgid "Book has been added to shelf: %(sname)s" +msgstr "本 %(sname)s を書架に追加されました" + +#: cps/web.py:2533 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "" -#: cps/web.py:2476 +#: cps/web.py:2538 msgid "User is not allowed to edit public shelves" msgstr "" -#: cps/web.py:2494 +#: cps/web.py:2556 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "" -#: cps/web.py:2508 +#: cps/web.py:2570 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "" -#: cps/web.py:2510 +#: cps/web.py:2572 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "" -#: cps/web.py:2547 +#: cps/web.py:2609 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "本 %(sname)s を書架から除去されました" -#: cps/web.py:2553 +#: cps/web.py:2615 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" -#: cps/web.py:2573 cps/web.py:2597 +#: cps/web.py:2635 cps/web.py:2659 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "名前を使った書架 '%(title)s' は既に存在しました" -#: cps/web.py:2578 +#: cps/web.py:2640 #, python-format msgid "Shelf %(title)s created" msgstr "書架%(title)s は作成されました" -#: cps/web.py:2580 cps/web.py:2608 +#: cps/web.py:2642 cps/web.py:2670 msgid "There was an error" msgstr "エーラが発生しました" -#: cps/web.py:2581 cps/web.py:2583 +#: cps/web.py:2643 cps/web.py:2645 msgid "create a shelf" msgstr "書架を作成する" -#: cps/web.py:2606 +#: cps/web.py:2668 #, python-format msgid "Shelf %(title)s changed" msgstr "書架 %(title)s 変わりました" -#: cps/web.py:2609 cps/web.py:2611 +#: cps/web.py:2671 cps/web.py:2673 msgid "Edit a shelf" msgstr "書架を編集する" -#: cps/web.py:2632 +#: cps/web.py:2694 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "%(name)s の書架を削除されました" -#: cps/web.py:2659 +#: cps/web.py:2721 #, python-format msgid "Shelf: '%(name)s'" msgstr "書架: '%(name)s'" -#: cps/web.py:2662 +#: cps/web.py:2724 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "書架を開けません。書架は存在しないまたはアクセスできません" -#: cps/web.py:2693 +#: cps/web.py:2755 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "'%(name)s' の書架の順番を入れ替える" -#: cps/web.py:2722 cps/web.py:3135 +#: cps/web.py:2784 cps/web.py:3207 msgid "E-mail is not from valid domain" msgstr "" -#: cps/web.py:2724 cps/web.py:2765 cps/web.py:2768 +#: cps/web.py:2786 cps/web.py:2829 cps/web.py:2832 #, python-format msgid "%(name)s's profile" msgstr "%(name)sのプロファイル" -#: cps/web.py:2763 +#: cps/web.py:2827 msgid "Found an existing account for this e-mail address." msgstr "" -#: cps/web.py:2766 +#: cps/web.py:2830 msgid "Profile updated" msgstr "プロファイルが更新されました" -#: cps/web.py:2794 +#: cps/web.py:2858 msgid "Admin page" msgstr "管理者ページ" -#: cps/web.py:2872 cps/web.py:3045 +#: cps/web.py:2938 cps/web.py:3112 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web 設定を更新されました" -#: cps/templates/admin.html:100 cps/web.py:2885 +#: cps/templates/admin.html:100 cps/web.py:2951 msgid "UI Configuration" msgstr "" -#: cps/web.py:2903 +#: cps/web.py:2969 msgid "Import of optional Google Drive requirements missing" msgstr "" -#: cps/web.py:2906 +#: cps/web.py:2972 msgid "client_secrets.json is missing or not readable" msgstr "" -#: cps/web.py:2911 cps/web.py:2938 +#: cps/web.py:2977 cps/web.py:3004 msgid "client_secrets.json is not configured for web application" msgstr "" -#: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979 -#: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060 -#: cps/web.py:3077 +#: cps/templates/admin.html:99 cps/web.py:3007 cps/web.py:3033 cps/web.py:3045 +#: cps/web.py:3088 cps/web.py:3103 cps/web.py:3120 cps/web.py:3127 +#: cps/web.py:3142 msgid "Basic Configuration" msgstr "基本設定" -#: cps/web.py:2964 +#: cps/web.py:3030 msgid "Keyfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2976 +#: cps/web.py:3042 msgid "Certfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:3018 +#: cps/web.py:3085 msgid "Logfile location is not valid, please enter correct path" msgstr "ログファイルの場所は不適切です。正しい場所を入力してください" -#: cps/web.py:3057 +#: cps/web.py:3124 msgid "DB location is not valid, please enter correct path" msgstr "データベースの場所は不適切です。正しい場所を入力してください" -#: cps/templates/admin.html:33 cps/web.py:3131 cps/web.py:3137 cps/web.py:3153 +#: cps/templates/admin.html:33 cps/web.py:3203 cps/web.py:3209 cps/web.py:3225 msgid "Add new user" msgstr "新規ユーザ追加" -#: cps/web.py:3143 +#: cps/web.py:3215 #, python-format msgid "User '%(user)s' created" msgstr "ユーザ '%(user)s' が作成されました" -#: cps/web.py:3147 +#: cps/web.py:3219 msgid "Found an existing account for this e-mail address or nickname." msgstr "" -#: cps/web.py:3171 cps/web.py:3185 +#: cps/web.py:3243 cps/web.py:3257 msgid "E-mail server settings updated" msgstr "" -#: cps/web.py:3178 +#: cps/web.py:3250 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "" -#: cps/web.py:3181 +#: cps/web.py:3253 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "" -#: cps/web.py:3186 +#: cps/web.py:3258 msgid "Edit e-mail server settings" msgstr "" -#: cps/web.py:3211 +#: cps/web.py:3283 #, python-format msgid "User '%(nick)s' deleted" msgstr "ユーザ '%(nick)s' 削除されました" -#: cps/web.py:3320 +#: cps/web.py:3392 #, python-format msgid "User '%(nick)s' updated" msgstr "ユーザ '%(nick)s' 更新されました" -#: cps/web.py:3323 +#: cps/web.py:3395 msgid "An unknown error occured." msgstr "不明のエーラが発生しました" -#: cps/web.py:3325 +#: cps/web.py:3397 #, python-format msgid "Edit User %(nick)s" msgstr "ユーザ編集 %(nick)s" -#: cps/web.py:3342 +#: cps/web.py:3414 #, python-format msgid "Password for user %(user)s reset" msgstr "" -#: cps/web.py:3362 +#: cps/web.py:3428 cps/web.py:3629 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "電子本を開けません。ファイルは存在しないまたはアクセスできません" -#: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827 +#: cps/web.py:3453 cps/web.py:3912 msgid "edit metadata" msgstr "メタデータを編集します" -#: cps/web.py:3401 cps/web.py:3697 +#: cps/web.py:3546 cps/web.py:3782 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "ファイル拡張子 '%(ext)s' をこのサーバにアップロードする許可はありません" -#: cps/web.py:3405 cps/web.py:3701 +#: cps/web.py:3550 cps/web.py:3786 msgid "File to be uploaded must have an extension" msgstr "ファイルをアップロードするために拡張子が必要です" -#: cps/web.py:3417 cps/web.py:3721 +#: cps/web.py:3562 cps/web.py:3806 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "場所 %(path)s の作成を失敗しました (許可拒否)" -#: cps/web.py:3422 +#: cps/web.py:3567 #, python-format msgid "Failed to store file %(file)s." msgstr "フアイル %(file)s の保存を失敗しました" -#: cps/web.py:3438 +#: cps/web.py:3583 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "" -#: cps/web.py:3455 +#: cps/web.py:3601 #, python-format msgid "Failed to create path for cover %(path)s (Permission denied)." msgstr "" -#: cps/web.py:3462 +#: cps/web.py:3608 #, python-format msgid "Failed to store cover-file %(cover)s." msgstr "" -#: cps/web.py:3465 +#: cps/web.py:3611 msgid "Cover-file is not a valid image file" msgstr "" -#: cps/web.py:3482 cps/web.py:3486 +#: cps/web.py:3641 cps/web.py:3650 cps/web.py:3654 msgid "unknown" msgstr "不明" -#: cps/web.py:3508 +#: cps/web.py:3673 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/web.py:3554 +#: cps/web.py:3721 #, python-format msgid "%(langname)s is not a valid language" msgstr "" -#: cps/web.py:3676 +#: cps/web.py:3752 +msgid "Metadata successfully updated" +msgstr "" + +#: cps/web.py:3761 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/web.py:3726 +#: cps/web.py:3811 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "ファイル %(file)s の保存を失敗しました (許可拒否)" -#: cps/web.py:3731 +#: cps/web.py:3816 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "ファイル %(file)s の削除を失敗しました (許可拒否)" -#: cps/web.py:3813 +#: cps/web.py:3898 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/web.py:3843 +#: cps/web.py:3928 msgid "Source or destination format for conversion missing" msgstr "" -#: cps/web.py:3853 +#: cps/web.py:3938 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "" -#: cps/web.py:3857 +#: cps/web.py:3942 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "" -#: cps/worker.py:215 cps/worker.py:398 -msgid "Started" -msgstr "" - -#: cps/worker.py:251 -#, python-format -msgid "Convertertool %(converter)s not found" -msgstr "" - #: cps/worker.py:287 #, python-format msgid "Ebook-converter failed: %(error)s" @@ -691,22 +747,6 @@ msgstr "" msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "Kindlegen 失敗しました、エーラ %(error)s. メッセージ: %(message)s" -#: cps/worker.py:355 cps/worker.py:374 -msgid "Waiting" -msgstr "" - -#: cps/worker.py:362 -msgid "This e-mail has been sent via Calibre-Web." -msgstr "" - -#: cps/worker.py:388 cps/worker.py:484 -msgid "Finished" -msgstr "" - -#: cps/worker.py:476 -msgid "Failed" -msgstr "" - #: cps/templates/admin.html:6 msgid "User list" msgstr "ユーザリスト" @@ -853,16 +893,16 @@ msgid "Do you really want to restart Calibre-Web?" msgstr "Calibre-Webを再起動します。宜しいですか?" #: cps/templates/admin.html:150 cps/templates/admin.html:164 -#: cps/templates/admin.html:184 cps/templates/shelf.html:59 +#: cps/templates/admin.html:184 cps/templates/shelf.html:61 msgid "Ok" msgstr "はい" #: cps/templates/admin.html:151 cps/templates/admin.html:165 #: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200 -#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164 +#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:168 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75 -#: cps/templates/shelf.html:60 cps/templates/shelf_edit.html:19 -#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:153 +#: cps/templates/shelf.html:62 cps/templates/shelf_edit.html:19 +#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:155 msgid "Back" msgstr "戻る" @@ -958,17 +998,17 @@ msgstr "" msgid "Upload Cover from local drive" msgstr "" -#: cps/templates/book_edit.html:96 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:96 cps/templates/detail.html:135 msgid "Publishing date" msgstr "発行日" #: cps/templates/book_edit.html:103 cps/templates/book_edit.html:261 -#: cps/templates/book_edit.html:278 cps/templates/detail.html:126 +#: cps/templates/book_edit.html:278 cps/templates/detail.html:127 #: cps/templates/search_form.html:14 msgid "Publisher" msgstr "出版社" -#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:33 +#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:31 msgid "Language" msgstr "言語" @@ -993,9 +1033,9 @@ msgid "Get metadata" msgstr "メタデータを取得します" #: cps/templates/book_edit.html:177 cps/templates/config_edit.html:210 -#: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 +#: cps/templates/config_view_edit.html:167 cps/templates/login.html:20 #: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 -#: cps/templates/user_edit.html:151 +#: cps/templates/user_edit.html:153 msgid "Submit" msgstr "提出" @@ -1031,7 +1071,7 @@ msgstr "メタデータをフォームに読み込むためにカバーをクリ msgid "Loading..." msgstr "読み込み中..." -#: cps/templates/book_edit.html:239 cps/templates/layout.html:221 +#: cps/templates/book_edit.html:239 cps/templates/layout.html:224 msgid "Close" msgstr "閉じる" @@ -1213,31 +1253,31 @@ msgstr "成人向けのタグ" msgid "Default settings for new users" msgstr "新規ユーザにデフォルト設定を設定する" -#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:108 +#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:110 msgid "Admin user" msgstr "管理ユーザ" -#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:117 +#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:119 msgid "Allow Downloads" msgstr "ダウンロードを有効する" -#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:121 +#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:123 msgid "Allow Uploads" msgstr "アップロードを有効する" -#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:125 +#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:127 msgid "Allow Edit" msgstr "編集を有効する" -#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:129 +#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:131 msgid "Allow Delete books" msgstr "本削除を有効する" -#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:134 +#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:136 msgid "Allow Changing Password" msgstr "パスワード変更を有効する" -#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:138 +#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:140 msgid "Allow Editing Public Shelfs" msgstr "公的叢書の編集を有効する" @@ -1245,51 +1285,55 @@ msgstr "公的叢書の編集を有効する" msgid "Default visibilities for new users" msgstr "新規ユーザにデフォルト可視性を設定する" -#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:60 +#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:58 msgid "Show random books" msgstr "任意本を表示する" -#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:64 +#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:62 msgid "Show recent books" msgstr "最近の本を表示する" -#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:68 +#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:66 msgid "Show sorted books" msgstr "整列された本を表示する" -#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:72 +#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:70 msgid "Show hot books" msgstr "有名な本を表示する" -#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:76 +#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:74 msgid "Show best rated books" msgstr "最高評価の本を表示する" -#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:80 +#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:78 msgid "Show language selection" msgstr "言語選択を表示する" -#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:84 +#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:82 msgid "Show series selection" msgstr "奏者選択を表示する" -#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:88 +#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:86 msgid "Show category selection" msgstr "カテゴリー選択を表示する" -#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:92 +#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:90 msgid "Show author selection" msgstr "著者選択を表示する" -#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:96 +#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:94 +msgid "Show publisher selection" +msgstr "" + +#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:98 msgid "Show read and unread" msgstr "既読と未読の本を表示する" -#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:100 +#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:102 msgid "Show random books in detail view" msgstr "任意の本を詳細閲覧で表示する" -#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:113 +#: cps/templates/config_view_edit.html:160 cps/templates/user_edit.html:115 msgid "Show mature content" msgstr "成人向けコンテンツを表示" @@ -1309,19 +1353,19 @@ msgstr "から" msgid "language" msgstr "言語" -#: cps/templates/detail.html:168 +#: cps/templates/detail.html:172 msgid "Read" msgstr "読む" -#: cps/templates/detail.html:177 +#: cps/templates/detail.html:182 msgid "Description:" msgstr "詳細:" -#: cps/templates/detail.html:189 cps/templates/search.html:14 +#: cps/templates/detail.html:195 cps/templates/search.html:14 msgid "Add to shelf" msgstr "書架に追加" -#: cps/templates/detail.html:251 +#: cps/templates/detail.html:257 msgid "Edit metadata" msgstr "メタデータを編集する" @@ -1381,11 +1425,11 @@ msgstr "" msgid "Do you really want to delete this domain rule?" msgstr "" -#: cps/templates/feed.xml:21 cps/templates/layout.html:205 +#: cps/templates/feed.xml:21 cps/templates/layout.html:208 msgid "Next" msgstr "次" -#: cps/templates/feed.xml:30 cps/templates/index.xml:8 +#: cps/templates/feed.xml:33 cps/templates/index.xml:11 #: cps/templates/layout.html:43 cps/templates/layout.html:44 msgid "Search" msgstr "検索" @@ -1398,63 +1442,71 @@ msgstr "発見 (任意の本)" msgid "Start" msgstr "開始" -#: cps/templates/index.xml:15 cps/templates/layout.html:139 +#: cps/templates/index.xml:18 cps/templates/layout.html:139 msgid "Hot Books" msgstr "最新の本" -#: cps/templates/index.xml:19 +#: cps/templates/index.xml:22 msgid "Popular publications from this catalog based on Downloads." msgstr "ダウンロードによりカタログの有名な出版" -#: cps/templates/index.xml:22 cps/templates/layout.html:142 +#: cps/templates/index.xml:25 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "最高評価の本" -#: cps/templates/index.xml:26 +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Rating." msgstr "評価によりカタログの有名な出版" -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:32 msgid "New Books" msgstr "新しい本" -#: cps/templates/index.xml:33 +#: cps/templates/index.xml:36 msgid "The latest Books" msgstr "最近の本" -#: cps/templates/index.xml:40 +#: cps/templates/index.xml:43 msgid "Show Random Books" msgstr "任意の本を表示する" -#: cps/templates/index.xml:59 cps/templates/layout.html:160 +#: cps/templates/index.xml:62 cps/templates/layout.html:160 msgid "Authors" msgstr "著者" -#: cps/templates/index.xml:63 +#: cps/templates/index.xml:66 msgid "Books ordered by Author" msgstr "著者の名前で並び替える" -#: cps/templates/index.xml:70 +#: cps/templates/index.xml:69 cps/templates/layout.html:163 +msgid "Publishers" +msgstr "" + +#: cps/templates/index.xml:73 +msgid "Books ordered by publisher" +msgstr "" + +#: cps/templates/index.xml:80 msgid "Books ordered by category" msgstr "カテゴリーで並び替える" -#: cps/templates/index.xml:77 +#: cps/templates/index.xml:87 msgid "Books ordered by series" msgstr "叢書で並び替える" -#: cps/templates/index.xml:80 cps/templates/layout.html:166 +#: cps/templates/index.xml:90 cps/templates/layout.html:169 msgid "Public Shelves" msgstr "公的の叢書" -#: cps/templates/index.xml:84 +#: cps/templates/index.xml:94 msgid "Books organized in public shelfs, visible to everyone" msgstr "公的の叢書に選び分ける、みんなに見える" -#: cps/templates/index.xml:88 cps/templates/layout.html:170 +#: cps/templates/index.xml:98 cps/templates/layout.html:173 msgid "Your Shelves" msgstr "あなたの叢書" -#: cps/templates/index.xml:92 +#: cps/templates/index.xml:102 msgid "User's own shelfs, only visible to the current user himself" msgstr "ユーザ自身の叢書、自分しか見えない" @@ -1470,7 +1522,7 @@ msgstr "詳細検索" msgid "Logout" msgstr "ロクアウト" -#: cps/templates/layout.html:83 cps/templates/register.html:18 +#: cps/templates/layout.html:83 cps/templates/register.html:14 msgid "Register" msgstr "登録" @@ -1523,23 +1575,23 @@ msgstr "発見" msgid "Categories" msgstr "カテゴリー" -#: cps/templates/layout.html:163 cps/templates/search_form.html:74 +#: cps/templates/layout.html:166 cps/templates/search_form.html:74 msgid "Languages" msgstr "言語" -#: cps/templates/layout.html:175 +#: cps/templates/layout.html:178 msgid "Create a Shelf" msgstr "叢書を作成する" -#: cps/templates/layout.html:176 cps/templates/stats.html:3 +#: cps/templates/layout.html:179 cps/templates/stats.html:3 msgid "About" msgstr "このサイトについて" -#: cps/templates/layout.html:190 +#: cps/templates/layout.html:193 msgid "Previous" msgstr "前" -#: cps/templates/layout.html:217 +#: cps/templates/layout.html:220 msgid "Book Details" msgstr "本の詳細" @@ -1549,7 +1601,7 @@ msgid "Username" msgstr "ユーザ名" #: cps/templates/login.html:12 cps/templates/login.html:13 -#: cps/templates/register.html:11 cps/templates/user_edit.html:21 +#: cps/templates/user_edit.html:21 msgid "Password" msgstr "パスワード" @@ -1614,7 +1666,7 @@ msgstr "" msgid "Flip Image" msgstr "" -#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:41 +#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:39 msgid "Theme" msgstr "" @@ -1678,15 +1730,11 @@ msgstr "新規アカウントを登録する" msgid "Choose a username" msgstr "ユーザ名" -#: cps/templates/register.html:12 -msgid "Choose a password" -msgstr "パスワード" - -#: cps/templates/register.html:15 cps/templates/user_edit.html:13 +#: cps/templates/register.html:11 cps/templates/user_edit.html:13 msgid "E-mail address" msgstr "" -#: cps/templates/register.html:16 +#: cps/templates/register.html:12 msgid "Your email address" msgstr "あなたのメールアドレス" @@ -1754,11 +1802,11 @@ msgstr "" msgid "Change order" msgstr "順番を変更する" -#: cps/templates/shelf.html:54 +#: cps/templates/shelf.html:56 msgid "Do you really want to delete the shelf?" msgstr "書架を削除します。宜しいですか?" -#: cps/templates/shelf.html:57 +#: cps/templates/shelf.html:59 msgid "Shelf will be lost for everybody and forever!" msgstr "書架は誰にも見えなくなり永遠なくなります" @@ -1842,31 +1890,31 @@ msgstr "" msgid "Reset user Password" msgstr "" -#: cps/templates/user_edit.html:29 +#: cps/templates/user_edit.html:27 msgid "Kindle E-Mail" msgstr "Kindleメール" -#: cps/templates/user_edit.html:43 +#: cps/templates/user_edit.html:41 msgid "Standard Theme" msgstr "" -#: cps/templates/user_edit.html:44 +#: cps/templates/user_edit.html:42 msgid "caliBlur! Dark Theme (Beta)" msgstr "" -#: cps/templates/user_edit.html:49 +#: cps/templates/user_edit.html:47 msgid "Show books with language" msgstr "言語で本を表示する" -#: cps/templates/user_edit.html:51 +#: cps/templates/user_edit.html:49 msgid "Show all" msgstr "全て表示" -#: cps/templates/user_edit.html:145 +#: cps/templates/user_edit.html:147 msgid "Delete this user" msgstr "このユーザを削除する" -#: cps/templates/user_edit.html:160 +#: cps/templates/user_edit.html:162 msgid "Recent Downloads" msgstr "最近ダウンロード" @@ -1909,3 +1957,21 @@ msgstr "最近ダウンロード" #~ msgid "Newest commit timestamp" #~ msgstr "最新コミットのタイムスタンプ" +#~ msgid "Convert: %(book)s" +#~ msgstr "" + +#~ msgid "Convert to %(format)s: %(book)s" +#~ msgstr "" + +#~ msgid "Files are replaced" +#~ msgstr "ファイルを書き換えました" + +#~ msgid "Server is stopped" +#~ msgstr "サーバがシャットダウンされました" + +#~ msgid "Convertertool %(converter)s not found" +#~ msgstr "" + +#~ msgid "Choose a password" +#~ msgstr "パスワード" + diff --git a/cps/translations/km/LC_MESSAGES/messages.po b/cps/translations/km/LC_MESSAGES/messages.po index fdf81703..e4ba4641 100644 --- a/cps/translations/km/LC_MESSAGES/messages.po +++ b/cps/translations/km/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2018-09-14 21:11+0200\n" +"POT-Creation-Date: 2018-11-03 14:03+0100\n" "PO-Revision-Date: 2018-08-27 17:06+0700\n" "Last-Translator: \n" "Language: km_KH\n" @@ -17,10 +17,10 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.5.1\n" +"Generated-By: Babel 2.6.0\n" -#: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 -#: cps/converter.py:11 cps/converter.py:27 +#: cps/book_formats.py:129 cps/book_formats.py:130 cps/book_formats.py:134 +#: cps/book_formats.py:138 cps/converter.py:11 cps/converter.py:27 msgid "not installed" msgstr "មិនបានតម្លើង" @@ -28,660 +28,716 @@ msgstr "មិនបានតម្លើង" msgid "Excecution permissions missing" msgstr "ខ្វះសិទ្ធិប្រតិបត្តិការ" -#: cps/helper.py:57 +#: cps/converter.py:48 +msgid "not configured" +msgstr "" + +#: cps/helper.py:58 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "" -#: cps/helper.py:69 +#: cps/helper.py:70 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "" -#: cps/helper.py:76 -#, python-format -msgid "Convert: %(book)s" -msgstr "បម្លែង៖ %(book)s" +#: cps/helper.py:77 cps/helper.py:147 cps/templates/detail.html:44 +msgid "Send to Kindle" +msgstr "ផ្ញើទៅ Kindle" -#: cps/helper.py:79 -#, python-format -msgid "Convert to %(format)s: %(book)s" +#: cps/helper.py:78 cps/helper.py:96 +msgid "This e-mail has been sent via Calibre-Web." msgstr "" -#: cps/helper.py:86 +#: cps/helper.py:89 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "" -#: cps/helper.py:91 +#: cps/helper.py:94 msgid "Calibre-Web test e-mail" msgstr "" -#: cps/helper.py:92 +#: cps/helper.py:95 msgid "Test e-mail" msgstr "" -#: cps/helper.py:107 +#: cps/helper.py:111 msgid "Get Started with Calibre-Web" msgstr "" -#: cps/helper.py:108 +#: cps/helper.py:112 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "" -#: cps/helper.py:131 cps/helper.py:141 +#: cps/helper.py:135 cps/helper.py:145 msgid "Could not find any formats suitable for sending by e-mail" msgstr "" -#: cps/helper.py:143 cps/templates/detail.html:44 cps/worker.py:224 -msgid "Send to Kindle" -msgstr "ផ្ញើទៅ Kindle" - -#: cps/helper.py:144 cps/worker.py:226 +#: cps/helper.py:148 #, python-format msgid "E-mail: %(book)s" msgstr "អ៊ីមែល៖ %(book)s" -#: cps/helper.py:146 +#: cps/helper.py:150 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "ឯកសារដែលបានស្នើសុំមិនអាចបើកបានទេ។ អាចនឹងខុសសិទ្ធិប្រើប្រាស់ទេដឹង?" -#: cps/helper.py:241 +#: cps/helper.py:250 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "ប្តូរចំណងជើងពី “%(src)s” ទៅជា “%(dest)s” បរាជ័យដោយបញ្ហា: %(error)s" -#: cps/helper.py:250 +#: cps/helper.py:259 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "ប្តូរអ្នកនិពន្ធពី “%(src)s” ទៅជា “%(dest)s” បរាជ័យដោយបញ្ហា: %(error)s" -#: cps/helper.py:272 cps/helper.py:281 +#: cps/helper.py:281 cps/helper.py:290 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "ឯកសារ %(file)s រកមិនឃើញក្នុង Google Drive" -#: cps/helper.py:299 +#: cps/helper.py:308 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "ទីតាំងសៀវភៅ %(path)s រកមិនឃើញក្នុង Google Drive" -#: cps/helper.py:544 +#: cps/helper.py:565 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:546 +#: cps/helper.py:567 msgid "Unrar binary file not found" msgstr "" -#: cps/web.py:1112 cps/web.py:2778 +#: cps/helper.py:609 +msgid "Waiting" +msgstr "កំពុងរង់ចាំ" + +#: cps/helper.py:611 +msgid "Failed" +msgstr "បានបរាជ័យ" + +#: cps/helper.py:613 +msgid "Started" +msgstr "បានចាប់ផ្តើម" + +#: cps/helper.py:615 +msgid "Finished" +msgstr "បានបញ្ចប់" + +#: cps/helper.py:617 +msgid "Unknown Status" +msgstr "" + +#: cps/helper.py:622 +msgid "E-mail: " +msgstr "" + +#: cps/helper.py:624 cps/helper.py:628 +msgid "Convert: " +msgstr "" + +#: cps/helper.py:626 +msgid "Upload: " +msgstr "" + +#: cps/helper.py:630 +msgid "Unknown Task: " +msgstr "" + +#: cps/web.py:1132 cps/web.py:2842 msgid "Unknown" msgstr "មិនដឹង" -#: cps/web.py:1121 cps/web.py:1152 +#: cps/web.py:1141 cps/web.py:1172 cps/web.py:1257 msgid "HTTP Error" msgstr "" -#: cps/web.py:1123 cps/web.py:1154 +#: cps/web.py:1143 cps/web.py:1174 cps/web.py:1258 msgid "Connection error" msgstr "" -#: cps/web.py:1125 cps/web.py:1156 +#: cps/web.py:1145 cps/web.py:1176 cps/web.py:1259 msgid "Timeout while establishing connection" msgstr "" -#: cps/web.py:1127 cps/web.py:1158 +#: cps/web.py:1147 cps/web.py:1178 cps/web.py:1260 msgid "General error" msgstr "" -#: cps/web.py:1133 +#: cps/web.py:1153 msgid "Unexpected data while reading update information" msgstr "" -#: cps/web.py:1140 +#: cps/web.py:1160 msgid "No update available. You already have the latest version installed" msgstr "" -#: cps/web.py:1165 +#: cps/web.py:1185 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "" -#: cps/web.py:1215 +#: cps/web.py:1235 msgid "Could not fetch update information" msgstr "" -#: cps/web.py:1230 +#: cps/web.py:1250 msgid "Requesting update package" msgstr "កំពុងស្នើសុំឯកសារបច្ចុប្បន្នភាព" -#: cps/web.py:1231 +#: cps/web.py:1251 msgid "Downloading update package" msgstr "កំពុងទាញយកឯកសារបច្ចុប្បន្នភាព" -#: cps/web.py:1232 +#: cps/web.py:1252 msgid "Unzipping update package" msgstr "កំពុងពន្លាឯកសារបច្ចុប្បន្នភាព" -#: cps/web.py:1233 -msgid "Files are replaced" -msgstr "ឯកសារត្រូវបានផ្លាស់ប្តូរ" +#: cps/web.py:1253 +msgid "Replacing files" +msgstr "" -#: cps/web.py:1234 +#: cps/web.py:1254 msgid "Database connections are closed" msgstr "ទំនាក់ទំនងទៅមូលដ្ឋានទិន្នន័យត្រូវបានផ្តាច់" -#: cps/web.py:1235 -msgid "Server is stopped" -msgstr "ម៉ាស៊ីន server ត្រូវបានបញ្ឈប់" +#: cps/web.py:1255 +msgid "Stopping server" +msgstr "" -#: cps/web.py:1236 +#: cps/web.py:1256 msgid "Update finished, please press okay and reload page" msgstr "ការធ្វើបច្ចុប្បន្នភាពបានបញ្ចប់ សូមចុច okay រួចបើកទំព័រជាថ្មី" -#: cps/web.py:1256 +#: cps/web.py:1257 cps/web.py:1258 cps/web.py:1259 cps/web.py:1260 +msgid "Update failed:" +msgstr "" + +#: cps/web.py:1283 msgid "Recently Added Books" msgstr "សៀវភៅដែលទើបបានបន្ថែម" -#: cps/web.py:1266 +#: cps/web.py:1293 msgid "Newest Books" msgstr "សៀវភៅថ្មីៗជាងគេ" -#: cps/web.py:1278 +#: cps/web.py:1305 msgid "Oldest Books" msgstr "សៀវភៅចាស់ជាងគេ" -#: cps/web.py:1290 +#: cps/web.py:1317 msgid "Books (A-Z)" msgstr "សៀវភៅពី A ទៅ Z" -#: cps/web.py:1301 +#: cps/web.py:1328 msgid "Books (Z-A)" msgstr "សៀវភៅពី Z ទៅ A" -#: cps/web.py:1330 +#: cps/web.py:1357 msgid "Hot Books (most downloaded)" msgstr "សៀវភៅដែលត្រូវបានទាញយកច្រើនជាងគេ" -#: cps/web.py:1343 +#: cps/web.py:1370 msgid "Best rated books" msgstr "សៀវភៅដែលត្រូវបានវាយតម្លៃល្អជាងគេ" -#: cps/templates/index.xml:36 cps/web.py:1355 +#: cps/templates/index.xml:39 cps/web.py:1383 msgid "Random Books" msgstr "សៀវភៅចៃដន្យ" -#: cps/web.py:1370 +#: cps/web.py:1398 msgid "Author list" msgstr "បញ្ជីអ្នកនិពន្ធ" -#: cps/web.py:1382 cps/web.py:1445 cps/web.py:1600 cps/web.py:2152 +#: cps/web.py:1410 cps/web.py:1501 cps/web.py:1663 cps/web.py:2206 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "មានបញ្ហាពេលបើកឯកសារ eBook ។ មិនមានឯកសារនេះ ឬមិនអាចបើកបាន៖" -#: cps/templates/index.xml:73 cps/web.py:1429 +#: cps/web.py:1438 +msgid "Publisher list" +msgstr "" + +#: cps/web.py:1452 +#, python-format +msgid "Publisher: %(name)s" +msgstr "" + +#: cps/templates/index.xml:83 cps/web.py:1484 msgid "Series list" msgstr "បញ្ជីស៊េរី" -#: cps/web.py:1443 +#: cps/web.py:1499 #, python-format msgid "Series: %(serie)s" msgstr "ស៊េរី៖ %(serie)s" -#: cps/web.py:1470 +#: cps/web.py:1528 msgid "Available languages" msgstr "ភាសាដែលមាន" -#: cps/web.py:1487 +#: cps/web.py:1548 #, python-format msgid "Language: %(name)s" msgstr "ភាសា៖ %(name)s" -#: cps/templates/index.xml:66 cps/web.py:1498 +#: cps/templates/index.xml:76 cps/web.py:1559 msgid "Category list" msgstr "បញ្ជីប្រភេទ" -#: cps/web.py:1512 +#: cps/web.py:1573 #, python-format msgid "Category: %(name)s" msgstr "ប្រភេទ៖ %(name)s" -#: cps/templates/layout.html:71 cps/web.py:1651 +#: cps/templates/layout.html:71 cps/web.py:1699 msgid "Tasks" msgstr "កិច្ចការនានា" -#: cps/web.py:1681 +#: cps/web.py:1733 msgid "Statistics" msgstr "ស្ថិតិ" -#: cps/web.py:1786 +#: cps/web.py:1840 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "Callback domain មិនទាន់បានផ្ទៀងផ្ទាត់ឲប្រើទេ សូមធ្វើតាមជំហានដើម្បីផ្ទៀងផ្ទាត់ domain នៅក្នុង Google Developer Console" -#: cps/web.py:1861 +#: cps/web.py:1915 msgid "Server restarted, please reload page" msgstr "ម៉ាស៊ីន server បានដំណើរការម្តងទៀត សូមបើកទំព័រជាថ្មី" -#: cps/web.py:1864 +#: cps/web.py:1918 msgid "Performing shutdown of server, please close window" msgstr "កំពុងបិទម៉ាស៊ីន server សូមបិទផ្ទាំងនេះ" -#: cps/web.py:1883 +#: cps/web.py:1937 msgid "Update done" msgstr "ការធ្វើបច្ចុប្បន្នភាពរួចរាល់" -#: cps/web.py:1953 +#: cps/web.py:2007 msgid "Published after " msgstr "បានបោះពុម្ភក្រោយ " -#: cps/web.py:1960 +#: cps/web.py:2014 msgid "Published before " msgstr "បានបោះពុម្ភមុន " -#: cps/web.py:1974 +#: cps/web.py:2028 #, python-format msgid "Rating <= %(rating)s" msgstr "ការវាយតម្លៃ <= %(rating)s" -#: cps/web.py:1976 +#: cps/web.py:2030 #, python-format msgid "Rating >= %(rating)s" msgstr "ការវាយតម្លៃ >= %(rating)s" -#: cps/web.py:2035 cps/web.py:2044 +#: cps/web.py:2089 cps/web.py:2098 msgid "search" msgstr "ស្វែងរក" -#: cps/templates/index.xml:44 cps/templates/index.xml:48 -#: cps/templates/layout.html:146 cps/web.py:2111 +#: cps/templates/index.xml:47 cps/templates/index.xml:51 +#: cps/templates/layout.html:146 cps/web.py:2165 msgid "Read Books" msgstr "សៀវភៅដែលបានអានរួច" -#: cps/templates/index.xml:52 cps/templates/index.xml:56 -#: cps/templates/layout.html:148 cps/web.py:2114 +#: cps/templates/index.xml:55 cps/templates/index.xml:59 +#: cps/templates/layout.html:148 cps/web.py:2168 msgid "Unread Books" msgstr "សៀវភៅដែលមិនទាន់បានអាន" -#: cps/web.py:2162 cps/web.py:2164 cps/web.py:2166 cps/web.py:2178 +#: cps/web.py:2216 cps/web.py:2218 cps/web.py:2220 cps/web.py:2232 msgid "Read a Book" msgstr "អានសៀវភៅ" -#: cps/web.py:2244 cps/web.py:3129 +#: cps/web.py:2298 cps/web.py:3201 msgid "Please fill out all fields!" msgstr "សូមបំពេញចន្លោះទាំងអស់!" -#: cps/web.py:2245 cps/web.py:2266 cps/web.py:2270 cps/web.py:2275 -#: cps/web.py:2277 +#: cps/web.py:2299 cps/web.py:2320 cps/web.py:2324 cps/web.py:2329 +#: cps/web.py:2331 msgid "register" msgstr "ចុះឈ្មោះ" -#: cps/web.py:2265 cps/web.py:3345 +#: cps/web.py:2319 cps/web.py:3417 msgid "An unknown error occurred. Please try again later." msgstr "" -#: cps/web.py:2268 +#: cps/web.py:2322 msgid "Your e-mail is not allowed to register" msgstr "" -#: cps/web.py:2271 +#: cps/web.py:2325 msgid "Confirmation e-mail was send to your e-mail account." msgstr "" -#: cps/web.py:2274 +#: cps/web.py:2328 msgid "This username or e-mail address is already in use." msgstr "" -#: cps/web.py:2291 cps/web.py:2387 +#: cps/web.py:2345 cps/web.py:2441 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "ឥឡូវអ្នកបានចូលដោយមានឈ្មោះថា៖ ‘%(nickname)s’" -#: cps/web.py:2296 +#: cps/web.py:2350 msgid "Wrong Username or Password" msgstr "ខុសឈ្មោះអ្នកប្រើប្រាស់ ឬលេខសម្ងាត់" -#: cps/web.py:2302 cps/web.py:2323 +#: cps/web.py:2356 cps/web.py:2377 msgid "login" msgstr "ចូលប្រើ" -#: cps/web.py:2335 cps/web.py:2366 +#: cps/web.py:2389 cps/web.py:2420 msgid "Token not found" msgstr "រកមិនឃើញវត្ថុតាង" -#: cps/web.py:2343 cps/web.py:2374 +#: cps/web.py:2397 cps/web.py:2428 msgid "Token has expired" msgstr "វត្ថុតាងហួសពេលកំណត់" -#: cps/web.py:2351 +#: cps/web.py:2405 msgid "Success! Please return to your device" msgstr "ជោគជ័យ! សូមវិលមកឧបករណ៍អ្នកវិញ" -#: cps/web.py:2401 +#: cps/web.py:2455 msgid "Please configure the SMTP mail settings first..." msgstr "សូមកំណត់អ៊ីមែល SMTP ជាមុនសិន" -#: cps/web.py:2405 +#: cps/web.py:2459 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "សៀវភៅបានចូលជួរសម្រាប់ផ្ញើទៅ %(kindlemail)s ដោយជោគជ័យ" -#: cps/web.py:2409 +#: cps/web.py:2463 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "មានបញ្ហានៅពេលផ្ញើសៀវភៅនេះ៖ %(res)s" -#: cps/web.py:2411 cps/web.py:3183 +#: cps/web.py:2465 cps/web.py:3255 msgid "Please configure your kindle e-mail address first..." msgstr "" -#: cps/web.py:2455 +#: cps/web.py:2476 cps/web.py:2528 +msgid "Invalid shelf specified" +msgstr "" + +#: cps/web.py:2483 #, python-format -msgid "Book has been added to shelf: %(sname)s" -msgstr "សៀវភៅត្រូវបានបន្ថែមទៅធ្នើ៖ %(sname)s" +msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" +msgstr "" -#: cps/web.py:2466 -msgid "Invalid shelf specified" +#: cps/web.py:2491 +msgid "You are not allowed to edit public shelves" msgstr "" -#: cps/web.py:2471 +#: cps/web.py:2500 +#, python-format +msgid "Book is already part of the shelf: %(shelfname)s" +msgstr "" + +#: cps/web.py:2514 +#, python-format +msgid "Book has been added to shelf: %(sname)s" +msgstr "សៀវភៅត្រូវបានបន្ថែមទៅធ្នើ៖ %(sname)s" + +#: cps/web.py:2533 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "" -#: cps/web.py:2476 +#: cps/web.py:2538 msgid "User is not allowed to edit public shelves" msgstr "" -#: cps/web.py:2494 +#: cps/web.py:2556 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "" -#: cps/web.py:2508 +#: cps/web.py:2570 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "" -#: cps/web.py:2510 +#: cps/web.py:2572 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "" -#: cps/web.py:2547 +#: cps/web.py:2609 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "សៀវភៅត្រូវបានដកចេញពីធ្នើ៖ %(sname)s" -#: cps/web.py:2553 +#: cps/web.py:2615 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "សូមអភ័យទោស អ្នកមិនមានសិទ្ធិដកសៀវភៅចេញពីធ្នើនេះទេ៖ %(sname)s" -#: cps/web.py:2573 cps/web.py:2597 +#: cps/web.py:2635 cps/web.py:2659 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "មានធ្នើដែលមានឈ្មោះ ‘%(title)s’ រួចហើយ។" -#: cps/web.py:2578 +#: cps/web.py:2640 #, python-format msgid "Shelf %(title)s created" msgstr "ធ្នើឈ្មោះ %(title)s ត្រូវបានបង្កើត" -#: cps/web.py:2580 cps/web.py:2608 +#: cps/web.py:2642 cps/web.py:2670 msgid "There was an error" msgstr "មានបញ្ហា" -#: cps/web.py:2581 cps/web.py:2583 +#: cps/web.py:2643 cps/web.py:2645 msgid "create a shelf" msgstr "បង្កើតធ្នើ" -#: cps/web.py:2606 +#: cps/web.py:2668 #, python-format msgid "Shelf %(title)s changed" msgstr "ធ្នើឈ្មោះ %(title)s ត្រូវបានប្តូរ" -#: cps/web.py:2609 cps/web.py:2611 +#: cps/web.py:2671 cps/web.py:2673 msgid "Edit a shelf" msgstr "កែប្រែធ្នើ" -#: cps/web.py:2632 +#: cps/web.py:2694 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "បានបង្កើតធ្នើឈ្មោះ %(name)s ដោយជោគជ័យ" -#: cps/web.py:2659 +#: cps/web.py:2721 #, python-format msgid "Shelf: '%(name)s'" msgstr "ធ្នើ៖ ‘%(name)s’" -#: cps/web.py:2662 +#: cps/web.py:2724 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "មានបញ្ហាពេលបើកធ្នើ។ ពុំមានធ្នើ ឬមិនអាចបើកបាន" -#: cps/web.py:2693 +#: cps/web.py:2755 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "ប្តូរលំដាប់ធ្នើ៖ ‘%(name)s’" -#: cps/web.py:2722 cps/web.py:3135 +#: cps/web.py:2784 cps/web.py:3207 msgid "E-mail is not from valid domain" msgstr "" -#: cps/web.py:2724 cps/web.py:2765 cps/web.py:2768 +#: cps/web.py:2786 cps/web.py:2829 cps/web.py:2832 #, python-format msgid "%(name)s's profile" msgstr "ព័ត៌មានសង្ខេបរបស់ %(name)s" -#: cps/web.py:2763 +#: cps/web.py:2827 msgid "Found an existing account for this e-mail address." msgstr "" -#: cps/web.py:2766 +#: cps/web.py:2830 msgid "Profile updated" msgstr "ព័ត៌មានសង្ខេបបានកែប្រែ" -#: cps/web.py:2794 +#: cps/web.py:2858 msgid "Admin page" msgstr "ទំព័ររដ្ឋបាល" -#: cps/web.py:2872 cps/web.py:3045 +#: cps/web.py:2938 cps/web.py:3112 msgid "Calibre-Web configuration updated" msgstr "" -#: cps/templates/admin.html:100 cps/web.py:2885 +#: cps/templates/admin.html:100 cps/web.py:2951 msgid "UI Configuration" msgstr "ការកំណត់ផ្ទាំងប្រើប្រាស់" -#: cps/web.py:2903 +#: cps/web.py:2969 msgid "Import of optional Google Drive requirements missing" msgstr "ខ្វះការនាំចូលតម្រូវការបន្ថែមរបស់ Google Drive" -#: cps/web.py:2906 +#: cps/web.py:2972 msgid "client_secrets.json is missing or not readable" msgstr "មិនមានឯកសារ client_secrets.json ឬមិនអាចបើកបាន" -#: cps/web.py:2911 cps/web.py:2938 +#: cps/web.py:2977 cps/web.py:3004 msgid "client_secrets.json is not configured for web application" msgstr "ឯកសារ client_secrets.json មិនទាន់បានកំណត់សម្រាប់កម្មវិធីវែប" -#: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979 -#: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060 -#: cps/web.py:3077 +#: cps/templates/admin.html:99 cps/web.py:3007 cps/web.py:3033 cps/web.py:3045 +#: cps/web.py:3088 cps/web.py:3103 cps/web.py:3120 cps/web.py:3127 +#: cps/web.py:3142 msgid "Basic Configuration" msgstr "ការកំណត់សាមញ្ញ" -#: cps/web.py:2964 +#: cps/web.py:3030 msgid "Keyfile location is not valid, please enter correct path" msgstr "ទីតាំងរបស់ keyfile មិនត្រឹមត្រូវ សូមបញ្ចូលទីតាំងត្រឹមត្រូវ" -#: cps/web.py:2976 +#: cps/web.py:3042 msgid "Certfile location is not valid, please enter correct path" msgstr "ទីតាំងរបស់ certfile មិនត្រឹមត្រូវ សូមបញ្ចូលទីតាំងត្រឹមត្រូវ" -#: cps/web.py:3018 +#: cps/web.py:3085 msgid "Logfile location is not valid, please enter correct path" msgstr "ទីតាំងរបស់ logfile មិនត្រឹមត្រូវ សូមបញ្ចូលទីតាំងត្រឹមត្រូវ" -#: cps/web.py:3057 +#: cps/web.py:3124 msgid "DB location is not valid, please enter correct path" msgstr "ទីតាំងរបស់ database មិនត្រឹមត្រូវ សូមបញ្ចូលទីតាំងត្រឹមត្រូវ" -#: cps/templates/admin.html:33 cps/web.py:3131 cps/web.py:3137 cps/web.py:3153 +#: cps/templates/admin.html:33 cps/web.py:3203 cps/web.py:3209 cps/web.py:3225 msgid "Add new user" msgstr "បន្ថែមអ្នកប្រើប្រាស់ថ្មី" -#: cps/web.py:3143 +#: cps/web.py:3215 #, python-format msgid "User '%(user)s' created" msgstr "បានបង្កើតអ្នកប្រើប្រាស់ ‘%(user)s’" -#: cps/web.py:3147 +#: cps/web.py:3219 msgid "Found an existing account for this e-mail address or nickname." msgstr "" -#: cps/web.py:3171 cps/web.py:3185 +#: cps/web.py:3243 cps/web.py:3257 msgid "E-mail server settings updated" msgstr "" -#: cps/web.py:3178 +#: cps/web.py:3250 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "" -#: cps/web.py:3181 +#: cps/web.py:3253 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "" -#: cps/web.py:3186 +#: cps/web.py:3258 msgid "Edit e-mail server settings" msgstr "" -#: cps/web.py:3211 +#: cps/web.py:3283 #, python-format msgid "User '%(nick)s' deleted" msgstr "អ្នកប្រើប្រាស់ ‘%(nick)s’ ត្រូវបានលុប" -#: cps/web.py:3320 +#: cps/web.py:3392 #, python-format msgid "User '%(nick)s' updated" msgstr "អ្នកប្រើប្រាស់ ‘%(nick)s’ ត្រូវបានកែប្រែ" -#: cps/web.py:3323 +#: cps/web.py:3395 msgid "An unknown error occured." msgstr "បញ្ហាដែលមិនដឹងបានកើតឡើង។" -#: cps/web.py:3325 +#: cps/web.py:3397 #, python-format msgid "Edit User %(nick)s" msgstr "កែប្រែអ្នកប្រើប្រាស់ %(nick)s" -#: cps/web.py:3342 +#: cps/web.py:3414 #, python-format msgid "Password for user %(user)s reset" msgstr "" -#: cps/web.py:3362 +#: cps/web.py:3428 cps/web.py:3629 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "មានបញ្ហាពេលបើកឯកសារ eBook ។ ពុំមានឯកសារ ឬឯកសារនេះមិនអាចបើកបាន" -#: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827 +#: cps/web.py:3453 cps/web.py:3912 msgid "edit metadata" msgstr "កែប្រែទិន្នន័យមេតា" -#: cps/web.py:3401 cps/web.py:3697 +#: cps/web.py:3546 cps/web.py:3782 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "ឯកសារប្រភេទ '%(ext)s' មិនត្រូវបានអនុញ្ញាតឲអាប់ឡូដទៅម៉ាស៊ីន server នេះទេ" -#: cps/web.py:3405 cps/web.py:3701 +#: cps/web.py:3550 cps/web.py:3786 msgid "File to be uploaded must have an extension" msgstr "ឯកសារដែលត្រូវអាប់ឡូដត្រូវមានកន្ទុយឯកសារ" -#: cps/web.py:3417 cps/web.py:3721 +#: cps/web.py:3562 cps/web.py:3806 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "មិនអាចបង្កើតទីតាំង %(path)s (ពុំមានសិទ្ធិ)។" -#: cps/web.py:3422 +#: cps/web.py:3567 #, python-format msgid "Failed to store file %(file)s." msgstr "មិនអាចរក្សាទុកឯកសារ %(file)s ។" -#: cps/web.py:3438 +#: cps/web.py:3583 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "ឯកសារទម្រង់ %(ext)s ត្រូវបានបន្ថែមទៅ %(book)s" -#: cps/web.py:3455 +#: cps/web.py:3601 #, python-format msgid "Failed to create path for cover %(path)s (Permission denied)." msgstr "" -#: cps/web.py:3462 +#: cps/web.py:3608 #, python-format msgid "Failed to store cover-file %(cover)s." msgstr "" -#: cps/web.py:3465 +#: cps/web.py:3611 msgid "Cover-file is not a valid image file" msgstr "" -#: cps/web.py:3482 cps/web.py:3486 +#: cps/web.py:3641 cps/web.py:3650 cps/web.py:3654 msgid "unknown" msgstr "មិនដឹង" -#: cps/web.py:3508 +#: cps/web.py:3673 msgid "Cover is not a jpg file, can't save" msgstr "គម្របមិនមែនជាឯកសារ JPG មិនអាចរក្សាទុក" -#: cps/web.py:3554 +#: cps/web.py:3721 #, python-format msgid "%(langname)s is not a valid language" msgstr "" -#: cps/web.py:3676 +#: cps/web.py:3752 +msgid "Metadata successfully updated" +msgstr "" + +#: cps/web.py:3761 msgid "Error editing book, please check logfile for details" msgstr "មានបញ្ហាពេលកែប្រែសៀវភៅ សូមពិនិត្យមើល logfile សម្រាប់ព័ត៌មានបន្ថែម" -#: cps/web.py:3726 +#: cps/web.py:3811 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "មិនអាចរក្សាទុកឯកសារ %(file)s (មិនមានសិទ្ធិ)។" -#: cps/web.py:3731 +#: cps/web.py:3816 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "មិនអាចលុបឯកសារ %(file)s (មិនមានសិទ្ធិ)។" -#: cps/web.py:3813 +#: cps/web.py:3898 #, python-format msgid "File %(file)s uploaded" msgstr "ឯកសារ %(file)s ត្រូវបានអាប់ឡូដ" -#: cps/web.py:3843 +#: cps/web.py:3928 msgid "Source or destination format for conversion missing" msgstr "" -#: cps/web.py:3853 +#: cps/web.py:3938 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "" -#: cps/web.py:3857 +#: cps/web.py:3942 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "" -#: cps/worker.py:215 cps/worker.py:398 -msgid "Started" -msgstr "បានចាប់ផ្តើម" - -#: cps/worker.py:251 -#, python-format -msgid "Convertertool %(converter)s not found" -msgstr "មិនអាចរកឃើញកម្មវិធីបម្លែង %(converter)s" - #: cps/worker.py:287 #, python-format msgid "Ebook-converter failed: %(error)s" @@ -692,22 +748,6 @@ msgstr "Ebook-converter បានបរាជ័យ៖ %(error)s" msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "Kindlegen បានបរាជ័យដោយមានកំហុស %(error)s. សារ៖ %(message)s" -#: cps/worker.py:355 cps/worker.py:374 -msgid "Waiting" -msgstr "កំពុងរង់ចាំ" - -#: cps/worker.py:362 -msgid "This e-mail has been sent via Calibre-Web." -msgstr "" - -#: cps/worker.py:388 cps/worker.py:484 -msgid "Finished" -msgstr "បានបញ្ចប់" - -#: cps/worker.py:476 -msgid "Failed" -msgstr "បានបរាជ័យ" - #: cps/templates/admin.html:6 msgid "User list" msgstr "បញ្ជីអ្នកប្រើប្រាស់" @@ -854,16 +894,16 @@ msgid "Do you really want to restart Calibre-Web?" msgstr "" #: cps/templates/admin.html:150 cps/templates/admin.html:164 -#: cps/templates/admin.html:184 cps/templates/shelf.html:59 +#: cps/templates/admin.html:184 cps/templates/shelf.html:61 msgid "Ok" msgstr "បាទ/ចាស" #: cps/templates/admin.html:151 cps/templates/admin.html:165 #: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200 -#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164 +#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:168 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75 -#: cps/templates/shelf.html:60 cps/templates/shelf_edit.html:19 -#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:153 +#: cps/templates/shelf.html:62 cps/templates/shelf_edit.html:19 +#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:155 msgid "Back" msgstr "មកក្រោយ" @@ -959,17 +999,17 @@ msgstr "URL របស់ក្របមុខ (ឯកសារ JPG ក្រប msgid "Upload Cover from local drive" msgstr "" -#: cps/templates/book_edit.html:96 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:96 cps/templates/detail.html:135 msgid "Publishing date" msgstr "ថ្ងៃបោះពុម្ភ" #: cps/templates/book_edit.html:103 cps/templates/book_edit.html:261 -#: cps/templates/book_edit.html:278 cps/templates/detail.html:126 +#: cps/templates/book_edit.html:278 cps/templates/detail.html:127 #: cps/templates/search_form.html:14 msgid "Publisher" msgstr "អ្នកបោះពុម្ភ" -#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:33 +#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:31 msgid "Language" msgstr "ភាសា" @@ -994,9 +1034,9 @@ msgid "Get metadata" msgstr "មើលទិន្នន័យមេតា" #: cps/templates/book_edit.html:177 cps/templates/config_edit.html:210 -#: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 +#: cps/templates/config_view_edit.html:167 cps/templates/login.html:20 #: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 -#: cps/templates/user_edit.html:151 +#: cps/templates/user_edit.html:153 msgid "Submit" msgstr "បញ្ចូល" @@ -1032,7 +1072,7 @@ msgstr "ចុចលើគម្របដើម្បីបញ្ចូលទិ msgid "Loading..." msgstr "កំពុងដំណើរការ..." -#: cps/templates/book_edit.html:239 cps/templates/layout.html:221 +#: cps/templates/book_edit.html:239 cps/templates/layout.html:224 msgid "Close" msgstr "បិទ" @@ -1214,31 +1254,31 @@ msgstr "Tag សម្រាប់មាតិកាសម្រាប់មន msgid "Default settings for new users" msgstr "ការកំណត់មកស្រាប់សម្រាប់អ្នកប្រើប្រាស់ថ្មី" -#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:108 +#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:110 msgid "Admin user" msgstr "អ្នកប្រើប្រាស់រដ្ឋបាល" -#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:117 +#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:119 msgid "Allow Downloads" msgstr "អនុញ្ញាតឲទាញយក" -#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:121 +#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:123 msgid "Allow Uploads" msgstr "អនុញ្ញាតឲអាប់ឡូត" -#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:125 +#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:127 msgid "Allow Edit" msgstr "អនុញ្ញាតឲកែប្រែ" -#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:129 +#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:131 msgid "Allow Delete books" msgstr "អនុញ្ញាតឲលុបសៀវភៅ" -#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:134 +#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:136 msgid "Allow Changing Password" msgstr "អនុញ្ញាតឲប្តូរលេខសម្ងាត់" -#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:138 +#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:140 msgid "Allow Editing Public Shelfs" msgstr "អនុញ្ញាតឲកែប្រែធ្នើសាធារណៈ" @@ -1246,51 +1286,55 @@ msgstr "អនុញ្ញាតឲកែប្រែធ្នើសាធារ msgid "Default visibilities for new users" msgstr "ភាពមើលឃើញដែលមកស្រាប់សម្រាប់អ្នកប្រើប្រាស់ថ្មី" -#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:60 +#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:58 msgid "Show random books" msgstr "បង្ហាញសៀវភៅចៃដន្យ" -#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:64 +#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:62 msgid "Show recent books" msgstr "បង្ហាញសៀវភៅមកថ្មី" -#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:68 +#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:66 msgid "Show sorted books" msgstr "បង្ហាញសៀវភៅដែលរៀបតាមលំដាប់" -#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:72 +#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:70 msgid "Show hot books" msgstr "បង្ហាញសៀវភៅដែលមានប្រជាប្រិយភាព" -#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:76 +#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:74 msgid "Show best rated books" msgstr "បង្ហាញសៀវភៅដែលមានការវាយតម្លៃល្អជាងគេ" -#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:80 +#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:78 msgid "Show language selection" msgstr "បង្ហាញផ្នែកភាសា" -#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:84 +#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:82 msgid "Show series selection" msgstr "បង្ហាញជម្រើសស៊េរី" -#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:88 +#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:86 msgid "Show category selection" msgstr "បង្ហាញជម្រើសប្រភេទ" -#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:92 +#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:90 msgid "Show author selection" msgstr "បង្ហាញជម្រើសអ្នកនិពន្ធ" -#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:96 +#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:94 +msgid "Show publisher selection" +msgstr "" + +#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:98 msgid "Show read and unread" msgstr "បង្ហាញអានរួច និងមិនទាន់អាន" -#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:100 +#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:102 msgid "Show random books in detail view" msgstr "បង្ហាញសៀវភៅចៃដន្យក្នុងការបង្ហាញជាពិស្តារ" -#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:113 +#: cps/templates/config_view_edit.html:160 cps/templates/user_edit.html:115 msgid "Show mature content" msgstr "បង្ហាញមាតិកាសម្រាប់មនុស្សពេញវ័យ" @@ -1310,19 +1354,19 @@ msgstr "នៃ" msgid "language" msgstr "ភាសា" -#: cps/templates/detail.html:168 +#: cps/templates/detail.html:172 msgid "Read" msgstr "អាន" -#: cps/templates/detail.html:177 +#: cps/templates/detail.html:182 msgid "Description:" msgstr "ពិពណ៌នា" -#: cps/templates/detail.html:189 cps/templates/search.html:14 +#: cps/templates/detail.html:195 cps/templates/search.html:14 msgid "Add to shelf" msgstr "បន្ថែមទៅធ្នើ" -#: cps/templates/detail.html:251 +#: cps/templates/detail.html:257 msgid "Edit metadata" msgstr "កែប្រែទិន្នន័យមេតា" @@ -1382,11 +1426,11 @@ msgstr "" msgid "Do you really want to delete this domain rule?" msgstr "" -#: cps/templates/feed.xml:21 cps/templates/layout.html:205 +#: cps/templates/feed.xml:21 cps/templates/layout.html:208 msgid "Next" msgstr "បន្ទាប់" -#: cps/templates/feed.xml:30 cps/templates/index.xml:8 +#: cps/templates/feed.xml:33 cps/templates/index.xml:11 #: cps/templates/layout.html:43 cps/templates/layout.html:44 msgid "Search" msgstr "ស្វែងរក" @@ -1399,63 +1443,71 @@ msgstr "ស្រាវជ្រាវ (សៀវភៅចៃដន្យ)" msgid "Start" msgstr "ចាប់ផ្តើម" -#: cps/templates/index.xml:15 cps/templates/layout.html:139 +#: cps/templates/index.xml:18 cps/templates/layout.html:139 msgid "Hot Books" msgstr "សៀវភៅដែលមានប្រជាប្រិយភាព" -#: cps/templates/index.xml:19 +#: cps/templates/index.xml:22 msgid "Popular publications from this catalog based on Downloads." msgstr "ការបោះពុម្ភផ្សាយដែលមានប្រជាប្រិយភាពពីកាតាឡុកនេះផ្អែកលើការទាញយក" -#: cps/templates/index.xml:22 cps/templates/layout.html:142 +#: cps/templates/index.xml:25 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "សៀវភៅដែលមានការវាយតម្លៃល្អជាងគេ" -#: cps/templates/index.xml:26 +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Rating." msgstr "ការបោះពុម្ភផ្សាយដែលមានប្រជាប្រិយភាពពីកាតាឡុកនេះផ្អែកលើការវាយតម្លៃ" -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:32 msgid "New Books" msgstr "សៀវភៅថ្មីៗ" -#: cps/templates/index.xml:33 +#: cps/templates/index.xml:36 msgid "The latest Books" msgstr "សៀវភៅចុងក្រោយគេ" -#: cps/templates/index.xml:40 +#: cps/templates/index.xml:43 msgid "Show Random Books" msgstr "បង្ហាញសៀវភៅចៃដន្យ" -#: cps/templates/index.xml:59 cps/templates/layout.html:160 +#: cps/templates/index.xml:62 cps/templates/layout.html:160 msgid "Authors" msgstr "អ្នកនិពន្ធ" -#: cps/templates/index.xml:63 +#: cps/templates/index.xml:66 msgid "Books ordered by Author" msgstr "សៀវភៅរៀបតាមលំដាប់អ្នកនិពន្ធ" -#: cps/templates/index.xml:70 +#: cps/templates/index.xml:69 cps/templates/layout.html:163 +msgid "Publishers" +msgstr "" + +#: cps/templates/index.xml:73 +msgid "Books ordered by publisher" +msgstr "" + +#: cps/templates/index.xml:80 msgid "Books ordered by category" msgstr "សៀវភៅរៀបតាមលំដាប់ប្រភេទ" -#: cps/templates/index.xml:77 +#: cps/templates/index.xml:87 msgid "Books ordered by series" msgstr "សៀវភៅរៀបតាមលំដាប់ស៊េរី" -#: cps/templates/index.xml:80 cps/templates/layout.html:166 +#: cps/templates/index.xml:90 cps/templates/layout.html:169 msgid "Public Shelves" msgstr "ធ្នើសាធារណៈ" -#: cps/templates/index.xml:84 +#: cps/templates/index.xml:94 msgid "Books organized in public shelfs, visible to everyone" msgstr "សៀវភៅដែលរៀបចំនៅក្នុងធ្នើសាធារណៈ អាចមើលឃើញដោយគ្រប់គ្នា" -#: cps/templates/index.xml:88 cps/templates/layout.html:170 +#: cps/templates/index.xml:98 cps/templates/layout.html:173 msgid "Your Shelves" msgstr "ធ្នើរបស់អ្នក" -#: cps/templates/index.xml:92 +#: cps/templates/index.xml:102 msgid "User's own shelfs, only visible to the current user himself" msgstr "ធ្នើផ្ទាល់ខ្លួនរបស់អ្នកប្រើប្រាស់ អាចមើលឃើញដោយអ្នកប្រើប្រាស់នេះប៉ុណ្ណោះ" @@ -1471,7 +1523,7 @@ msgstr "ស្វែងរកកម្រិតខ្ពស់" msgid "Logout" msgstr "ចេញពីការប្រើប្រាស់" -#: cps/templates/layout.html:83 cps/templates/register.html:18 +#: cps/templates/layout.html:83 cps/templates/register.html:14 msgid "Register" msgstr "ចុះឈ្មោះ" @@ -1524,23 +1576,23 @@ msgstr "ស្រាវជ្រាវ" msgid "Categories" msgstr "ប្រភេទនានា" -#: cps/templates/layout.html:163 cps/templates/search_form.html:74 +#: cps/templates/layout.html:166 cps/templates/search_form.html:74 msgid "Languages" msgstr "ភាសានានា" -#: cps/templates/layout.html:175 +#: cps/templates/layout.html:178 msgid "Create a Shelf" msgstr "បង្កើតធ្នើ" -#: cps/templates/layout.html:176 cps/templates/stats.html:3 +#: cps/templates/layout.html:179 cps/templates/stats.html:3 msgid "About" msgstr "អំពី" -#: cps/templates/layout.html:190 +#: cps/templates/layout.html:193 msgid "Previous" msgstr "មុន" -#: cps/templates/layout.html:217 +#: cps/templates/layout.html:220 msgid "Book Details" msgstr "ព័ត៌មានលម្អិតរបស់សៀវភៅ" @@ -1550,7 +1602,7 @@ msgid "Username" msgstr "ឈ្មោះអ្នកប្រើប្រាស់" #: cps/templates/login.html:12 cps/templates/login.html:13 -#: cps/templates/register.html:11 cps/templates/user_edit.html:21 +#: cps/templates/user_edit.html:21 msgid "Password" msgstr "លេខសម្ងាត់" @@ -1615,7 +1667,7 @@ msgstr "" msgid "Flip Image" msgstr "" -#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:41 +#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:39 msgid "Theme" msgstr "ការតុបតែង" @@ -1679,15 +1731,11 @@ msgstr "ចុះឈ្មោះបង្កើតគណនីថ្មី" msgid "Choose a username" msgstr "ជ្រើសរើសឈ្មោះអ្នកប្រើប្រាស់" -#: cps/templates/register.html:12 -msgid "Choose a password" -msgstr "ជ្រើសរើសលេខសម្ងាត់" - -#: cps/templates/register.html:15 cps/templates/user_edit.html:13 +#: cps/templates/register.html:11 cps/templates/user_edit.html:13 msgid "E-mail address" msgstr "" -#: cps/templates/register.html:16 +#: cps/templates/register.html:12 msgid "Your email address" msgstr "អាសយដ្ឋានអ៊ីមែលរបស់អ្នក" @@ -1755,11 +1803,11 @@ msgstr "" msgid "Change order" msgstr "ប្តូរលំដាប់" -#: cps/templates/shelf.html:54 +#: cps/templates/shelf.html:56 msgid "Do you really want to delete the shelf?" msgstr "តើអ្នកពិតជាចង់លុបធ្នើនេះមែនទេ?" -#: cps/templates/shelf.html:57 +#: cps/templates/shelf.html:59 msgid "Shelf will be lost for everybody and forever!" msgstr "ធ្នើនេះនឹងបាត់បង់ជាអចិន្ត្រៃយ៍សម្រាប់គ្រប់គ្នា!" @@ -1843,31 +1891,31 @@ msgstr "លាក់ការងារទាំងអស់" msgid "Reset user Password" msgstr "" -#: cps/templates/user_edit.html:29 +#: cps/templates/user_edit.html:27 msgid "Kindle E-Mail" msgstr "អ៊ីមែល Kindle" -#: cps/templates/user_edit.html:43 +#: cps/templates/user_edit.html:41 msgid "Standard Theme" msgstr "ការតុបតែងសម្រាប់ប្រើ" -#: cps/templates/user_edit.html:44 +#: cps/templates/user_edit.html:42 msgid "caliBlur! Dark Theme (Beta)" msgstr "ការតុបតែងពណ៌ងងឹត caliBlur! (Beta)" -#: cps/templates/user_edit.html:49 +#: cps/templates/user_edit.html:47 msgid "Show books with language" msgstr "បង្ហាញសៀវភៅដែលមានភាសា" -#: cps/templates/user_edit.html:51 +#: cps/templates/user_edit.html:49 msgid "Show all" msgstr "បង្ហាញទាំងអស់" -#: cps/templates/user_edit.html:145 +#: cps/templates/user_edit.html:147 msgid "Delete this user" msgstr "លុបអ្នកប្រើប្រាស់នេះ" -#: cps/templates/user_edit.html:160 +#: cps/templates/user_edit.html:162 msgid "Recent Downloads" msgstr "ការទាញយកថ្មីៗ" @@ -1910,3 +1958,21 @@ msgstr "ការទាញយកថ្មីៗ" #~ msgid "Newest commit timestamp" #~ msgstr "Commit timestamp ចុងក្រោយគេ" +#~ msgid "Convert: %(book)s" +#~ msgstr "បម្លែង៖ %(book)s" + +#~ msgid "Convert to %(format)s: %(book)s" +#~ msgstr "" + +#~ msgid "Files are replaced" +#~ msgstr "ឯកសារត្រូវបានផ្លាស់ប្តូរ" + +#~ msgid "Server is stopped" +#~ msgstr "ម៉ាស៊ីន server ត្រូវបានបញ្ឈប់" + +#~ msgid "Convertertool %(converter)s not found" +#~ msgstr "មិនអាចរកឃើញកម្មវិធីបម្លែង %(converter)s" + +#~ msgid "Choose a password" +#~ msgstr "ជ្រើសរើសលេខសម្ងាត់" + diff --git a/cps/translations/nl/LC_MESSAGES/messages.po b/cps/translations/nl/LC_MESSAGES/messages.po index f2527410..5ae2e84d 100644 --- a/cps/translations/nl/LC_MESSAGES/messages.po +++ b/cps/translations/nl/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web dutch translation by Ed Driesen (GPL V3)\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-09-23 19:00+0200\n" +"POT-Creation-Date: 2018-11-03 14:03+0100\n" "PO-Revision-Date: 2018-09-23 13:29+0200\n" "Last-Translator: \n" "Language: nl\n" @@ -17,10 +17,10 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.5.1\n" +"Generated-By: Babel 2.6.0\n" -#: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 -#: cps/converter.py:11 cps/converter.py:27 +#: cps/book_formats.py:129 cps/book_formats.py:130 cps/book_formats.py:134 +#: cps/book_formats.py:138 cps/converter.py:11 cps/converter.py:27 msgid "not installed" msgstr "niet geïnstalleerd" @@ -28,660 +28,716 @@ msgstr "niet geïnstalleerd" msgid "Excecution permissions missing" msgstr "Rechten om uit te voeren ontbreken" -#: cps/helper.py:57 +#: cps/converter.py:48 +msgid "not configured" +msgstr "" + +#: cps/helper.py:58 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "%(format)s formaat niet gevonden voor boek met id: %(book)d" -#: cps/helper.py:69 +#: cps/helper.py:70 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "%(format)s niet gevonden op Google Drive: %(fn)s" -#: cps/helper.py:76 -#, python-format -msgid "Convert: %(book)s" -msgstr "Converteer: %(book)s" +#: cps/helper.py:77 cps/helper.py:147 cps/templates/detail.html:44 +msgid "Send to Kindle" +msgstr "Stuur naar Kindle" -#: cps/helper.py:79 -#, python-format -msgid "Convert to %(format)s: %(book)s" -msgstr "Converteren naar %(format)s: %(book)s" +#: cps/helper.py:78 cps/helper.py:96 +msgid "This e-mail has been sent via Calibre-Web." +msgstr "Deze email werd verzonden via Calibre-Web." -#: cps/helper.py:86 +#: cps/helper.py:89 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "%(format)s niet gevonden %(fn)s" -#: cps/helper.py:91 +#: cps/helper.py:94 msgid "Calibre-Web test e-mail" msgstr "Calibre-Web test email" -#: cps/helper.py:92 +#: cps/helper.py:95 msgid "Test e-mail" msgstr "Test email" -#: cps/helper.py:107 +#: cps/helper.py:111 msgid "Get Started with Calibre-Web" msgstr "Aan de slag met Calibre-Web" -#: cps/helper.py:108 +#: cps/helper.py:112 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "Registratie email voor gebruiker: %(name)s" -#: cps/helper.py:131 cps/helper.py:141 +#: cps/helper.py:135 cps/helper.py:145 msgid "Could not find any formats suitable for sending by e-mail" msgstr "Geen geschikte formaten geschikt voor verzending per email gevonden" -#: cps/helper.py:143 cps/templates/detail.html:44 cps/worker.py:224 -msgid "Send to Kindle" -msgstr "Stuur naar Kindle" - -#: cps/helper.py:144 cps/worker.py:226 +#: cps/helper.py:148 #, python-format msgid "E-mail: %(book)s" msgstr "Email: %(book)s" -#: cps/helper.py:146 +#: cps/helper.py:150 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "Het gevraagde bestand kon niet worden gelezen. Misschien niet de juiste permissies?" -#: cps/helper.py:241 +#: cps/helper.py:250 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "Hernoemen van titel: '%(src)s' naar '%(dest)s' faade met fout: %(error)s" -#: cps/helper.py:250 +#: cps/helper.py:259 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "Hernoemen van de auteur: '%(src)s' naar '%(dest)s' faalde met fout: %(error)s" -#: cps/helper.py:272 cps/helper.py:281 +#: cps/helper.py:281 cps/helper.py:290 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "Bestand %(file)s niet gevonden op Google Drive" -#: cps/helper.py:299 +#: cps/helper.py:308 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "Boek pad %(path)s niet gevonden op Google Drive" -#: cps/helper.py:544 +#: cps/helper.py:565 msgid "Error excecuting UnRar" msgstr "Fout bij het uitvoeren van UnRar" -#: cps/helper.py:546 +#: cps/helper.py:567 msgid "Unrar binary file not found" msgstr "Unrar uitvoeringsbestand niet gevonden" -#: cps/web.py:1112 cps/web.py:2778 +#: cps/helper.py:609 +msgid "Waiting" +msgstr "Wachten" + +#: cps/helper.py:611 +msgid "Failed" +msgstr "Mislukt" + +#: cps/helper.py:613 +msgid "Started" +msgstr "Gestart" + +#: cps/helper.py:615 +msgid "Finished" +msgstr "Voltooid" + +#: cps/helper.py:617 +msgid "Unknown Status" +msgstr "" + +#: cps/helper.py:622 +msgid "E-mail: " +msgstr "" + +#: cps/helper.py:624 cps/helper.py:628 +msgid "Convert: " +msgstr "" + +#: cps/helper.py:626 +msgid "Upload: " +msgstr "" + +#: cps/helper.py:630 +msgid "Unknown Task: " +msgstr "" + +#: cps/web.py:1132 cps/web.py:2842 msgid "Unknown" msgstr "Onbekend" -#: cps/web.py:1121 cps/web.py:1152 +#: cps/web.py:1141 cps/web.py:1172 cps/web.py:1257 msgid "HTTP Error" msgstr "HTTP fout" -#: cps/web.py:1123 cps/web.py:1154 +#: cps/web.py:1143 cps/web.py:1174 cps/web.py:1258 msgid "Connection error" msgstr "Verbindingsfout" -#: cps/web.py:1125 cps/web.py:1156 +#: cps/web.py:1145 cps/web.py:1176 cps/web.py:1259 msgid "Timeout while establishing connection" msgstr "Time-out bij het maken van de verbinding" -#: cps/web.py:1127 cps/web.py:1158 +#: cps/web.py:1147 cps/web.py:1178 cps/web.py:1260 msgid "General error" msgstr "Algemene fout" -#: cps/web.py:1133 +#: cps/web.py:1153 msgid "Unexpected data while reading update information" msgstr "Onverwachte data tijdens het lezen van de update informatie" -#: cps/web.py:1140 +#: cps/web.py:1160 msgid "No update available. You already have the latest version installed" msgstr "Geen update beschikbaar. Je hebt reeds de laatste versie geïnstalleerd" -#: cps/web.py:1165 +#: cps/web.py:1185 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "Een nieuwe update is beschikbaar. Click op de knop hier onder op te updaten naar de laatste versie." -#: cps/web.py:1215 +#: cps/web.py:1235 msgid "Could not fetch update information" msgstr "De update informatie kon niet gelezen worden" -#: cps/web.py:1230 +#: cps/web.py:1250 msgid "Requesting update package" msgstr "Update pakket wordt aangevraagd" -#: cps/web.py:1231 +#: cps/web.py:1251 msgid "Downloading update package" msgstr "Update pakket wordt gedownload" -#: cps/web.py:1232 +#: cps/web.py:1252 msgid "Unzipping update package" msgstr "Update pakket wordt uitgepakt" -#: cps/web.py:1233 -msgid "Files are replaced" -msgstr "Bestanden zijn vervangen" +#: cps/web.py:1253 +msgid "Replacing files" +msgstr "" -#: cps/web.py:1234 +#: cps/web.py:1254 msgid "Database connections are closed" msgstr "Database verbindingen zijn gesloten" -#: cps/web.py:1235 -msgid "Server is stopped" -msgstr "Server is gestopt" +#: cps/web.py:1255 +msgid "Stopping server" +msgstr "" -#: cps/web.py:1236 +#: cps/web.py:1256 msgid "Update finished, please press okay and reload page" msgstr "Update voltooid, klik op ok en herlaad de pagina" -#: cps/web.py:1256 +#: cps/web.py:1257 cps/web.py:1258 cps/web.py:1259 cps/web.py:1260 +msgid "Update failed:" +msgstr "" + +#: cps/web.py:1283 msgid "Recently Added Books" msgstr "Recent toegevoegde boeken" -#: cps/web.py:1266 +#: cps/web.py:1293 msgid "Newest Books" msgstr "Nieuwste boeken" -#: cps/web.py:1278 +#: cps/web.py:1305 msgid "Oldest Books" msgstr "Oudste boeken" -#: cps/web.py:1290 +#: cps/web.py:1317 msgid "Books (A-Z)" msgstr "Boeken (A-Z)" -#: cps/web.py:1301 +#: cps/web.py:1328 msgid "Books (Z-A)" msgstr "Boeken (A-Z)" -#: cps/web.py:1330 +#: cps/web.py:1357 msgid "Hot Books (most downloaded)" msgstr "Populaire boeken (meeste downloads)" -#: cps/web.py:1343 +#: cps/web.py:1370 msgid "Best rated books" msgstr "Best beoordeelde boeken" -#: cps/templates/index.xml:36 cps/web.py:1355 +#: cps/templates/index.xml:39 cps/web.py:1383 msgid "Random Books" msgstr "Willekeurige boeken" -#: cps/web.py:1370 +#: cps/web.py:1398 msgid "Author list" msgstr "Auteur lijst" -#: cps/web.py:1382 cps/web.py:1445 cps/web.py:1600 cps/web.py:2152 +#: cps/web.py:1410 cps/web.py:1501 cps/web.py:1663 cps/web.py:2206 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "Fout bij openen van het boek. Bestand bestaat niet of is niet toegankelijk:" -#: cps/templates/index.xml:73 cps/web.py:1429 +#: cps/web.py:1438 +msgid "Publisher list" +msgstr "" + +#: cps/web.py:1452 +#, python-format +msgid "Publisher: %(name)s" +msgstr "" + +#: cps/templates/index.xml:83 cps/web.py:1484 msgid "Series list" msgstr "Serie lijst" -#: cps/web.py:1443 +#: cps/web.py:1499 #, python-format msgid "Series: %(serie)s" msgstr "Serie: %(serie)s" -#: cps/web.py:1470 +#: cps/web.py:1528 msgid "Available languages" msgstr "Beschikbare talen" -#: cps/web.py:1487 +#: cps/web.py:1548 #, python-format msgid "Language: %(name)s" msgstr "Taal: %(name)s" -#: cps/templates/index.xml:66 cps/web.py:1498 +#: cps/templates/index.xml:76 cps/web.py:1559 msgid "Category list" msgstr "Categorie lijst" -#: cps/web.py:1512 +#: cps/web.py:1573 #, python-format msgid "Category: %(name)s" msgstr "Categorie: %(name)s" -#: cps/templates/layout.html:71 cps/web.py:1651 +#: cps/templates/layout.html:71 cps/web.py:1699 msgid "Tasks" msgstr "Taken" -#: cps/web.py:1681 +#: cps/web.py:1733 msgid "Statistics" msgstr "Statistieken" -#: cps/web.py:1786 +#: cps/web.py:1840 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "Het callback domein is niet geverifieerd, volg de stappen in de google ontwikkelaars console om het domein te verifiëren" -#: cps/web.py:1861 +#: cps/web.py:1915 msgid "Server restarted, please reload page" msgstr "Server herstart, gelieve de pagina herladen" -#: cps/web.py:1864 +#: cps/web.py:1918 msgid "Performing shutdown of server, please close window" msgstr "Bezig met het stoppen van de server, gelieve venster te sluiten" -#: cps/web.py:1883 +#: cps/web.py:1937 msgid "Update done" msgstr "Update voltooid" -#: cps/web.py:1953 +#: cps/web.py:2007 msgid "Published after " msgstr "Gepubliceerd na " -#: cps/web.py:1960 +#: cps/web.py:2014 msgid "Published before " msgstr "Gepubliceerd voor " -#: cps/web.py:1974 +#: cps/web.py:2028 #, python-format msgid "Rating <= %(rating)s" msgstr "Waardering <= %(rating)s" -#: cps/web.py:1976 +#: cps/web.py:2030 #, python-format msgid "Rating >= %(rating)s" msgstr "Waardering >= %(rating)s" -#: cps/web.py:2035 cps/web.py:2044 +#: cps/web.py:2089 cps/web.py:2098 msgid "search" msgstr "zoek" -#: cps/templates/index.xml:44 cps/templates/index.xml:48 -#: cps/templates/layout.html:146 cps/web.py:2111 +#: cps/templates/index.xml:47 cps/templates/index.xml:51 +#: cps/templates/layout.html:146 cps/web.py:2165 msgid "Read Books" msgstr "Gelezen Boeken" -#: cps/templates/index.xml:52 cps/templates/index.xml:56 -#: cps/templates/layout.html:148 cps/web.py:2114 +#: cps/templates/index.xml:55 cps/templates/index.xml:59 +#: cps/templates/layout.html:148 cps/web.py:2168 msgid "Unread Books" msgstr "Ongelezen Boeken" -#: cps/web.py:2162 cps/web.py:2164 cps/web.py:2166 cps/web.py:2178 +#: cps/web.py:2216 cps/web.py:2218 cps/web.py:2220 cps/web.py:2232 msgid "Read a Book" msgstr "Lees een boek" -#: cps/web.py:2244 cps/web.py:3129 +#: cps/web.py:2298 cps/web.py:3201 msgid "Please fill out all fields!" msgstr "Gelieve alle velden in te vullen!" -#: cps/web.py:2245 cps/web.py:2266 cps/web.py:2270 cps/web.py:2275 -#: cps/web.py:2277 +#: cps/web.py:2299 cps/web.py:2320 cps/web.py:2324 cps/web.py:2329 +#: cps/web.py:2331 msgid "register" msgstr "registreer" -#: cps/web.py:2265 cps/web.py:3345 +#: cps/web.py:2319 cps/web.py:3417 msgid "An unknown error occurred. Please try again later." msgstr "Er was een onbekende fout. Gelieve later nog eens te proberen." -#: cps/web.py:2268 +#: cps/web.py:2322 msgid "Your e-mail is not allowed to register" msgstr "Het is niet toegestaan om te registreren met jou email" -#: cps/web.py:2271 +#: cps/web.py:2325 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Bevestigings email werd verzonden naar jou email account." -#: cps/web.py:2274 +#: cps/web.py:2328 msgid "This username or e-mail address is already in use." msgstr "Deze gebruikersnaam of email adres is reeds in gebruik." -#: cps/web.py:2291 cps/web.py:2387 +#: cps/web.py:2345 cps/web.py:2441 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "je bent nu ingelogd als: '%(nickname)s'" -#: cps/web.py:2296 +#: cps/web.py:2350 msgid "Wrong Username or Password" msgstr "Verkeerde gebruikersnaam of Wachtwoord" -#: cps/web.py:2302 cps/web.py:2323 +#: cps/web.py:2356 cps/web.py:2377 msgid "login" msgstr "login" -#: cps/web.py:2335 cps/web.py:2366 +#: cps/web.py:2389 cps/web.py:2420 msgid "Token not found" msgstr "Token niet gevonden" -#: cps/web.py:2343 cps/web.py:2374 +#: cps/web.py:2397 cps/web.py:2428 msgid "Token has expired" msgstr "Token is verlopen" -#: cps/web.py:2351 +#: cps/web.py:2405 msgid "Success! Please return to your device" msgstr "Gelukt! Ga terug naar je apparaat" -#: cps/web.py:2401 +#: cps/web.py:2455 msgid "Please configure the SMTP mail settings first..." msgstr "Gelieve de SMTP mail instellingen eerst te configureren..." -#: cps/web.py:2405 +#: cps/web.py:2459 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Boek met succes in de wachtrij geplaatst om te verzenden naar %(kindlemail)s" -#: cps/web.py:2409 +#: cps/web.py:2463 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Er trad een fout op bij het versturen van dit boek: %(res)s" -#: cps/web.py:2411 cps/web.py:3183 +#: cps/web.py:2465 cps/web.py:3255 msgid "Please configure your kindle e-mail address first..." msgstr "Gelieve eerst je kindle mailadres te configureren..." -#: cps/web.py:2455 +#: cps/web.py:2476 cps/web.py:2528 +msgid "Invalid shelf specified" +msgstr "Ongeldige boekenplank gespecificeerd" + +#: cps/web.py:2483 +#, python-format +msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" +msgstr "" + +#: cps/web.py:2491 +msgid "You are not allowed to edit public shelves" +msgstr "" + +#: cps/web.py:2500 +#, python-format +msgid "Book is already part of the shelf: %(shelfname)s" +msgstr "" + +#: cps/web.py:2514 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Boek werd toegevoegd aan boekenplank: %(sname)s" -#: cps/web.py:2466 -msgid "Invalid shelf specified" -msgstr "Ongeldige boekenplank gespecificeerd" - -#: cps/web.py:2471 +#: cps/web.py:2533 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Jij mag geen boeken plaatsen op boekenplank: %(name)s" -#: cps/web.py:2476 +#: cps/web.py:2538 msgid "User is not allowed to edit public shelves" msgstr "Gebruiker is niet toegestaan om publieke boekenplanken te bewerken" -#: cps/web.py:2494 +#: cps/web.py:2556 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "Deze boeken maken reeds deel uit van boekenplank: %(name)s" -#: cps/web.py:2508 +#: cps/web.py:2570 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "De boeken werden toegevoegd aan boekenplank: %(sname)s" -#: cps/web.py:2510 +#: cps/web.py:2572 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "Kon geen boeken toevoegen aan boekenplank: %(sname)s" -#: cps/web.py:2547 +#: cps/web.py:2609 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Boek werd verwijderd van boekenplank: %(sname)s" -#: cps/web.py:2553 +#: cps/web.py:2615 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Sorry, jij mag geen boeken verwijderen van deze boekenplank: %(sname)s" -#: cps/web.py:2573 cps/web.py:2597 +#: cps/web.py:2635 cps/web.py:2659 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Een boekenplank met de naam '%(title)s' bestaat reeds." -#: cps/web.py:2578 +#: cps/web.py:2640 #, python-format msgid "Shelf %(title)s created" msgstr "Boekenplank %(title)s aangemaakt" -#: cps/web.py:2580 cps/web.py:2608 +#: cps/web.py:2642 cps/web.py:2670 msgid "There was an error" msgstr "Er deed zich een fout voor" -#: cps/web.py:2581 cps/web.py:2583 +#: cps/web.py:2643 cps/web.py:2645 msgid "create a shelf" msgstr "maak een boekenplank" -#: cps/web.py:2606 +#: cps/web.py:2668 #, python-format msgid "Shelf %(title)s changed" msgstr "Boekenplank %(title)s gewijzigd" -#: cps/web.py:2609 cps/web.py:2611 +#: cps/web.py:2671 cps/web.py:2673 msgid "Edit a shelf" msgstr "Bewerk een boekenplank" -#: cps/web.py:2632 +#: cps/web.py:2694 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "boekenplank %(name)s succesvol gewist" -#: cps/web.py:2659 +#: cps/web.py:2721 #, python-format msgid "Shelf: '%(name)s'" msgstr "Boekenplank: '%(name)s'" -#: cps/web.py:2662 +#: cps/web.py:2724 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Fout bij openen boekenplank. Boekenplank bestaat niet of is niet toegankelijk" -#: cps/web.py:2693 +#: cps/web.py:2755 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Verander volgorde van Boekenplank: '%(name)s'" -#: cps/web.py:2722 cps/web.py:3135 +#: cps/web.py:2784 cps/web.py:3207 msgid "E-mail is not from valid domain" msgstr "Email is niet van een geldig domein" -#: cps/web.py:2724 cps/web.py:2765 cps/web.py:2768 +#: cps/web.py:2786 cps/web.py:2829 cps/web.py:2832 #, python-format msgid "%(name)s's profile" msgstr "%(name)s's profiel" -#: cps/web.py:2763 +#: cps/web.py:2827 msgid "Found an existing account for this e-mail address." msgstr "Een bestaand account met dit email adres werd gevonden." -#: cps/web.py:2766 +#: cps/web.py:2830 msgid "Profile updated" msgstr "Profiel aangepast" -#: cps/web.py:2794 +#: cps/web.py:2858 msgid "Admin page" msgstr "Administratie pagina" -#: cps/web.py:2872 cps/web.py:3045 +#: cps/web.py:2938 cps/web.py:3112 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web configuratie aangepast" -#: cps/templates/admin.html:100 cps/web.py:2885 +#: cps/templates/admin.html:100 cps/web.py:2951 msgid "UI Configuration" msgstr "Gebruikersinterface configuratie" -#: cps/web.py:2903 +#: cps/web.py:2969 msgid "Import of optional Google Drive requirements missing" msgstr "De import van optionele Google Drive vereisten ontbreken" -#: cps/web.py:2906 +#: cps/web.py:2972 msgid "client_secrets.json is missing or not readable" msgstr "client_secrets.json ontbreekt of is niet leesbaar" -#: cps/web.py:2911 cps/web.py:2938 +#: cps/web.py:2977 cps/web.py:3004 msgid "client_secrets.json is not configured for web application" msgstr "client_secrets.json is niet geconfigureerd voor web applicaties" -#: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979 -#: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060 -#: cps/web.py:3077 +#: cps/templates/admin.html:99 cps/web.py:3007 cps/web.py:3033 cps/web.py:3045 +#: cps/web.py:3088 cps/web.py:3103 cps/web.py:3120 cps/web.py:3127 +#: cps/web.py:3142 msgid "Basic Configuration" msgstr "Basis configuratie" -#: cps/web.py:2964 +#: cps/web.py:3030 msgid "Keyfile location is not valid, please enter correct path" msgstr "Sleutelbestand (\"keyfile\") locatie ongeldig, gelieve het correcte pad in te geven" -#: cps/web.py:2976 +#: cps/web.py:3042 msgid "Certfile location is not valid, please enter correct path" msgstr "Certificatiebestand (\"certfile\") locatie ongeldig, gelieve het correcte pad in te geven" -#: cps/web.py:3018 +#: cps/web.py:3085 msgid "Logfile location is not valid, please enter correct path" msgstr "Log bestand (\"logfile\") locatie ongeldig, gelieve het correcte pad in te geven" -#: cps/web.py:3057 +#: cps/web.py:3124 msgid "DB location is not valid, please enter correct path" msgstr "DB locatie is niet geldig, gelieve het correcte pad in te geven" -#: cps/templates/admin.html:33 cps/web.py:3131 cps/web.py:3137 cps/web.py:3153 +#: cps/templates/admin.html:33 cps/web.py:3203 cps/web.py:3209 cps/web.py:3225 msgid "Add new user" msgstr "Voeg nieuwe gebruiker toe" -#: cps/web.py:3143 +#: cps/web.py:3215 #, python-format msgid "User '%(user)s' created" msgstr "Gebruiker '%(user)s' aangemaakt" -#: cps/web.py:3147 +#: cps/web.py:3219 msgid "Found an existing account for this e-mail address or nickname." msgstr "Een bestaande account gevonden met dit email adres of gebruikersnaam." -#: cps/web.py:3171 cps/web.py:3185 +#: cps/web.py:3243 cps/web.py:3257 msgid "E-mail server settings updated" msgstr "Email server instellingen aangepast" -#: cps/web.py:3178 +#: cps/web.py:3250 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "Test email met succes verzonden naar %(kindlemail)s" -#: cps/web.py:3181 +#: cps/web.py:3253 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Er was een fout bij het verzenden van test email: %(res)s" -#: cps/web.py:3186 +#: cps/web.py:3258 msgid "Edit e-mail server settings" msgstr "Bewerk email server instellingen" -#: cps/web.py:3211 +#: cps/web.py:3283 #, python-format msgid "User '%(nick)s' deleted" msgstr "Gebruiker '%(nick)s' verwijderd" -#: cps/web.py:3320 +#: cps/web.py:3392 #, python-format msgid "User '%(nick)s' updated" msgstr "Gebruiker '%(nick)s' aangepast" -#: cps/web.py:3323 +#: cps/web.py:3395 msgid "An unknown error occured." msgstr "Een onbekende fout deed zich voor." -#: cps/web.py:3325 +#: cps/web.py:3397 #, python-format msgid "Edit User %(nick)s" msgstr "Bewerk gebruiker '%(nick)s" -#: cps/web.py:3342 +#: cps/web.py:3414 #, python-format msgid "Password for user %(user)s reset" msgstr "Wachtwoord voor gebruiker %(user)s gereset" -#: cps/web.py:3362 +#: cps/web.py:3428 cps/web.py:3629 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Fout bij openen eBook. Het bestand bestaat niet of is niet toegankelijk" -#: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827 +#: cps/web.py:3453 cps/web.py:3912 msgid "edit metadata" msgstr "bewerk metadata" -#: cps/web.py:3401 cps/web.py:3697 +#: cps/web.py:3546 cps/web.py:3782 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Het uploaden van bestandsextensie '%(ext)s' is niet toegestaan op deze server" -#: cps/web.py:3405 cps/web.py:3701 +#: cps/web.py:3550 cps/web.py:3786 msgid "File to be uploaded must have an extension" msgstr "Up te loaden bestanden dienen een extensie te hebben" -#: cps/web.py:3417 cps/web.py:3721 +#: cps/web.py:3562 cps/web.py:3806 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Het pad %(path)s aanmaken mislukt (Geen toestemming)." -#: cps/web.py:3422 +#: cps/web.py:3567 #, python-format msgid "Failed to store file %(file)s." msgstr "Bestand opslaan niet gelukt voor %(file)s." -#: cps/web.py:3438 +#: cps/web.py:3583 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Bestandsformaat %(ext)s toegevoegd aan %(book)s" -#: cps/web.py:3455 +#: cps/web.py:3601 #, python-format msgid "Failed to create path for cover %(path)s (Permission denied)." msgstr "Het pad %(path)s aanmaken voor boekomslag is mislukt (Geen toestemming)." -#: cps/web.py:3462 +#: cps/web.py:3608 #, python-format msgid "Failed to store cover-file %(cover)s." msgstr "Boekomslag %(cover)s opslaan mislukt." -#: cps/web.py:3465 +#: cps/web.py:3611 msgid "Cover-file is not a valid image file" msgstr "Boekomslag bestand is geen geldig beeldbestand" -#: cps/web.py:3482 cps/web.py:3486 +#: cps/web.py:3641 cps/web.py:3650 cps/web.py:3654 msgid "unknown" msgstr "onbekend" -#: cps/web.py:3508 +#: cps/web.py:3673 msgid "Cover is not a jpg file, can't save" msgstr "Boekomslag is geen jpg bestand, opslaan niet mogelijk" -#: cps/web.py:3554 +#: cps/web.py:3721 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s is geen geldige taal" -#: cps/web.py:3676 +#: cps/web.py:3752 +msgid "Metadata successfully updated" +msgstr "" + +#: cps/web.py:3761 msgid "Error editing book, please check logfile for details" msgstr "Fout bij het bewerken van het boek, gelieve logfile controleren" -#: cps/web.py:3726 +#: cps/web.py:3811 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "Bestand %(file)s opslaan mislukt (Geen toestemming)." -#: cps/web.py:3731 +#: cps/web.py:3816 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "Bestand %(file)s wissen mislukt (Geen toestemming)." -#: cps/web.py:3813 +#: cps/web.py:3898 #, python-format msgid "File %(file)s uploaded" msgstr "Bestand %(file)s geüpload" -#: cps/web.py:3843 +#: cps/web.py:3928 msgid "Source or destination format for conversion missing" msgstr "Bron of doel formaat voor conversie ontbreekt" -#: cps/web.py:3853 +#: cps/web.py:3938 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Boek succesvol in de wachtrij geplaatst voor conversie naar %(book_format)s" -#: cps/web.py:3857 +#: cps/web.py:3942 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Er trad een fout op bij het converteren van dit boek: %(res)s" -#: cps/worker.py:215 cps/worker.py:398 -msgid "Started" -msgstr "Gestart" - -#: cps/worker.py:251 -#, python-format -msgid "Convertertool %(converter)s not found" -msgstr "Converteer tool %(converter)s niet gevonden" - #: cps/worker.py:287 #, python-format msgid "Ebook-converter failed: %(error)s" @@ -692,22 +748,6 @@ msgstr "Ebook conversie mislukt: %(error)s" msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "Kindlegen gefaald met Error %(error)s. Bericht: %(message)s" -#: cps/worker.py:355 cps/worker.py:374 -msgid "Waiting" -msgstr "Wachten" - -#: cps/worker.py:362 -msgid "This e-mail has been sent via Calibre-Web." -msgstr "Deze email werd verzonden via Calibre-Web." - -#: cps/worker.py:388 cps/worker.py:484 -msgid "Finished" -msgstr "Voltooid" - -#: cps/worker.py:476 -msgid "Failed" -msgstr "Mislukt" - #: cps/templates/admin.html:6 msgid "User list" msgstr "Gebruikerslijst" @@ -854,16 +894,16 @@ msgid "Do you really want to restart Calibre-Web?" msgstr "Wil je Calibre-Web echt herstarten?" #: cps/templates/admin.html:150 cps/templates/admin.html:164 -#: cps/templates/admin.html:184 cps/templates/shelf.html:59 +#: cps/templates/admin.html:184 cps/templates/shelf.html:61 msgid "Ok" msgstr "Ok" #: cps/templates/admin.html:151 cps/templates/admin.html:165 #: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200 -#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164 +#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:168 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75 -#: cps/templates/shelf.html:60 cps/templates/shelf_edit.html:19 -#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:153 +#: cps/templates/shelf.html:62 cps/templates/shelf_edit.html:19 +#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:155 msgid "Back" msgstr "Terug" @@ -959,17 +999,17 @@ msgstr "Boekomslag URL (jpg, omslag wordt gedownload en opgeslagen in database, msgid "Upload Cover from local drive" msgstr "Upload cover van lokale schijf" -#: cps/templates/book_edit.html:96 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:96 cps/templates/detail.html:135 msgid "Publishing date" msgstr "Publicatie datum" #: cps/templates/book_edit.html:103 cps/templates/book_edit.html:261 -#: cps/templates/book_edit.html:278 cps/templates/detail.html:126 +#: cps/templates/book_edit.html:278 cps/templates/detail.html:127 #: cps/templates/search_form.html:14 msgid "Publisher" msgstr "Uitgever" -#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:33 +#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:31 msgid "Language" msgstr "Taal" @@ -994,9 +1034,9 @@ msgid "Get metadata" msgstr "Verkrijg metadata" #: cps/templates/book_edit.html:177 cps/templates/config_edit.html:210 -#: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 +#: cps/templates/config_view_edit.html:167 cps/templates/login.html:20 #: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 -#: cps/templates/user_edit.html:151 +#: cps/templates/user_edit.html:153 msgid "Submit" msgstr "Opslaan" @@ -1032,7 +1072,7 @@ msgstr "Klik op de omslag om de metatadata in het formulier te laden" msgid "Loading..." msgstr "Aan het laden..." -#: cps/templates/book_edit.html:239 cps/templates/layout.html:221 +#: cps/templates/book_edit.html:239 cps/templates/layout.html:224 msgid "Close" msgstr "Sluit" @@ -1214,31 +1254,31 @@ msgstr "Tags voor Volwassen Inhoud" msgid "Default settings for new users" msgstr "Standaard instellingen voor nieuwe gebruikers" -#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:108 +#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:110 msgid "Admin user" msgstr "Administratie gebruiker" -#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:117 +#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:119 msgid "Allow Downloads" msgstr "Downloads toestaan" -#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:121 +#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:123 msgid "Allow Uploads" msgstr "Uploads toestaan" -#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:125 +#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:127 msgid "Allow Edit" msgstr "Bewerken toestaan" -#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:129 +#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:131 msgid "Allow Delete books" msgstr "Het wissen van boeken toestaan" -#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:134 +#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:136 msgid "Allow Changing Password" msgstr "Wachtwoord wijzigen toestaan" -#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:138 +#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:140 msgid "Allow Editing Public Shelfs" msgstr "Publieke boekenplanken bewerken toestaan" @@ -1246,51 +1286,55 @@ msgstr "Publieke boekenplanken bewerken toestaan" msgid "Default visibilities for new users" msgstr "Standaard zichtbaar voor nieuwe gebruikers" -#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:60 +#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:58 msgid "Show random books" msgstr "Toon willekeurige boeken" -#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:64 +#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:62 msgid "Show recent books" msgstr "Toon recente boeken" -#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:68 +#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:66 msgid "Show sorted books" msgstr "Toon gesorteerde boeken" -#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:72 +#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:70 msgid "Show hot books" msgstr "Toon populaire boeken" -#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:76 +#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:74 msgid "Show best rated books" msgstr "Toon best beoordeelde boeken" -#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:80 +#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:78 msgid "Show language selection" msgstr "Toon taal selectie" -#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:84 +#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:82 msgid "Show series selection" msgstr "Toon serie selectie" -#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:88 +#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:86 msgid "Show category selection" msgstr "Toon categorie selectie" -#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:92 +#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:90 msgid "Show author selection" msgstr "Toon auteur selectie" -#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:96 +#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:94 +msgid "Show publisher selection" +msgstr "" + +#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:98 msgid "Show read and unread" msgstr "Toon gelezen en ongelezen" -#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:100 +#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:102 msgid "Show random books in detail view" msgstr "Toon willekeurige boeken in gedetailleerd zicht" -#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:113 +#: cps/templates/config_view_edit.html:160 cps/templates/user_edit.html:115 msgid "Show mature content" msgstr "Toon Volwassen Inhoud" @@ -1310,19 +1354,19 @@ msgstr "van" msgid "language" msgstr "taal" -#: cps/templates/detail.html:168 +#: cps/templates/detail.html:172 msgid "Read" msgstr "Lees" -#: cps/templates/detail.html:177 +#: cps/templates/detail.html:182 msgid "Description:" msgstr "Omschrijving:" -#: cps/templates/detail.html:189 cps/templates/search.html:14 +#: cps/templates/detail.html:195 cps/templates/search.html:14 msgid "Add to shelf" msgstr "Voeg toe aan boekenplank" -#: cps/templates/detail.html:251 +#: cps/templates/detail.html:257 msgid "Edit metadata" msgstr "Bewerk metadata" @@ -1382,11 +1426,11 @@ msgstr "Voeg toe" msgid "Do you really want to delete this domain rule?" msgstr "Wil je werkelijk deze domein regel verwijderen?" -#: cps/templates/feed.xml:21 cps/templates/layout.html:205 +#: cps/templates/feed.xml:21 cps/templates/layout.html:208 msgid "Next" msgstr "Volgende" -#: cps/templates/feed.xml:30 cps/templates/index.xml:8 +#: cps/templates/feed.xml:33 cps/templates/index.xml:11 #: cps/templates/layout.html:43 cps/templates/layout.html:44 msgid "Search" msgstr "Zoek" @@ -1399,63 +1443,71 @@ msgstr "Ontdek (Willekeurige Boeken)" msgid "Start" msgstr "Start" -#: cps/templates/index.xml:15 cps/templates/layout.html:139 +#: cps/templates/index.xml:18 cps/templates/layout.html:139 msgid "Hot Books" msgstr "Populaire Boeken" -#: cps/templates/index.xml:19 +#: cps/templates/index.xml:22 msgid "Popular publications from this catalog based on Downloads." msgstr "Populaire publicaties van deze cataloog gebaseerd op Downloads." -#: cps/templates/index.xml:22 cps/templates/layout.html:142 +#: cps/templates/index.xml:25 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "Best beoordeeld" -#: cps/templates/index.xml:26 +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Rating." msgstr "Populaire publicaties van deze cataloog gebaseerd op Beoordeling." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:32 msgid "New Books" msgstr "Nieuwe Boeken" -#: cps/templates/index.xml:33 +#: cps/templates/index.xml:36 msgid "The latest Books" msgstr "Recentste boeken" -#: cps/templates/index.xml:40 +#: cps/templates/index.xml:43 msgid "Show Random Books" msgstr "Toon Willekeurige Boeken" -#: cps/templates/index.xml:59 cps/templates/layout.html:160 +#: cps/templates/index.xml:62 cps/templates/layout.html:160 msgid "Authors" msgstr "Auteurs" -#: cps/templates/index.xml:63 +#: cps/templates/index.xml:66 msgid "Books ordered by Author" msgstr "Boeken gesorteerd op Auteur" -#: cps/templates/index.xml:70 +#: cps/templates/index.xml:69 cps/templates/layout.html:163 +msgid "Publishers" +msgstr "" + +#: cps/templates/index.xml:73 +msgid "Books ordered by publisher" +msgstr "" + +#: cps/templates/index.xml:80 msgid "Books ordered by category" msgstr "Boeken gesorteerd op Categorie" -#: cps/templates/index.xml:77 +#: cps/templates/index.xml:87 msgid "Books ordered by series" msgstr "Boeken gesorteerd op Serie" -#: cps/templates/index.xml:80 cps/templates/layout.html:166 +#: cps/templates/index.xml:90 cps/templates/layout.html:169 msgid "Public Shelves" msgstr "Publieke Boekenplanken" -#: cps/templates/index.xml:84 +#: cps/templates/index.xml:94 msgid "Books organized in public shelfs, visible to everyone" msgstr "Boeken georganiseerd in publieke boekenplanken, zichtbaar voor iedereen" -#: cps/templates/index.xml:88 cps/templates/layout.html:170 +#: cps/templates/index.xml:98 cps/templates/layout.html:173 msgid "Your Shelves" msgstr "Jou Boekenplanken" -#: cps/templates/index.xml:92 +#: cps/templates/index.xml:102 msgid "User's own shelfs, only visible to the current user himself" msgstr "Eigen boekenplanken, enkel zichtbaar voor de huidige gebruiker zelf" @@ -1471,7 +1523,7 @@ msgstr "Geavanceerd zoeken" msgid "Logout" msgstr "Log uit" -#: cps/templates/layout.html:83 cps/templates/register.html:18 +#: cps/templates/layout.html:83 cps/templates/register.html:14 msgid "Register" msgstr "Registreer" @@ -1524,23 +1576,23 @@ msgstr "Ontdek" msgid "Categories" msgstr "Categorieën" -#: cps/templates/layout.html:163 cps/templates/search_form.html:74 +#: cps/templates/layout.html:166 cps/templates/search_form.html:74 msgid "Languages" msgstr "Talen" -#: cps/templates/layout.html:175 +#: cps/templates/layout.html:178 msgid "Create a Shelf" msgstr "Maak een boekenplank" -#: cps/templates/layout.html:176 cps/templates/stats.html:3 +#: cps/templates/layout.html:179 cps/templates/stats.html:3 msgid "About" msgstr "Over" -#: cps/templates/layout.html:190 +#: cps/templates/layout.html:193 msgid "Previous" msgstr "Vorige" -#: cps/templates/layout.html:217 +#: cps/templates/layout.html:220 msgid "Book Details" msgstr "Boek Details" @@ -1550,7 +1602,7 @@ msgid "Username" msgstr "Gebruikersnaam" #: cps/templates/login.html:12 cps/templates/login.html:13 -#: cps/templates/register.html:11 cps/templates/user_edit.html:21 +#: cps/templates/user_edit.html:21 msgid "Password" msgstr "Wachtwoord" @@ -1615,7 +1667,7 @@ msgstr "Draai linksom" msgid "Flip Image" msgstr "Keer beeld om" -#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:41 +#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:39 msgid "Theme" msgstr "Thema" @@ -1679,15 +1731,11 @@ msgstr "Registreer een nieuwe gebruiker" msgid "Choose a username" msgstr "Kies een gebruikersnaam" -#: cps/templates/register.html:12 -msgid "Choose a password" -msgstr "Kies een wachtwoord" - -#: cps/templates/register.html:15 cps/templates/user_edit.html:13 +#: cps/templates/register.html:11 cps/templates/user_edit.html:13 msgid "E-mail address" msgstr "Email adres" -#: cps/templates/register.html:16 +#: cps/templates/register.html:12 msgid "Your email address" msgstr "Jou email adres" @@ -1755,11 +1803,11 @@ msgstr "Bewerk Boekenplank" msgid "Change order" msgstr "Verander volgorde" -#: cps/templates/shelf.html:54 +#: cps/templates/shelf.html:56 msgid "Do you really want to delete the shelf?" msgstr "Wil je echt deze boekenplank verwijderen?" -#: cps/templates/shelf.html:57 +#: cps/templates/shelf.html:59 msgid "Shelf will be lost for everybody and forever!" msgstr "Boekenplank zal verdwijnen voor iedereen en altijd!" @@ -1843,31 +1891,31 @@ msgstr "Verberg alle taken" msgid "Reset user Password" msgstr "Reset gebruikers wachtwoord" -#: cps/templates/user_edit.html:29 +#: cps/templates/user_edit.html:27 msgid "Kindle E-Mail" msgstr "Kindle email" -#: cps/templates/user_edit.html:43 +#: cps/templates/user_edit.html:41 msgid "Standard Theme" msgstr "Standaard thema" -#: cps/templates/user_edit.html:44 +#: cps/templates/user_edit.html:42 msgid "caliBlur! Dark Theme (Beta)" msgstr "caliBlur! Donker Thema (Beta)" -#: cps/templates/user_edit.html:49 +#: cps/templates/user_edit.html:47 msgid "Show books with language" msgstr "Toon boeken met taal" -#: cps/templates/user_edit.html:51 +#: cps/templates/user_edit.html:49 msgid "Show all" msgstr "Toon alles" -#: cps/templates/user_edit.html:145 +#: cps/templates/user_edit.html:147 msgid "Delete this user" msgstr "Wis deze gebruiker" -#: cps/templates/user_edit.html:160 +#: cps/templates/user_edit.html:162 msgid "Recent Downloads" msgstr "Recente Downloads" @@ -1904,3 +1952,21 @@ msgstr "Recente Downloads" #~ msgid "Newest commit timestamp" #~ msgstr "Nieuwste commit tijdsstempel" +#~ msgid "Convert: %(book)s" +#~ msgstr "Converteer: %(book)s" + +#~ msgid "Convert to %(format)s: %(book)s" +#~ msgstr "Converteren naar %(format)s: %(book)s" + +#~ msgid "Files are replaced" +#~ msgstr "Bestanden zijn vervangen" + +#~ msgid "Server is stopped" +#~ msgstr "Server is gestopt" + +#~ msgid "Convertertool %(converter)s not found" +#~ msgstr "Converteer tool %(converter)s niet gevonden" + +#~ msgid "Choose a password" +#~ msgstr "Kies een wachtwoord" + diff --git a/cps/translations/pl/LC_MESSAGES/messages.po b/cps/translations/pl/LC_MESSAGES/messages.po index 193fca14..a5309090 100644 --- a/cps/translations/pl/LC_MESSAGES/messages.po +++ b/cps/translations/pl/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre Web - polski (POT: 2017-04-11 22:51)\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-09-14 21:11+0200\n" +"POT-Creation-Date: 2018-11-03 14:03+0100\n" "PO-Revision-Date: 2017-04-11 22:51+0200\n" "Last-Translator: Radosław Kierznowski \n" "Language: pl\n" @@ -17,10 +17,10 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.5.1\n" +"Generated-By: Babel 2.6.0\n" -#: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 -#: cps/converter.py:11 cps/converter.py:27 +#: cps/book_formats.py:129 cps/book_formats.py:130 cps/book_formats.py:134 +#: cps/book_formats.py:138 cps/converter.py:11 cps/converter.py:27 msgid "not installed" msgstr "nie zainstalowane" @@ -28,660 +28,716 @@ msgstr "nie zainstalowane" msgid "Excecution permissions missing" msgstr "" -#: cps/helper.py:57 +#: cps/converter.py:48 +msgid "not configured" +msgstr "" + +#: cps/helper.py:58 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "" -#: cps/helper.py:69 +#: cps/helper.py:70 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "" -#: cps/helper.py:76 -#, python-format -msgid "Convert: %(book)s" -msgstr "" +#: cps/helper.py:77 cps/helper.py:147 cps/templates/detail.html:44 +msgid "Send to Kindle" +msgstr "Wyślij do Kindle" -#: cps/helper.py:79 -#, python-format -msgid "Convert to %(format)s: %(book)s" +#: cps/helper.py:78 cps/helper.py:96 +msgid "This e-mail has been sent via Calibre-Web." msgstr "" -#: cps/helper.py:86 +#: cps/helper.py:89 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "" -#: cps/helper.py:91 +#: cps/helper.py:94 msgid "Calibre-Web test e-mail" msgstr "" -#: cps/helper.py:92 +#: cps/helper.py:95 msgid "Test e-mail" msgstr "" -#: cps/helper.py:107 +#: cps/helper.py:111 msgid "Get Started with Calibre-Web" msgstr "" -#: cps/helper.py:108 +#: cps/helper.py:112 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "" -#: cps/helper.py:131 cps/helper.py:141 +#: cps/helper.py:135 cps/helper.py:145 msgid "Could not find any formats suitable for sending by e-mail" msgstr "" -#: cps/helper.py:143 cps/templates/detail.html:44 cps/worker.py:224 -msgid "Send to Kindle" -msgstr "Wyślij do Kindle" - -#: cps/helper.py:144 cps/worker.py:226 +#: cps/helper.py:148 #, python-format msgid "E-mail: %(book)s" msgstr "" -#: cps/helper.py:146 +#: cps/helper.py:150 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "" -#: cps/helper.py:241 +#: cps/helper.py:250 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:250 +#: cps/helper.py:259 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:272 cps/helper.py:281 +#: cps/helper.py:281 cps/helper.py:290 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "" -#: cps/helper.py:299 +#: cps/helper.py:308 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "" -#: cps/helper.py:544 +#: cps/helper.py:565 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:546 +#: cps/helper.py:567 msgid "Unrar binary file not found" msgstr "" -#: cps/web.py:1112 cps/web.py:2778 +#: cps/helper.py:609 +msgid "Waiting" +msgstr "" + +#: cps/helper.py:611 +msgid "Failed" +msgstr "" + +#: cps/helper.py:613 +msgid "Started" +msgstr "" + +#: cps/helper.py:615 +msgid "Finished" +msgstr "" + +#: cps/helper.py:617 +msgid "Unknown Status" +msgstr "" + +#: cps/helper.py:622 +msgid "E-mail: " +msgstr "" + +#: cps/helper.py:624 cps/helper.py:628 +msgid "Convert: " +msgstr "" + +#: cps/helper.py:626 +msgid "Upload: " +msgstr "" + +#: cps/helper.py:630 +msgid "Unknown Task: " +msgstr "" + +#: cps/web.py:1132 cps/web.py:2842 msgid "Unknown" msgstr "" -#: cps/web.py:1121 cps/web.py:1152 +#: cps/web.py:1141 cps/web.py:1172 cps/web.py:1257 msgid "HTTP Error" msgstr "" -#: cps/web.py:1123 cps/web.py:1154 +#: cps/web.py:1143 cps/web.py:1174 cps/web.py:1258 msgid "Connection error" msgstr "" -#: cps/web.py:1125 cps/web.py:1156 +#: cps/web.py:1145 cps/web.py:1176 cps/web.py:1259 msgid "Timeout while establishing connection" msgstr "" -#: cps/web.py:1127 cps/web.py:1158 +#: cps/web.py:1147 cps/web.py:1178 cps/web.py:1260 msgid "General error" msgstr "" -#: cps/web.py:1133 +#: cps/web.py:1153 msgid "Unexpected data while reading update information" msgstr "" -#: cps/web.py:1140 +#: cps/web.py:1160 msgid "No update available. You already have the latest version installed" msgstr "" -#: cps/web.py:1165 +#: cps/web.py:1185 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "" -#: cps/web.py:1215 +#: cps/web.py:1235 msgid "Could not fetch update information" msgstr "" -#: cps/web.py:1230 +#: cps/web.py:1250 msgid "Requesting update package" msgstr "Żądanie o pakiet aktualizacji" -#: cps/web.py:1231 +#: cps/web.py:1251 msgid "Downloading update package" msgstr "Pobieranie pakietu aktualizacji" -#: cps/web.py:1232 +#: cps/web.py:1252 msgid "Unzipping update package" msgstr "Rozpakowywanie pakietu aktualizacji" -#: cps/web.py:1233 -msgid "Files are replaced" -msgstr "Pliki zostały zastąpione" +#: cps/web.py:1253 +msgid "Replacing files" +msgstr "" -#: cps/web.py:1234 +#: cps/web.py:1254 msgid "Database connections are closed" msgstr "Połączenia z bazą danych zostały zakończone" -#: cps/web.py:1235 -msgid "Server is stopped" -msgstr "Serwer jest zatrzymany" +#: cps/web.py:1255 +msgid "Stopping server" +msgstr "" -#: cps/web.py:1236 +#: cps/web.py:1256 msgid "Update finished, please press okay and reload page" msgstr "Aktualizacja zakończona, proszę nacisnąć OK i odświeżyć stronę" -#: cps/web.py:1256 +#: cps/web.py:1257 cps/web.py:1258 cps/web.py:1259 cps/web.py:1260 +msgid "Update failed:" +msgstr "" + +#: cps/web.py:1283 msgid "Recently Added Books" msgstr "" -#: cps/web.py:1266 +#: cps/web.py:1293 msgid "Newest Books" msgstr "" -#: cps/web.py:1278 +#: cps/web.py:1305 msgid "Oldest Books" msgstr "" -#: cps/web.py:1290 +#: cps/web.py:1317 msgid "Books (A-Z)" msgstr "" -#: cps/web.py:1301 +#: cps/web.py:1328 msgid "Books (Z-A)" msgstr "" -#: cps/web.py:1330 +#: cps/web.py:1357 msgid "Hot Books (most downloaded)" msgstr "Najpopularniejsze książki (najczęściej pobierane)" -#: cps/web.py:1343 +#: cps/web.py:1370 msgid "Best rated books" msgstr "Najlepiej oceniane książki" -#: cps/templates/index.xml:36 cps/web.py:1355 +#: cps/templates/index.xml:39 cps/web.py:1383 msgid "Random Books" msgstr "Losowe książki" -#: cps/web.py:1370 +#: cps/web.py:1398 msgid "Author list" msgstr "Lista autorów" -#: cps/web.py:1382 cps/web.py:1445 cps/web.py:1600 cps/web.py:2152 +#: cps/web.py:1410 cps/web.py:1501 cps/web.py:1663 cps/web.py:2206 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "Błąd otwierania e-booka. Plik nie istnieje lub plik nie jest dostępny:" -#: cps/templates/index.xml:73 cps/web.py:1429 +#: cps/web.py:1438 +msgid "Publisher list" +msgstr "" + +#: cps/web.py:1452 +#, python-format +msgid "Publisher: %(name)s" +msgstr "" + +#: cps/templates/index.xml:83 cps/web.py:1484 msgid "Series list" msgstr "Lista serii" -#: cps/web.py:1443 +#: cps/web.py:1499 #, python-format msgid "Series: %(serie)s" msgstr "Seria: %(serie)s" -#: cps/web.py:1470 +#: cps/web.py:1528 msgid "Available languages" msgstr "Dostępne języki" -#: cps/web.py:1487 +#: cps/web.py:1548 #, python-format msgid "Language: %(name)s" msgstr "Język: %(name)s" -#: cps/templates/index.xml:66 cps/web.py:1498 +#: cps/templates/index.xml:76 cps/web.py:1559 msgid "Category list" msgstr "Lista kategorii" -#: cps/web.py:1512 +#: cps/web.py:1573 #, python-format msgid "Category: %(name)s" msgstr "Kategoria: %(name)s" -#: cps/templates/layout.html:71 cps/web.py:1651 +#: cps/templates/layout.html:71 cps/web.py:1699 msgid "Tasks" msgstr "" -#: cps/web.py:1681 +#: cps/web.py:1733 msgid "Statistics" msgstr "Statystyki" -#: cps/web.py:1786 +#: cps/web.py:1840 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "" -#: cps/web.py:1861 +#: cps/web.py:1915 msgid "Server restarted, please reload page" msgstr "Serwer uruchomiony ponownie, proszę odświeżyć stronę" -#: cps/web.py:1864 +#: cps/web.py:1918 msgid "Performing shutdown of server, please close window" msgstr "Wykonano wyłączenie serwera, proszę zamknąć okno" -#: cps/web.py:1883 +#: cps/web.py:1937 msgid "Update done" msgstr "Aktualizacja zakończona" -#: cps/web.py:1953 +#: cps/web.py:2007 msgid "Published after " msgstr "" -#: cps/web.py:1960 +#: cps/web.py:2014 msgid "Published before " msgstr "" -#: cps/web.py:1974 +#: cps/web.py:2028 #, python-format msgid "Rating <= %(rating)s" msgstr "" -#: cps/web.py:1976 +#: cps/web.py:2030 #, python-format msgid "Rating >= %(rating)s" msgstr "" -#: cps/web.py:2035 cps/web.py:2044 +#: cps/web.py:2089 cps/web.py:2098 msgid "search" msgstr "szukaj" -#: cps/templates/index.xml:44 cps/templates/index.xml:48 -#: cps/templates/layout.html:146 cps/web.py:2111 +#: cps/templates/index.xml:47 cps/templates/index.xml:51 +#: cps/templates/layout.html:146 cps/web.py:2165 msgid "Read Books" msgstr "Przeczytane książki" -#: cps/templates/index.xml:52 cps/templates/index.xml:56 -#: cps/templates/layout.html:148 cps/web.py:2114 +#: cps/templates/index.xml:55 cps/templates/index.xml:59 +#: cps/templates/layout.html:148 cps/web.py:2168 msgid "Unread Books" msgstr "Nieprzeczytane książki" -#: cps/web.py:2162 cps/web.py:2164 cps/web.py:2166 cps/web.py:2178 +#: cps/web.py:2216 cps/web.py:2218 cps/web.py:2220 cps/web.py:2232 msgid "Read a Book" msgstr "Czytaj książkę" -#: cps/web.py:2244 cps/web.py:3129 +#: cps/web.py:2298 cps/web.py:3201 msgid "Please fill out all fields!" msgstr "Proszę wypełnić wszystkie pola!" -#: cps/web.py:2245 cps/web.py:2266 cps/web.py:2270 cps/web.py:2275 -#: cps/web.py:2277 +#: cps/web.py:2299 cps/web.py:2320 cps/web.py:2324 cps/web.py:2329 +#: cps/web.py:2331 msgid "register" msgstr "rejestracja" -#: cps/web.py:2265 cps/web.py:3345 +#: cps/web.py:2319 cps/web.py:3417 msgid "An unknown error occurred. Please try again later." msgstr "" -#: cps/web.py:2268 +#: cps/web.py:2322 msgid "Your e-mail is not allowed to register" msgstr "" -#: cps/web.py:2271 +#: cps/web.py:2325 msgid "Confirmation e-mail was send to your e-mail account." msgstr "" -#: cps/web.py:2274 +#: cps/web.py:2328 msgid "This username or e-mail address is already in use." msgstr "" -#: cps/web.py:2291 cps/web.py:2387 +#: cps/web.py:2345 cps/web.py:2441 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "Zalogowałeś się jako: '%(nickname)s'" -#: cps/web.py:2296 +#: cps/web.py:2350 msgid "Wrong Username or Password" msgstr "Błędna nazwa użytkownika lub hasło" -#: cps/web.py:2302 cps/web.py:2323 +#: cps/web.py:2356 cps/web.py:2377 msgid "login" msgstr "logowanie" -#: cps/web.py:2335 cps/web.py:2366 +#: cps/web.py:2389 cps/web.py:2420 msgid "Token not found" msgstr "" -#: cps/web.py:2343 cps/web.py:2374 +#: cps/web.py:2397 cps/web.py:2428 msgid "Token has expired" msgstr "" -#: cps/web.py:2351 +#: cps/web.py:2405 msgid "Success! Please return to your device" msgstr "" -#: cps/web.py:2401 +#: cps/web.py:2455 msgid "Please configure the SMTP mail settings first..." msgstr "Proszę najpierw skonfigurować ustawienia SMTP poczty e-mail..." -#: cps/web.py:2405 +#: cps/web.py:2459 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "" -#: cps/web.py:2409 +#: cps/web.py:2463 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Wystąpił błąd podczas wysyłania tej książki: %(res)s" -#: cps/web.py:2411 cps/web.py:3183 +#: cps/web.py:2465 cps/web.py:3255 msgid "Please configure your kindle e-mail address first..." msgstr "" -#: cps/web.py:2455 +#: cps/web.py:2476 cps/web.py:2528 +msgid "Invalid shelf specified" +msgstr "" + +#: cps/web.py:2483 #, python-format -msgid "Book has been added to shelf: %(sname)s" -msgstr "Książka została dodana do półki: %(sname)s" +msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" +msgstr "" -#: cps/web.py:2466 -msgid "Invalid shelf specified" +#: cps/web.py:2491 +msgid "You are not allowed to edit public shelves" +msgstr "" + +#: cps/web.py:2500 +#, python-format +msgid "Book is already part of the shelf: %(shelfname)s" msgstr "" -#: cps/web.py:2471 +#: cps/web.py:2514 +#, python-format +msgid "Book has been added to shelf: %(sname)s" +msgstr "Książka została dodana do półki: %(sname)s" + +#: cps/web.py:2533 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "" -#: cps/web.py:2476 +#: cps/web.py:2538 msgid "User is not allowed to edit public shelves" msgstr "" -#: cps/web.py:2494 +#: cps/web.py:2556 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "" -#: cps/web.py:2508 +#: cps/web.py:2570 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "" -#: cps/web.py:2510 +#: cps/web.py:2572 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "" -#: cps/web.py:2547 +#: cps/web.py:2609 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Książka została usunięta z półki: %(sname)s" -#: cps/web.py:2553 +#: cps/web.py:2615 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" -#: cps/web.py:2573 cps/web.py:2597 +#: cps/web.py:2635 cps/web.py:2659 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Półka o nazwie '%(title)s' już istnieje." -#: cps/web.py:2578 +#: cps/web.py:2640 #, python-format msgid "Shelf %(title)s created" msgstr "Półka %(title)s została utworzona" -#: cps/web.py:2580 cps/web.py:2608 +#: cps/web.py:2642 cps/web.py:2670 msgid "There was an error" msgstr "Wystąpił błąd" -#: cps/web.py:2581 cps/web.py:2583 +#: cps/web.py:2643 cps/web.py:2645 msgid "create a shelf" msgstr "utwórz półkę" -#: cps/web.py:2606 +#: cps/web.py:2668 #, python-format msgid "Shelf %(title)s changed" msgstr "Półka %(title)s została zmieniona" -#: cps/web.py:2609 cps/web.py:2611 +#: cps/web.py:2671 cps/web.py:2673 msgid "Edit a shelf" msgstr "Edytuj półkę" -#: cps/web.py:2632 +#: cps/web.py:2694 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "pomyślnie usunięto półkę %(name)s" -#: cps/web.py:2659 +#: cps/web.py:2721 #, python-format msgid "Shelf: '%(name)s'" msgstr "Półka: '%(name)s'" -#: cps/web.py:2662 +#: cps/web.py:2724 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "" -#: cps/web.py:2693 +#: cps/web.py:2755 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Zmieniono kolejność półki: '%(name)s'" -#: cps/web.py:2722 cps/web.py:3135 +#: cps/web.py:2784 cps/web.py:3207 msgid "E-mail is not from valid domain" msgstr "" -#: cps/web.py:2724 cps/web.py:2765 cps/web.py:2768 +#: cps/web.py:2786 cps/web.py:2829 cps/web.py:2832 #, python-format msgid "%(name)s's profile" msgstr "Profil użytkownika %(name)s" -#: cps/web.py:2763 +#: cps/web.py:2827 msgid "Found an existing account for this e-mail address." msgstr "" -#: cps/web.py:2766 +#: cps/web.py:2830 msgid "Profile updated" msgstr "Zaktualizowano profil" -#: cps/web.py:2794 +#: cps/web.py:2858 msgid "Admin page" msgstr "Portal administracyjny" -#: cps/web.py:2872 cps/web.py:3045 +#: cps/web.py:2938 cps/web.py:3112 msgid "Calibre-Web configuration updated" msgstr "Konfiguracja Calibre-Web została zaktualizowana" -#: cps/templates/admin.html:100 cps/web.py:2885 +#: cps/templates/admin.html:100 cps/web.py:2951 msgid "UI Configuration" msgstr "" -#: cps/web.py:2903 +#: cps/web.py:2969 msgid "Import of optional Google Drive requirements missing" msgstr "" -#: cps/web.py:2906 +#: cps/web.py:2972 msgid "client_secrets.json is missing or not readable" msgstr "" -#: cps/web.py:2911 cps/web.py:2938 +#: cps/web.py:2977 cps/web.py:3004 msgid "client_secrets.json is not configured for web application" msgstr "" -#: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979 -#: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060 -#: cps/web.py:3077 +#: cps/templates/admin.html:99 cps/web.py:3007 cps/web.py:3033 cps/web.py:3045 +#: cps/web.py:3088 cps/web.py:3103 cps/web.py:3120 cps/web.py:3127 +#: cps/web.py:3142 msgid "Basic Configuration" msgstr "Podstawowa konfiguracja" -#: cps/web.py:2964 +#: cps/web.py:3030 msgid "Keyfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2976 +#: cps/web.py:3042 msgid "Certfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:3018 +#: cps/web.py:3085 msgid "Logfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:3057 +#: cps/web.py:3124 msgid "DB location is not valid, please enter correct path" msgstr "Lokalizacja bazy danych jest nieprawidłowa, wpisz poprawną ścieżkę" -#: cps/templates/admin.html:33 cps/web.py:3131 cps/web.py:3137 cps/web.py:3153 +#: cps/templates/admin.html:33 cps/web.py:3203 cps/web.py:3209 cps/web.py:3225 msgid "Add new user" msgstr "Dodaj nowego użytkownika" -#: cps/web.py:3143 +#: cps/web.py:3215 #, python-format msgid "User '%(user)s' created" msgstr "Użytkownik '%(user)s' został utworzony" -#: cps/web.py:3147 +#: cps/web.py:3219 msgid "Found an existing account for this e-mail address or nickname." msgstr "" -#: cps/web.py:3171 cps/web.py:3185 +#: cps/web.py:3243 cps/web.py:3257 msgid "E-mail server settings updated" msgstr "" -#: cps/web.py:3178 +#: cps/web.py:3250 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "" -#: cps/web.py:3181 +#: cps/web.py:3253 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "" -#: cps/web.py:3186 +#: cps/web.py:3258 msgid "Edit e-mail server settings" msgstr "" -#: cps/web.py:3211 +#: cps/web.py:3283 #, python-format msgid "User '%(nick)s' deleted" msgstr "Użytkownik '%(nick)s' został usunięty" -#: cps/web.py:3320 +#: cps/web.py:3392 #, python-format msgid "User '%(nick)s' updated" msgstr "Użytkownik '%(nick)s' został zaktualizowany" -#: cps/web.py:3323 +#: cps/web.py:3395 msgid "An unknown error occured." msgstr "Wystąpił nieznany błąd." -#: cps/web.py:3325 +#: cps/web.py:3397 #, python-format msgid "Edit User %(nick)s" msgstr "Edytuj użytkownika %(nick)s" -#: cps/web.py:3342 +#: cps/web.py:3414 #, python-format msgid "Password for user %(user)s reset" msgstr "" -#: cps/web.py:3362 +#: cps/web.py:3428 cps/web.py:3629 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "" -#: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827 +#: cps/web.py:3453 cps/web.py:3912 msgid "edit metadata" msgstr "edytuj metadane" -#: cps/web.py:3401 cps/web.py:3697 +#: cps/web.py:3546 cps/web.py:3782 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Rozszerzenie pliku '%(ext)s' nie jest dozwolone do przesłania na ten serwer" -#: cps/web.py:3405 cps/web.py:3701 +#: cps/web.py:3550 cps/web.py:3786 msgid "File to be uploaded must have an extension" msgstr "Plik do przesłania musi mieć rozszerzenie" -#: cps/web.py:3417 cps/web.py:3721 +#: cps/web.py:3562 cps/web.py:3806 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Nie udało się utworzyć łącza %(path)s (Odmowa dostępu)." -#: cps/web.py:3422 +#: cps/web.py:3567 #, python-format msgid "Failed to store file %(file)s." msgstr "" -#: cps/web.py:3438 +#: cps/web.py:3583 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "" -#: cps/web.py:3455 +#: cps/web.py:3601 #, python-format msgid "Failed to create path for cover %(path)s (Permission denied)." msgstr "" -#: cps/web.py:3462 +#: cps/web.py:3608 #, python-format msgid "Failed to store cover-file %(cover)s." msgstr "" -#: cps/web.py:3465 +#: cps/web.py:3611 msgid "Cover-file is not a valid image file" msgstr "" -#: cps/web.py:3482 cps/web.py:3486 +#: cps/web.py:3641 cps/web.py:3650 cps/web.py:3654 msgid "unknown" msgstr "" -#: cps/web.py:3508 +#: cps/web.py:3673 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/web.py:3554 +#: cps/web.py:3721 #, python-format msgid "%(langname)s is not a valid language" msgstr "" -#: cps/web.py:3676 +#: cps/web.py:3752 +msgid "Metadata successfully updated" +msgstr "" + +#: cps/web.py:3761 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/web.py:3726 +#: cps/web.py:3811 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "Nie można przechowywać pliku %(file)s (Odmowa dostępu)." -#: cps/web.py:3731 +#: cps/web.py:3816 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "Nie udało się usunąć pliku %(file)s (Odmowa dostępu)." -#: cps/web.py:3813 +#: cps/web.py:3898 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/web.py:3843 +#: cps/web.py:3928 msgid "Source or destination format for conversion missing" msgstr "" -#: cps/web.py:3853 +#: cps/web.py:3938 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "" -#: cps/web.py:3857 +#: cps/web.py:3942 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "" -#: cps/worker.py:215 cps/worker.py:398 -msgid "Started" -msgstr "" - -#: cps/worker.py:251 -#, python-format -msgid "Convertertool %(converter)s not found" -msgstr "" - #: cps/worker.py:287 #, python-format msgid "Ebook-converter failed: %(error)s" @@ -692,22 +748,6 @@ msgstr "" msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "" -#: cps/worker.py:355 cps/worker.py:374 -msgid "Waiting" -msgstr "" - -#: cps/worker.py:362 -msgid "This e-mail has been sent via Calibre-Web." -msgstr "" - -#: cps/worker.py:388 cps/worker.py:484 -msgid "Finished" -msgstr "" - -#: cps/worker.py:476 -msgid "Failed" -msgstr "" - #: cps/templates/admin.html:6 msgid "User list" msgstr "Lista użytkowników" @@ -854,16 +894,16 @@ msgid "Do you really want to restart Calibre-Web?" msgstr "Na pewno chcesz uruchomić ponownie Calibre Web?" #: cps/templates/admin.html:150 cps/templates/admin.html:164 -#: cps/templates/admin.html:184 cps/templates/shelf.html:59 +#: cps/templates/admin.html:184 cps/templates/shelf.html:61 msgid "Ok" msgstr "OK" #: cps/templates/admin.html:151 cps/templates/admin.html:165 #: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200 -#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164 +#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:168 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75 -#: cps/templates/shelf.html:60 cps/templates/shelf_edit.html:19 -#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:153 +#: cps/templates/shelf.html:62 cps/templates/shelf_edit.html:19 +#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:155 msgid "Back" msgstr "Wróć" @@ -959,17 +999,17 @@ msgstr "" msgid "Upload Cover from local drive" msgstr "" -#: cps/templates/book_edit.html:96 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:96 cps/templates/detail.html:135 msgid "Publishing date" msgstr "Data publikacji" #: cps/templates/book_edit.html:103 cps/templates/book_edit.html:261 -#: cps/templates/book_edit.html:278 cps/templates/detail.html:126 +#: cps/templates/book_edit.html:278 cps/templates/detail.html:127 #: cps/templates/search_form.html:14 msgid "Publisher" msgstr "Wydawca" -#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:33 +#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:31 msgid "Language" msgstr "Język" @@ -994,9 +1034,9 @@ msgid "Get metadata" msgstr "Uzyskaj metadane" #: cps/templates/book_edit.html:177 cps/templates/config_edit.html:210 -#: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 +#: cps/templates/config_view_edit.html:167 cps/templates/login.html:20 #: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 -#: cps/templates/user_edit.html:151 +#: cps/templates/user_edit.html:153 msgid "Submit" msgstr "Wyślij" @@ -1032,7 +1072,7 @@ msgstr "Kliknij okładkę, aby załadować metadane do formularza" msgid "Loading..." msgstr "Ładowanie..." -#: cps/templates/book_edit.html:239 cps/templates/layout.html:221 +#: cps/templates/book_edit.html:239 cps/templates/layout.html:224 msgid "Close" msgstr "Zamknij" @@ -1215,31 +1255,31 @@ msgstr "" msgid "Default settings for new users" msgstr "Domyślne ustawienia dla nowych użytkowników" -#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:108 +#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:110 msgid "Admin user" msgstr "Użytkownik z uprawnieniami administratora" -#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:117 +#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:119 msgid "Allow Downloads" msgstr "Zezwalaj na pobieranie" -#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:121 +#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:123 msgid "Allow Uploads" msgstr "Zezwalaj na wysyłanie" -#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:125 +#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:127 msgid "Allow Edit" msgstr "Zezwalaj na edycję" -#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:129 +#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:131 msgid "Allow Delete books" msgstr "" -#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:134 +#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:136 msgid "Allow Changing Password" msgstr "Zezwalaj na zmianę hasła" -#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:138 +#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:140 msgid "Allow Editing Public Shelfs" msgstr "" @@ -1247,51 +1287,55 @@ msgstr "" msgid "Default visibilities for new users" msgstr "" -#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:60 +#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:58 msgid "Show random books" msgstr "Pokaż losowe książki" -#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:64 +#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:62 msgid "Show recent books" msgstr "" -#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:68 +#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:66 msgid "Show sorted books" msgstr "" -#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:72 +#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:70 msgid "Show hot books" msgstr "Pokaż najpopularniejsze książki" -#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:76 +#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:74 msgid "Show best rated books" msgstr "Pokaż najlepiej ocenione książki" -#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:80 +#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:78 msgid "Show language selection" msgstr "Pokaż wybór języka" -#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:84 +#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:82 msgid "Show series selection" msgstr "Pokaż wybór serii" -#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:88 +#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:86 msgid "Show category selection" msgstr "Pokaż wybór kategorii" -#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:92 +#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:90 msgid "Show author selection" msgstr "Pokaż wybór autora" -#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:96 +#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:94 +msgid "Show publisher selection" +msgstr "" + +#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:98 msgid "Show read and unread" msgstr "Pokaż przeczytane i nieprzeczytane" -#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:100 +#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:102 msgid "Show random books in detail view" msgstr "Pokaz losowe książki w widoku szczegółowym" -#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:113 +#: cps/templates/config_view_edit.html:160 cps/templates/user_edit.html:115 msgid "Show mature content" msgstr "" @@ -1311,19 +1355,19 @@ msgstr "z" msgid "language" msgstr "język" -#: cps/templates/detail.html:168 +#: cps/templates/detail.html:172 msgid "Read" msgstr "Czytaj" -#: cps/templates/detail.html:177 +#: cps/templates/detail.html:182 msgid "Description:" msgstr "Opis:" -#: cps/templates/detail.html:189 cps/templates/search.html:14 +#: cps/templates/detail.html:195 cps/templates/search.html:14 msgid "Add to shelf" msgstr "Dodaj do półki" -#: cps/templates/detail.html:251 +#: cps/templates/detail.html:257 msgid "Edit metadata" msgstr "Edytuj metadane" @@ -1383,11 +1427,11 @@ msgstr "" msgid "Do you really want to delete this domain rule?" msgstr "" -#: cps/templates/feed.xml:21 cps/templates/layout.html:205 +#: cps/templates/feed.xml:21 cps/templates/layout.html:208 msgid "Next" msgstr "Następne" -#: cps/templates/feed.xml:30 cps/templates/index.xml:8 +#: cps/templates/feed.xml:33 cps/templates/index.xml:11 #: cps/templates/layout.html:43 cps/templates/layout.html:44 msgid "Search" msgstr "Szukaj" @@ -1400,63 +1444,71 @@ msgstr "Odkrywaj (losowe książki)" msgid "Start" msgstr "Rozpocznij" -#: cps/templates/index.xml:15 cps/templates/layout.html:139 +#: cps/templates/index.xml:18 cps/templates/layout.html:139 msgid "Hot Books" msgstr "Najpopularniejsze książki" -#: cps/templates/index.xml:19 +#: cps/templates/index.xml:22 msgid "Popular publications from this catalog based on Downloads." msgstr "Popularne publikacje z tego katalogu bazujące na pobranych." -#: cps/templates/index.xml:22 cps/templates/layout.html:142 +#: cps/templates/index.xml:25 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "Najlepiej ocenione książki" -#: cps/templates/index.xml:26 +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Rating." msgstr "Popularne publikacje z tego katalogu bazujące na ocenach." -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:32 msgid "New Books" msgstr "Nowe książki" -#: cps/templates/index.xml:33 +#: cps/templates/index.xml:36 msgid "The latest Books" msgstr "Ostatnie książki" -#: cps/templates/index.xml:40 +#: cps/templates/index.xml:43 msgid "Show Random Books" msgstr "Pokazuj losowe książki" -#: cps/templates/index.xml:59 cps/templates/layout.html:160 +#: cps/templates/index.xml:62 cps/templates/layout.html:160 msgid "Authors" msgstr "Autorzy" -#: cps/templates/index.xml:63 +#: cps/templates/index.xml:66 msgid "Books ordered by Author" msgstr "Książki sortowane według autorów" -#: cps/templates/index.xml:70 +#: cps/templates/index.xml:69 cps/templates/layout.html:163 +msgid "Publishers" +msgstr "" + +#: cps/templates/index.xml:73 +msgid "Books ordered by publisher" +msgstr "" + +#: cps/templates/index.xml:80 msgid "Books ordered by category" msgstr "Książki sortowane według kategorii" -#: cps/templates/index.xml:77 +#: cps/templates/index.xml:87 msgid "Books ordered by series" msgstr "Książki sortowane według serii" -#: cps/templates/index.xml:80 cps/templates/layout.html:166 +#: cps/templates/index.xml:90 cps/templates/layout.html:169 msgid "Public Shelves" msgstr "Publiczne półki" -#: cps/templates/index.xml:84 +#: cps/templates/index.xml:94 msgid "Books organized in public shelfs, visible to everyone" msgstr "" -#: cps/templates/index.xml:88 cps/templates/layout.html:170 +#: cps/templates/index.xml:98 cps/templates/layout.html:173 msgid "Your Shelves" msgstr "Twoje półki" -#: cps/templates/index.xml:92 +#: cps/templates/index.xml:102 msgid "User's own shelfs, only visible to the current user himself" msgstr "" @@ -1472,7 +1524,7 @@ msgstr "Zaawansowane wyszukiwanie" msgid "Logout" msgstr "Wyloguj się" -#: cps/templates/layout.html:83 cps/templates/register.html:18 +#: cps/templates/layout.html:83 cps/templates/register.html:14 msgid "Register" msgstr "Zarejestruj się" @@ -1525,23 +1577,23 @@ msgstr "Odkrywaj" msgid "Categories" msgstr "Kategorie" -#: cps/templates/layout.html:163 cps/templates/search_form.html:74 +#: cps/templates/layout.html:166 cps/templates/search_form.html:74 msgid "Languages" msgstr "Języki" -#: cps/templates/layout.html:175 +#: cps/templates/layout.html:178 msgid "Create a Shelf" msgstr "Utwórz półkę" -#: cps/templates/layout.html:176 cps/templates/stats.html:3 +#: cps/templates/layout.html:179 cps/templates/stats.html:3 msgid "About" msgstr "O programie" -#: cps/templates/layout.html:190 +#: cps/templates/layout.html:193 msgid "Previous" msgstr "" -#: cps/templates/layout.html:217 +#: cps/templates/layout.html:220 msgid "Book Details" msgstr "" @@ -1551,7 +1603,7 @@ msgid "Username" msgstr "Nazwa użytkownika" #: cps/templates/login.html:12 cps/templates/login.html:13 -#: cps/templates/register.html:11 cps/templates/user_edit.html:21 +#: cps/templates/user_edit.html:21 msgid "Password" msgstr "Hasło" @@ -1617,7 +1669,7 @@ msgstr "" msgid "Flip Image" msgstr "" -#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:41 +#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:39 msgid "Theme" msgstr "" @@ -1681,15 +1733,11 @@ msgstr "Zarejestruj nowe konto" msgid "Choose a username" msgstr "Wybierz nazwę użytkownika" -#: cps/templates/register.html:12 -msgid "Choose a password" -msgstr "Wybierz hasło" - -#: cps/templates/register.html:15 cps/templates/user_edit.html:13 +#: cps/templates/register.html:11 cps/templates/user_edit.html:13 msgid "E-mail address" msgstr "" -#: cps/templates/register.html:16 +#: cps/templates/register.html:12 msgid "Your email address" msgstr "Twój adres e-mail" @@ -1757,11 +1805,11 @@ msgstr "" msgid "Change order" msgstr "Zmień sortowanie" -#: cps/templates/shelf.html:54 +#: cps/templates/shelf.html:56 msgid "Do you really want to delete the shelf?" msgstr "" -#: cps/templates/shelf.html:57 +#: cps/templates/shelf.html:59 msgid "Shelf will be lost for everybody and forever!" msgstr "" @@ -1845,31 +1893,31 @@ msgstr "" msgid "Reset user Password" msgstr "" -#: cps/templates/user_edit.html:29 +#: cps/templates/user_edit.html:27 msgid "Kindle E-Mail" msgstr "Adres e-mail Kindle" -#: cps/templates/user_edit.html:43 +#: cps/templates/user_edit.html:41 msgid "Standard Theme" msgstr "" -#: cps/templates/user_edit.html:44 +#: cps/templates/user_edit.html:42 msgid "caliBlur! Dark Theme (Beta)" msgstr "" -#: cps/templates/user_edit.html:49 +#: cps/templates/user_edit.html:47 msgid "Show books with language" msgstr "Pokaż książki w języku" -#: cps/templates/user_edit.html:51 +#: cps/templates/user_edit.html:49 msgid "Show all" msgstr "Pokaż wszystko" -#: cps/templates/user_edit.html:145 +#: cps/templates/user_edit.html:147 msgid "Delete this user" msgstr "Usuń tego użytkownika" -#: cps/templates/user_edit.html:160 +#: cps/templates/user_edit.html:162 msgid "Recent Downloads" msgstr "Ostatnio pobierane" @@ -1918,3 +1966,21 @@ msgstr "Ostatnio pobierane" #~ msgid "Newest commit timestamp" #~ msgstr "Znacznik czasowy nowej wersji" +#~ msgid "Convert: %(book)s" +#~ msgstr "" + +#~ msgid "Convert to %(format)s: %(book)s" +#~ msgstr "" + +#~ msgid "Files are replaced" +#~ msgstr "Pliki zostały zastąpione" + +#~ msgid "Server is stopped" +#~ msgstr "Serwer jest zatrzymany" + +#~ msgid "Convertertool %(converter)s not found" +#~ msgstr "" + +#~ msgid "Choose a password" +#~ msgstr "Wybierz hasło" + diff --git a/cps/translations/ru/LC_MESSAGES/messages.po b/cps/translations/ru/LC_MESSAGES/messages.po index 3e5fce15..5657f415 100644 --- a/cps/translations/ru/LC_MESSAGES/messages.po +++ b/cps/translations/ru/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2018-10-28 21:32+0100\n" +"POT-Creation-Date: 2018-11-03 14:03+0100\n" "PO-Revision-Date: 2017-04-30 00:47+0300\n" "Last-Translator: Pavel Korovin \n" "Language: ru\n" @@ -31,687 +31,712 @@ msgstr "Отсутствуют разрешения на выполнение" msgid "not configured" msgstr "" -#: cps/helper.py:57 +#: cps/helper.py:58 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "%(format)s форма не найден для книги с id: %(book)d" -#: cps/helper.py:69 +#: cps/helper.py:70 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "%(format)s не найден на Google Drive: %(fn)s" -#: cps/helper.py:76 -#, python-format -msgid "Convert: %(book)s" -msgstr "Конвертировать: %(book)s" +#: cps/helper.py:77 cps/helper.py:147 cps/templates/detail.html:44 +msgid "Send to Kindle" +msgstr "Отправить на Kindle" -#: cps/helper.py:79 -#, python-format -msgid "Convert to %(format)s: %(book)s" -msgstr "Конвертировать в %(format)s: %(book)s" +#: cps/helper.py:78 cps/helper.py:96 +msgid "This e-mail has been sent via Calibre-Web." +msgstr "Это электронное письмо было отправлено через Caliber-Web." -#: cps/helper.py:86 +#: cps/helper.py:89 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "%(format)s не найден: %(fn)s" -#: cps/helper.py:91 +#: cps/helper.py:94 msgid "Calibre-Web test e-mail" msgstr "Тестовый e-mail для Calibre-Web" -#: cps/helper.py:92 +#: cps/helper.py:95 msgid "Test e-mail" msgstr "Тестовый e-mail" -#: cps/helper.py:107 +#: cps/helper.py:111 msgid "Get Started with Calibre-Web" msgstr "Начать работать с Calibre-Web" -#: cps/helper.py:108 +#: cps/helper.py:112 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "Регистрационный e-mail для пользователя: %(name)s" -#: cps/helper.py:131 cps/helper.py:141 +#: cps/helper.py:135 cps/helper.py:145 msgid "Could not find any formats suitable for sending by e-mail" msgstr "Не удалось найти форматы, которые подходят для отправки по e-mail" -#: cps/helper.py:143 cps/templates/detail.html:44 cps/worker.py:224 -msgid "Send to Kindle" -msgstr "Отправить на Kindle" - -#: cps/helper.py:144 cps/worker.py:226 +#: cps/helper.py:148 #, python-format msgid "E-mail: %(book)s" msgstr "Эл. почта: %(book)s" -#: cps/helper.py:146 +#: cps/helper.py:150 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "Запрашиваемый файл не может быть прочитан. Возможно не верные разрешения?" -#: cps/helper.py:241 +#: cps/helper.py:250 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "Переименовывание заголовка с: '%(src)s' на '%(dest)s' не удалось из-за ошибки: %(error)s" -#: cps/helper.py:250 +#: cps/helper.py:259 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "Переименовывание автора с: '%(src)s' на '%(dest)s' не удалось из-за ошибки: %(error)s" -#: cps/helper.py:272 cps/helper.py:281 +#: cps/helper.py:281 cps/helper.py:290 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "Файл %(file)s не найден на Google Drive" -#: cps/helper.py:299 +#: cps/helper.py:308 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "Путь книги %(path)s не найден на Google Drive" -#: cps/helper.py:544 +#: cps/helper.py:565 msgid "Error excecuting UnRar" msgstr "Ошибка извлечения UnRar" -#: cps/helper.py:546 +#: cps/helper.py:567 msgid "Unrar binary file not found" msgstr "Unrar двочиный файл не найден" -#: cps/web.py:1171 cps/web.py:2889 +#: cps/helper.py:609 +msgid "Waiting" +msgstr "Ожидание" + +#: cps/helper.py:611 +msgid "Failed" +msgstr "Неудачно" + +#: cps/helper.py:613 +msgid "Started" +msgstr "Начало" + +#: cps/helper.py:615 +msgid "Finished" +msgstr "Закончено" + +#: cps/helper.py:617 +msgid "Unknown Status" +msgstr "" + +#: cps/helper.py:622 +msgid "E-mail: " +msgstr "" + +#: cps/helper.py:624 cps/helper.py:628 +msgid "Convert: " +msgstr "" + +#: cps/helper.py:626 +msgid "Upload: " +msgstr "" + +#: cps/helper.py:630 +msgid "Unknown Task: " +msgstr "" + +#: cps/web.py:1132 cps/web.py:2842 msgid "Unknown" msgstr "Неизвестно" -#: cps/web.py:1180 cps/web.py:1211 +#: cps/web.py:1141 cps/web.py:1172 cps/web.py:1257 msgid "HTTP Error" msgstr "Ошибка HTTP" -#: cps/web.py:1182 cps/web.py:1213 +#: cps/web.py:1143 cps/web.py:1174 cps/web.py:1258 msgid "Connection error" msgstr "Ошибка соединения" -#: cps/web.py:1184 cps/web.py:1215 +#: cps/web.py:1145 cps/web.py:1176 cps/web.py:1259 msgid "Timeout while establishing connection" msgstr "Таймаут при установлении соединения" -#: cps/web.py:1186 cps/web.py:1217 +#: cps/web.py:1147 cps/web.py:1178 cps/web.py:1260 msgid "General error" msgstr "Общая ошибка" -#: cps/web.py:1192 +#: cps/web.py:1153 msgid "Unexpected data while reading update information" msgstr "Некорректные данные при чтении информации об обновлении" -#: cps/web.py:1199 +#: cps/web.py:1160 msgid "No update available. You already have the latest version installed" msgstr "Обновление недоступно. Вы используете самую последнюю версию" -#: cps/web.py:1224 +#: cps/web.py:1185 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "Доступно обновление. Нажмите на кнопку, что бы обновиться до последней версии." -#: cps/web.py:1274 +#: cps/web.py:1235 msgid "Could not fetch update information" msgstr "Не удалось получить информацию об обновлении" -#: cps/web.py:1289 +#: cps/web.py:1250 msgid "Requesting update package" msgstr "Проверка обновлений" -#: cps/web.py:1290 +#: cps/web.py:1251 msgid "Downloading update package" msgstr "Загрузка обновлений" -#: cps/web.py:1291 +#: cps/web.py:1252 msgid "Unzipping update package" msgstr "Распаковка обновлений" -#: cps/web.py:1292 -msgid "Files are replaced" -msgstr "Файлы заменены" +#: cps/web.py:1253 +msgid "Replacing files" +msgstr "" -#: cps/web.py:1293 +#: cps/web.py:1254 msgid "Database connections are closed" msgstr "Соеднинения с базой данных закрыты" -#: cps/web.py:1294 -msgid "Server is stopped" -msgstr "Сервер остановлен" +#: cps/web.py:1255 +msgid "Stopping server" +msgstr "" -#: cps/web.py:1295 +#: cps/web.py:1256 msgid "Update finished, please press okay and reload page" msgstr "Обновления установлены, нажмите okay и перезагрузите страницу" -#: cps/web.py:1315 +#: cps/web.py:1257 cps/web.py:1258 cps/web.py:1259 cps/web.py:1260 +msgid "Update failed:" +msgstr "" + +#: cps/web.py:1283 msgid "Recently Added Books" msgstr "Недавно Добавленные Книги" -#: cps/web.py:1325 +#: cps/web.py:1293 msgid "Newest Books" msgstr "Новые Книги" -#: cps/web.py:1337 +#: cps/web.py:1305 msgid "Oldest Books" msgstr "Старые Книги" -#: cps/web.py:1349 +#: cps/web.py:1317 msgid "Books (A-Z)" msgstr "Книги (А-Я)" -#: cps/web.py:1360 +#: cps/web.py:1328 msgid "Books (Z-A)" msgstr "Книги (Я-А)" -#: cps/web.py:1389 +#: cps/web.py:1357 msgid "Hot Books (most downloaded)" msgstr "Популярные книги (часто загружаемые)" -#: cps/web.py:1402 +#: cps/web.py:1370 msgid "Best rated books" msgstr "Книги с наивысшим рейтингом" -#: cps/templates/index.xml:36 cps/web.py:1415 +#: cps/templates/index.xml:39 cps/web.py:1383 msgid "Random Books" msgstr "Случайный выбор" -#: cps/web.py:1430 +#: cps/web.py:1398 msgid "Author list" msgstr "Авторы" -#: cps/web.py:1442 cps/web.py:1533 cps/web.py:1695 cps/web.py:2253 +#: cps/web.py:1410 cps/web.py:1501 cps/web.py:1663 cps/web.py:2206 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "Невозможно открыть книгу. Файл не существует или недоступен." -#: cps/web.py:1470 +#: cps/web.py:1438 msgid "Publisher list" msgstr "" -#: cps/web.py:1484 +#: cps/web.py:1452 #, python-format msgid "Publisher: %(name)s" msgstr "" -#: cps/templates/index.xml:80 cps/web.py:1516 +#: cps/templates/index.xml:83 cps/web.py:1484 msgid "Series list" msgstr "Серии" -#: cps/web.py:1531 +#: cps/web.py:1499 #, python-format msgid "Series: %(serie)s" msgstr "Серии: %(serie)s" -#: cps/web.py:1560 +#: cps/web.py:1528 msgid "Available languages" msgstr "Доступные языки" -#: cps/web.py:1580 +#: cps/web.py:1548 #, python-format msgid "Language: %(name)s" msgstr "Язык: %(name)s" -#: cps/templates/index.xml:73 cps/web.py:1591 +#: cps/templates/index.xml:76 cps/web.py:1559 msgid "Category list" msgstr "Категории" -#: cps/web.py:1605 +#: cps/web.py:1573 #, python-format msgid "Category: %(name)s" msgstr "Категория: %(name)s" -#: cps/templates/layout.html:71 cps/web.py:1746 +#: cps/templates/layout.html:71 cps/web.py:1699 msgid "Tasks" msgstr "Задания" -#: cps/web.py:1780 +#: cps/web.py:1733 msgid "Statistics" msgstr "Статистика" -#: cps/web.py:1887 +#: cps/web.py:1840 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "Не удалось проверить домен обратного вызова, пожалуйста, выполните шаги для проверки домена в консоли разработчика Google." -#: cps/web.py:1962 +#: cps/web.py:1915 msgid "Server restarted, please reload page" msgstr "Сервер перезагружен, пожалуйста, перезагрузите страницу" -#: cps/web.py:1965 +#: cps/web.py:1918 msgid "Performing shutdown of server, please close window" msgstr "Производится остановка сервера, пожалуйста, закройте окно" -#: cps/web.py:1984 +#: cps/web.py:1937 msgid "Update done" msgstr "Обновление закончено" -#: cps/web.py:2054 +#: cps/web.py:2007 msgid "Published after " msgstr "Опубликовано до " -#: cps/web.py:2061 +#: cps/web.py:2014 msgid "Published before " msgstr "Опубликовано после " -#: cps/web.py:2075 +#: cps/web.py:2028 #, python-format msgid "Rating <= %(rating)s" msgstr "Рейтинг <= %(rating)s" -#: cps/web.py:2077 +#: cps/web.py:2030 #, python-format msgid "Rating >= %(rating)s" msgstr "Рейтинг >= %(rating)s" -#: cps/web.py:2136 cps/web.py:2145 +#: cps/web.py:2089 cps/web.py:2098 msgid "search" msgstr "поиск" -#: cps/templates/index.xml:44 cps/templates/index.xml:48 -#: cps/templates/layout.html:146 cps/web.py:2212 +#: cps/templates/index.xml:47 cps/templates/index.xml:51 +#: cps/templates/layout.html:146 cps/web.py:2165 msgid "Read Books" msgstr "Прочитанные Книги" -#: cps/templates/index.xml:52 cps/templates/index.xml:56 -#: cps/templates/layout.html:148 cps/web.py:2215 +#: cps/templates/index.xml:55 cps/templates/index.xml:59 +#: cps/templates/layout.html:148 cps/web.py:2168 msgid "Unread Books" msgstr "Непрочитанные Книги" -#: cps/web.py:2263 cps/web.py:2265 cps/web.py:2267 cps/web.py:2279 +#: cps/web.py:2216 cps/web.py:2218 cps/web.py:2220 cps/web.py:2232 msgid "Read a Book" msgstr "Читать Книгу" -#: cps/web.py:2345 cps/web.py:3248 +#: cps/web.py:2298 cps/web.py:3201 msgid "Please fill out all fields!" msgstr "Пожалуйста, заполните все поля!" -#: cps/web.py:2346 cps/web.py:2367 cps/web.py:2371 cps/web.py:2376 -#: cps/web.py:2378 +#: cps/web.py:2299 cps/web.py:2320 cps/web.py:2324 cps/web.py:2329 +#: cps/web.py:2331 msgid "register" msgstr "регистрация" -#: cps/web.py:2366 cps/web.py:3464 +#: cps/web.py:2319 cps/web.py:3417 msgid "An unknown error occurred. Please try again later." msgstr "Неизвестная ошибка. Попробуйте позже." -#: cps/web.py:2369 +#: cps/web.py:2322 msgid "Your e-mail is not allowed to register" msgstr "Ваш e-mail не подходит для регистрации" -#: cps/web.py:2372 +#: cps/web.py:2325 msgid "Confirmation e-mail was send to your e-mail account." msgstr "Письмо с подтверждением отправлено вам на e-mail" -#: cps/web.py:2375 +#: cps/web.py:2328 msgid "This username or e-mail address is already in use." msgstr "Этот никнейм или e-mail уже используются" -#: cps/web.py:2392 cps/web.py:2488 +#: cps/web.py:2345 cps/web.py:2441 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "Вы вошли как пользователь '%(nickname)s'" -#: cps/web.py:2397 +#: cps/web.py:2350 msgid "Wrong Username or Password" msgstr "Ошибка в имени пользователя или пароле" -#: cps/web.py:2403 cps/web.py:2424 +#: cps/web.py:2356 cps/web.py:2377 msgid "login" msgstr "войти" -#: cps/web.py:2436 cps/web.py:2467 +#: cps/web.py:2389 cps/web.py:2420 msgid "Token not found" msgstr "Ключ не найден" -#: cps/web.py:2444 cps/web.py:2475 +#: cps/web.py:2397 cps/web.py:2428 msgid "Token has expired" msgstr "Ключ просрочен" -#: cps/web.py:2452 +#: cps/web.py:2405 msgid "Success! Please return to your device" msgstr "Успешно! Пожалуйста, проверьте свое устройство" -#: cps/web.py:2502 +#: cps/web.py:2455 msgid "Please configure the SMTP mail settings first..." msgstr "Пожалуйста, сначала сконфигурируйте параметры SMTP" -#: cps/web.py:2506 +#: cps/web.py:2459 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "Книга успешно поставлена в очередь для отправки на %(kindlemail)s" -#: cps/web.py:2510 +#: cps/web.py:2463 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Ошибка при отправке книги: %(res)s" -#: cps/web.py:2512 cps/web.py:3302 +#: cps/web.py:2465 cps/web.py:3255 msgid "Please configure your kindle e-mail address first..." msgstr "Пожалуйста, сначала настройте e-mail на вашем kindle..." -#: cps/web.py:2523 cps/web.py:2575 +#: cps/web.py:2476 cps/web.py:2528 msgid "Invalid shelf specified" msgstr "Указана неверная полка" -#: cps/web.py:2530 +#: cps/web.py:2483 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" msgstr "" -#: cps/web.py:2538 +#: cps/web.py:2491 msgid "You are not allowed to edit public shelves" msgstr "" -#: cps/web.py:2547 +#: cps/web.py:2500 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" msgstr "" -#: cps/web.py:2561 +#: cps/web.py:2514 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Книга добавлена на книжную полку: %(sname)s" -#: cps/web.py:2580 +#: cps/web.py:2533 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "Вам не разрешено добавлять книгу на полку: %(name)s" -#: cps/web.py:2585 +#: cps/web.py:2538 msgid "User is not allowed to edit public shelves" msgstr "Пользователь не может редактировать общедоступные полки" -#: cps/web.py:2603 +#: cps/web.py:2556 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "Книги уже размещены на полке: %(name)s" -#: cps/web.py:2617 +#: cps/web.py:2570 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "Книги добавлены в полку: %(sname)s" -#: cps/web.py:2619 +#: cps/web.py:2572 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "Не удалось добавить книги на полку: %(sname)s" -#: cps/web.py:2656 +#: cps/web.py:2609 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Книга удалена с полки: %(sname)s" -#: cps/web.py:2662 +#: cps/web.py:2615 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Извините, вы не можете удалить книгу с полки: %(sname)s" -#: cps/web.py:2682 cps/web.py:2706 +#: cps/web.py:2635 cps/web.py:2659 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Полка с названием '%(title)s' уже существует." -#: cps/web.py:2687 +#: cps/web.py:2640 #, python-format msgid "Shelf %(title)s created" msgstr "Создана полка %(title)s" -#: cps/web.py:2689 cps/web.py:2717 +#: cps/web.py:2642 cps/web.py:2670 msgid "There was an error" msgstr "Произошла ошибка" -#: cps/web.py:2690 cps/web.py:2692 +#: cps/web.py:2643 cps/web.py:2645 msgid "create a shelf" msgstr "создать полку" -#: cps/web.py:2715 +#: cps/web.py:2668 #, python-format msgid "Shelf %(title)s changed" msgstr "Колка %(title)s изменена" -#: cps/web.py:2718 cps/web.py:2720 +#: cps/web.py:2671 cps/web.py:2673 msgid "Edit a shelf" msgstr "Изменить полку" -#: cps/web.py:2741 +#: cps/web.py:2694 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "удачно удалена полка %(name)s" -#: cps/web.py:2768 +#: cps/web.py:2721 #, python-format msgid "Shelf: '%(name)s'" msgstr "Полка: '%(name)s'" -#: cps/web.py:2771 +#: cps/web.py:2724 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Ошибка открытия Полки. Полка не существует или недоступна" -#: cps/web.py:2802 +#: cps/web.py:2755 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Изменить расположение полки '%(name)s'" -#: cps/web.py:2831 cps/web.py:3254 +#: cps/web.py:2784 cps/web.py:3207 msgid "E-mail is not from valid domain" msgstr "E-mail не из существующей доменной зоны" -#: cps/web.py:2833 cps/web.py:2876 cps/web.py:2879 +#: cps/web.py:2786 cps/web.py:2829 cps/web.py:2832 #, python-format msgid "%(name)s's profile" msgstr "Профиль %(name)s" -#: cps/web.py:2874 +#: cps/web.py:2827 msgid "Found an existing account for this e-mail address." msgstr "Этот адрес электронной почты уже зарегистрирован." -#: cps/web.py:2877 +#: cps/web.py:2830 msgid "Profile updated" msgstr "Профиль обновлён" -#: cps/web.py:2905 +#: cps/web.py:2858 msgid "Admin page" msgstr "Администрирование" -#: cps/web.py:2985 cps/web.py:3159 +#: cps/web.py:2938 cps/web.py:3112 msgid "Calibre-Web configuration updated" msgstr "Конфигурация Calibre-Web обновлена" -#: cps/templates/admin.html:100 cps/web.py:2998 +#: cps/templates/admin.html:100 cps/web.py:2951 msgid "UI Configuration" msgstr "Настройка интерфейса" -#: cps/web.py:3016 +#: cps/web.py:2969 msgid "Import of optional Google Drive requirements missing" msgstr "Импорт дополнительных требований к Google Диску отсутствует" -#: cps/web.py:3019 +#: cps/web.py:2972 msgid "client_secrets.json is missing or not readable" msgstr "client_secrets.json отсутствует или его невозможно прочесть" -#: cps/web.py:3024 cps/web.py:3051 +#: cps/web.py:2977 cps/web.py:3004 msgid "client_secrets.json is not configured for web application" msgstr "client_secrets.json не настроен для веб-приложения" -#: cps/templates/admin.html:99 cps/web.py:3054 cps/web.py:3080 cps/web.py:3092 -#: cps/web.py:3135 cps/web.py:3150 cps/web.py:3167 cps/web.py:3174 -#: cps/web.py:3189 +#: cps/templates/admin.html:99 cps/web.py:3007 cps/web.py:3033 cps/web.py:3045 +#: cps/web.py:3088 cps/web.py:3103 cps/web.py:3120 cps/web.py:3127 +#: cps/web.py:3142 msgid "Basic Configuration" msgstr "Настройки сервера" -#: cps/web.py:3077 +#: cps/web.py:3030 msgid "Keyfile location is not valid, please enter correct path" msgstr "Неверное расположение файла-ключа, введите правильный путь" -#: cps/web.py:3089 +#: cps/web.py:3042 msgid "Certfile location is not valid, please enter correct path" msgstr "Неверное расположение сертификата, введите правильный путь" -#: cps/web.py:3132 +#: cps/web.py:3085 msgid "Logfile location is not valid, please enter correct path" msgstr "Неверное расположение лог-файла, введите правильный путь" -#: cps/web.py:3171 +#: cps/web.py:3124 msgid "DB location is not valid, please enter correct path" msgstr "Неверное расположение базы данных, введите правильный путь" -#: cps/templates/admin.html:33 cps/web.py:3250 cps/web.py:3256 cps/web.py:3272 +#: cps/templates/admin.html:33 cps/web.py:3203 cps/web.py:3209 cps/web.py:3225 msgid "Add new user" msgstr "Добавить пользователя" -#: cps/web.py:3262 +#: cps/web.py:3215 #, python-format msgid "User '%(user)s' created" msgstr "Пользователь '%(user)s' добавлен" -#: cps/web.py:3266 +#: cps/web.py:3219 msgid "Found an existing account for this e-mail address or nickname." msgstr "Для этого адреса электронной почты или логина уже есть аккаунт." -#: cps/web.py:3290 cps/web.py:3304 +#: cps/web.py:3243 cps/web.py:3257 msgid "E-mail server settings updated" msgstr "Настройки E-mail сервера обновлены" -#: cps/web.py:3297 +#: cps/web.py:3250 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "Тестовое письмо успешно отправлено на %(kindlemail)s" -#: cps/web.py:3300 +#: cps/web.py:3253 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "Произошла ошибка при отправке тестового письма на: %(res)s" -#: cps/web.py:3305 +#: cps/web.py:3258 msgid "Edit e-mail server settings" msgstr "Изменить настройки e-mail сервера" -#: cps/web.py:3330 +#: cps/web.py:3283 #, python-format msgid "User '%(nick)s' deleted" msgstr "Пользователь '%(nick)s' удалён" -#: cps/web.py:3439 +#: cps/web.py:3392 #, python-format msgid "User '%(nick)s' updated" msgstr "Пользователь '%(nick)s' обновлён" -#: cps/web.py:3442 +#: cps/web.py:3395 msgid "An unknown error occured." msgstr "Произошла неизвестная ошибка." -#: cps/web.py:3444 +#: cps/web.py:3397 #, python-format msgid "Edit User %(nick)s" msgstr "Изменить пользователя %(nick)s" -#: cps/web.py:3461 +#: cps/web.py:3414 #, python-format msgid "Password for user %(user)s reset" msgstr "Пароль для пользователя %(user)s сброшен" -#: cps/web.py:3475 cps/web.py:3676 +#: cps/web.py:3428 cps/web.py:3629 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Ошибка при открытии eBook. Файл не существует или файл недоступен" -#: cps/web.py:3500 cps/web.py:3959 +#: cps/web.py:3453 cps/web.py:3912 msgid "edit metadata" msgstr "изменить метаданные" -#: cps/web.py:3593 cps/web.py:3829 +#: cps/web.py:3546 cps/web.py:3782 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Запрещена загрузка файлов с расширением '%(ext)s'" -#: cps/web.py:3597 cps/web.py:3833 +#: cps/web.py:3550 cps/web.py:3786 msgid "File to be uploaded must have an extension" msgstr "Загружаемый файл должен иметь расширение" -#: cps/web.py:3609 cps/web.py:3853 +#: cps/web.py:3562 cps/web.py:3806 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Ошибка при создании пути %(path)s (Доступ запрещён)." -#: cps/web.py:3614 +#: cps/web.py:3567 #, python-format msgid "Failed to store file %(file)s." msgstr "Не удалось сохранить файл %(file)s." -#: cps/web.py:3630 +#: cps/web.py:3583 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "Формат файла %(ext)s добавлен в %(book)s" -#: cps/web.py:3648 +#: cps/web.py:3601 #, python-format msgid "Failed to create path for cover %(path)s (Permission denied)." msgstr "Не удалось создать путь для обложки %(path)s (Доступ запрещён)." -#: cps/web.py:3655 +#: cps/web.py:3608 #, python-format msgid "Failed to store cover-file %(cover)s." msgstr "Не удалось сохранить файл обложки %(cover)s." -#: cps/web.py:3658 +#: cps/web.py:3611 msgid "Cover-file is not a valid image file" msgstr "Файл обложки не соответствует изображению" -#: cps/web.py:3688 cps/web.py:3697 cps/web.py:3701 +#: cps/web.py:3641 cps/web.py:3650 cps/web.py:3654 msgid "unknown" msgstr "неизвестно" -#: cps/web.py:3720 +#: cps/web.py:3673 msgid "Cover is not a jpg file, can't save" msgstr "Обложка не jpg файл, невозможно сохранить" -#: cps/web.py:3768 +#: cps/web.py:3721 #, python-format msgid "%(langname)s is not a valid language" msgstr "%(langname)s не допустимый язык" -#: cps/web.py:3799 +#: cps/web.py:3752 msgid "Metadata successfully updated" msgstr "" -#: cps/web.py:3808 +#: cps/web.py:3761 msgid "Error editing book, please check logfile for details" msgstr "Ошибка редактирования книги. Пожалуйста, проверьте лог-файл для дополнительной информации" -#: cps/web.py:3858 +#: cps/web.py:3811 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "Ошибка записи файла %(file)s (Доступ запрещён)." -#: cps/web.py:3863 +#: cps/web.py:3816 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "Ошибка удаления файла %(file)s (Доступ запрещён)." -#: cps/web.py:3945 +#: cps/web.py:3898 #, python-format msgid "File %(file)s uploaded" msgstr "Файл %(file)s загружен" -#: cps/web.py:3975 +#: cps/web.py:3928 msgid "Source or destination format for conversion missing" msgstr "Исходный или целевой формат для конвертирования отсутствует" -#: cps/web.py:3985 +#: cps/web.py:3938 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "Книга успешно поставлена в очередь для конвертирования в %(book_format)s" -#: cps/web.py:3989 +#: cps/web.py:3942 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "Произошла ошибка при конвертирования этой книги: %(res)s" -#: cps/worker.py:215 cps/worker.py:398 -msgid "Started" -msgstr "Начало" - -#: cps/worker.py:251 -#, python-format -msgid "Convertertool %(converter)s not found" -msgstr "Инструмент конвертирования %(converter)s не найден" - #: cps/worker.py:287 #, python-format msgid "Ebook-converter failed: %(error)s" @@ -722,22 +747,6 @@ msgstr "Ошибка Ebook-конвертора: %(error)s" msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "Kindlegen - неудачно, с Ошибкой %(error)s. Сообщение: %(message)s" -#: cps/worker.py:355 cps/worker.py:374 -msgid "Waiting" -msgstr "Ожидание" - -#: cps/worker.py:362 -msgid "This e-mail has been sent via Calibre-Web." -msgstr "Это электронное письмо было отправлено через Caliber-Web." - -#: cps/worker.py:388 cps/worker.py:484 -msgid "Finished" -msgstr "Закончено" - -#: cps/worker.py:476 -msgid "Failed" -msgstr "Неудачно" - #: cps/templates/admin.html:6 msgid "User list" msgstr "Список пользователей" @@ -1420,7 +1429,7 @@ msgstr "Вы действительно желаете удалить это п msgid "Next" msgstr "Дальше" -#: cps/templates/feed.xml:30 cps/templates/index.xml:8 +#: cps/templates/feed.xml:33 cps/templates/index.xml:11 #: cps/templates/layout.html:43 cps/templates/layout.html:44 msgid "Search" msgstr "Поиск" @@ -1433,71 +1442,71 @@ msgstr "Обзор (Случайные Книги)" msgid "Start" msgstr "Старт" -#: cps/templates/index.xml:15 cps/templates/layout.html:139 +#: cps/templates/index.xml:18 cps/templates/layout.html:139 msgid "Hot Books" msgstr "Популярные Книги" -#: cps/templates/index.xml:19 +#: cps/templates/index.xml:22 msgid "Popular publications from this catalog based on Downloads." msgstr "Популярные книги в этом каталоге, на основе количества Скачиваний" -#: cps/templates/index.xml:22 cps/templates/layout.html:142 +#: cps/templates/index.xml:25 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "Книги с наилучшим рейтингом" -#: cps/templates/index.xml:26 +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Rating." msgstr "Популярные книги из этого каталога на основании Рейтинга" -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:32 msgid "New Books" msgstr "Новые Книги" -#: cps/templates/index.xml:33 +#: cps/templates/index.xml:36 msgid "The latest Books" msgstr "Последние Книги" -#: cps/templates/index.xml:40 +#: cps/templates/index.xml:43 msgid "Show Random Books" msgstr "Показывать Случайные Сниги" -#: cps/templates/index.xml:59 cps/templates/layout.html:160 +#: cps/templates/index.xml:62 cps/templates/layout.html:160 msgid "Authors" msgstr "Авторы" -#: cps/templates/index.xml:63 +#: cps/templates/index.xml:66 msgid "Books ordered by Author" msgstr "Книги, отсортированные по Автору" -#: cps/templates/index.xml:66 cps/templates/layout.html:163 +#: cps/templates/index.xml:69 cps/templates/layout.html:163 msgid "Publishers" msgstr "" -#: cps/templates/index.xml:70 +#: cps/templates/index.xml:73 msgid "Books ordered by publisher" msgstr "" -#: cps/templates/index.xml:77 +#: cps/templates/index.xml:80 msgid "Books ordered by category" msgstr "Книги, отсортированные по категории" -#: cps/templates/index.xml:84 +#: cps/templates/index.xml:87 msgid "Books ordered by series" msgstr "Книги, отсортированные по серии" -#: cps/templates/index.xml:87 cps/templates/layout.html:169 +#: cps/templates/index.xml:90 cps/templates/layout.html:169 msgid "Public Shelves" msgstr "Общие полки" -#: cps/templates/index.xml:91 +#: cps/templates/index.xml:94 msgid "Books organized in public shelfs, visible to everyone" msgstr "Книги размещены на полках, и доступны всем" -#: cps/templates/index.xml:95 cps/templates/layout.html:173 +#: cps/templates/index.xml:98 cps/templates/layout.html:173 msgid "Your Shelves" msgstr "Ваши полки" -#: cps/templates/index.xml:99 +#: cps/templates/index.xml:102 msgid "User's own shelfs, only visible to the current user himself" msgstr "Пользовательские полки, видимые только самому пользователю" @@ -1921,3 +1930,18 @@ msgstr "Недавние скачивания" #~ msgid "Choose a password" #~ msgstr "Выберите пароль" +#~ msgid "Convert: %(book)s" +#~ msgstr "Конвертировать: %(book)s" + +#~ msgid "Convert to %(format)s: %(book)s" +#~ msgstr "Конвертировать в %(format)s: %(book)s" + +#~ msgid "Files are replaced" +#~ msgstr "Файлы заменены" + +#~ msgid "Server is stopped" +#~ msgstr "Сервер остановлен" + +#~ msgid "Convertertool %(converter)s not found" +#~ msgstr "Инструмент конвертирования %(converter)s не найден" + diff --git a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po index 3b3f8575..f0c4d351 100644 --- a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po +++ b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2018-09-14 21:11+0200\n" +"POT-Creation-Date: 2018-11-03 14:03+0100\n" "PO-Revision-Date: 2017-01-06 17:00+0000\n" "Last-Translator: dalin \n" "Language: zh_Hans_CN\n" @@ -16,10 +16,10 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.5.1\n" +"Generated-By: Babel 2.6.0\n" -#: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 -#: cps/converter.py:11 cps/converter.py:27 +#: cps/book_formats.py:129 cps/book_formats.py:130 cps/book_formats.py:134 +#: cps/book_formats.py:138 cps/converter.py:11 cps/converter.py:27 msgid "not installed" msgstr "未安装" @@ -27,660 +27,716 @@ msgstr "未安装" msgid "Excecution permissions missing" msgstr "可执行权限缺失" -#: cps/helper.py:57 +#: cps/converter.py:48 +msgid "not configured" +msgstr "" + +#: cps/helper.py:58 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "找不到id为 %(book)d 的书的 %(format)s 格式" -#: cps/helper.py:69 +#: cps/helper.py:70 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "Google Drive %(fn)s 上找不到 %(format)s" -#: cps/helper.py:76 -#, python-format -msgid "Convert: %(book)s" -msgstr "转换: %(book)s" +#: cps/helper.py:77 cps/helper.py:147 cps/templates/detail.html:44 +msgid "Send to Kindle" +msgstr "发送到Kindle" -#: cps/helper.py:79 -#, python-format -msgid "Convert to %(format)s: %(book)s" -msgstr "转换到 %(format)s: %(book)s" +#: cps/helper.py:78 cps/helper.py:96 +msgid "This e-mail has been sent via Calibre-Web." +msgstr "此邮件已经通过Calibre-Web发送" -#: cps/helper.py:86 +#: cps/helper.py:89 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "找不到 %(format)s: %(fn)s" -#: cps/helper.py:91 +#: cps/helper.py:94 msgid "Calibre-Web test e-mail" msgstr "Calibre-Web测试邮件" -#: cps/helper.py:92 +#: cps/helper.py:95 msgid "Test e-mail" msgstr "测试邮件" -#: cps/helper.py:107 +#: cps/helper.py:111 msgid "Get Started with Calibre-Web" msgstr "开启Calibre-Web之旅" -#: cps/helper.py:108 +#: cps/helper.py:112 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "用户 %(name)s 的注册邮箱" -#: cps/helper.py:131 cps/helper.py:141 +#: cps/helper.py:135 cps/helper.py:145 msgid "Could not find any formats suitable for sending by e-mail" msgstr "找不到任何适合邮件发送的格式" -#: cps/helper.py:143 cps/templates/detail.html:44 cps/worker.py:224 -msgid "Send to Kindle" -msgstr "发送到Kindle" - -#: cps/helper.py:144 cps/worker.py:226 +#: cps/helper.py:148 #, python-format msgid "E-mail: %(book)s" msgstr "" -#: cps/helper.py:146 +#: cps/helper.py:150 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "无法读取请求的文件。 可能有错误的权限设置?" -#: cps/helper.py:241 +#: cps/helper.py:250 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "将标题从'%(src)s'改为'%(dest)s'时失败,出错信息: %(error)s" -#: cps/helper.py:250 +#: cps/helper.py:259 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "将作者从'%(src)s'改为'%(dest)s'时失败,出错信息: %(error)s" -#: cps/helper.py:272 cps/helper.py:281 +#: cps/helper.py:281 cps/helper.py:290 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "Google Drive上找不到文件 %(file)s" -#: cps/helper.py:299 +#: cps/helper.py:308 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "Google Drive上找不到书籍路径 %(path)s" -#: cps/helper.py:544 +#: cps/helper.py:565 msgid "Error excecuting UnRar" msgstr "执行UnRar时出错" -#: cps/helper.py:546 +#: cps/helper.py:567 msgid "Unrar binary file not found" msgstr "找不到Unrar二进制文件" -#: cps/web.py:1112 cps/web.py:2778 +#: cps/helper.py:609 +msgid "Waiting" +msgstr "等待中" + +#: cps/helper.py:611 +msgid "Failed" +msgstr "失败" + +#: cps/helper.py:613 +msgid "Started" +msgstr "已开始" + +#: cps/helper.py:615 +msgid "Finished" +msgstr "已完成" + +#: cps/helper.py:617 +msgid "Unknown Status" +msgstr "" + +#: cps/helper.py:622 +msgid "E-mail: " +msgstr "" + +#: cps/helper.py:624 cps/helper.py:628 +msgid "Convert: " +msgstr "" + +#: cps/helper.py:626 +msgid "Upload: " +msgstr "" + +#: cps/helper.py:630 +msgid "Unknown Task: " +msgstr "" + +#: cps/web.py:1132 cps/web.py:2842 msgid "Unknown" msgstr "未知" -#: cps/web.py:1121 cps/web.py:1152 +#: cps/web.py:1141 cps/web.py:1172 cps/web.py:1257 msgid "HTTP Error" msgstr "" -#: cps/web.py:1123 cps/web.py:1154 +#: cps/web.py:1143 cps/web.py:1174 cps/web.py:1258 msgid "Connection error" msgstr "" -#: cps/web.py:1125 cps/web.py:1156 +#: cps/web.py:1145 cps/web.py:1176 cps/web.py:1259 msgid "Timeout while establishing connection" msgstr "" -#: cps/web.py:1127 cps/web.py:1158 +#: cps/web.py:1147 cps/web.py:1178 cps/web.py:1260 msgid "General error" msgstr "" -#: cps/web.py:1133 +#: cps/web.py:1153 msgid "Unexpected data while reading update information" msgstr "" -#: cps/web.py:1140 +#: cps/web.py:1160 msgid "No update available. You already have the latest version installed" msgstr "" -#: cps/web.py:1165 +#: cps/web.py:1185 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "" -#: cps/web.py:1215 +#: cps/web.py:1235 msgid "Could not fetch update information" msgstr "" -#: cps/web.py:1230 +#: cps/web.py:1250 msgid "Requesting update package" msgstr "正在请求更新包" -#: cps/web.py:1231 +#: cps/web.py:1251 msgid "Downloading update package" msgstr "正在下载更新包" -#: cps/web.py:1232 +#: cps/web.py:1252 msgid "Unzipping update package" msgstr "正在解压更新包" -#: cps/web.py:1233 -msgid "Files are replaced" -msgstr "文件已替换" +#: cps/web.py:1253 +msgid "Replacing files" +msgstr "" -#: cps/web.py:1234 +#: cps/web.py:1254 msgid "Database connections are closed" msgstr "数据库连接已关闭" -#: cps/web.py:1235 -msgid "Server is stopped" -msgstr "服务器已停止" +#: cps/web.py:1255 +msgid "Stopping server" +msgstr "" -#: cps/web.py:1236 +#: cps/web.py:1256 msgid "Update finished, please press okay and reload page" msgstr "更新完成,请按确定并刷新页面" -#: cps/web.py:1256 +#: cps/web.py:1257 cps/web.py:1258 cps/web.py:1259 cps/web.py:1260 +msgid "Update failed:" +msgstr "" + +#: cps/web.py:1283 msgid "Recently Added Books" msgstr "最近添加的书籍" -#: cps/web.py:1266 +#: cps/web.py:1293 msgid "Newest Books" msgstr "最新书籍" -#: cps/web.py:1278 +#: cps/web.py:1305 msgid "Oldest Books" msgstr "最旧书籍" -#: cps/web.py:1290 +#: cps/web.py:1317 msgid "Books (A-Z)" msgstr "书籍 (A-Z)" -#: cps/web.py:1301 +#: cps/web.py:1328 msgid "Books (Z-A)" msgstr "书籍 (Z-A)" -#: cps/web.py:1330 +#: cps/web.py:1357 msgid "Hot Books (most downloaded)" msgstr "热门书籍(最多下载)" -#: cps/web.py:1343 +#: cps/web.py:1370 msgid "Best rated books" msgstr "最高评分书籍" -#: cps/templates/index.xml:36 cps/web.py:1355 +#: cps/templates/index.xml:39 cps/web.py:1383 msgid "Random Books" msgstr "随机书籍" -#: cps/web.py:1370 +#: cps/web.py:1398 msgid "Author list" msgstr "作者列表" -#: cps/web.py:1382 cps/web.py:1445 cps/web.py:1600 cps/web.py:2152 +#: cps/web.py:1410 cps/web.py:1501 cps/web.py:1663 cps/web.py:2206 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "无法打开电子书。 文件不存在或者文件不可访问:" -#: cps/templates/index.xml:73 cps/web.py:1429 +#: cps/web.py:1438 +msgid "Publisher list" +msgstr "" + +#: cps/web.py:1452 +#, python-format +msgid "Publisher: %(name)s" +msgstr "" + +#: cps/templates/index.xml:83 cps/web.py:1484 msgid "Series list" msgstr "丛书列表" -#: cps/web.py:1443 +#: cps/web.py:1499 #, python-format msgid "Series: %(serie)s" msgstr "丛书: %(serie)s" -#: cps/web.py:1470 +#: cps/web.py:1528 msgid "Available languages" msgstr "可用语言" -#: cps/web.py:1487 +#: cps/web.py:1548 #, python-format msgid "Language: %(name)s" msgstr "语言: %(name)s" -#: cps/templates/index.xml:66 cps/web.py:1498 +#: cps/templates/index.xml:76 cps/web.py:1559 msgid "Category list" msgstr "分类列表" -#: cps/web.py:1512 +#: cps/web.py:1573 #, python-format msgid "Category: %(name)s" msgstr "分类: %(name)s" -#: cps/templates/layout.html:71 cps/web.py:1651 +#: cps/templates/layout.html:71 cps/web.py:1699 msgid "Tasks" msgstr "任务" -#: cps/web.py:1681 +#: cps/web.py:1733 msgid "Statistics" msgstr "统计" -#: cps/web.py:1786 +#: cps/web.py:1840 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "回调域名尚未被校验,请在google开发者控制台按步骤校验域名" -#: cps/web.py:1861 +#: cps/web.py:1915 msgid "Server restarted, please reload page" msgstr "服务器已重启,请刷新页面" -#: cps/web.py:1864 +#: cps/web.py:1918 msgid "Performing shutdown of server, please close window" msgstr "正在关闭服务器,请关闭窗口" -#: cps/web.py:1883 +#: cps/web.py:1937 msgid "Update done" msgstr "更新完成" -#: cps/web.py:1953 +#: cps/web.py:2007 msgid "Published after " msgstr "" -#: cps/web.py:1960 +#: cps/web.py:2014 msgid "Published before " msgstr "出版时早于 " -#: cps/web.py:1974 +#: cps/web.py:2028 #, python-format msgid "Rating <= %(rating)s" msgstr "评分 <= %(rating)s" -#: cps/web.py:1976 +#: cps/web.py:2030 #, python-format msgid "Rating >= %(rating)s" msgstr "评分 >= %(rating)s" -#: cps/web.py:2035 cps/web.py:2044 +#: cps/web.py:2089 cps/web.py:2098 msgid "search" msgstr "搜索" -#: cps/templates/index.xml:44 cps/templates/index.xml:48 -#: cps/templates/layout.html:146 cps/web.py:2111 +#: cps/templates/index.xml:47 cps/templates/index.xml:51 +#: cps/templates/layout.html:146 cps/web.py:2165 msgid "Read Books" msgstr "已读书籍" -#: cps/templates/index.xml:52 cps/templates/index.xml:56 -#: cps/templates/layout.html:148 cps/web.py:2114 +#: cps/templates/index.xml:55 cps/templates/index.xml:59 +#: cps/templates/layout.html:148 cps/web.py:2168 msgid "Unread Books" msgstr "未读书籍" -#: cps/web.py:2162 cps/web.py:2164 cps/web.py:2166 cps/web.py:2178 +#: cps/web.py:2216 cps/web.py:2218 cps/web.py:2220 cps/web.py:2232 msgid "Read a Book" msgstr "阅读一本书" -#: cps/web.py:2244 cps/web.py:3129 +#: cps/web.py:2298 cps/web.py:3201 msgid "Please fill out all fields!" msgstr "请填写所有字段" -#: cps/web.py:2245 cps/web.py:2266 cps/web.py:2270 cps/web.py:2275 -#: cps/web.py:2277 +#: cps/web.py:2299 cps/web.py:2320 cps/web.py:2324 cps/web.py:2329 +#: cps/web.py:2331 msgid "register" msgstr "注册" -#: cps/web.py:2265 cps/web.py:3345 +#: cps/web.py:2319 cps/web.py:3417 msgid "An unknown error occurred. Please try again later." msgstr "发生一个未知错误,请稍后再试。" -#: cps/web.py:2268 +#: cps/web.py:2322 msgid "Your e-mail is not allowed to register" msgstr "您的邮箱不能用来注册" -#: cps/web.py:2271 +#: cps/web.py:2325 msgid "Confirmation e-mail was send to your e-mail account." msgstr "确认邮件已经发送到您的邮箱。" -#: cps/web.py:2274 +#: cps/web.py:2328 msgid "This username or e-mail address is already in use." msgstr "这个用户名或者邮箱已经被使用。" -#: cps/web.py:2291 cps/web.py:2387 +#: cps/web.py:2345 cps/web.py:2441 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "您现在已以'%(nickname)s'身份登录" -#: cps/web.py:2296 +#: cps/web.py:2350 msgid "Wrong Username or Password" msgstr "用户名或密码错误" -#: cps/web.py:2302 cps/web.py:2323 +#: cps/web.py:2356 cps/web.py:2377 msgid "login" msgstr "登录" -#: cps/web.py:2335 cps/web.py:2366 +#: cps/web.py:2389 cps/web.py:2420 msgid "Token not found" msgstr "找不到Token" -#: cps/web.py:2343 cps/web.py:2374 +#: cps/web.py:2397 cps/web.py:2428 msgid "Token has expired" msgstr "Token已过期" -#: cps/web.py:2351 +#: cps/web.py:2405 msgid "Success! Please return to your device" msgstr "成功!请返回您的设备" -#: cps/web.py:2401 +#: cps/web.py:2455 msgid "Please configure the SMTP mail settings first..." msgstr "请先配置SMTP邮箱..." -#: cps/web.py:2405 +#: cps/web.py:2459 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "书籍已经被成功加入 %(kindlemail)s 的发送队列" -#: cps/web.py:2409 +#: cps/web.py:2463 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "发送这本书的时候出现错误: %(res)s" -#: cps/web.py:2411 cps/web.py:3183 +#: cps/web.py:2465 cps/web.py:3255 msgid "Please configure your kindle e-mail address first..." msgstr "请先配置您的kindle邮箱..." -#: cps/web.py:2455 +#: cps/web.py:2476 cps/web.py:2528 +msgid "Invalid shelf specified" +msgstr "指定的书架无效" + +#: cps/web.py:2483 +#, python-format +msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" +msgstr "" + +#: cps/web.py:2491 +msgid "You are not allowed to edit public shelves" +msgstr "" + +#: cps/web.py:2500 +#, python-format +msgid "Book is already part of the shelf: %(shelfname)s" +msgstr "" + +#: cps/web.py:2514 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "此书已被添加到书架: %(sname)s" -#: cps/web.py:2466 -msgid "Invalid shelf specified" -msgstr "指定的书架无效" - -#: cps/web.py:2471 +#: cps/web.py:2533 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "您没有添加书籍到书架 %(name)s 的权限" -#: cps/web.py:2476 +#: cps/web.py:2538 msgid "User is not allowed to edit public shelves" msgstr "用户没有编辑公开书架的权限" -#: cps/web.py:2494 +#: cps/web.py:2556 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "书籍已经在书架 %(name)s 中了" -#: cps/web.py:2508 +#: cps/web.py:2570 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "书籍已经被添加到书架 %(sname)s 中'" -#: cps/web.py:2510 +#: cps/web.py:2572 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "无法添加书籍到书架: %(sname)s" -#: cps/web.py:2547 +#: cps/web.py:2609 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "此书已从书架 %(sname)s 中删除" -#: cps/web.py:2553 +#: cps/web.py:2615 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "对不起,您没有从书架 %(sname)s 中删除书籍的权限" -#: cps/web.py:2573 cps/web.py:2597 +#: cps/web.py:2635 cps/web.py:2659 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "已存在书架 '%(title)s'。" -#: cps/web.py:2578 +#: cps/web.py:2640 #, python-format msgid "Shelf %(title)s created" msgstr "书架 %(title)s 已被创建" -#: cps/web.py:2580 cps/web.py:2608 +#: cps/web.py:2642 cps/web.py:2670 msgid "There was an error" msgstr "发生错误" -#: cps/web.py:2581 cps/web.py:2583 +#: cps/web.py:2643 cps/web.py:2645 msgid "create a shelf" msgstr "创建书架" -#: cps/web.py:2606 +#: cps/web.py:2668 #, python-format msgid "Shelf %(title)s changed" msgstr "书架 %(title)s 已被修改" -#: cps/web.py:2609 cps/web.py:2611 +#: cps/web.py:2671 cps/web.py:2673 msgid "Edit a shelf" msgstr "编辑书架" -#: cps/web.py:2632 +#: cps/web.py:2694 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "成功删除书架 %(name)s" -#: cps/web.py:2659 +#: cps/web.py:2721 #, python-format msgid "Shelf: '%(name)s'" msgstr "书架: '%(name)s'" -#: cps/web.py:2662 +#: cps/web.py:2724 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "打开书架出错。书架不存在或不可访问" -#: cps/web.py:2693 +#: cps/web.py:2755 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "修改书架 '%(name)s' 顺序" -#: cps/web.py:2722 cps/web.py:3135 +#: cps/web.py:2784 cps/web.py:3207 msgid "E-mail is not from valid domain" msgstr "邮箱不在有效域中'" -#: cps/web.py:2724 cps/web.py:2765 cps/web.py:2768 +#: cps/web.py:2786 cps/web.py:2829 cps/web.py:2832 #, python-format msgid "%(name)s's profile" msgstr "%(name)s 的资料" -#: cps/web.py:2763 +#: cps/web.py:2827 msgid "Found an existing account for this e-mail address." msgstr "找到一个已有账号使用这个邮箱。" -#: cps/web.py:2766 +#: cps/web.py:2830 msgid "Profile updated" msgstr "资料已更新" -#: cps/web.py:2794 +#: cps/web.py:2858 msgid "Admin page" msgstr "管理页" -#: cps/web.py:2872 cps/web.py:3045 +#: cps/web.py:2938 cps/web.py:3112 msgid "Calibre-Web configuration updated" msgstr "Calibre-Web配置已更新" -#: cps/templates/admin.html:100 cps/web.py:2885 +#: cps/templates/admin.html:100 cps/web.py:2951 msgid "UI Configuration" msgstr "UI配置" -#: cps/web.py:2903 +#: cps/web.py:2969 msgid "Import of optional Google Drive requirements missing" msgstr "可选的Google Drive依赖导入缺失" -#: cps/web.py:2906 +#: cps/web.py:2972 msgid "client_secrets.json is missing or not readable" msgstr "client_secrets.json文件缺失或不可读" -#: cps/web.py:2911 cps/web.py:2938 +#: cps/web.py:2977 cps/web.py:3004 msgid "client_secrets.json is not configured for web application" msgstr "没有为web应用配置client_secrets.json" -#: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979 -#: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060 -#: cps/web.py:3077 +#: cps/templates/admin.html:99 cps/web.py:3007 cps/web.py:3033 cps/web.py:3045 +#: cps/web.py:3088 cps/web.py:3103 cps/web.py:3120 cps/web.py:3127 +#: cps/web.py:3142 msgid "Basic Configuration" msgstr "基本配置" -#: cps/web.py:2964 +#: cps/web.py:3030 msgid "Keyfile location is not valid, please enter correct path" msgstr "key文件位置无效,请输入正确路径" -#: cps/web.py:2976 +#: cps/web.py:3042 msgid "Certfile location is not valid, please enter correct path" msgstr "证书文件位置无效,请输入正确路径" -#: cps/web.py:3018 +#: cps/web.py:3085 msgid "Logfile location is not valid, please enter correct path" msgstr "日志文件位置无效,请输入正确路径" -#: cps/web.py:3057 +#: cps/web.py:3124 msgid "DB location is not valid, please enter correct path" msgstr "DB位置无效,请输入正确路径" -#: cps/templates/admin.html:33 cps/web.py:3131 cps/web.py:3137 cps/web.py:3153 +#: cps/templates/admin.html:33 cps/web.py:3203 cps/web.py:3209 cps/web.py:3225 msgid "Add new user" msgstr "添加新用户" -#: cps/web.py:3143 +#: cps/web.py:3215 #, python-format msgid "User '%(user)s' created" msgstr "用户 '%(user)s' 已被创建" -#: cps/web.py:3147 +#: cps/web.py:3219 msgid "Found an existing account for this e-mail address or nickname." msgstr "此邮箱或昵称的账号已经存在。" -#: cps/web.py:3171 cps/web.py:3185 +#: cps/web.py:3243 cps/web.py:3257 msgid "E-mail server settings updated" msgstr "已更新邮件服务器设置" -#: cps/web.py:3178 +#: cps/web.py:3250 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "测试邮件已经被成功发到 %(kindlemail)s" -#: cps/web.py:3181 +#: cps/web.py:3253 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "发送测试邮件出错了: %(res)s" -#: cps/web.py:3186 +#: cps/web.py:3258 msgid "Edit e-mail server settings" msgstr "编辑邮箱服务器设置" -#: cps/web.py:3211 +#: cps/web.py:3283 #, python-format msgid "User '%(nick)s' deleted" msgstr "用户 '%(nick)s' 已被删除" -#: cps/web.py:3320 +#: cps/web.py:3392 #, python-format msgid "User '%(nick)s' updated" msgstr "用户 '%(nick)s' 已被更新" -#: cps/web.py:3323 +#: cps/web.py:3395 msgid "An unknown error occured." msgstr "发生未知错误。" -#: cps/web.py:3325 +#: cps/web.py:3397 #, python-format msgid "Edit User %(nick)s" msgstr "编辑用户 %(nick)s" -#: cps/web.py:3342 +#: cps/web.py:3414 #, python-format msgid "Password for user %(user)s reset" msgstr "用户 %(user)s 的密码已重置" -#: cps/web.py:3362 +#: cps/web.py:3428 cps/web.py:3629 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "打开电子书出错。文件不存在或不可访问" -#: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827 +#: cps/web.py:3453 cps/web.py:3912 msgid "edit metadata" msgstr "编辑元数据" -#: cps/web.py:3401 cps/web.py:3697 +#: cps/web.py:3546 cps/web.py:3782 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "不能上传后缀为 '%(ext)s' 的文件到此服务器" -#: cps/web.py:3405 cps/web.py:3701 +#: cps/web.py:3550 cps/web.py:3786 msgid "File to be uploaded must have an extension" msgstr "要上传的文件必须有一个后缀" -#: cps/web.py:3417 cps/web.py:3721 +#: cps/web.py:3562 cps/web.py:3806 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "创建路径 %(path)s 失败(权限拒绝)。" -#: cps/web.py:3422 +#: cps/web.py:3567 #, python-format msgid "Failed to store file %(file)s." msgstr "保存文件 %(file)s 失败。" -#: cps/web.py:3438 +#: cps/web.py:3583 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "已添加 %(ext)s 格式到 %(book)s" -#: cps/web.py:3455 +#: cps/web.py:3601 #, python-format msgid "Failed to create path for cover %(path)s (Permission denied)." msgstr "" -#: cps/web.py:3462 +#: cps/web.py:3608 #, python-format msgid "Failed to store cover-file %(cover)s." msgstr "保存封面文件 %(cover)s 失败。" -#: cps/web.py:3465 +#: cps/web.py:3611 msgid "Cover-file is not a valid image file" msgstr "封面文件不是一个有效的图片文件" -#: cps/web.py:3482 cps/web.py:3486 +#: cps/web.py:3641 cps/web.py:3650 cps/web.py:3654 msgid "unknown" msgstr "未知" -#: cps/web.py:3508 +#: cps/web.py:3673 msgid "Cover is not a jpg file, can't save" msgstr "封面不是一个jpg文件,无法保存" -#: cps/web.py:3554 +#: cps/web.py:3721 #, python-format msgid "%(langname)s is not a valid language" msgstr "" -#: cps/web.py:3676 +#: cps/web.py:3752 +msgid "Metadata successfully updated" +msgstr "" + +#: cps/web.py:3761 msgid "Error editing book, please check logfile for details" msgstr "编辑书籍出错,详情请检查日志文件" -#: cps/web.py:3726 +#: cps/web.py:3811 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "存储文件 %(file)s 失败(权限拒绝)。" -#: cps/web.py:3731 +#: cps/web.py:3816 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "删除文件 %(file)s 失败(权限拒绝)。" -#: cps/web.py:3813 +#: cps/web.py:3898 #, python-format msgid "File %(file)s uploaded" msgstr "文件 %(file)s 已上传" -#: cps/web.py:3843 +#: cps/web.py:3928 msgid "Source or destination format for conversion missing" msgstr "转换的源或目的格式缺失" -#: cps/web.py:3853 +#: cps/web.py:3938 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "书籍已经被成功加入 %(book_format)s 的转换队列" -#: cps/web.py:3857 +#: cps/web.py:3942 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "转换此书时出现错误: %(res)s" -#: cps/worker.py:215 cps/worker.py:398 -msgid "Started" -msgstr "已开始" - -#: cps/worker.py:251 -#, python-format -msgid "Convertertool %(converter)s not found" -msgstr "找不到转换工具 $(converter)s" - #: cps/worker.py:287 #, python-format msgid "Ebook-converter failed: %(error)s" @@ -691,22 +747,6 @@ msgstr "电子书转换器失败: %(error)s" msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "Kindlegen 因为错误 %(error)s 失败。消息: %(message)s" -#: cps/worker.py:355 cps/worker.py:374 -msgid "Waiting" -msgstr "等待中" - -#: cps/worker.py:362 -msgid "This e-mail has been sent via Calibre-Web." -msgstr "此邮件已经通过Calibre-Web发送" - -#: cps/worker.py:388 cps/worker.py:484 -msgid "Finished" -msgstr "已完成" - -#: cps/worker.py:476 -msgid "Failed" -msgstr "失败" - #: cps/templates/admin.html:6 msgid "User list" msgstr "用户列表" @@ -853,16 +893,16 @@ msgid "Do you really want to restart Calibre-Web?" msgstr "您确定要重启 Calibre-Web 吗?" #: cps/templates/admin.html:150 cps/templates/admin.html:164 -#: cps/templates/admin.html:184 cps/templates/shelf.html:59 +#: cps/templates/admin.html:184 cps/templates/shelf.html:61 msgid "Ok" msgstr "确定" #: cps/templates/admin.html:151 cps/templates/admin.html:165 #: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200 -#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164 +#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:168 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75 -#: cps/templates/shelf.html:60 cps/templates/shelf_edit.html:19 -#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:153 +#: cps/templates/shelf.html:62 cps/templates/shelf_edit.html:19 +#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:155 msgid "Back" msgstr "后退" @@ -958,17 +998,17 @@ msgstr "封面URL(jpg,封面会被下载被保存在数据库中,然后字段 msgid "Upload Cover from local drive" msgstr "从本地磁盘上传封面" -#: cps/templates/book_edit.html:96 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:96 cps/templates/detail.html:135 msgid "Publishing date" msgstr "出版日期" #: cps/templates/book_edit.html:103 cps/templates/book_edit.html:261 -#: cps/templates/book_edit.html:278 cps/templates/detail.html:126 +#: cps/templates/book_edit.html:278 cps/templates/detail.html:127 #: cps/templates/search_form.html:14 msgid "Publisher" msgstr "出版社" -#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:33 +#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:31 msgid "Language" msgstr "语言" @@ -993,9 +1033,9 @@ msgid "Get metadata" msgstr "获取元数据" #: cps/templates/book_edit.html:177 cps/templates/config_edit.html:210 -#: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 +#: cps/templates/config_view_edit.html:167 cps/templates/login.html:20 #: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 -#: cps/templates/user_edit.html:151 +#: cps/templates/user_edit.html:153 msgid "Submit" msgstr "提交" @@ -1031,7 +1071,7 @@ msgstr "点击封面加载元数据到表单" msgid "Loading..." msgstr "加载中..." -#: cps/templates/book_edit.html:239 cps/templates/layout.html:221 +#: cps/templates/book_edit.html:239 cps/templates/layout.html:224 msgid "Close" msgstr "关闭" @@ -1213,31 +1253,31 @@ msgstr "成人内容标签" msgid "Default settings for new users" msgstr "新用户默认设置" -#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:108 +#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:110 msgid "Admin user" msgstr "管理用户" -#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:117 +#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:119 msgid "Allow Downloads" msgstr "允许下载" -#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:121 +#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:123 msgid "Allow Uploads" msgstr "允许上传" -#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:125 +#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:127 msgid "Allow Edit" msgstr "允许编辑" -#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:129 +#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:131 msgid "Allow Delete books" msgstr "允许删除书籍" -#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:134 +#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:136 msgid "Allow Changing Password" msgstr "允许修改密码" -#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:138 +#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:140 msgid "Allow Editing Public Shelfs" msgstr "允许编辑公共书架" @@ -1245,51 +1285,55 @@ msgstr "允许编辑公共书架" msgid "Default visibilities for new users" msgstr "新用户的默认显示权限" -#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:60 +#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:58 msgid "Show random books" msgstr "显示随机书籍" -#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:64 +#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:62 msgid "Show recent books" msgstr "显示最近书籍" -#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:68 +#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:66 msgid "Show sorted books" msgstr "显示已排序书籍" -#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:72 +#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:70 msgid "Show hot books" msgstr "显示热门书籍" -#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:76 +#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:74 msgid "Show best rated books" msgstr "显示最高评分书籍" -#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:80 +#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:78 msgid "Show language selection" msgstr "显示语言选择" -#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:84 +#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:82 msgid "Show series selection" msgstr "显示丛书选择" -#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:88 +#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:86 msgid "Show category selection" msgstr "显示分类选择" -#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:92 +#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:90 msgid "Show author selection" msgstr "显示作者选择" -#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:96 +#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:94 +msgid "Show publisher selection" +msgstr "" + +#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:98 msgid "Show read and unread" msgstr "显示已读和未读" -#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:100 +#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:102 msgid "Show random books in detail view" msgstr "在详情页显示随机书籍" -#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:113 +#: cps/templates/config_view_edit.html:160 cps/templates/user_edit.html:115 msgid "Show mature content" msgstr "显示成人内容" @@ -1309,19 +1353,19 @@ msgstr "" msgid "language" msgstr "语言" -#: cps/templates/detail.html:168 +#: cps/templates/detail.html:172 msgid "Read" msgstr "" -#: cps/templates/detail.html:177 +#: cps/templates/detail.html:182 msgid "Description:" msgstr "简介:" -#: cps/templates/detail.html:189 cps/templates/search.html:14 +#: cps/templates/detail.html:195 cps/templates/search.html:14 msgid "Add to shelf" msgstr "添加到书架" -#: cps/templates/detail.html:251 +#: cps/templates/detail.html:257 msgid "Edit metadata" msgstr "编辑元数据" @@ -1381,11 +1425,11 @@ msgstr "添加" msgid "Do you really want to delete this domain rule?" msgstr "您确定要删除这条域名规则吗?" -#: cps/templates/feed.xml:21 cps/templates/layout.html:205 +#: cps/templates/feed.xml:21 cps/templates/layout.html:208 msgid "Next" msgstr "下一个" -#: cps/templates/feed.xml:30 cps/templates/index.xml:8 +#: cps/templates/feed.xml:33 cps/templates/index.xml:11 #: cps/templates/layout.html:43 cps/templates/layout.html:44 msgid "Search" msgstr "搜索" @@ -1398,63 +1442,71 @@ msgstr "发现(随机书籍)" msgid "Start" msgstr "开始" -#: cps/templates/index.xml:15 cps/templates/layout.html:139 +#: cps/templates/index.xml:18 cps/templates/layout.html:139 msgid "Hot Books" msgstr "热门书籍" -#: cps/templates/index.xml:19 +#: cps/templates/index.xml:22 msgid "Popular publications from this catalog based on Downloads." msgstr "基于下载数的热门书籍" -#: cps/templates/index.xml:22 cps/templates/layout.html:142 +#: cps/templates/index.xml:25 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "最高评分书籍" -#: cps/templates/index.xml:26 +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Rating." msgstr "基于评分的热门书籍" -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:32 msgid "New Books" msgstr "新书" -#: cps/templates/index.xml:33 +#: cps/templates/index.xml:36 msgid "The latest Books" msgstr "最新书籍" -#: cps/templates/index.xml:40 +#: cps/templates/index.xml:43 msgid "Show Random Books" msgstr "显示随机书籍" -#: cps/templates/index.xml:59 cps/templates/layout.html:160 +#: cps/templates/index.xml:62 cps/templates/layout.html:160 msgid "Authors" msgstr "作者" -#: cps/templates/index.xml:63 +#: cps/templates/index.xml:66 msgid "Books ordered by Author" msgstr "书籍按作者排序" -#: cps/templates/index.xml:70 +#: cps/templates/index.xml:69 cps/templates/layout.html:163 +msgid "Publishers" +msgstr "" + +#: cps/templates/index.xml:73 +msgid "Books ordered by publisher" +msgstr "" + +#: cps/templates/index.xml:80 msgid "Books ordered by category" msgstr "书籍按分类排序" -#: cps/templates/index.xml:77 +#: cps/templates/index.xml:87 msgid "Books ordered by series" msgstr "书籍按丛书排序" -#: cps/templates/index.xml:80 cps/templates/layout.html:166 +#: cps/templates/index.xml:90 cps/templates/layout.html:169 msgid "Public Shelves" msgstr "公开书架" -#: cps/templates/index.xml:84 +#: cps/templates/index.xml:94 msgid "Books organized in public shelfs, visible to everyone" msgstr "公开书架中的书籍,对所有人都可见" -#: cps/templates/index.xml:88 cps/templates/layout.html:170 +#: cps/templates/index.xml:98 cps/templates/layout.html:173 msgid "Your Shelves" msgstr "您的书架" -#: cps/templates/index.xml:92 +#: cps/templates/index.xml:102 msgid "User's own shelfs, only visible to the current user himself" msgstr "用户私有书架,只对当前用户本身可见" @@ -1470,7 +1522,7 @@ msgstr "高级搜索" msgid "Logout" msgstr "注销" -#: cps/templates/layout.html:83 cps/templates/register.html:18 +#: cps/templates/layout.html:83 cps/templates/register.html:14 msgid "Register" msgstr "注册" @@ -1523,23 +1575,23 @@ msgstr "发现" msgid "Categories" msgstr "分类" -#: cps/templates/layout.html:163 cps/templates/search_form.html:74 +#: cps/templates/layout.html:166 cps/templates/search_form.html:74 msgid "Languages" msgstr "语言" -#: cps/templates/layout.html:175 +#: cps/templates/layout.html:178 msgid "Create a Shelf" msgstr "创建书架" -#: cps/templates/layout.html:176 cps/templates/stats.html:3 +#: cps/templates/layout.html:179 cps/templates/stats.html:3 msgid "About" msgstr "关于" -#: cps/templates/layout.html:190 +#: cps/templates/layout.html:193 msgid "Previous" msgstr "上一个" -#: cps/templates/layout.html:217 +#: cps/templates/layout.html:220 msgid "Book Details" msgstr "书籍详情" @@ -1549,7 +1601,7 @@ msgid "Username" msgstr "用户名" #: cps/templates/login.html:12 cps/templates/login.html:13 -#: cps/templates/register.html:11 cps/templates/user_edit.html:21 +#: cps/templates/user_edit.html:21 msgid "Password" msgstr "密码" @@ -1614,7 +1666,7 @@ msgstr "向左旋转" msgid "Flip Image" msgstr "翻转图片" -#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:41 +#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:39 msgid "Theme" msgstr "主题" @@ -1678,15 +1730,11 @@ msgstr "注册新用户" msgid "Choose a username" msgstr "选择一个用户名" -#: cps/templates/register.html:12 -msgid "Choose a password" -msgstr "选择一个密码" - -#: cps/templates/register.html:15 cps/templates/user_edit.html:13 +#: cps/templates/register.html:11 cps/templates/user_edit.html:13 msgid "E-mail address" msgstr "邮箱地址" -#: cps/templates/register.html:16 +#: cps/templates/register.html:12 msgid "Your email address" msgstr "您的邮箱地址" @@ -1754,11 +1802,11 @@ msgstr "编辑书架" msgid "Change order" msgstr "修改顺序" -#: cps/templates/shelf.html:54 +#: cps/templates/shelf.html:56 msgid "Do you really want to delete the shelf?" msgstr "您真的想要删除这个书架吗?" -#: cps/templates/shelf.html:57 +#: cps/templates/shelf.html:59 msgid "Shelf will be lost for everybody and forever!" msgstr "书架将会永远丢失!" @@ -1842,31 +1890,31 @@ msgstr "隐藏所有任务" msgid "Reset user Password" msgstr "重置用户密码" -#: cps/templates/user_edit.html:29 +#: cps/templates/user_edit.html:27 msgid "Kindle E-Mail" msgstr "" -#: cps/templates/user_edit.html:43 +#: cps/templates/user_edit.html:41 msgid "Standard Theme" msgstr "标准主题" -#: cps/templates/user_edit.html:44 +#: cps/templates/user_edit.html:42 msgid "caliBlur! Dark Theme (Beta)" msgstr "" -#: cps/templates/user_edit.html:49 +#: cps/templates/user_edit.html:47 msgid "Show books with language" msgstr "按语言显示书籍" -#: cps/templates/user_edit.html:51 +#: cps/templates/user_edit.html:49 msgid "Show all" msgstr "显示全部" -#: cps/templates/user_edit.html:145 +#: cps/templates/user_edit.html:147 msgid "Delete this user" msgstr "删除此用户" -#: cps/templates/user_edit.html:160 +#: cps/templates/user_edit.html:162 msgid "Recent Downloads" msgstr "最近下载" @@ -1912,3 +1960,21 @@ msgstr "最近下载" #~ msgid "Newest commit timestamp" #~ msgstr "最新提交时间戳" +#~ msgid "Convert: %(book)s" +#~ msgstr "转换: %(book)s" + +#~ msgid "Convert to %(format)s: %(book)s" +#~ msgstr "转换到 %(format)s: %(book)s" + +#~ msgid "Files are replaced" +#~ msgstr "文件已替换" + +#~ msgid "Server is stopped" +#~ msgstr "服务器已停止" + +#~ msgid "Convertertool %(converter)s not found" +#~ msgstr "找不到转换工具 $(converter)s" + +#~ msgid "Choose a password" +#~ msgstr "选择一个密码" + diff --git a/messages.pot b/messages.pot index 0177b49d..7eb09c9a 100644 --- a/messages.pot +++ b/messages.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-10-28 21:32+0100\n" +"POT-Creation-Date: 2018-11-03 14:03+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -30,687 +30,712 @@ msgstr "" msgid "not configured" msgstr "" -#: cps/helper.py:57 +#: cps/helper.py:58 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "" -#: cps/helper.py:69 +#: cps/helper.py:70 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "" -#: cps/helper.py:76 -#, python-format -msgid "Convert: %(book)s" +#: cps/helper.py:77 cps/helper.py:147 cps/templates/detail.html:44 +msgid "Send to Kindle" msgstr "" -#: cps/helper.py:79 -#, python-format -msgid "Convert to %(format)s: %(book)s" +#: cps/helper.py:78 cps/helper.py:96 +msgid "This e-mail has been sent via Calibre-Web." msgstr "" -#: cps/helper.py:86 +#: cps/helper.py:89 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "" -#: cps/helper.py:91 +#: cps/helper.py:94 msgid "Calibre-Web test e-mail" msgstr "" -#: cps/helper.py:92 +#: cps/helper.py:95 msgid "Test e-mail" msgstr "" -#: cps/helper.py:107 +#: cps/helper.py:111 msgid "Get Started with Calibre-Web" msgstr "" -#: cps/helper.py:108 +#: cps/helper.py:112 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "" -#: cps/helper.py:131 cps/helper.py:141 +#: cps/helper.py:135 cps/helper.py:145 msgid "Could not find any formats suitable for sending by e-mail" msgstr "" -#: cps/helper.py:143 cps/templates/detail.html:44 cps/worker.py:224 -msgid "Send to Kindle" -msgstr "" - -#: cps/helper.py:144 cps/worker.py:226 +#: cps/helper.py:148 #, python-format msgid "E-mail: %(book)s" msgstr "" -#: cps/helper.py:146 +#: cps/helper.py:150 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "" -#: cps/helper.py:241 +#: cps/helper.py:250 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:250 +#: cps/helper.py:259 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:272 cps/helper.py:281 +#: cps/helper.py:281 cps/helper.py:290 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "" -#: cps/helper.py:299 +#: cps/helper.py:308 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "" -#: cps/helper.py:544 +#: cps/helper.py:565 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:546 +#: cps/helper.py:567 msgid "Unrar binary file not found" msgstr "" -#: cps/web.py:1171 cps/web.py:2889 +#: cps/helper.py:609 +msgid "Waiting" +msgstr "" + +#: cps/helper.py:611 +msgid "Failed" +msgstr "" + +#: cps/helper.py:613 +msgid "Started" +msgstr "" + +#: cps/helper.py:615 +msgid "Finished" +msgstr "" + +#: cps/helper.py:617 +msgid "Unknown Status" +msgstr "" + +#: cps/helper.py:622 +msgid "E-mail: " +msgstr "" + +#: cps/helper.py:624 cps/helper.py:628 +msgid "Convert: " +msgstr "" + +#: cps/helper.py:626 +msgid "Upload: " +msgstr "" + +#: cps/helper.py:630 +msgid "Unknown Task: " +msgstr "" + +#: cps/web.py:1132 cps/web.py:2842 msgid "Unknown" msgstr "" -#: cps/web.py:1180 cps/web.py:1211 +#: cps/web.py:1141 cps/web.py:1172 cps/web.py:1257 msgid "HTTP Error" msgstr "" -#: cps/web.py:1182 cps/web.py:1213 +#: cps/web.py:1143 cps/web.py:1174 cps/web.py:1258 msgid "Connection error" msgstr "" -#: cps/web.py:1184 cps/web.py:1215 +#: cps/web.py:1145 cps/web.py:1176 cps/web.py:1259 msgid "Timeout while establishing connection" msgstr "" -#: cps/web.py:1186 cps/web.py:1217 +#: cps/web.py:1147 cps/web.py:1178 cps/web.py:1260 msgid "General error" msgstr "" -#: cps/web.py:1192 +#: cps/web.py:1153 msgid "Unexpected data while reading update information" msgstr "" -#: cps/web.py:1199 +#: cps/web.py:1160 msgid "No update available. You already have the latest version installed" msgstr "" -#: cps/web.py:1224 +#: cps/web.py:1185 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "" -#: cps/web.py:1274 +#: cps/web.py:1235 msgid "Could not fetch update information" msgstr "" -#: cps/web.py:1289 +#: cps/web.py:1250 msgid "Requesting update package" msgstr "" -#: cps/web.py:1290 +#: cps/web.py:1251 msgid "Downloading update package" msgstr "" -#: cps/web.py:1291 +#: cps/web.py:1252 msgid "Unzipping update package" msgstr "" -#: cps/web.py:1292 -msgid "Files are replaced" +#: cps/web.py:1253 +msgid "Replacing files" msgstr "" -#: cps/web.py:1293 +#: cps/web.py:1254 msgid "Database connections are closed" msgstr "" -#: cps/web.py:1294 -msgid "Server is stopped" +#: cps/web.py:1255 +msgid "Stopping server" msgstr "" -#: cps/web.py:1295 +#: cps/web.py:1256 msgid "Update finished, please press okay and reload page" msgstr "" -#: cps/web.py:1315 +#: cps/web.py:1257 cps/web.py:1258 cps/web.py:1259 cps/web.py:1260 +msgid "Update failed:" +msgstr "" + +#: cps/web.py:1283 msgid "Recently Added Books" msgstr "" -#: cps/web.py:1325 +#: cps/web.py:1293 msgid "Newest Books" msgstr "" -#: cps/web.py:1337 +#: cps/web.py:1305 msgid "Oldest Books" msgstr "" -#: cps/web.py:1349 +#: cps/web.py:1317 msgid "Books (A-Z)" msgstr "" -#: cps/web.py:1360 +#: cps/web.py:1328 msgid "Books (Z-A)" msgstr "" -#: cps/web.py:1389 +#: cps/web.py:1357 msgid "Hot Books (most downloaded)" msgstr "" -#: cps/web.py:1402 +#: cps/web.py:1370 msgid "Best rated books" msgstr "" -#: cps/templates/index.xml:36 cps/web.py:1415 +#: cps/templates/index.xml:39 cps/web.py:1383 msgid "Random Books" msgstr "" -#: cps/web.py:1430 +#: cps/web.py:1398 msgid "Author list" msgstr "" -#: cps/web.py:1442 cps/web.py:1533 cps/web.py:1695 cps/web.py:2253 +#: cps/web.py:1410 cps/web.py:1501 cps/web.py:1663 cps/web.py:2206 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "" -#: cps/web.py:1470 +#: cps/web.py:1438 msgid "Publisher list" msgstr "" -#: cps/web.py:1484 +#: cps/web.py:1452 #, python-format msgid "Publisher: %(name)s" msgstr "" -#: cps/templates/index.xml:80 cps/web.py:1516 +#: cps/templates/index.xml:83 cps/web.py:1484 msgid "Series list" msgstr "" -#: cps/web.py:1531 +#: cps/web.py:1499 #, python-format msgid "Series: %(serie)s" msgstr "" -#: cps/web.py:1560 +#: cps/web.py:1528 msgid "Available languages" msgstr "" -#: cps/web.py:1580 +#: cps/web.py:1548 #, python-format msgid "Language: %(name)s" msgstr "" -#: cps/templates/index.xml:73 cps/web.py:1591 +#: cps/templates/index.xml:76 cps/web.py:1559 msgid "Category list" msgstr "" -#: cps/web.py:1605 +#: cps/web.py:1573 #, python-format msgid "Category: %(name)s" msgstr "" -#: cps/templates/layout.html:71 cps/web.py:1746 +#: cps/templates/layout.html:71 cps/web.py:1699 msgid "Tasks" msgstr "" -#: cps/web.py:1780 +#: cps/web.py:1733 msgid "Statistics" msgstr "" -#: cps/web.py:1887 +#: cps/web.py:1840 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "" -#: cps/web.py:1962 +#: cps/web.py:1915 msgid "Server restarted, please reload page" msgstr "" -#: cps/web.py:1965 +#: cps/web.py:1918 msgid "Performing shutdown of server, please close window" msgstr "" -#: cps/web.py:1984 +#: cps/web.py:1937 msgid "Update done" msgstr "" -#: cps/web.py:2054 +#: cps/web.py:2007 msgid "Published after " msgstr "" -#: cps/web.py:2061 +#: cps/web.py:2014 msgid "Published before " msgstr "" -#: cps/web.py:2075 +#: cps/web.py:2028 #, python-format msgid "Rating <= %(rating)s" msgstr "" -#: cps/web.py:2077 +#: cps/web.py:2030 #, python-format msgid "Rating >= %(rating)s" msgstr "" -#: cps/web.py:2136 cps/web.py:2145 +#: cps/web.py:2089 cps/web.py:2098 msgid "search" msgstr "" -#: cps/templates/index.xml:44 cps/templates/index.xml:48 -#: cps/templates/layout.html:146 cps/web.py:2212 +#: cps/templates/index.xml:47 cps/templates/index.xml:51 +#: cps/templates/layout.html:146 cps/web.py:2165 msgid "Read Books" msgstr "" -#: cps/templates/index.xml:52 cps/templates/index.xml:56 -#: cps/templates/layout.html:148 cps/web.py:2215 +#: cps/templates/index.xml:55 cps/templates/index.xml:59 +#: cps/templates/layout.html:148 cps/web.py:2168 msgid "Unread Books" msgstr "" -#: cps/web.py:2263 cps/web.py:2265 cps/web.py:2267 cps/web.py:2279 +#: cps/web.py:2216 cps/web.py:2218 cps/web.py:2220 cps/web.py:2232 msgid "Read a Book" msgstr "" -#: cps/web.py:2345 cps/web.py:3248 +#: cps/web.py:2298 cps/web.py:3201 msgid "Please fill out all fields!" msgstr "" -#: cps/web.py:2346 cps/web.py:2367 cps/web.py:2371 cps/web.py:2376 -#: cps/web.py:2378 +#: cps/web.py:2299 cps/web.py:2320 cps/web.py:2324 cps/web.py:2329 +#: cps/web.py:2331 msgid "register" msgstr "" -#: cps/web.py:2366 cps/web.py:3464 +#: cps/web.py:2319 cps/web.py:3417 msgid "An unknown error occurred. Please try again later." msgstr "" -#: cps/web.py:2369 +#: cps/web.py:2322 msgid "Your e-mail is not allowed to register" msgstr "" -#: cps/web.py:2372 +#: cps/web.py:2325 msgid "Confirmation e-mail was send to your e-mail account." msgstr "" -#: cps/web.py:2375 +#: cps/web.py:2328 msgid "This username or e-mail address is already in use." msgstr "" -#: cps/web.py:2392 cps/web.py:2488 +#: cps/web.py:2345 cps/web.py:2441 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "" -#: cps/web.py:2397 +#: cps/web.py:2350 msgid "Wrong Username or Password" msgstr "" -#: cps/web.py:2403 cps/web.py:2424 +#: cps/web.py:2356 cps/web.py:2377 msgid "login" msgstr "" -#: cps/web.py:2436 cps/web.py:2467 +#: cps/web.py:2389 cps/web.py:2420 msgid "Token not found" msgstr "" -#: cps/web.py:2444 cps/web.py:2475 +#: cps/web.py:2397 cps/web.py:2428 msgid "Token has expired" msgstr "" -#: cps/web.py:2452 +#: cps/web.py:2405 msgid "Success! Please return to your device" msgstr "" -#: cps/web.py:2502 +#: cps/web.py:2455 msgid "Please configure the SMTP mail settings first..." msgstr "" -#: cps/web.py:2506 +#: cps/web.py:2459 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "" -#: cps/web.py:2510 +#: cps/web.py:2463 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "" -#: cps/web.py:2512 cps/web.py:3302 +#: cps/web.py:2465 cps/web.py:3255 msgid "Please configure your kindle e-mail address first..." msgstr "" -#: cps/web.py:2523 cps/web.py:2575 +#: cps/web.py:2476 cps/web.py:2528 msgid "Invalid shelf specified" msgstr "" -#: cps/web.py:2530 +#: cps/web.py:2483 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" msgstr "" -#: cps/web.py:2538 +#: cps/web.py:2491 msgid "You are not allowed to edit public shelves" msgstr "" -#: cps/web.py:2547 +#: cps/web.py:2500 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" msgstr "" -#: cps/web.py:2561 +#: cps/web.py:2514 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "" -#: cps/web.py:2580 +#: cps/web.py:2533 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "" -#: cps/web.py:2585 +#: cps/web.py:2538 msgid "User is not allowed to edit public shelves" msgstr "" -#: cps/web.py:2603 +#: cps/web.py:2556 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "" -#: cps/web.py:2617 +#: cps/web.py:2570 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "" -#: cps/web.py:2619 +#: cps/web.py:2572 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "" -#: cps/web.py:2656 +#: cps/web.py:2609 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "" -#: cps/web.py:2662 +#: cps/web.py:2615 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" -#: cps/web.py:2682 cps/web.py:2706 +#: cps/web.py:2635 cps/web.py:2659 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "" -#: cps/web.py:2687 +#: cps/web.py:2640 #, python-format msgid "Shelf %(title)s created" msgstr "" -#: cps/web.py:2689 cps/web.py:2717 +#: cps/web.py:2642 cps/web.py:2670 msgid "There was an error" msgstr "" -#: cps/web.py:2690 cps/web.py:2692 +#: cps/web.py:2643 cps/web.py:2645 msgid "create a shelf" msgstr "" -#: cps/web.py:2715 +#: cps/web.py:2668 #, python-format msgid "Shelf %(title)s changed" msgstr "" -#: cps/web.py:2718 cps/web.py:2720 +#: cps/web.py:2671 cps/web.py:2673 msgid "Edit a shelf" msgstr "" -#: cps/web.py:2741 +#: cps/web.py:2694 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "" -#: cps/web.py:2768 +#: cps/web.py:2721 #, python-format msgid "Shelf: '%(name)s'" msgstr "" -#: cps/web.py:2771 +#: cps/web.py:2724 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "" -#: cps/web.py:2802 +#: cps/web.py:2755 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "" -#: cps/web.py:2831 cps/web.py:3254 +#: cps/web.py:2784 cps/web.py:3207 msgid "E-mail is not from valid domain" msgstr "" -#: cps/web.py:2833 cps/web.py:2876 cps/web.py:2879 +#: cps/web.py:2786 cps/web.py:2829 cps/web.py:2832 #, python-format msgid "%(name)s's profile" msgstr "" -#: cps/web.py:2874 +#: cps/web.py:2827 msgid "Found an existing account for this e-mail address." msgstr "" -#: cps/web.py:2877 +#: cps/web.py:2830 msgid "Profile updated" msgstr "" -#: cps/web.py:2905 +#: cps/web.py:2858 msgid "Admin page" msgstr "" -#: cps/web.py:2985 cps/web.py:3159 +#: cps/web.py:2938 cps/web.py:3112 msgid "Calibre-Web configuration updated" msgstr "" -#: cps/templates/admin.html:100 cps/web.py:2998 +#: cps/templates/admin.html:100 cps/web.py:2951 msgid "UI Configuration" msgstr "" -#: cps/web.py:3016 +#: cps/web.py:2969 msgid "Import of optional Google Drive requirements missing" msgstr "" -#: cps/web.py:3019 +#: cps/web.py:2972 msgid "client_secrets.json is missing or not readable" msgstr "" -#: cps/web.py:3024 cps/web.py:3051 +#: cps/web.py:2977 cps/web.py:3004 msgid "client_secrets.json is not configured for web application" msgstr "" -#: cps/templates/admin.html:99 cps/web.py:3054 cps/web.py:3080 cps/web.py:3092 -#: cps/web.py:3135 cps/web.py:3150 cps/web.py:3167 cps/web.py:3174 -#: cps/web.py:3189 +#: cps/templates/admin.html:99 cps/web.py:3007 cps/web.py:3033 cps/web.py:3045 +#: cps/web.py:3088 cps/web.py:3103 cps/web.py:3120 cps/web.py:3127 +#: cps/web.py:3142 msgid "Basic Configuration" msgstr "" -#: cps/web.py:3077 +#: cps/web.py:3030 msgid "Keyfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:3089 +#: cps/web.py:3042 msgid "Certfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:3132 +#: cps/web.py:3085 msgid "Logfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:3171 +#: cps/web.py:3124 msgid "DB location is not valid, please enter correct path" msgstr "" -#: cps/templates/admin.html:33 cps/web.py:3250 cps/web.py:3256 cps/web.py:3272 +#: cps/templates/admin.html:33 cps/web.py:3203 cps/web.py:3209 cps/web.py:3225 msgid "Add new user" msgstr "" -#: cps/web.py:3262 +#: cps/web.py:3215 #, python-format msgid "User '%(user)s' created" msgstr "" -#: cps/web.py:3266 +#: cps/web.py:3219 msgid "Found an existing account for this e-mail address or nickname." msgstr "" -#: cps/web.py:3290 cps/web.py:3304 +#: cps/web.py:3243 cps/web.py:3257 msgid "E-mail server settings updated" msgstr "" -#: cps/web.py:3297 +#: cps/web.py:3250 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "" -#: cps/web.py:3300 +#: cps/web.py:3253 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "" -#: cps/web.py:3305 +#: cps/web.py:3258 msgid "Edit e-mail server settings" msgstr "" -#: cps/web.py:3330 +#: cps/web.py:3283 #, python-format msgid "User '%(nick)s' deleted" msgstr "" -#: cps/web.py:3439 +#: cps/web.py:3392 #, python-format msgid "User '%(nick)s' updated" msgstr "" -#: cps/web.py:3442 +#: cps/web.py:3395 msgid "An unknown error occured." msgstr "" -#: cps/web.py:3444 +#: cps/web.py:3397 #, python-format msgid "Edit User %(nick)s" msgstr "" -#: cps/web.py:3461 +#: cps/web.py:3414 #, python-format msgid "Password for user %(user)s reset" msgstr "" -#: cps/web.py:3475 cps/web.py:3676 +#: cps/web.py:3428 cps/web.py:3629 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "" -#: cps/web.py:3500 cps/web.py:3959 +#: cps/web.py:3453 cps/web.py:3912 msgid "edit metadata" msgstr "" -#: cps/web.py:3593 cps/web.py:3829 +#: cps/web.py:3546 cps/web.py:3782 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "" -#: cps/web.py:3597 cps/web.py:3833 +#: cps/web.py:3550 cps/web.py:3786 msgid "File to be uploaded must have an extension" msgstr "" -#: cps/web.py:3609 cps/web.py:3853 +#: cps/web.py:3562 cps/web.py:3806 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "" -#: cps/web.py:3614 +#: cps/web.py:3567 #, python-format msgid "Failed to store file %(file)s." msgstr "" -#: cps/web.py:3630 +#: cps/web.py:3583 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "" -#: cps/web.py:3648 +#: cps/web.py:3601 #, python-format msgid "Failed to create path for cover %(path)s (Permission denied)." msgstr "" -#: cps/web.py:3655 +#: cps/web.py:3608 #, python-format msgid "Failed to store cover-file %(cover)s." msgstr "" -#: cps/web.py:3658 +#: cps/web.py:3611 msgid "Cover-file is not a valid image file" msgstr "" -#: cps/web.py:3688 cps/web.py:3697 cps/web.py:3701 +#: cps/web.py:3641 cps/web.py:3650 cps/web.py:3654 msgid "unknown" msgstr "" -#: cps/web.py:3720 +#: cps/web.py:3673 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/web.py:3768 +#: cps/web.py:3721 #, python-format msgid "%(langname)s is not a valid language" msgstr "" -#: cps/web.py:3799 +#: cps/web.py:3752 msgid "Metadata successfully updated" msgstr "" -#: cps/web.py:3808 +#: cps/web.py:3761 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/web.py:3858 +#: cps/web.py:3811 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "" -#: cps/web.py:3863 +#: cps/web.py:3816 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "" -#: cps/web.py:3945 +#: cps/web.py:3898 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/web.py:3975 +#: cps/web.py:3928 msgid "Source or destination format for conversion missing" msgstr "" -#: cps/web.py:3985 +#: cps/web.py:3938 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "" -#: cps/web.py:3989 +#: cps/web.py:3942 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "" -#: cps/worker.py:215 cps/worker.py:398 -msgid "Started" -msgstr "" - -#: cps/worker.py:251 -#, python-format -msgid "Convertertool %(converter)s not found" -msgstr "" - #: cps/worker.py:287 #, python-format msgid "Ebook-converter failed: %(error)s" @@ -721,22 +746,6 @@ msgstr "" msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "" -#: cps/worker.py:355 cps/worker.py:374 -msgid "Waiting" -msgstr "" - -#: cps/worker.py:362 -msgid "This e-mail has been sent via Calibre-Web." -msgstr "" - -#: cps/worker.py:388 cps/worker.py:484 -msgid "Finished" -msgstr "" - -#: cps/worker.py:476 -msgid "Failed" -msgstr "" - #: cps/templates/admin.html:6 msgid "User list" msgstr "" @@ -1419,7 +1428,7 @@ msgstr "" msgid "Next" msgstr "" -#: cps/templates/feed.xml:30 cps/templates/index.xml:8 +#: cps/templates/feed.xml:33 cps/templates/index.xml:11 #: cps/templates/layout.html:43 cps/templates/layout.html:44 msgid "Search" msgstr "" @@ -1432,71 +1441,71 @@ msgstr "" msgid "Start" msgstr "" -#: cps/templates/index.xml:15 cps/templates/layout.html:139 +#: cps/templates/index.xml:18 cps/templates/layout.html:139 msgid "Hot Books" msgstr "" -#: cps/templates/index.xml:19 +#: cps/templates/index.xml:22 msgid "Popular publications from this catalog based on Downloads." msgstr "" -#: cps/templates/index.xml:22 cps/templates/layout.html:142 +#: cps/templates/index.xml:25 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "" -#: cps/templates/index.xml:26 +#: cps/templates/index.xml:29 msgid "Popular publications from this catalog based on Rating." msgstr "" -#: cps/templates/index.xml:29 +#: cps/templates/index.xml:32 msgid "New Books" msgstr "" -#: cps/templates/index.xml:33 +#: cps/templates/index.xml:36 msgid "The latest Books" msgstr "" -#: cps/templates/index.xml:40 +#: cps/templates/index.xml:43 msgid "Show Random Books" msgstr "" -#: cps/templates/index.xml:59 cps/templates/layout.html:160 +#: cps/templates/index.xml:62 cps/templates/layout.html:160 msgid "Authors" msgstr "" -#: cps/templates/index.xml:63 +#: cps/templates/index.xml:66 msgid "Books ordered by Author" msgstr "" -#: cps/templates/index.xml:66 cps/templates/layout.html:163 +#: cps/templates/index.xml:69 cps/templates/layout.html:163 msgid "Publishers" msgstr "" -#: cps/templates/index.xml:70 +#: cps/templates/index.xml:73 msgid "Books ordered by publisher" msgstr "" -#: cps/templates/index.xml:77 +#: cps/templates/index.xml:80 msgid "Books ordered by category" msgstr "" -#: cps/templates/index.xml:84 +#: cps/templates/index.xml:87 msgid "Books ordered by series" msgstr "" -#: cps/templates/index.xml:87 cps/templates/layout.html:169 +#: cps/templates/index.xml:90 cps/templates/layout.html:169 msgid "Public Shelves" msgstr "" -#: cps/templates/index.xml:91 +#: cps/templates/index.xml:94 msgid "Books organized in public shelfs, visible to everyone" msgstr "" -#: cps/templates/index.xml:95 cps/templates/layout.html:173 +#: cps/templates/index.xml:98 cps/templates/layout.html:173 msgid "Your Shelves" msgstr "" -#: cps/templates/index.xml:99 +#: cps/templates/index.xml:102 msgid "User's own shelfs, only visible to the current user himself" msgstr "" From 399dffba5a0c806628fd36b2944a95e13bb60576 Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Sat, 3 Nov 2018 18:37:38 +0100 Subject: [PATCH 027/160] log file name in case of filename not found (#691) --- cps/helper.py | 6 +++++- cps/web.py | 19 ++++++------------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/cps/helper.py b/cps/helper.py index 3c7c80a6..597198fd 100644 --- a/cps/helper.py +++ b/cps/helper.py @@ -377,7 +377,11 @@ def do_download_file(book, book_format, data, headers): else: abort(404) else: - response = make_response(send_from_directory(os.path.join(ub.config.config_calibre_dir, book.path), data.name + "." + book_format)) + filename = os.path.join(ub.config.config_calibre_dir, book.path) + if not os.path.isfile(os.path.join(filename, data.name + "." + book_format)): + # ToDo: improve error handling + web.app.logger.error('File not found: %s' % os.path.join(filename, data.name + "." + book_format)) + response = make_response(send_from_directory(filename, data.name + "." + book_format)) response.headers = headers return response diff --git a/cps/web.py b/cps/web.py index c6b8a939..6e52da2b 100644 --- a/cps/web.py +++ b/cps/web.py @@ -2255,7 +2255,8 @@ def read_book(book_id, book_format): extensionList = ["cbt","cbz"] for fileext in extensionList: if book_format.lower() == fileext: - return render_title_template('readcbr.html', comicfile=book_id, extension=fileext, title=_(u"Read a Book"), book=book) + return render_title_template('readcbr.html', comicfile=book_id, + extension=fileext, title=_(u"Read a Book"), book=book) flash(_(u"Error opening eBook. File does not exist or file is not accessible."), category="error") return redirect(url_for("index"))''' @@ -2266,7 +2267,8 @@ def read_book(book_id, book_format): def get_download_link(book_id, book_format): book_format = book_format.split(".")[0] 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()).first() + data = db.session.query(db.Data).filter(db.Data.book == book.id)\ + .filter(db.Data.format == book_format.upper()).first() if data: # collect downloaded books only for registered user and not for anonymous user if current_user.is_authenticated: @@ -2280,18 +2282,9 @@ def get_download_link(book_id, book_format): headers["Content-Type"] = mimetypes.types_map['.' + book_format] except KeyError: headers["Content-Type"] = "application/octet-stream" - headers["Content-Disposition"] = "attachment; filename*=UTF-8''%s.%s" % (quote(file_name.encode('utf-8')), book_format) + headers["Content-Disposition"] = "attachment; filename*=UTF-8''%s.%s" % (quote(file_name.encode('utf-8')), + book_format) return helper.do_download_file(book, book_format, data, headers) - #if config.config_use_google_drive: - # df = gdriveutils.getFileFromEbooksFolder(book.path, '%s.%s' % (data.name, book_format)) - # if df: - # return do_gdrive_download(df, headers) - # else: - # abort(404) - #else: - # response = make_response(send_from_directory(os.path.join(config.config_calibre_dir, book.path), data.name + "." + book_format)) - # response.headers = headers - # return response else: abort(404) From 947622800c0b24688e6197c296333d783456e7d7 Mon Sep 17 00:00:00 2001 From: dalin Date: Wed, 14 Nov 2018 18:14:11 +0800 Subject: [PATCH 028/160] Update Simplified Chinese translation. Fix #681 in the case of Simplified Chinese. --- .../zh_Hans_CN/LC_MESSAGES/messages.po | 64 +++++++++---------- cps/web.py | 5 ++ 2 files changed, 37 insertions(+), 32 deletions(-) diff --git a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po index f0c4d351..ee728a93 100644 --- a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po +++ b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po @@ -29,7 +29,7 @@ msgstr "可执行权限缺失" #: cps/converter.py:48 msgid "not configured" -msgstr "" +msgstr "未配置" #: cps/helper.py:58 #, python-format @@ -130,7 +130,7 @@ msgstr "已完成" #: cps/helper.py:617 msgid "Unknown Status" -msgstr "" +msgstr "未知状态" #: cps/helper.py:622 msgid "E-mail: " @@ -138,15 +138,15 @@ msgstr "" #: cps/helper.py:624 cps/helper.py:628 msgid "Convert: " -msgstr "" +msgstr "转换:" #: cps/helper.py:626 msgid "Upload: " -msgstr "" +msgstr "上传:" #: cps/helper.py:630 msgid "Unknown Task: " -msgstr "" +msgstr "未知任务:" #: cps/web.py:1132 cps/web.py:2842 msgid "Unknown" @@ -154,35 +154,35 @@ msgstr "未知" #: cps/web.py:1141 cps/web.py:1172 cps/web.py:1257 msgid "HTTP Error" -msgstr "" +msgstr "HTTP错误" #: cps/web.py:1143 cps/web.py:1174 cps/web.py:1258 msgid "Connection error" -msgstr "" +msgstr "连接错误" #: cps/web.py:1145 cps/web.py:1176 cps/web.py:1259 msgid "Timeout while establishing connection" -msgstr "" +msgstr "建立连接超时" #: cps/web.py:1147 cps/web.py:1178 cps/web.py:1260 msgid "General error" -msgstr "" +msgstr "一般错误" #: cps/web.py:1153 msgid "Unexpected data while reading update information" -msgstr "" +msgstr "读取更新信息时出现异常数据" #: cps/web.py:1160 msgid "No update available. You already have the latest version installed" -msgstr "" +msgstr "没有可用更新。您已经安装了最新版本" #: cps/web.py:1185 msgid "A new update is available. Click on the button below to update to the latest version." -msgstr "" +msgstr "有一个更新可用。点击正文按钮更新到最新版本。" #: cps/web.py:1235 msgid "Could not fetch update information" -msgstr "" +msgstr "无法获取更新信息" #: cps/web.py:1250 msgid "Requesting update package" @@ -198,7 +198,7 @@ msgstr "正在解压更新包" #: cps/web.py:1253 msgid "Replacing files" -msgstr "" +msgstr "正在替换文件" #: cps/web.py:1254 msgid "Database connections are closed" @@ -206,7 +206,7 @@ msgstr "数据库连接已关闭" #: cps/web.py:1255 msgid "Stopping server" -msgstr "" +msgstr "正在停止服务器" #: cps/web.py:1256 msgid "Update finished, please press okay and reload page" @@ -214,7 +214,7 @@ msgstr "更新完成,请按确定并刷新页面" #: cps/web.py:1257 cps/web.py:1258 cps/web.py:1259 cps/web.py:1260 msgid "Update failed:" -msgstr "" +msgstr "更新失败:" #: cps/web.py:1283 msgid "Recently Added Books" @@ -258,12 +258,12 @@ msgstr "无法打开电子书。 文件不存在或者文件不可访问:" #: cps/web.py:1438 msgid "Publisher list" -msgstr "" +msgstr "出版社列表" #: cps/web.py:1452 #, python-format msgid "Publisher: %(name)s" -msgstr "" +msgstr "出版社: %(name)s" #: cps/templates/index.xml:83 cps/web.py:1484 msgid "Series list" @@ -318,7 +318,7 @@ msgstr "更新完成" #: cps/web.py:2007 msgid "Published after " -msgstr "" +msgstr "出版时晚于 " #: cps/web.py:2014 msgid "Published before " @@ -427,16 +427,16 @@ msgstr "指定的书架无效" #: cps/web.py:2483 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" -msgstr "" +msgstr "对不起,您没有添加书籍到书架 %(shelfname)s 的权限" #: cps/web.py:2491 msgid "You are not allowed to edit public shelves" -msgstr "" +msgstr "您没有编辑书架的权限" #: cps/web.py:2500 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" -msgstr "" +msgstr "此书已经是书架 %(shelfname)s 的一部分" #: cps/web.py:2514 #, python-format @@ -676,7 +676,7 @@ msgstr "已添加 %(ext)s 格式到 %(book)s" #: cps/web.py:3601 #, python-format msgid "Failed to create path for cover %(path)s (Permission denied)." -msgstr "" +msgstr "为封面 %(path)s 创建路径失败(权限拒绝)。" #: cps/web.py:3608 #, python-format @@ -698,11 +698,11 @@ msgstr "封面不是一个jpg文件,无法保存" #: cps/web.py:3721 #, python-format msgid "%(langname)s is not a valid language" -msgstr "" +msgstr "%(langname)s 不是一种有效语言" #: cps/web.py:3752 msgid "Metadata successfully updated" -msgstr "" +msgstr "已成功更新元数据" #: cps/web.py:3761 msgid "Error editing book, please check logfile for details" @@ -866,19 +866,19 @@ msgstr "停止 Calibre-Web" #: cps/templates/admin.html:115 msgid "Update" -msgstr "" +msgstr "更新" #: cps/templates/admin.html:119 msgid "Version" -msgstr "" +msgstr "版本" #: cps/templates/admin.html:120 msgid "Details" -msgstr "" +msgstr "详情" #: cps/templates/admin.html:126 msgid "Current version" -msgstr "" +msgstr "当前版本" #: cps/templates/admin.html:132 msgid "Check for update" @@ -1323,7 +1323,7 @@ msgstr "显示作者选择" #: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:94 msgid "Show publisher selection" -msgstr "" +msgstr "显示出版社选择" #: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:98 msgid "Show read and unread" @@ -1480,11 +1480,11 @@ msgstr "书籍按作者排序" #: cps/templates/index.xml:69 cps/templates/layout.html:163 msgid "Publishers" -msgstr "" +msgstr "出版社" #: cps/templates/index.xml:73 msgid "Books ordered by publisher" -msgstr "" +msgstr "书籍按出版社排版" #: cps/templates/index.xml:80 msgid "Books ordered by category" diff --git a/cps/web.py b/cps/web.py index 6e52da2b..8bd83267 100644 --- a/cps/web.py +++ b/cps/web.py @@ -198,6 +198,11 @@ def get_locale(): return user.locale translations = [item.language for item in babel.list_translations()] + ['en'] preferred = [x.replace('-', '_') for x in request.accept_languages.values()] + + # In the case of Simplified Chinese, Accept-Language is "zh-CN", while our translation of Simplified Chinese is "zh_Hans_CN". + # TODO: This is Not a good solution, should be improved. + if "zh_CN" in preferred: + return "zh_Hans_CN" return negotiate_locale(preferred, translations) From af216e3697cd45e92e3be0753137e08c86cb373f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Santos?= Date: Fri, 16 Nov 2018 23:32:21 +0000 Subject: [PATCH 029/160] Verify if certfile and keyfile are paths to actual files This allow to try to not use ssl if the key file path or the certificate file are broken. The files might be missing because the user intentionally removed them but didn't update the settings first. In that situation, this change won't make the app crash, the warning is logged and that way the user has the chance to update the settings. --- cps/server.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/cps/server.py b/cps/server.py index 59f20109..45718f0d 100644 --- a/cps/server.py +++ b/cps/server.py @@ -32,9 +32,14 @@ class server: def start_gevent(self): try: ssl_args = dict() - if web.ub.config.get_config_certfile() and web.ub.config.get_config_keyfile(): - ssl_args = {"certfile": web.ub.config.get_config_certfile(), - "keyfile": web.ub.config.get_config_keyfile()} + certfile_path = web.ub.config.get_config_certfile() + keyfile_path = web.ub.config.get_config_keyfile() + if certfile_path and keyfile_path: + if os.path.isfile(certfile_path) and os.path.isfile(keyfile_path): + ssl_args = {"certfile": certfile_path, + "keyfile": keyfile_path} + else: + web.app.logger.info('The specified paths for the ssl certificate file and/or key file seem to be broken. Ignoring ssl. Cert path: %s | Key path: %s' % (certfile_path, keyfile_path)) if os.name == 'nt': self.wsgiserver= WSGIServer(('0.0.0.0', web.ub.config.config_port), web.app, spawn=Pool(), **ssl_args) else: @@ -61,9 +66,14 @@ class server: else: try: web.app.logger.info('Starting Tornado server') - if web.ub.config.get_config_certfile() and web.ub.config.get_config_keyfile(): - ssl={"certfile": web.ub.config.get_config_certfile(), - "keyfile": web.ub.config.get_config_keyfile()} + certfile_path = web.ub.config.get_config_certfile() + keyfile_path = web.ub.config.get_config_keyfile() + if certfile_path and keyfile_path: + if os.path.isfile(certfile_path) and os.path.isfile(keyfile_path): + ssl_args = {"certfile": certfile_path, + "keyfile": keyfile_path} + else: + web.app.logger.info('The specified paths for the ssl certificate file and/or key file seem to be broken. Ignoring ssl. Cert path: %s | Key path: %s' % (certfile_path, keyfile_path)) else: ssl=None # Max Buffersize set to 200MB From c6a5ac7f25b3961e8f4d4cd42ee010cea7fe926e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Santos?= Date: Sat, 17 Nov 2018 00:28:34 +0000 Subject: [PATCH 030/160] Fix wrong variable usage --- cps/server.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cps/server.py b/cps/server.py index 45718f0d..c3dd3f28 100644 --- a/cps/server.py +++ b/cps/server.py @@ -70,8 +70,8 @@ class server: keyfile_path = web.ub.config.get_config_keyfile() if certfile_path and keyfile_path: if os.path.isfile(certfile_path) and os.path.isfile(keyfile_path): - ssl_args = {"certfile": certfile_path, - "keyfile": keyfile_path} + ssl = {"certfile": certfile_path, + "keyfile": keyfile_path} else: web.app.logger.info('The specified paths for the ssl certificate file and/or key file seem to be broken. Ignoring ssl. Cert path: %s | Key path: %s' % (certfile_path, keyfile_path)) else: From c574b779fb1bdfca1190dd445c06f8a680b36ec1 Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Sat, 17 Nov 2018 16:41:47 +0100 Subject: [PATCH 031/160] Added swedish translation --- cps/translations/iso639.pickle | 3289 ++++++++++++++----- cps/translations/sv/LC_MESSAGES/messages.mo | Bin 0 -> 46498 bytes cps/translations/sv/LC_MESSAGES/messages.po | 1948 +++++++++++ messages.pot | 326 +- readme.md | 2 +- 5 files changed, 4596 insertions(+), 969 deletions(-) create mode 100644 cps/translations/sv/LC_MESSAGES/messages.mo create mode 100644 cps/translations/sv/LC_MESSAGES/messages.po diff --git a/cps/translations/iso639.pickle b/cps/translations/iso639.pickle index a9b73843..7c954465 100644 --- a/cps/translations/iso639.pickle +++ b/cps/translations/iso639.pickle @@ -15077,7 +15077,7 @@ p7543 ssS'es' p7544 g1679 -sS'ja' +sS'sv' p7545 (dp7546 Vroh @@ -15086,19 +15086,19 @@ VRomansh p7548 sVsco p7549 -V\u30b9\u30b3\u30c3\u30c8\u30e9\u30f3\u30c9\u8a9e +VLgskotska p7550 sVscn p7551 -V\u30b7\u30c1\u30ea\u30a2\u8a9e +VSicilianska p7552 sVrom p7553 -V\u30ed\u30de\u30cb\u8a9e +VRomani p7554 sVron p7555 -V\u30eb\u30fc\u30de\u30cb\u30a2\u8a9e +VRumnska p7556 sVoss p7557 @@ -15106,75 +15106,75 @@ VOssetian p7558 sVale p7559 -V\u30a2\u30ec\u30a6\u30c8\u8a9e +VAleutiska p7560 sVmni p7561 -V\u30de\u30cb\u30d7\u30eb\u8a9e +VManipuri p7562 sVnwc p7563 -VNewari; Old +VNewari; gammal p7564 sVosa p7565 -V\u30aa\u30fc\u30bb\u30fc\u30b8\u8a9e +VOsage p7566 sValt p7567 -VAltai; Southern +VAltaiska; sdra p7568 sVmnc p7569 -V\u6e80\u5dde\u8a9e +VManchu p7570 sVmwr p7571 -V\u30de\u30eb\u30ef\u30ea\u8a9e +VMarwari p7572 sVven p7573 -V\u30d9\u30f3\u30c0\u8a9e +VVenda p7574 sVuga p7575 -V\u30a6\u30ac\u30ea\u30c3\u30c8\u8a9e +VUgaritiska p7576 sVmwl p7577 -V\u30df\u30e9\u30f3\u30c9\u8a9e +VMirandese p7578 sVfas p7579 -V\u30da\u30eb\u30b7\u30a2\u8a9e +VPersiska p7580 sVfat p7581 -V\u30d5\u30a1\u30f3\u30c6\u30a3\u30fc\u8a9e +VFanti p7582 sVfan p7583 -VFang (Equatorial Guinea) +VFang (Ekvatorialguinea) p7584 sVfao p7585 -V\u30d5\u30a7\u30ed\u30fc\u8a9e +VFriska p7586 sVdin p7587 -V\u30c7\u30a3\u30f3\u30ab\u8a9e +VDinka p7588 sVhye p7589 -V\u30a2\u30eb\u30e1\u30cb\u30a2\u8a9e +VArmeniska p7590 sVbla p7591 -V\u30d6\u30e9\u30c3\u30af\u30d5\u30c3\u30c8\u8a9e +VSiksika (svartfotindianernas sprk) p7592 sVsrd p7593 -V\u30b5\u30eb\u30c7\u30fc\u30cb\u30e3\u8a9e +VSardiska p7594 sVcar p7595 @@ -15182,51 +15182,51 @@ VCarib; Galibi p7596 sVdiv p7597 -VDhivehi +VDivehi p7598 sVtel p7599 -V\u30c6\u30eb\u30b0\u8a9e +VTelugu (Indien) p7600 sVtem p7601 -V\u30c6\u30e0\u30cd\u8a9e +VTemne p7602 sVnbl p7603 -V\u30cc\u30c7\u30d9\u30ec\u8a9e; \u5357 +VNdebele; syd p7604 sVter p7605 -V\u30c6\u30ec\u30fc\u30ce\u8a9e +VTereno p7606 sVtet p7607 -V\u30c6\u30c8\u30a5\u30f3\u8a9e +VTetum p7608 sVsun p7609 -V\u30b9\u30f3\u30c0\u8a9e +VSundanesiska p7610 sVkut p7611 -V\u30af\u30c6\u30ca\u30a4\u8a9e +VKutenai p7612 sVsuk p7613 -V\u30b9\u30af\u30de\u8a9e +VSukuma p7614 sVkur p7615 -V\u30af\u30eb\u30c9\u8a9e +VKurdiska p7616 sVkum p7617 -V\u30af\u30df\u30c3\u30af\u8a9e +VKumyk p7618 sVsus p7619 -V\u30b9\u30b9\u8a9e +VSusu p7620 sVnew p7621 @@ -15234,11 +15234,11 @@ VBhasa; Nepal p7622 sVkua p7623 -V\u30af\u30a2\u30cb\u30e3\u30de\u8a9e +VOvambo (kuanyama) p7624 sVsux p7625 -V\u30b7\u30e5\u30e1\u30fc\u30eb\u8a9e +VSumeriska p7626 sVmen p7627 @@ -15246,131 +15246,131 @@ VMende (Sierra Leone) p7628 sVlez p7629 -V\u30ec\u30ba\u30ae\u8a9e +VLezginska p7630 sVgla p7631 -VGaelic; Scottish +VGaeliska; skotska p7632 sVbos p7633 -V\u30dc\u30b9\u30cb\u30a2\u8a9e +VBosniska p7634 sVgle p7635 -V\u30a2\u30a4\u30eb\u30e9\u30f3\u30c9\u8a9e +VIriska p7636 sVeka p7637 -V\u30a8\u30ab\u30b8\u30e5\u30af\u8a9e +VEkajuk p7638 sVglg p7639 -VGalician +VGaliciska p7640 sVakk p7641 -V\u30a2\u30c3\u30ab\u30c9\u8a9e +VAkkadiska p7642 sVaka p7643 -V\u30a2\u30ab\u30f3\u8a9e +VAkan (Ghana, Elfenbenskusten) p7644 sVbod p7645 -V\u30c1\u30d9\u30c3\u30c8\u8a9e +VTibetanska p7646 sVglv p7647 -V\u30de\u30f3\u5cf6\u8a9e +VManx p7648 sVjrb p7649 -V\u30e6\u30c0\u30e4\u30fb\u30a2\u30e9\u30d3\u30a2\u8a9e +VJudearabiska p7650 sVvie p7651 -V\u30d9\u30c8\u30ca\u30e0\u8a9e +VVietnamesiska p7652 sVipk p7653 -V\u30a4\u30cc\u30d4\u30a2\u30af\u8a9e +VInupiaq p7654 sVuzb p7655 -V\u30a6\u30ba\u30d9\u30af\u8a9e +VUzbekiska p7656 sVsga p7657 -V\u30a2\u30a4\u30eb\u30e9\u30f3\u30c9\u8a9e; \u53e4 (-900) +VIriska; gammal (-900) p7658 sVbre p7659 -V\u30d6\u30eb\u30c8\u30f3\u8a9e +VBretonska p7660 sVbra p7661 -V\u30d6\u30e9\u30b8\u8a9e +VBraj p7662 sVaym p7663 -V\u30a2\u30a4\u30de\u30e9\u8a9e +VAymara (Bolivien) p7664 sVcha p7665 -V\u30c1\u30e3\u30e2\u30ed\u8a9e +VChamorro p7666 sVchb p7667 -V\u30c1\u30d6\u30c1\u30e3\u8a9e +VChibcha p7668 sVche p7669 -V\u30c1\u30a7\u30c1\u30a7\u30f3\u8a9e +VTjetjenska p7670 sVchg p7671 -V\u30c1\u30e3\u30ac\u30bf\u30a4\u8a9e +VChagatai p7672 sVchk p7673 -V\u30c1\u30e5\u30fc\u30af\u8a9e +VChuukese p7674 sVchm p7675 -VMari (Russia) +VMari (Ryssland) p7676 sVchn p7677 -V\u30c1\u30cc\u30fc\u30af\u6df7\u6210\u8a9e +VChinook p7678 sVcho p7679 -V\u30c1\u30e7\u30af\u30c8\u30fc\u8a9e +VChoctaw p7680 sVchp p7681 -V\u30c1\u30da\u30ef\u30a4\u30a2\u30f3\u8a9e +VChopi p7682 sVchr p7683 -V\u30c1\u30a7\u30ed\u30ad\u30fc\u8a9e +VCherokesiska p7684 sVchu p7685 -VSlavonic; Old +VSlavonic; antik p7686 sVchv p7687 -V\u30c1\u30e5\u30f4\u30a1\u30b7\u30e5\u8a9e +VTjuvasjiska p7688 sVchy p7689 -V\u30b7\u30e3\u30a4\u30a2\u30f3\u8a9e +VCheyenne p7690 sVmsa p7691 -VMalay (macrolanguage) +VMalajiska (makrosprk) p7692 sViii p7693 @@ -15378,43 +15378,43 @@ VYi; Sichuan p7694 sVndo p7695 -V\u30f3\u30c9\u30f3\u30ac\u8a9e +VNdonga p7696 sVibo p7697 -V\u30a4\u30dc\u8a9e +VIbo (Igbo) p7698 sViba p7699 -V\u30a4\u30d0\u30f3\u8a9e +VIban p7700 sVxho p7701 -V\u30db\u30b5\u8a9e +VXhosa (Sydafrika) p7702 sVdeu p7703 -V\u30c9\u30a4\u30c4\u8a9e +VTyska p7704 sVcat p7705 -V\u30ab\u30bf\u30ed\u30cb\u30a2\u8a9e +VKatalanska (Katalonien) p7706 sVdel p7707 -V\u30c7\u30e9\u30a6\u30a7\u30a2\u8a9e +VDelaware p7708 sVden p7709 -V\u30b9\u30ec\u30fc\u30d6\u8a9e (\u30a2\u30b5\u30d1\u30b9\u30ab\u30f3\u8a9e) +VSlave p7710 sVcad p7711 -V\u30ab\u30c9\u30fc\u8a9e +VCaddo p7712 sVtat p7713 -V\u30bf\u30bf\u30fc\u30eb\u8a9e +VTatariska ( Ryssland, Ukraina, Turkiet, Kina, Finland, Centralasien) p7714 sVsrn p7715 @@ -15422,47 +15422,47 @@ VSranan Tongo p7716 sVraj p7717 -V\u30e9\u30fc\u30b8\u30e3\u30b9\u30bf\u30fc\u30cb\u30fc\u8a9e +VRajasthani p7718 sVtam p7719 -V\u30bf\u30df\u30eb\u8a9e +VTamil (Indien, Sri Lanka, Singapore) p7720 sVspa p7721 -V\u30b9\u30da\u30a4\u30f3\u8a9e +VSpanska p7722 sVtah p7723 -V\u30bf\u30d2\u30c1\u8a9e +VTahitiska p7724 sVafh p7725 -V\u30a2\u30d5\u30ea\u30d2\u30ea +VAfrihili (konstgjort sprk) p7726 sVeng p7727 -V\u82f1\u8a9e +VEngelska p7728 sVenm p7729 -V\u82f1\u8a9e; \u4e2d\u4e16 (1100-1500) +VMedelengelska (1100-1500) p7730 sVcsb p7731 -V\u30ab\u30b7\u30e5\u30d3\u30a2\u30f3\u8a9e +VKasjubianska p7732 sVnyn p7733 -V\u30cb\u30e3\u30f3\u30b3\u30fc\u30eb\u8a9e +VNyankole p7734 sVnyo p7735 -V\u30cb\u30e7\u30ed\u8a9e +VNyoro p7736 sVsid p7737 -V\u30b7\u30c0\u30e2\u8a9e +VSidami p7738 sVnya p7739 @@ -15470,55 +15470,55 @@ VNyanja p7740 sVsin p7741 -V\u30b7\u30f3\u30cf\u30e9\u6587\u5b57 +VSinhala p7742 sVafr p7743 -V\u30a2\u30d5\u30ea\u30ab\u30fc\u30f3\u30b9\u8a9e +VAfrikaans p7744 sVlam p7745 -V\u30e9\u30f3\u30d0\u8a9e +VLamba p7746 sVsnd p7747 -V\u30b7\u30f3\u30c7\u30a3\u30fc\u8a9e +VSindhi p7748 sVmar p7749 -V\u30de\u30e9\u30fc\u30c6\u30a3\u30fc\u8a9e +VMarathi (Indien) p7750 sVlah p7751 -V\u30e9\u30d5\u30f3\u30c0\u30fc\u8a9e +VLahnda p7752 sVnym p7753 -V\u30e0\u30a8\u30b8\u8a9e +VNyamwezi p7754 sVsna p7755 -V\u30b7\u30e7\u30ca\u8a9e +VShona (Zimbabwe) p7756 sVlad p7757 -V\u30e9\u30b8\u30ce\u8a9e +VSpanjolska (ladino) p7758 sVsnk p7759 -V\u30bd\u30cb\u30f3\u30b1\u8a9e +VSoninke p7760 sVmad p7761 -V\u30de\u30c9\u30a5\u30e9\u8a9e +VMadurese p7762 sVmag p7763 -V\u30de\u30ac\u30d2\u8a9e +VMagahi p7764 sVmai p7765 -V\u30de\u30a4\u30c1\u30ea\u8a9e +VMaithili p7766 sVmah p7767 @@ -15526,47 +15526,47 @@ VMarshallese p7768 sVlav p7769 -V\u30e9\u30c8\u30f4\u30a3\u30a2\u8a9e +VLettiska p7770 sVmal p7771 -V\u30de\u30e9\u30e4\u30fc\u30e9\u30e0\u8a9e +VMalayalam (Indien) p7772 sVman p7773 -V\u30de\u30f3\u30c7\u30a3\u30f3\u30b4\u8a9e +VMande p7774 sVegy p7775 -V\u30a8\u30b8\u30d7\u30c8\u8a9e (\u53e4\u4ee3) +VEgyptiska; gammal p7776 sVzen p7777 -V\u30bc\u30ca\u30ac\u8a9e +VZenaga p7778 sVkbd p7779 -V\u30ab\u30d0\u30eb\u30c0\u8a9e +VKabardinska (sttjerkessiska) p7780 sVita p7781 -V\u30a4\u30bf\u30ea\u30a2\u8a9e +VItalienska p7782 sVvai p7783 -V\u30f4\u30a1\u30a4\u8a9e +VVai p7784 sVtsn p7785 -V\u30c4\u30ef\u30ca\u8a9e +VSetswana/Tswand (Botswana, Sydafrika, Zimbabwe, Namibia) p7786 sVtso p7787 -V\u30c4\u30a9\u30f3\u30ac\u8a9e +VTsonga p7788 sVtsi p7789 -V\u30c1\u30e0\u30b7\u30e5\u8a9e +VTsimshian p7790 sVbyn p7791 @@ -15574,151 +15574,151 @@ VBilin p7792 sVfij p7793 -V\u30d5\u30a3\u30b8\u30fc\u8a9e +VFijianska p7794 sVfin p7795 -V\u30d5\u30a3\u30f3\u8a9e +VFinska p7796 sVeus p7797 -V\u30d0\u30b9\u30af\u8a9e +VBaskiska p7798 sVnon p7799 -V\u30b9\u30ab\u30f3\u30b8\u30ca\u30d3\u30a2\u8a9e; \u53e4\u671f +VNordiska; gammal p7800 sVceb p7801 -V\u30bb\u30d6\u30a2\u30ce\u8a9e +VCebuanska p7802 sVdan p7803 -V\u30c7\u30f3\u30de\u30fc\u30af\u8a9e +VDanska p7804 sVnog p7805 -V\u30ce\u30ac\u30a4\u8a9e +VNogaiska p7806 sVnob p7807 -VNorwegian Bokml +VNorskt bokml p7808 sVdak p7809 -V\u30c0\u30b3\u30bf\u8a9e +VDakota p7810 sVces p7811 -V\u30c1\u30a7\u30b3\u8a9e +VTjeckiska p7812 sVdar p7813 -V\u30c0\u30eb\u30ac\u30f3\u8a9e +VDargwa p7814 sVnor p7815 -V\u30ce\u30eb\u30a6\u30a7\u30fc\u8a9e +VNorska p7816 sVkpe p7817 -V\u30af\u30da\u30ec\u8a9e +VKpelle p7818 sVguj p7819 -V\u30b0\u30b8\u30e3\u30e9\u30fc\u30c6\u30a3\u30fc\u8a9e +VGujarati (Indien) p7820 sVmdf p7821 -V\u30e2\u30af\u30b7\u30e3\u8a9e +VMoksha p7822 sVmas p7823 -V\u30de\u30b5\u30a4\u8a9e +VMassajiska p7824 sVlao p7825 -V\u30e9\u30aa\u8a9e +VLaotiska (Laos) p7826 sVmdr p7827 -V\u30de\u30f3\u30c0\u30eb\u8a9e +VMandar p7828 sVgon p7829 -V\u30b4\u30fc\u30f3\u30c7\u30a3\u30fc\u8a9e +VGondi p7830 sVgoh p7831 -VGerman; Old High (ca. 750-1050) +VTyska; gammal hg (ca. 750-1050) p7832 sVsms p7833 -VSami; Skolt +VSamiska; Skolt p7834 sVsmo p7835 -V\u30b5\u30e2\u30a2\u8a9e +VSamoanska p7836 sVsmn p7837 -VSami; Inari +VSamiska; Inari p7838 sVsmj p7839 -V\u30eb\u30ec\u30fb\u30b5\u30fc\u30df\u8a9e +VSamiska; Lule p7840 sVgot p7841 -V\u30b4\u30fc\u30c8\u8a9e +VGotiska p7842 sVsme p7843 -VSami; Northern +VSamiska; norra p7844 sVdsb p7845 -VSorbian; Lower +VSorbian; nedre p7846 sVsma p7847 -VSami; Southern +VSamiska,; sdra p7848 sVgor p7849 -V\u30b4\u30ed\u30f3\u30bf\u30ed\u8a9e +VGorontalo p7850 sVast p7851 -VAsturian +VAsturiska p7852 sVorm p7853 -V\u30aa\u30ed\u30e2\u8a9e +VOromo ( Etiopien, Kenya) p7854 sVque p7855 -V\u30ad\u30c1\u30e5\u30ef\u8a9e +VQuechua p7856 sVori p7857 -V\u30aa\u30ea\u30e4\u30fc\u8a9e +VOriya p7858 sVcrh p7859 -VTurkish; Crimean +VTurkiska Krim p7860 sVasm p7861 -V\u30a2\u30c3\u30b5\u30e0\u8a9e +VAssamesiska p7862 sVpus p7863 -V\u30d7\u30b7\u30e5\u30c8\u30a5\u30fc\u8a9e +VPashto p7864 sVdgr p7865 -V\u30c9\u30af\u30ea\u30d6\u8a9e +VDogrib p7866 sVltz p7867 @@ -15726,27 +15726,27 @@ VLuxembourgish p7868 sVgez p7869 -V\u30b2\u30fc\u30ba\u8a9e +VGeez; fornetiopiska p7870 sVisl p7871 -V\u30a2\u30a4\u30b9\u30e9\u30f3\u30c9\u8a9e +VIslndska p7872 sVlat p7873 -V\u30e9\u30c6\u30f3\u8a9e +VLatin p7874 sVmak p7875 -V\u30de\u30ab\u30c3\u30b5\u30eb\u8a9e +VMakasar p7876 sVzap p7877 -V\u30b6\u30dd\u30c6\u30c3\u30af\u8a9e +VZapotek p7878 sVyid p7879 -V\u30a4\u30c7\u30a3\u30c3\u30b7\u30e5\u8a9e +VJiddisch p7880 sVkok p7881 @@ -15754,19 +15754,19 @@ VKonkani (macrolanguage) p7882 sVkom p7883 -V\u30b3\u30df\u8a9e +VKomi p7884 sVkon p7885 -V\u30b3\u30f3\u30b4\u8a9e +VKongo p7886 sVukr p7887 -V\u30a6\u30af\u30e9\u30a4\u30ca\u8a9e +VUkrainska p7888 sVton p7889 -V\u30c8\u30f3\u30ac\u8a9e (\u30c8\u30f3\u30ac\u8af8\u5cf6) +VTonga (Tongaarna) p7890 sVzxx p7891 @@ -15774,43 +15774,43 @@ VNo linguistic content p7892 sVkos p7893 -V\u30b3\u30b9\u30e9\u30a8\u8a9e +VKusaie p7894 sVkor p7895 -V\u671d\u9bae\u8a9e +VKoreanska p7896 sVtog p7897 -V\u30c8\u30f3\u30ac\u8a9e (\u30cb\u30a2\u30b5) +VTonga (Nyasa) p7898 sVhun p7899 -V\u30cf\u30f3\u30ac\u30ea\u30fc\u8a9e +VUngerska p7900 sVhup p7901 -V\u30a2\u30bf\u30d1\u30b9\u30ab\u8a9e +VHupa p7902 sVcym p7903 -V\u30a6\u30a7\u30fc\u30eb\u30ba\u8a9e +VKymriska p7904 sVudm p7905 -V\u30a6\u30c9\u30e0\u30eb\u30c8\u8a9e +VUdmurt p7906 sVbej p7907 -V\u30d9\u30b8\u30e3\u8a9e +VBeyja p7908 sVben p7909 -V\u30d9\u30f3\u30ac\u30eb\u8a9e +VBengaliska p7910 sVbel p7911 -V\u767d\u30ed\u30b7\u30a2\u8a9e +VVitryska p7912 sVbem p7913 @@ -15818,59 +15818,59 @@ VBemba (Zambia) p7914 sVaar p7915 -V\u30a2\u30d5\u30a1\u30eb\u8a9e +VAfar p7916 sVnzi p7917 -V\u30f3\u30bc\u30de\u8a9e +VNzima p7918 sVsah p7919 -V\u30e4\u30af\u30fc\u30c8\u8a9e +VJakutiska p7920 sVsan p7921 -V\u68b5\u8a9e +VSanskrit p7922 sVsam p7923 -VAramaic; Samaritan +VArameiska; samariska p7924 sVpro p7925 -V\u30d7\u30ed\u30f4\u30a1\u30f3\u30b9\u8a9e; \u53e4\u671f (-1500) +VProvensalska; gammal (-1500) p7926 sVsag p7927 -V\u30b5\u30f3\u30b4\u8a9e +VSango p7928 sVsad p7929 -V\u30b5\u30f3\u30c0\u30a6\u30a7\u8a9e +VSandawe p7930 sVanp p7931 -V\u30a2\u30f3\u30ae\u30ab\u8a9e +VAngika p7932 sVrap p7933 -V\u30e9\u30d1\u30cc\u30fc\u30a4\u8a9e +VRapanui p7934 sVsas p7935 -V\u30b5\u30b5\u30af\u8a9e +VSasak p7936 sVnqo p7937 -V\u30f3\u30b3\u6587\u5b57 +VN'Ko p7938 sVsat p7939 -V\u30b5\u30f3\u30bf\u30fc\u30ea\u30fc\u8a9e +VSantali p7940 sVmin p7941 -V\u30df\u30ca\u30f3\u30ab\u30d0\u30a6\u8a9e +VMinangkabau p7942 sVlim p7943 @@ -15878,35 +15878,35 @@ VLimburgan p7944 sVlin p7945 -V\u30ea\u30f3\u30ac\u30e9\u8a9e +VLingala (Kongo-Kinshasa, Kongo-Brazzaville) p7946 sVlit p7947 -V\u30ea\u30c8\u30a2\u30cb\u30a2\u8a9e +VLitauiska p7948 sVefi p7949 -V\u30a8\u30d5\u30a3\u30af\u8a9e +VEfik p7950 sVmis p7951 -VUncoded languages +VOkodade sprk p7952 sVkac p7953 -V\u30ab\u30c1\u30f3\u8a9e +VKachin p7954 sVkab p7955 -V\u30ab\u30d3\u30eb\u8a9e +VKabyliska p7956 sVkaa p7957 -V\u30ab\u30e9\u30fb\u30ab\u30eb\u30d1\u30af\u8a9e +VKarakalpakiska p7958 sVkan p7959 -V\u30ab\u30f3\u30ca\u30c0\u8a9e +VKannada (Indien) p7960 sVkam p7961 @@ -15914,39 +15914,39 @@ VKamba (Kenya) p7962 sVkal p7963 -VKalaallisut +VGrnlndska (Kalaallisut) p7964 sVkas p7965 -V\u30ab\u30b7\u30df\u30fc\u30ea\u30fc\u8a9e +VKashmiri p7966 sVkaw p7967 -V\u30ab\u30a6\u30a3\u8a9e +VKiwi; fornjavanska p7968 sVkau p7969 -V\u30ab\u30cc\u30ea\u8a9e +VKanuri p7970 sVkat p7971 -V\u30b0\u30eb\u30b8\u30a2\u8a9e +VGeorgiska p7972 sVkaz p7973 -V\u30ab\u30b6\u30fc\u30d5\u8a9e +VKazakiska (Kazakstan) p7974 sVtyv p7975 -V\u30c4\u30d0\u30cb\u30a2\u8a9e +VTuvinska p7976 sVawa p7977 -V\u30a2\u30ef\u30c7\u30a3\u8a9e +VAwadhi p7978 sVurd p7979 -V\u30a6\u30eb\u30c9\u30a5\u30fc\u8a9e +VUrdu (Pakistan, Indien) p7980 sVdoi p7981 @@ -15954,27 +15954,27 @@ VDogri (macrolanguage) p7982 sVtpi p7983 -V\u30c8\u30c3\u30af\u30fb\u30d4\u30b8\u30f3 +VTok Pisin p7984 sVmri p7985 -V\u30de\u30aa\u30ea\u8a9e +VMaoriska p7986 sVabk p7987 -V\u30a2\u30d6\u30cf\u30b8\u30a2\u8a9e +VAbchaziska p7988 sVtkl p7989 -V\u30c8\u30b1\u30e9\u30a6\u8a9e +VTokelau p7990 sVnld p7991 -V\u30aa\u30e9\u30f3\u30c0\u8a9e +VNederlndska p7992 sVoji p7993 -V\u30aa\u30b8\u30d6\u30ef\u8a9e +VOdjibwa (chippewa) p7994 sVoci p7995 @@ -15982,15 +15982,15 @@ VOccitan (post 1500) p7996 sVwol p7997 -V\u30a6\u30a9\u30ed\u30d5\u8a9e +VWolof (Senegal, Gambia, Mauretanien) p7998 sVjav p7999 -V\u30b8\u30e3\u30ef\u8a9e +VJavanesiska p8000 sVhrv p8001 -V\u30af\u30ed\u30a2\u30c1\u30a2\u8a9e +VKroatiska p8002 sVzza p8003 @@ -15998,95 +15998,95 @@ VZaza p8004 sVmga p8005 -V\u30a2\u30a4\u30eb\u30e9\u30f3\u30c9\u8a9e; \u4e2d\u4e16 (900-1200) +Virlndsk; medel (900-1200) p8006 sVhit p8007 -V\u30d2\u30c3\u30bf\u30a4\u30c8\u8a9e +VHettitiska sprk p8008 sVdyu p8009 -V\u30c7\u30e5\u30e9\u8a9e +VDyula p8010 sVssw p8011 -V\u30b7\u30b9\u30ef\u30c6\u30a3\u8a9e +VSwazi p8012 sVmul p8013 -V\u591a\u8a00\u8a9e +VFlera sprk p8014 sVhil p8015 -V\u30d2\u30ea\u30b8\u30e3\u30ce\u30f3\u8a9e +VHiligaynon p8016 sVhin p8017 -V\u30d2\u30f3\u30c7\u30a3\u30fc\u8a9e +VHindi p8018 sVbas p8019 -VBasa (Cameroon) +VBasa (Kamerun) p8020 sVgba p8021 -VGbaya (Central African Republic) +VGbaya (Centralafrikanska republiken) p8022 sVwln p8023 -V\u30ef\u30ed\u30f3\u8a9e +VVallonska p8024 sVnep p8025 -V\u30cd\u30d1\u30fc\u30eb\u8a9e +VNepalesiska p8026 sVcre p8027 -V\u30af\u30ea\u30fc\u8a9e +VCree p8028 sVban p8029 -V\u30d0\u30ea\u8a9e +VBalinesiska p8030 sVbal p8031 -V\u30d0\u30eb\u30fc\u30c1\u30fc\u8a9e +VBaluchi p8032 sVbam p8033 -V\u30d0\u30f3\u30d0\u30e9\u8a9e +VBambara (Vstafrika) p8034 sVbak p8035 -V\u30d0\u30b7\u30ad\u30fc\u30eb\u8a9e +VBasjkiriska p8036 sVshn p8037 -V\u30b7\u30e3\u30f3\u8a9e +VShan p8038 sVarp p8039 -V\u30a2\u30e9\u30d1\u30db\u30fc\u8a9e +VArapaho p8040 sVarw p8041 -V\u30a2\u30e9\u30ef\u30af\u8a9e +VArawakiska p8042 sVara p8043 -V\u30a2\u30e9\u30d3\u30a2\u8a9e +VArabiska p8044 sVarc p8045 -VAramaic; Official (700-300 BCE) +VArameiska; officiell (700-300 f.Kr.) p8046 sVarg p8047 -V\u30a2\u30e9\u30b4\u30f3\u8a9e +VAragonska p8048 sVsel p8049 -V\u30bb\u30ea\u30af\u30d7\u8a9e +VSelkup p8050 sVarn p8051 @@ -16094,43 +16094,43 @@ VMapudungun p8052 sVlus p8053 -V\u30eb\u30b7\u30e3\u30a4\u8a9e +VMizo (lushai) p8054 sVmus p8055 -V\u30af\u30ea\u30fc\u30af\u8a9e +VMuskogee p8056 sVlua p8057 -V\u30eb\u30d0\u30fb\u30eb\u30eb\u30a2\u8a9e +VLuba-Lulua p8058 sVlub p8059 -V\u30eb\u30d0\u8a9e +VLuba-Katanga p8060 sVlug p8061 -V\u30ac\u30f3\u30c0\u8a9e +VLuganda/Ganda (Uganda) p8062 sVlui p8063 -V\u30eb\u30a4\u30bb\u30cb\u30e7\u8a9e +VLuiseno p8064 sVlun p8065 -V\u30e9\u30f3\u30c0\u8a9e +VLunda p8066 sVluo p8067 -V\u30eb\u30aa\u8a9e (\u30b1\u30cb\u30a2\u3068\u30bf\u30f3\u30b6\u30cb\u30a2) +VLuo (Kenya och Tanzania) p8068 sViku p8069 -V\u30a4\u30cc\u30af\u30c1\u30bf\u30c3\u30c8\u8a9e +VInuktitut p8070 sVtur p8071 -V\u30c8\u30eb\u30b3\u8a9e +VTurkiska p8072 sVzbl p8073 @@ -16138,27 +16138,27 @@ VBlissymbols p8074 sVtuk p8075 -V\u30c8\u30a5\u30eb\u30af\u30e1\u30f3\u8a9e +VTurkmeniska p8076 sVtum p8077 -V\u30bf\u30f3\u30d6\u30ab\u8a9e +VTumbuka p8078 sVcop p8079 -V\u30b3\u30d7\u30c8\u8a9e +VKoptiska p8080 sVcos p8081 -V\u30b3\u30eb\u30b7\u30ab\u8a9e +VKorsikanska p8082 sVcor p8083 -V\u30b3\u30fc\u30f3\u30a6\u30a9\u30fc\u30eb\u8a9e +VKorniska p8084 sVilo p8085 -V\u30a4\u30ed\u30ab\u30ce\u8a9e +VIloko p8086 sVgwi p8087 @@ -16166,11 +16166,11 @@ VGwich\u02bcin p8088 sVund p8089 -V\u8a00\u8a9e\u540d\u4e0d\u660e +VOdefinierat p8090 sVtli p8091 -V\u30c8\u30ea\u30f3\u30ae\u30c3\u30c8\u8a9e +VTlingit p8092 sVtlh p8093 @@ -16178,67 +16178,67 @@ VKlingon p8094 sVpor p8095 -V\u30dd\u30eb\u30c8\u30ac\u30eb\u8a9e +VPortugisiska p8096 sVpon p8097 -V\u30dd\u30ca\u30da\u8a9e +VPonape p8098 sVpol p8099 -V\u30dd\u30fc\u30e9\u30f3\u30c9\u8a9e +VPolska p8100 sVang p8101 -VEnglish; Old (ca. 450-1100) +VEngelska; gammal (ca. 450-1100) p8102 sVtgk p8103 -V\u30bf\u30b8\u30af\u8a9e +VTadzjikiska (Tadzjikistan) p8104 sVtgl p8105 -V\u30bf\u30ac\u30ed\u30b0\u8a9e +VTagalog (Filippinerna) p8106 sVfra p8107 -V\u30d5\u30e9\u30f3\u30b9\u8a9e +VFranska p8108 sVdum p8109 -VDutch; Middle (ca. 1050-1350) +VHollnska; medeltida (ca. 1050-1350) p8110 sVswa p8111 -VSwahili (macrolanguage) +VSwahili p8112 sVdua p8113 -V\u30c9\u30a5\u30a2\u30e9\u8a9e +VDuala p8114 sVfro p8115 -VFrench; Old (842-ca. 1400) +VFranska; gammal (842-ca. 1400) p8116 sVyap p8117 -V\u30e4\u30c3\u30d7\u8a9e +VYap p8118 sVfrm p8119 -VFrench; Middle (ca. 1400-1600) +VFranska; medel (ca. 1400-1600) p8120 sVfrs p8121 -VFrisian; Eastern +VFrisian; stra p8122 sVfrr p8123 -VFrisian; Northern +VFrisian; norra p8124 sVyao p8125 -V\u30e4\u30aa\u8a9e +VYao p8126 sVxal p8127 @@ -16246,39 +16246,39 @@ VKalmyk p8128 sVfry p8129 -VFrisian; Western +VFrisian; vstra p8130 sVgay p8131 -V\u30ac\u30e8\u8a9e +VGayo p8132 sVota p8133 -V\u30c8\u30eb\u30b3\u8a9e; \u30aa\u30b9\u30de\u30f3 (1500-1928) +VOttomanska (1500-1928) p8134 sVhmn p8135 -V\u30d5\u30e2\u30f3\u30b0\u8a9e +VHmong p8136 sVhmo p8137 -V\u30d2\u30ea\u30e2\u30c8\u30a5\u8a9e +VHiri Motu p8138 sVgaa p8139 -V\u30ac\u8a9e +VGa p8140 sVfur p8141 -V\u30d5\u30ea\u30a6\u30ea\u8a9e +VFriuliska p8142 sVmlg p8143 -V\u30de\u30e9\u30ac\u30b7\u8a9e +VMadagaskiska p8144 sVslv p8145 -V\u30b9\u30ed\u30f4\u30a7\u30cb\u30a2\u8a9e +VSlovenska p8146 sVain p8147 @@ -16290,123 +16290,123 @@ VFilipino p8150 sVmlt p8151 -V\u30de\u30eb\u30bf\u8a9e +VMaltesiska (Malta) p8152 sVslk p8153 -V\u30b9\u30ed\u30f4\u30a1\u30ad\u30a2\u8a9e +VSlovakiska p8154 sVrar p8155 -VMaori; Cook Islands +VMaoriska; Cookarna p8156 sVful p8157 -V\u30d5\u30e9\u8a9e +VFulani p8158 sVjpn p8159 -V\u65e5\u672c\u8a9e +VJapanska p8160 sVvol p8161 -V\u30dc\u30e9\u30d4\u30e5\u30fc\u30af\u8a9e +VVolapk p8162 sVvot p8163 -V\u30f4\u30a9\u30fc\u30c8\u8a9e +VVotiska p8164 sVind p8165 -V\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u8a9e +VIndonesiska p8166 sVave p8167 -V\u30a2\u30f4\u30a7\u30b9\u30bf\u8a9e +VAvestiska p8168 sVjpr p8169 -V\u30e6\u30c0\u30e4\u30fb\u30da\u30eb\u30b7\u30a2\u8a9e +VJudepersiska p8170 sVava p8171 -V\u30a2\u30f4\u30a1\u30eb\u8a9e +VAvariska p8172 sVpap p8173 -V\u30d1\u30d4\u30a2\u30e1\u30f3\u30c8 +VPapiamento p8174 sVewo p8175 -V\u30a8\u30a6\u30a9\u30f3\u30c9\u8a9e +VEwondo p8176 sVpau p8177 -V\u30d1\u30e9\u30aa\u8a9e +VPalauan p8178 sVewe p8179 -V\u30a8\u30a6\u30a7\u8a9e +VEwe p8180 sVpag p8181 -V\u30d1\u30f3\u30ac\u30b7\u30ca\u30fc\u30f3\u8a9e +VPangasinan p8182 sVpal p8183 -V\u30d1\u30fc\u30e9\u30f4\u30a3\u30fc\u8a9e +VPahlavi (medelpersiska) p8184 sVpam p8185 -V\u30d1\u30f3\u30d1\u30f3\u30ac\u8a9e +VPampanga (Filippinerna) p8186 sVpan p8187 -VPanjabi +VPunjabi (Indien) p8188 sVsyc p8189 -VSyriac; Classical +VSyriac; klassisk p8190 sVphn p8191 -V\u30d5\u30a7\u30cb\u30ad\u30a2\u8a9e +VFeniciska p8192 sVkir p8193 -V\u30ad\u30eb\u30ae\u30b9\u8a9e +VKirgisiska p8194 sVnia p8195 -V\u30cb\u30a2\u30b9\u8a9e +VNias p8196 sVkik p8197 -V\u30ad\u30af\u30e6\u8a9e +VKikuyu (Kenya) p8198 sVsyr p8199 -V\u30b7\u30ea\u30a2\u8a9e +VSyriska p8200 sVkin p8201 -V\u30ad\u30f3\u30e4\u30eb\u30ef\u30f3\u30c0\u8a9e +VKinyarwanda (Rwanda) p8202 sVniu p8203 -V\u30cb\u30a6\u30fc\u30a8\u30a4\u8a9e +VNiuean p8204 sVgsw p8205 -VGerman; Swiss +VTyska; Schweizisk p8206 sVepo p8207 -V\u30a8\u30b9\u30da\u30e9\u30f3\u30c8 +VEsperanto p8208 sVjbo p8209 -V\u30ed\u30b8\u30d0\u30f3\u8a9e +VLojban p8210 sVmic p8211 @@ -16414,31 +16414,31 @@ VMi'kmaq p8212 sVtha p8213 -V\u30bf\u30a4\u8a9e +VThailndska p8214 sVhai p8215 -V\u30cf\u30a4\u30c0\u8a9e +VHaida p8216 sVgmh p8217 -VGerman; Middle High (ca. 1050-1500) +VTyska; medelhg (ca. 1050-1500) p8218 sVell p8219 -V\u30ae\u30ea\u30b7\u30a2\u8a9e; \u73fe\u4ee3 (1453-) +VGrekiska; modern (1453-) p8220 sVady p8221 -VAdyghe +VAdygeiska p8222 sVelx p8223 -V\u30a8\u30e9\u30e0\u8a9e +VElamitiska p8224 sVada p8225 -V\u30a2\u30c0\u30f3\u30b0\u30e1\u8a9e +VAdangme p8226 sVnav p8227 @@ -16446,207 +16446,207 @@ VNavajo p8228 sVhat p8229 -VCreole; Haitian +VKreolsprk; haitisk kreol p8230 sVhau p8231 -V\u30cf\u30a6\u30b5\u8a9e +VHaussa p8232 sVhaw p8233 -V\u30cf\u30ef\u30a4\u8a9e +VHawaiiska p8234 sVbin p8235 -V\u30d3\u30cb\u8a9e +VEdo (bini) p8236 sVamh p8237 -V\u30a2\u30e0\u30cf\u30e9\u8a9e +VAmhariska (Etiopien) p8238 sVbik p8239 -V\u30d3\u30b3\u30eb\u8a9e +VBikol p8240 sVmos p8241 -V\u30e2\u30c3\u30b7\u30fc\u8a9e +VMossi p8242 sVmoh p8243 -V\u30e2\u30fc\u30db\u30fc\u30af\u8a9e +VMohawk p8244 sVmon p8245 -V\u8499\u53e4\u8a9e +VMongoliska p8246 sVbho p8247 -V\u30dc\u30fc\u30b8\u30d7\u30ea\u30fc\u8a9e +VBhojpuri p8248 sVbis p8249 -V\u30d3\u30b9\u30e9\u30de\u8a9e +VBislama p8250 sVtvl p8251 -V\u30c4\u30d0\u30eb\u8a9e +VTuvaluan p8252 sVest p8253 -V\u30a8\u30b9\u30c8\u30cb\u30a2\u8a9e +VEstniska p8254 sVkmb p8255 -V\u30ad\u30f3\u30d6\u30f3\u30c9\u30a5\u8a9e +VMbundu (kimbundu) p8256 sVpeo p8257 -VPersian; Old (ca. 600-400 B.C.) +VPersiska; antik (ca. 600-400 f.Kr.) p8258 sVumb p8259 -V\u30a2\u30f3\u30d6\u30f3\u30c9\u30a5\u8a9e +VUmbundu p8260 sVtmh p8261 -V\u30bf\u30de\u30b7\u30a7\u30af\u8a9e +VTamashek p8262 sVfon p8263 -V\u30d5\u30a9\u30f3\u8a9e +VFon p8264 sVhsb p8265 -VSorbian; Upper +VSorbiska; vre p8266 sVrun p8267 -V\u30eb\u30f3\u30c7\u30a3\u8a9e +VRundi p8268 sVrus p8269 -V\u30ed\u30b7\u30a2\u8a9e +VRyska p8270 sVrup p8271 -VRomanian; Macedo- +VRumnska; Macedo- p8272 sVpli p8273 -V\u30d1\u30fc\u30ea\u8a9e +VPali p8274 sVace p8275 -V\u30a2\u30c1\u30a7\u30fc\u8a9e +VAcehnesiska (Indonesien) p8276 sVach p8277 -V\u30a2\u30c1\u30e7\u30ea\u8a9e +VAcoli (Uganda) p8278 sVnde p8279 -V\u30de\u30bf\u30d9\u30ec\u8a9e; \u5317 +VNdebele; norra p8280 sVdzo p8281 -V\u30be\u30f3\u30ab\u8a9e +VBhutanesiska (Dzongkha) p8282 sVkru p8283 -V\u30af\u30eb\u30af\u8a9e +VKurukh p8284 sVsrr p8285 -V\u30bb\u30ec\u30fc\u30eb\u8a9e +VSerer p8286 sVido p8287 -V\u30a4\u30c9\u8a9e +VIdo p8288 sVsrp p8289 -V\u30bb\u30eb\u30d3\u30a2\u8a9e +VSerbiska p8290 sVkrl p8291 -V\u30ab\u30ec\u30ea\u30a2\u8a9e +VKarelska p8292 sVkrc p8293 -V\u30ab\u30e9\u30c1\u30e3\u30a4\u30fb\u30d0\u30eb\u30ab\u30eb\u8a9e +VKaratjaj-balkar p8294 sVnds p8295 -VGerman; Low +VTyska; lg p8296 sVzun p8297 -V\u30ba\u30cb\u8a9e +VZuni p8298 sVzul p8299 -V\u30ba\u30fc\u30eb\u30fc\u8a9e +VZulu (Sydafrika, Malawi, Moambique, Swaziland) p8300 sVtwi p8301 -V\u30c8\u30a6\u30a3\u8a9e +VTwi p8302 sVsog p8303 -V\u30bd\u30b0\u30c9\u8a9e +VSogdiska p8304 sVnso p8305 -VSotho; Northern +VNordsotho p8306 sVswe p8307 -V\u30b9\u30a6\u30a7\u30fc\u30c7\u30f3\u8a9e +VSvenska p8308 sVsom p8309 -V\u30bd\u30de\u30ea\u8a9e +VSomaliska p8310 sVsot p8311 -V\u30bd\u30c8\u8a9e; \u5357 +VSotho; sdra p8312 sVmkd p8313 -V\u30de\u30b1\u30c9\u30cb\u30a2\u8a9e +VMakedonska p8314 sVher p8315 -V\u30d8\u30ec\u30ed\u8a9e +VHerero p8316 sVlol p8317 -V\u30e2\u30f3\u30b4\u8a9e +VLolo (mongo) p8318 sVheb p8319 -V\u30d8\u30d6\u30e9\u30a4\u8a9e +VHebreiska p8320 sVloz p8321 -V\u30ed\u30b8\u8a9e +VLozi p8322 sVgil p8323 -V\u30ad\u30ea\u30d0\u30b9\u8a9e +VGilbertesiska p8324 sVwas p8325 -V\u30ef\u30b7\u30e7\u8a9e +VWasho p8326 sVwar p8327 -VWaray (Philippines) +VWaray (Filippinerna) p8328 sVbul p8329 -V\u30d6\u30eb\u30ac\u30ea\u30a2\u8a9e +VBulgariska p8330 sVwal p8331 @@ -16654,15 +16654,15 @@ VWolaytta p8332 sVbua p8333 -V\u30d6\u30ea\u30e4\u30fc\u30c8\u8a9e +VBurjatiska p8334 sVbug p8335 -V\u30d6\u30ae\u8a9e +VBuginesiska p8336 sVaze p8337 -V\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3\u8a9e +VAzerbajdzjanska p8338 sVzha p8339 @@ -16670,1586 +16670,1586 @@ VZhuang p8340 sVzho p8341 -V\u4e2d\u56fd\u8a9e +VKinesiska p8342 sVnno p8343 -V\u30cb\u30fc\u30ce\u30b7\u30e5\u30af\u30fb\u30ce\u30eb\u30a6\u30a7\u30fc\u8a9e +VNynorsk p8344 sVuig p8345 -V\u30a6\u30a4\u30b0\u30eb\u8a9e +VUighurUiguriska (Kina, Kazakstan, Pakistan, Kirgizistan, Tadzjikistan, Indien) p8346 sVmyv p8347 -V\u30a8\u30eb\u30b8\u30e3\u8a9e +VErzya p8348 sVinh p8349 -V\u30a4\u30f3\u30b0\u30fc\u30b7\u8a9e +VIngusj p8350 sVkhm p8351 -VKhmer; Central +VKhmer (Kambodja) p8352 sVkho p8353 -V\u30db\u30fc\u30bf\u30f3\u8a9e +VSakiska (khotanesiska) p8354 sVmya p8355 -V\u30d3\u30eb\u30de\u8a9e +VBurmanska p8356 sVkha p8357 -V\u30ab\u30b7\u8a9e +VKhasi p8358 sVina p8359 -V\u30a4\u30f3\u30bf\u30fc\u30ea\u30f3\u30b0\u30a2\u8a9e (\u56fd\u969b\u88dc\u52a9\u8a9e\u5354\u4f1a) +VInterlingua (International Auxiliary Language Association) p8360 sVtiv p8361 -V\u30c6\u30a3\u30d6\u8a9e +VTivi p8362 sVtir p8363 -V\u30c6\u30a3\u30b0\u30ea\u30cb\u30a2\u8a9e +VTigrinja (Etiopien, Eritrea) p8364 sVnap p8365 -V\u30ca\u30dd\u30ea\u8a9e +VNeapolitansk italienska p8366 sVgrb p8367 -V\u30b0\u30ec\u30dc\u8a9e +VGrebo p8368 sVgrc p8369 -V\u30ae\u30ea\u30b7\u30a2\u8a9e; \u53e4\u4ee3 (-1453) +VGrekiska; antik (-1453) p8370 sVnau p8371 -V\u30ca\u30a6\u30eb\u8a9e +VNauruanska p8372 sVgrn p8373 -V\u30b0\u30a2\u30e9\u30cb\u30fc\u8a9e +VGuarani p8374 sVtig p8375 -V\u30c6\u30a3\u30b0\u30ec\u8a9e +VTigre (Eritrea) p8376 sVyor p8377 -V\u30e8\u30eb\u30d0\u8a9e +VYoruba p8378 sVile p8379 -V\u30a4\u30f3\u30bf\u30fc\u30ea\u30f3\u30b0 +VInterlingue p8380 sVsqi p8381 -V\u30a2\u30eb\u30d0\u30cb\u30a2\u8a9e +VAlbanska p8382 -ssS'pl' +ssS'ja' p8383 (dp8384 Vroh p8385 -Vretoroma\u0144ski +VRomansh p8386 sVsco p8387 -Vscots +V\u30b9\u30b3\u30c3\u30c8\u30e9\u30f3\u30c9\u8a9e p8388 sVscn p8389 -Vsycylijski +V\u30b7\u30c1\u30ea\u30a2\u8a9e p8390 sVrom p8391 -Vromski +V\u30ed\u30de\u30cb\u8a9e p8392 sVron p8393 -Vrumu\u0144ski +V\u30eb\u30fc\u30de\u30cb\u30a2\u8a9e p8394 sVoss p8395 -Vosetyjski +VOssetian p8396 sVale p8397 -Valeucki +V\u30a2\u30ec\u30a6\u30c8\u8a9e p8398 sVmni p8399 -Vmanipuri +V\u30de\u30cb\u30d7\u30eb\u8a9e p8400 sVnwc p8401 -Vnewarski klasyczny +VNewari; Old p8402 sVosa p8403 -Vosage +V\u30aa\u30fc\u30bb\u30fc\u30b8\u8a9e p8404 sValt p8405 -Va\u0142tajski po\u0142udniowy +VAltai; Southern p8406 sVmnc p8407 -Vmand\u017curski +V\u6e80\u5dde\u8a9e p8408 sVmwr p8409 -Vmarwari +V\u30de\u30eb\u30ef\u30ea\u8a9e p8410 sVven p8411 -Vvenda +V\u30d9\u30f3\u30c0\u8a9e p8412 sVuga p8413 -Vugarycki +V\u30a6\u30ac\u30ea\u30c3\u30c8\u8a9e p8414 sVmwl p8415 -Vmirandyjski +V\u30df\u30e9\u30f3\u30c9\u8a9e p8416 sVfas p8417 -Vperski +V\u30da\u30eb\u30b7\u30a2\u8a9e p8418 sVfat p8419 -Vfanti +V\u30d5\u30a1\u30f3\u30c6\u30a3\u30fc\u8a9e p8420 sVfan p8421 -Vfang (Gwinea Rwnikowa) +VFang (Equatorial Guinea) p8422 sVfao p8423 -Vfarerski +V\u30d5\u30a7\u30ed\u30fc\u8a9e p8424 sVdin p8425 -Vdinka +V\u30c7\u30a3\u30f3\u30ab\u8a9e p8426 sVhye p8427 -Vormia\u0144ski +V\u30a2\u30eb\u30e1\u30cb\u30a2\u8a9e p8428 sVbla p8429 -Vsiksika +V\u30d6\u30e9\u30c3\u30af\u30d5\u30c3\u30c8\u8a9e p8430 sVsrd p8431 -Vsardy\u0144ski +V\u30b5\u30eb\u30c7\u30fc\u30cb\u30e3\u8a9e p8432 sVcar p8433 -Vkaraibski galibi +VCarib; Galibi p8434 sVdiv p8435 -Vmalediwski; divehi +VDhivehi p8436 sVtel p8437 -Vtelugu +V\u30c6\u30eb\u30b0\u8a9e p8438 sVtem p8439 -Vtemne +V\u30c6\u30e0\u30cd\u8a9e p8440 sVnbl p8441 -Vndebele po\u0142udniowy +V\u30cc\u30c7\u30d9\u30ec\u8a9e; \u5357 p8442 sVter p8443 -Vtereno +V\u30c6\u30ec\u30fc\u30ce\u8a9e p8444 sVtet p8445 -Vtetum +V\u30c6\u30c8\u30a5\u30f3\u8a9e p8446 sVsun p8447 -Vsundajski +V\u30b9\u30f3\u30c0\u8a9e p8448 sVkut p8449 -Vkutenai +V\u30af\u30c6\u30ca\u30a4\u8a9e p8450 sVsuk p8451 -Vsukuma +V\u30b9\u30af\u30de\u8a9e p8452 sVkur p8453 -Vkurdyjski +V\u30af\u30eb\u30c9\u8a9e p8454 sVkum p8455 -Vkumycki +V\u30af\u30df\u30c3\u30af\u8a9e p8456 sVsus p8457 -Vsusu +V\u30b9\u30b9\u8a9e p8458 sVnew p8459 -Vnewarski +VBhasa; Nepal p8460 sVkua p8461 -Vkwanyama +V\u30af\u30a2\u30cb\u30e3\u30de\u8a9e p8462 sVsux p8463 -Vsumeryjski +V\u30b7\u30e5\u30e1\u30fc\u30eb\u8a9e p8464 sVmen p8465 -Vmende (Sierra Leone) +VMende (Sierra Leone) p8466 sVlez p8467 -Vlezgi\u0144ski +V\u30ec\u30ba\u30ae\u8a9e p8468 sVgla p8469 -Vszkocki gaelicki +VGaelic; Scottish p8470 sVbos p8471 -Vbo\u015bniacki +V\u30dc\u30b9\u30cb\u30a2\u8a9e p8472 sVgle p8473 -Virlandzki +V\u30a2\u30a4\u30eb\u30e9\u30f3\u30c9\u8a9e p8474 sVeka p8475 -Vekajuk +V\u30a8\u30ab\u30b8\u30e5\u30af\u8a9e p8476 sVglg p8477 -Vgalicyjski +VGalician p8478 sVakk p8479 -Vakadyjski +V\u30a2\u30c3\u30ab\u30c9\u8a9e p8480 sVaka p8481 -Vakan +V\u30a2\u30ab\u30f3\u8a9e p8482 sVbod p8483 -Vtybeta\u0144ski +V\u30c1\u30d9\u30c3\u30c8\u8a9e p8484 sVglv p8485 -Vmanx +V\u30de\u30f3\u5cf6\u8a9e p8486 sVjrb p8487 -Vjudeoarabski +V\u30e6\u30c0\u30e4\u30fb\u30a2\u30e9\u30d3\u30a2\u8a9e p8488 sVvie p8489 -Vwietnamski +V\u30d9\u30c8\u30ca\u30e0\u8a9e p8490 sVipk p8491 -Vinupiaq +V\u30a4\u30cc\u30d4\u30a2\u30af\u8a9e p8492 sVuzb p8493 -Vuzbecki +V\u30a6\u30ba\u30d9\u30af\u8a9e p8494 sVsga p8495 -Vstaroirlandzki (do 900) +V\u30a2\u30a4\u30eb\u30e9\u30f3\u30c9\u8a9e; \u53e4 (-900) p8496 sVbre p8497 -Vbreto\u0144ski +V\u30d6\u30eb\u30c8\u30f3\u8a9e p8498 sVbra p8499 -Vbrad\u017a +V\u30d6\u30e9\u30b8\u8a9e p8500 sVaym p8501 -Vajmara +V\u30a2\u30a4\u30de\u30e9\u8a9e p8502 sVcha p8503 -Vczamorro +V\u30c1\u30e3\u30e2\u30ed\u8a9e p8504 sVchb p8505 -Vczibcza +V\u30c1\u30d6\u30c1\u30e3\u8a9e p8506 sVche p8507 -Vczecze\u0144ski +V\u30c1\u30a7\u30c1\u30a7\u30f3\u8a9e p8508 sVchg p8509 -Vczagatajski +V\u30c1\u30e3\u30ac\u30bf\u30a4\u8a9e p8510 sVchk p8511 -Vchuuk +V\u30c1\u30e5\u30fc\u30af\u8a9e p8512 sVchm p8513 -Vmaryjski (Rosja) +VMari (Russia) p8514 sVchn p8515 -V\u017cargon chinoocki +V\u30c1\u30cc\u30fc\u30af\u6df7\u6210\u8a9e p8516 sVcho p8517 -Vczoktaw +V\u30c1\u30e7\u30af\u30c8\u30fc\u8a9e p8518 sVchp p8519 -Vchipewyan +V\u30c1\u30da\u30ef\u30a4\u30a2\u30f3\u8a9e p8520 sVchr p8521 -Vczerokeski +V\u30c1\u30a7\u30ed\u30ad\u30fc\u8a9e p8522 sVchu p8523 -Vstaros\u0142owia\u0144ski +VSlavonic; Old p8524 sVchv p8525 -Vczuwaski +V\u30c1\u30e5\u30f4\u30a1\u30b7\u30e5\u8a9e p8526 sVchy p8527 -Vczeje\u0144ski +V\u30b7\u30e3\u30a4\u30a2\u30f3\u8a9e p8528 sVmsa p8529 -Vmalajski (makroj\u0119zyk) +VMalay (macrolanguage) p8530 sViii p8531 -Vsyczua\u0144ski +VYi; Sichuan p8532 sVndo p8533 -Vndonga +V\u30f3\u30c9\u30f3\u30ac\u8a9e p8534 sVibo p8535 -Vibo +V\u30a4\u30dc\u8a9e p8536 sViba p8537 -Vibanag +V\u30a4\u30d0\u30f3\u8a9e p8538 sVxho p8539 -Vxhosa +V\u30db\u30b5\u8a9e p8540 sVdeu p8541 -Vniemiecki +V\u30c9\u30a4\u30c4\u8a9e p8542 sVcat p8543 -Vkatalo\u0144ski +V\u30ab\u30bf\u30ed\u30cb\u30a2\u8a9e p8544 sVdel p8545 -Vdelaware +V\u30c7\u30e9\u30a6\u30a7\u30a2\u8a9e p8546 sVden p8547 -Vslavey (atapaska\u0144ski) +V\u30b9\u30ec\u30fc\u30d6\u8a9e (\u30a2\u30b5\u30d1\u30b9\u30ab\u30f3\u8a9e) p8548 sVcad p8549 -Vkaddo +V\u30ab\u30c9\u30fc\u8a9e p8550 sVtat p8551 -Vtatarski +V\u30bf\u30bf\u30fc\u30eb\u8a9e p8552 sVsrn p8553 -Vsranan tongo +VSranan Tongo p8554 sVraj p8555 -Vrad\u017aasthani +V\u30e9\u30fc\u30b8\u30e3\u30b9\u30bf\u30fc\u30cb\u30fc\u8a9e p8556 sVtam p8557 -Vtamilski +V\u30bf\u30df\u30eb\u8a9e p8558 sVspa p8559 -Vhiszpa\u0144ski +V\u30b9\u30da\u30a4\u30f3\u8a9e p8560 sVtah p8561 -Vtahita\u0144ski +V\u30bf\u30d2\u30c1\u8a9e p8562 sVafh p8563 -Vafrihili +V\u30a2\u30d5\u30ea\u30d2\u30ea p8564 sVeng p8565 -VAngielski +V\u82f1\u8a9e p8566 sVenm p8567 -Vangielski \u015bredniowieczny (1100-1500) +V\u82f1\u8a9e; \u4e2d\u4e16 (1100-1500) p8568 sVcsb p8569 -Vkaszubski +V\u30ab\u30b7\u30e5\u30d3\u30a2\u30f3\u8a9e p8570 sVnyn p8571 -Vnyankole +V\u30cb\u30e3\u30f3\u30b3\u30fc\u30eb\u8a9e p8572 sVnyo p8573 -Vnyoro +V\u30cb\u30e7\u30ed\u8a9e p8574 sVsid p8575 -Vsidamo +V\u30b7\u30c0\u30e2\u8a9e p8576 sVnya p8577 -Vnjand\u017ca +VNyanja p8578 sVsin p8579 -Vsyngaleski +V\u30b7\u30f3\u30cf\u30e9\u6587\u5b57 p8580 sVafr p8581 -Vafrykanerski +V\u30a2\u30d5\u30ea\u30ab\u30fc\u30f3\u30b9\u8a9e p8582 sVlam p8583 -Vlamba +V\u30e9\u30f3\u30d0\u8a9e p8584 sVsnd p8585 -Vsindhi +V\u30b7\u30f3\u30c7\u30a3\u30fc\u8a9e p8586 sVmar p8587 -Vmarathi +V\u30de\u30e9\u30fc\u30c6\u30a3\u30fc\u8a9e p8588 sVlah p8589 -Vlahnda +V\u30e9\u30d5\u30f3\u30c0\u30fc\u8a9e p8590 sVnym p8591 -Vnyamwezi +V\u30e0\u30a8\u30b8\u8a9e p8592 sVsna p8593 -Vshona +V\u30b7\u30e7\u30ca\u8a9e p8594 sVlad p8595 -Vladino +V\u30e9\u30b8\u30ce\u8a9e p8596 sVsnk p8597 -Vsoninke +V\u30bd\u30cb\u30f3\u30b1\u8a9e p8598 sVmad p8599 -Vmadurajski +V\u30de\u30c9\u30a5\u30e9\u8a9e p8600 sVmag p8601 -Vmagahi +V\u30de\u30ac\u30d2\u8a9e p8602 sVmai p8603 -Vmaithili +V\u30de\u30a4\u30c1\u30ea\u8a9e p8604 sVmah p8605 -Vmarshalski +VMarshallese p8606 sVlav p8607 -V\u0142otewski +V\u30e9\u30c8\u30f4\u30a3\u30a2\u8a9e p8608 sVmal p8609 -Vmalajalam +V\u30de\u30e9\u30e4\u30fc\u30e9\u30e0\u8a9e p8610 sVman p8611 -Vmandingo +V\u30de\u30f3\u30c7\u30a3\u30f3\u30b4\u8a9e p8612 sVegy p8613 -Vegipski (staro\u017cytny) +V\u30a8\u30b8\u30d7\u30c8\u8a9e (\u53e4\u4ee3) p8614 sVzen p8615 -Vzenaga +V\u30bc\u30ca\u30ac\u8a9e p8616 sVkbd p8617 -Vkabardyjski +V\u30ab\u30d0\u30eb\u30c0\u8a9e p8618 sVita p8619 -Vw\u0142oski +V\u30a4\u30bf\u30ea\u30a2\u8a9e p8620 sVvai p8621 -Vwai +V\u30f4\u30a1\u30a4\u8a9e p8622 sVtsn p8623 -Vtswana +V\u30c4\u30ef\u30ca\u8a9e p8624 sVtso p8625 -Vtsonga +V\u30c4\u30a9\u30f3\u30ac\u8a9e p8626 sVtsi p8627 -Vtsimszian +V\u30c1\u30e0\u30b7\u30e5\u8a9e p8628 sVbyn p8629 -Vblin +VBilin p8630 sVfij p8631 -Vfid\u017cyjski +V\u30d5\u30a3\u30b8\u30fc\u8a9e p8632 sVfin p8633 -Vfi\u0144ski +V\u30d5\u30a3\u30f3\u8a9e p8634 sVeus p8635 -Vbaskijski +V\u30d0\u30b9\u30af\u8a9e p8636 sVnon p8637 -Vstaronordyjski +V\u30b9\u30ab\u30f3\u30b8\u30ca\u30d3\u30a2\u8a9e; \u53e4\u671f p8638 sVceb p8639 -Vcebua\u0144ski +V\u30bb\u30d6\u30a2\u30ce\u8a9e p8640 sVdan p8641 -Vdu\u0144ski +V\u30c7\u30f3\u30de\u30fc\u30af\u8a9e p8642 sVnog p8643 -Vnogajski +V\u30ce\u30ac\u30a4\u8a9e p8644 sVnob p8645 -Vnorweski Bokml +VNorwegian Bokml p8646 sVdak p8647 -Vdakota +V\u30c0\u30b3\u30bf\u8a9e p8648 sVces p8649 -Vczeski +V\u30c1\u30a7\u30b3\u8a9e p8650 sVdar p8651 -Vdargwijski +V\u30c0\u30eb\u30ac\u30f3\u8a9e p8652 sVnor p8653 -Vnorweski +V\u30ce\u30eb\u30a6\u30a7\u30fc\u8a9e p8654 sVkpe p8655 -Vkpelle +V\u30af\u30da\u30ec\u8a9e p8656 sVguj p8657 -Vgud\u017aarati +V\u30b0\u30b8\u30e3\u30e9\u30fc\u30c6\u30a3\u30fc\u8a9e p8658 sVmdf p8659 -Vmoksza +V\u30e2\u30af\u30b7\u30e3\u8a9e p8660 sVmas p8661 -Vmasajski +V\u30de\u30b5\u30a4\u8a9e p8662 sVlao p8663 -Vlaota\u0144ski +V\u30e9\u30aa\u8a9e p8664 sVmdr p8665 -Vmandar +V\u30de\u30f3\u30c0\u30eb\u8a9e p8666 sVgon p8667 -Vgondi +V\u30b4\u30fc\u30f3\u30c7\u30a3\u30fc\u8a9e p8668 sVgoh p8669 -Vstaro-wysoko-niemiecki (ok. 750-1050) +VGerman; Old High (ca. 750-1050) p8670 sVsms p8671 -Vlapo\u0144ski skolt +VSami; Skolt p8672 sVsmo p8673 -Vsamoa\u0144ski +V\u30b5\u30e2\u30a2\u8a9e p8674 sVsmn p8675 -Vlapo\u0144ski inari +VSami; Inari p8676 sVsmj p8677 -Vlapo\u0144ski lule +V\u30eb\u30ec\u30fb\u30b5\u30fc\u30df\u8a9e p8678 sVgot p8679 -Vgocki +V\u30b4\u30fc\u30c8\u8a9e p8680 sVsme p8681 -Vp\u0142nocnolapo\u0144ski +VSami; Northern p8682 sVdsb p8683 -Vdolno\u0142u\u017cycki +VSorbian; Lower p8684 sVsma p8685 -Vpo\u0142udniowolapo\u0144ski +VSami; Southern p8686 sVgor p8687 -Vgorontalo +V\u30b4\u30ed\u30f3\u30bf\u30ed\u8a9e p8688 sVast p8689 -Vasturyjski +VAsturian p8690 sVorm p8691 -Voromo +V\u30aa\u30ed\u30e2\u8a9e p8692 sVque p8693 -Vkeczua +V\u30ad\u30c1\u30e5\u30ef\u8a9e p8694 sVori p8695 -Vorija +V\u30aa\u30ea\u30e4\u30fc\u8a9e p8696 sVcrh p8697 -Vkrymskotatarski +VTurkish; Crimean p8698 sVasm p8699 -Vasamski +V\u30a2\u30c3\u30b5\u30e0\u8a9e p8700 sVpus p8701 -Vpaszto +V\u30d7\u30b7\u30e5\u30c8\u30a5\u30fc\u8a9e p8702 sVdgr p8703 -Vdogrib +V\u30c9\u30af\u30ea\u30d6\u8a9e p8704 sVltz p8705 -Vluksemburski +VLuxembourgish p8706 sVgez p8707 -Vgyyz +V\u30b2\u30fc\u30ba\u8a9e p8708 sVisl p8709 -Vislandzki +V\u30a2\u30a4\u30b9\u30e9\u30f3\u30c9\u8a9e p8710 sVlat p8711 -V\u0142aci\u0144ski +V\u30e9\u30c6\u30f3\u8a9e p8712 sVmak p8713 -Vmakasar +V\u30de\u30ab\u30c3\u30b5\u30eb\u8a9e p8714 sVzap p8715 -Vzapotecki +V\u30b6\u30dd\u30c6\u30c3\u30af\u8a9e p8716 sVyid p8717 -Vjidysz +V\u30a4\u30c7\u30a3\u30c3\u30b7\u30e5\u8a9e p8718 sVkok p8719 -Vkonkani (makroj\u0119zyk) +VKonkani (macrolanguage) p8720 sVkom p8721 -Vkomi +V\u30b3\u30df\u8a9e p8722 sVkon p8723 -Vkongo +V\u30b3\u30f3\u30b4\u8a9e p8724 sVukr p8725 -Vukrai\u0144ski +V\u30a6\u30af\u30e9\u30a4\u30ca\u8a9e p8726 sVton p8727 -Vtonga\u0144ski (Wyspy Tonga) +V\u30c8\u30f3\u30ac\u8a9e (\u30c8\u30f3\u30ac\u8af8\u5cf6) p8728 sVzxx p8729 -Vbrak kontekstu j\u0119zykowego +VNo linguistic content p8730 sVkos p8731 -Vkosrae +V\u30b3\u30b9\u30e9\u30a8\u8a9e p8732 sVkor p8733 -Vkorea\u0144ski +V\u671d\u9bae\u8a9e p8734 sVtog p8735 -Vtonga\u0144ski (Nyasa) +V\u30c8\u30f3\u30ac\u8a9e (\u30cb\u30a2\u30b5) p8736 sVhun p8737 -Vw\u0119gierski +V\u30cf\u30f3\u30ac\u30ea\u30fc\u8a9e p8738 sVhup p8739 -Vhupa +V\u30a2\u30bf\u30d1\u30b9\u30ab\u8a9e p8740 sVcym p8741 -Vwalijski +V\u30a6\u30a7\u30fc\u30eb\u30ba\u8a9e p8742 sVudm p8743 -Vudmurcki +V\u30a6\u30c9\u30e0\u30eb\u30c8\u8a9e p8744 sVbej p8745 -Vbed\u017ca +V\u30d9\u30b8\u30e3\u8a9e p8746 sVben p8747 -Vbengalski +V\u30d9\u30f3\u30ac\u30eb\u8a9e p8748 sVbel p8749 -Vbia\u0142oruski +V\u767d\u30ed\u30b7\u30a2\u8a9e p8750 sVbem p8751 -Vbemba (Zambia) +VBemba (Zambia) p8752 sVaar p8753 -Vafarski +V\u30a2\u30d5\u30a1\u30eb\u8a9e p8754 sVnzi p8755 -Vnzema +V\u30f3\u30bc\u30de\u8a9e p8756 sVsah p8757 -Vjakucki +V\u30e4\u30af\u30fc\u30c8\u8a9e p8758 sVsan p8759 -Vsanskryt +V\u68b5\u8a9e p8760 sVsam p8761 -Vsamaryta\u0144ski aramejski +VAramaic; Samaritan p8762 sVpro p8763 -Vprowansalski \u015bredniowieczny (do 1500) +V\u30d7\u30ed\u30f4\u30a1\u30f3\u30b9\u8a9e; \u53e4\u671f (-1500) p8764 sVsag p8765 -Vsango +V\u30b5\u30f3\u30b4\u8a9e p8766 sVsad p8767 -Vsandawe +V\u30b5\u30f3\u30c0\u30a6\u30a7\u8a9e p8768 sVanp p8769 -Vangika +V\u30a2\u30f3\u30ae\u30ab\u8a9e p8770 sVrap p8771 -Vrapanui +V\u30e9\u30d1\u30cc\u30fc\u30a4\u8a9e p8772 sVsas p8773 -Vsasak +V\u30b5\u30b5\u30af\u8a9e p8774 sVnqo p8775 -Vn\u2019ko +V\u30f3\u30b3\u6587\u5b57 p8776 sVsat p8777 -Vsantali +V\u30b5\u30f3\u30bf\u30fc\u30ea\u30fc\u8a9e p8778 sVmin p8779 -Vminangkabau +V\u30df\u30ca\u30f3\u30ab\u30d0\u30a6\u8a9e p8780 sVlim p8781 -Vlimburgijski +VLimburgan p8782 sVlin p8783 -Vlingala +V\u30ea\u30f3\u30ac\u30e9\u8a9e p8784 sVlit p8785 -Vlitewski +V\u30ea\u30c8\u30a2\u30cb\u30a2\u8a9e p8786 sVefi p8787 -Vefik +V\u30a8\u30d5\u30a3\u30af\u8a9e p8788 sVmis p8789 -Vj\u0119zyki niezakodowane +VUncoded languages p8790 sVkac p8791 -Vkaczin +V\u30ab\u30c1\u30f3\u8a9e p8792 sVkab p8793 -Vkabylski +V\u30ab\u30d3\u30eb\u8a9e p8794 sVkaa p8795 -Vkaraka\u0142packi +V\u30ab\u30e9\u30fb\u30ab\u30eb\u30d1\u30af\u8a9e p8796 sVkan p8797 -Vkannada +V\u30ab\u30f3\u30ca\u30c0\u8a9e p8798 sVkam p8799 -Vkamba (Kenia) +VKamba (Kenya) p8800 sVkal p8801 -Vkalaallisut +VKalaallisut p8802 sVkas p8803 -Vkaszmirski +V\u30ab\u30b7\u30df\u30fc\u30ea\u30fc\u8a9e p8804 sVkaw p8805 -Vkawi +V\u30ab\u30a6\u30a3\u8a9e p8806 sVkau p8807 -Vkanuri +V\u30ab\u30cc\u30ea\u8a9e p8808 sVkat p8809 -Vgruzi\u0144ski +V\u30b0\u30eb\u30b8\u30a2\u8a9e p8810 sVkaz p8811 -Vkazaski +V\u30ab\u30b6\u30fc\u30d5\u8a9e p8812 sVtyv p8813 -Vtuwi\u0144ski +V\u30c4\u30d0\u30cb\u30a2\u8a9e p8814 sVawa p8815 -Vawadhi +V\u30a2\u30ef\u30c7\u30a3\u8a9e p8816 sVurd p8817 -Vurdu +V\u30a6\u30eb\u30c9\u30a5\u30fc\u8a9e p8818 sVdoi p8819 -Vdogri (makroj\u0119zyk) +VDogri (macrolanguage) p8820 sVtpi p8821 -Vtok pisin +V\u30c8\u30c3\u30af\u30fb\u30d4\u30b8\u30f3 p8822 sVmri p8823 -Vmaoryski +V\u30de\u30aa\u30ea\u8a9e p8824 sVabk p8825 -Vabchaski +V\u30a2\u30d6\u30cf\u30b8\u30a2\u8a9e p8826 sVtkl p8827 -Vtokelau +V\u30c8\u30b1\u30e9\u30a6\u8a9e p8828 sVnld p8829 -Vholenderski +V\u30aa\u30e9\u30f3\u30c0\u8a9e p8830 sVoji p8831 -Vod\u017cibwe +V\u30aa\u30b8\u30d6\u30ef\u8a9e p8832 sVoci p8833 -Vokcyta\u0144ski (po 1500) +VOccitan (post 1500) p8834 sVwol p8835 -Vwolof +V\u30a6\u30a9\u30ed\u30d5\u8a9e p8836 sVjav p8837 -Vjawajski +V\u30b8\u30e3\u30ef\u8a9e p8838 sVhrv p8839 -Vchorwacki +V\u30af\u30ed\u30a2\u30c1\u30a2\u8a9e p8840 sVzza p8841 -Vzazaki +VZaza p8842 sVmga p8843 -Virlandzki \u015bredniowieczny (900-1200) +V\u30a2\u30a4\u30eb\u30e9\u30f3\u30c9\u8a9e; \u4e2d\u4e16 (900-1200) p8844 sVhit p8845 -Vhetycki +V\u30d2\u30c3\u30bf\u30a4\u30c8\u8a9e p8846 sVdyu p8847 -Vdiula +V\u30c7\u30e5\u30e9\u8a9e p8848 sVssw p8849 -Vsuazi +V\u30b7\u30b9\u30ef\u30c6\u30a3\u8a9e p8850 sVmul p8851 -Vwiele j\u0119zykw +V\u591a\u8a00\u8a9e p8852 sVhil p8853 -Vhiligajnon +V\u30d2\u30ea\u30b8\u30e3\u30ce\u30f3\u8a9e p8854 sVhin p8855 -Vhindi +V\u30d2\u30f3\u30c7\u30a3\u30fc\u8a9e p8856 sVbas p8857 -Vbasa (Kamerun) +VBasa (Cameroon) p8858 sVgba p8859 -Vgbaya (Republika \u015arodkowoafryka\u0144ska) +VGbaya (Central African Republic) p8860 sVwln p8861 -Vwalo\u0144ski +V\u30ef\u30ed\u30f3\u8a9e p8862 sVnep p8863 -Vnepalski +V\u30cd\u30d1\u30fc\u30eb\u8a9e p8864 sVcre p8865 -Vkri +V\u30af\u30ea\u30fc\u8a9e p8866 sVban p8867 -Vbalijski +V\u30d0\u30ea\u8a9e p8868 sVbal p8869 -Vbaluczi +V\u30d0\u30eb\u30fc\u30c1\u30fc\u8a9e p8870 sVbam p8871 -Vbambara +V\u30d0\u30f3\u30d0\u30e9\u8a9e p8872 sVbak p8873 -Vbaszkirski +V\u30d0\u30b7\u30ad\u30fc\u30eb\u8a9e p8874 sVshn p8875 -Vszan +V\u30b7\u30e3\u30f3\u8a9e p8876 sVarp p8877 -Varapaho +V\u30a2\u30e9\u30d1\u30db\u30fc\u8a9e p8878 sVarw p8879 -Varawak +V\u30a2\u30e9\u30ef\u30af\u8a9e p8880 sVara p8881 -Varabski +V\u30a2\u30e9\u30d3\u30a2\u8a9e p8882 sVarc p8883 -Varamejski oficjalny (700-300 p.n.e.) +VAramaic; Official (700-300 BCE) p8884 sVarg p8885 -Varago\u0144ski +V\u30a2\u30e9\u30b4\u30f3\u8a9e p8886 sVsel p8887 -Vselkupski +V\u30bb\u30ea\u30af\u30d7\u8a9e p8888 sVarn p8889 -Varauka\u0144ski +VMapudungun p8890 sVlus p8891 -Vlushai +V\u30eb\u30b7\u30e3\u30a4\u8a9e p8892 sVmus p8893 -Vkrik +V\u30af\u30ea\u30fc\u30af\u8a9e p8894 sVlua p8895 -Vluba-lulua +V\u30eb\u30d0\u30fb\u30eb\u30eb\u30a2\u8a9e p8896 sVlub p8897 -Vluba-katanga +V\u30eb\u30d0\u8a9e p8898 sVlug p8899 -Vluganda +V\u30ac\u30f3\u30c0\u8a9e p8900 sVlui p8901 -Vluiseno +V\u30eb\u30a4\u30bb\u30cb\u30e7\u8a9e p8902 sVlun p8903 -Vlunda +V\u30e9\u30f3\u30c0\u8a9e p8904 sVluo p8905 -Vluo (Kenia i Tanzania) +V\u30eb\u30aa\u8a9e (\u30b1\u30cb\u30a2\u3068\u30bf\u30f3\u30b6\u30cb\u30a2) p8906 sViku p8907 -Vinuktitut +V\u30a4\u30cc\u30af\u30c1\u30bf\u30c3\u30c8\u8a9e p8908 sVtur p8909 -Vturecki +V\u30c8\u30eb\u30b3\u8a9e p8910 sVzbl p8911 -Vbliss +VBlissymbols p8912 sVtuk p8913 -Vturkme\u0144ski +V\u30c8\u30a5\u30eb\u30af\u30e1\u30f3\u8a9e p8914 sVtum p8915 -Vtumbuka +V\u30bf\u30f3\u30d6\u30ab\u8a9e p8916 sVcop p8917 -Vkoptyjski +V\u30b3\u30d7\u30c8\u8a9e p8918 sVcos p8919 -Vkorsyka\u0144ski +V\u30b3\u30eb\u30b7\u30ab\u8a9e p8920 sVcor p8921 -Vkornijski +V\u30b3\u30fc\u30f3\u30a6\u30a9\u30fc\u30eb\u8a9e p8922 sVilo p8923 -Vilokano +V\u30a4\u30ed\u30ab\u30ce\u8a9e p8924 sVgwi p8925 -Vgwich\u02bcin +VGwich\u02bcin p8926 sVund p8927 -Vnieokre\u015blony +V\u8a00\u8a9e\u540d\u4e0d\u660e p8928 sVtli p8929 -Vtlingit +V\u30c8\u30ea\u30f3\u30ae\u30c3\u30c8\u8a9e p8930 sVtlh p8931 -Vklingo\u0144ski +VKlingon p8932 sVpor p8933 -Vportugalski +V\u30dd\u30eb\u30c8\u30ac\u30eb\u8a9e p8934 sVpon p8935 -Vpohnpei +V\u30dd\u30ca\u30da\u8a9e p8936 sVpol p8937 -VPolski +V\u30dd\u30fc\u30e9\u30f3\u30c9\u8a9e p8938 sVang p8939 -VStaroangielski (ok. 450-1100) +VEnglish; Old (ca. 450-1100) p8940 sVtgk p8941 -Vtad\u017cycki +V\u30bf\u30b8\u30af\u8a9e p8942 sVtgl p8943 -Vtagalski +V\u30bf\u30ac\u30ed\u30b0\u8a9e p8944 sVfra p8945 -Vfrancuski +V\u30d5\u30e9\u30f3\u30b9\u8a9e p8946 sVdum p8947 -Vholenderski \u015bredniowieczny (ok. 1050-1350) +VDutch; Middle (ca. 1050-1350) p8948 sVswa p8949 -Vsuahili (makroj\u0119zyk) +VSwahili (macrolanguage) p8950 sVdua p8951 -Vduala +V\u30c9\u30a5\u30a2\u30e9\u8a9e p8952 sVfro p8953 -Vstarofrancuski (842-ok. 1400) +VFrench; Old (842-ca. 1400) p8954 sVyap p8955 -Vjapski +V\u30e4\u30c3\u30d7\u8a9e p8956 sVfrm p8957 -Vfrancuski \u015bredniowieczny (ok. 1400-1600) +VFrench; Middle (ca. 1400-1600) p8958 sVfrs p8959 -Vwschodniofryzyjski +VFrisian; Eastern p8960 sVfrr p8961 -Vp\u0142nocnofryzyjski +VFrisian; Northern p8962 sVyao p8963 -Vyao +V\u30e4\u30aa\u8a9e p8964 sVxal p8965 -Vka\u0142mucki +VKalmyk p8966 sVfry p8967 -Vzachodniofryzyjski +VFrisian; Western p8968 sVgay p8969 -Vgayo +V\u30ac\u30e8\u8a9e p8970 sVota p8971 -Vturecki otoma\u0144ski (1500-1928) +V\u30c8\u30eb\u30b3\u8a9e; \u30aa\u30b9\u30de\u30f3 (1500-1928) p8972 sVhmn p8973 -Vhmong +V\u30d5\u30e2\u30f3\u30b0\u8a9e p8974 sVhmo p8975 -Vhiri motu +V\u30d2\u30ea\u30e2\u30c8\u30a5\u8a9e p8976 sVgaa p8977 -Vga +V\u30ac\u8a9e p8978 sVfur p8979 -Vfriulski +V\u30d5\u30ea\u30a6\u30ea\u8a9e p8980 sVmlg p8981 -Vmalgaski +V\u30de\u30e9\u30ac\u30b7\u8a9e p8982 sVslv p8983 -Vs\u0142owe\u0144ski +V\u30b9\u30ed\u30f4\u30a7\u30cb\u30a2\u8a9e p8984 sVain p8985 -Vajnoski (Japonia) +VAinu (Japan) p8986 sVfil p8987 -Vpilipino +VFilipino p8988 sVmlt p8989 -Vmalta\u0144ski +V\u30de\u30eb\u30bf\u8a9e p8990 sVslk p8991 -Vs\u0142owacki +V\u30b9\u30ed\u30f4\u30a1\u30ad\u30a2\u8a9e p8992 sVrar p8993 -Vmaoryski Wysp Cooka +VMaori; Cook Islands p8994 sVful p8995 -Vfulani +V\u30d5\u30e9\u8a9e p8996 sVjpn p8997 -Vjapo\u0144ski +V\u65e5\u672c\u8a9e p8998 sVvol p8999 -Vwolapik +V\u30dc\u30e9\u30d4\u30e5\u30fc\u30af\u8a9e p9000 sVvot p9001 -Vwotycki +V\u30f4\u30a9\u30fc\u30c8\u8a9e p9002 sVind p9003 -Vindonezyjski +V\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u8a9e p9004 sVave p9005 -Vawestyjski +V\u30a2\u30f4\u30a7\u30b9\u30bf\u8a9e p9006 sVjpr p9007 -Vjudeo-perski +V\u30e6\u30c0\u30e4\u30fb\u30da\u30eb\u30b7\u30a2\u8a9e p9008 sVava p9009 -Vawarski +V\u30a2\u30f4\u30a1\u30eb\u8a9e p9010 sVpap p9011 -Vpapiamento +V\u30d1\u30d4\u30a2\u30e1\u30f3\u30c8 p9012 sVewo p9013 -Vewondo +V\u30a8\u30a6\u30a9\u30f3\u30c9\u8a9e p9014 sVpau p9015 -Vpalau +V\u30d1\u30e9\u30aa\u8a9e p9016 sVewe p9017 -Vewe +V\u30a8\u30a6\u30a7\u8a9e p9018 sVpag p9019 -Vpangasino +V\u30d1\u30f3\u30ac\u30b7\u30ca\u30fc\u30f3\u8a9e p9020 sVpal p9021 -Vpahlawi +V\u30d1\u30fc\u30e9\u30f4\u30a3\u30fc\u8a9e p9022 sVpam p9023 -Vpampango +V\u30d1\u30f3\u30d1\u30f3\u30ac\u8a9e p9024 sVpan p9025 -Vpend\u017cabski +VPanjabi p9026 sVsyc p9027 -Vsyryjski klasyczny +VSyriac; Classical p9028 sVphn p9029 -Vfenicki +V\u30d5\u30a7\u30cb\u30ad\u30a2\u8a9e p9030 sVkir p9031 -Vkirgiski +V\u30ad\u30eb\u30ae\u30b9\u8a9e p9032 sVnia p9033 -Vnias +V\u30cb\u30a2\u30b9\u8a9e p9034 sVkik p9035 -Vkikiju +V\u30ad\u30af\u30e6\u8a9e p9036 sVsyr p9037 -Vsyryjski +V\u30b7\u30ea\u30a2\u8a9e p9038 sVkin p9039 -Vruanda +V\u30ad\u30f3\u30e4\u30eb\u30ef\u30f3\u30c0\u8a9e p9040 sVniu p9041 -Vniue +V\u30cb\u30a6\u30fc\u30a8\u30a4\u8a9e p9042 sVgsw p9043 -Vniemiecki szwajcarski +VGerman; Swiss p9044 sVepo p9045 -Vesperanto +V\u30a8\u30b9\u30da\u30e9\u30f3\u30c8 p9046 sVjbo p9047 -Vlojban +V\u30ed\u30b8\u30d0\u30f3\u8a9e p9048 sVmic p9049 -Vmicmac +VMi'kmaq p9050 sVtha p9051 -Vtajski +V\u30bf\u30a4\u8a9e p9052 sVhai p9053 -Vhaida +V\u30cf\u30a4\u30c0\u8a9e p9054 sVgmh p9055 -V\u015brednio-wysoko-niemiecki (ok. 1050-1500) +VGerman; Middle High (ca. 1050-1500) p9056 sVell p9057 -Vgrecki wsp\u0142czesny (1453-) +V\u30ae\u30ea\u30b7\u30a2\u8a9e; \u73fe\u4ee3 (1453-) p9058 sVady p9059 -Vadygejski +VAdyghe p9060 sVelx p9061 -Velamicki +V\u30a8\u30e9\u30e0\u8a9e p9062 sVada p9063 -Vadangme +V\u30a2\u30c0\u30f3\u30b0\u30e1\u8a9e p9064 sVnav p9065 -Vnavaho +VNavajo p9066 sVhat p9067 -Vkreolski haita\u0144ski +VCreole; Haitian p9068 sVhau p9069 -Vhausa +V\u30cf\u30a6\u30b5\u8a9e p9070 sVhaw p9071 -Vhawajski +V\u30cf\u30ef\u30a4\u8a9e p9072 sVbin p9073 -Vedo +V\u30d3\u30cb\u8a9e p9074 sVamh p9075 -Vamharski +V\u30a2\u30e0\u30cf\u30e9\u8a9e p9076 sVbik p9077 -Vbikol +V\u30d3\u30b3\u30eb\u8a9e p9078 sVmos p9079 -Vmossi +V\u30e2\u30c3\u30b7\u30fc\u8a9e p9080 sVmoh p9081 -Vmohawk +V\u30e2\u30fc\u30db\u30fc\u30af\u8a9e p9082 sVmon p9083 -Vmongolski +V\u8499\u53e4\u8a9e p9084 sVbho p9085 -Vbhod\u017apuri +V\u30dc\u30fc\u30b8\u30d7\u30ea\u30fc\u8a9e p9086 sVbis p9087 -Vbislama +V\u30d3\u30b9\u30e9\u30de\u8a9e p9088 sVtvl p9089 -Vtuvalu +V\u30c4\u30d0\u30eb\u8a9e p9090 sVest p9091 -Vesto\u0144ski +V\u30a8\u30b9\u30c8\u30cb\u30a2\u8a9e p9092 sVkmb p9093 -Vkimbundu +V\u30ad\u30f3\u30d6\u30f3\u30c9\u30a5\u8a9e p9094 sVpeo p9095 -Vstaroperski (ok. 600-400 p.n.e) +VPersian; Old (ca. 600-400 B.C.) p9096 sVumb p9097 -Vumbundu +V\u30a2\u30f3\u30d6\u30f3\u30c9\u30a5\u8a9e p9098 sVtmh p9099 -Vtuareski +V\u30bf\u30de\u30b7\u30a7\u30af\u8a9e p9100 sVfon p9101 -Vfon +V\u30d5\u30a9\u30f3\u8a9e p9102 sVhsb p9103 -Vgrno\u0142u\u017cycki +VSorbian; Upper p9104 sVrun p9105 -Vrundi +V\u30eb\u30f3\u30c7\u30a3\u8a9e p9106 sVrus p9107 -Vrosyjski +V\u30ed\u30b7\u30a2\u8a9e p9108 sVrup p9109 -Varumu\u0144ski +VRomanian; Macedo- p9110 sVpli p9111 -Vpali +V\u30d1\u30fc\u30ea\u8a9e p9112 sVace p9113 -Vaczineski +V\u30a2\u30c1\u30a7\u30fc\u8a9e p9114 sVach p9115 -Vaczoli +V\u30a2\u30c1\u30e7\u30ea\u8a9e p9116 sVnde p9117 -Vndebele p\u0142nocny +V\u30de\u30bf\u30d9\u30ec\u8a9e; \u5317 p9118 sVdzo p9119 -Vdzongka +V\u30be\u30f3\u30ab\u8a9e p9120 sVkru p9121 -Vkurukh +V\u30af\u30eb\u30af\u8a9e p9122 sVsrr p9123 -Vserer +V\u30bb\u30ec\u30fc\u30eb\u8a9e p9124 sVido p9125 -Vido +V\u30a4\u30c9\u8a9e p9126 sVsrp p9127 -Vserbski +V\u30bb\u30eb\u30d3\u30a2\u8a9e p9128 sVkrl p9129 -Vkarelski +V\u30ab\u30ec\u30ea\u30a2\u8a9e p9130 sVkrc p9131 -Vkaraczajsko-ba\u0142karski +V\u30ab\u30e9\u30c1\u30e3\u30a4\u30fb\u30d0\u30eb\u30ab\u30eb\u8a9e p9132 sVnds p9133 @@ -18257,174 +18257,1849 @@ VGerman; Low p9134 sVzun p9135 -Vzuni +V\u30ba\u30cb\u8a9e p9136 sVzul p9137 -Vzuluski +V\u30ba\u30fc\u30eb\u30fc\u8a9e p9138 sVtwi p9139 -Vtwi +V\u30c8\u30a6\u30a3\u8a9e p9140 sVsog p9141 -Vsogdia\u0144ski +V\u30bd\u30b0\u30c9\u8a9e p9142 sVnso p9143 -Vsotho p\u0142nocny +VSotho; Northern p9144 sVswe p9145 -Vszwedzki +V\u30b9\u30a6\u30a7\u30fc\u30c7\u30f3\u8a9e p9146 sVsom p9147 -Vsomalijski +V\u30bd\u30de\u30ea\u8a9e p9148 sVsot p9149 -Vsotho po\u0142udniowy +V\u30bd\u30c8\u8a9e; \u5357 p9150 sVmkd p9151 -Vmacedo\u0144ski +V\u30de\u30b1\u30c9\u30cb\u30a2\u8a9e p9152 sVher p9153 -Vherero +V\u30d8\u30ec\u30ed\u8a9e p9154 sVlol p9155 -Vmongo +V\u30e2\u30f3\u30b4\u8a9e p9156 sVheb p9157 -Vhebrajski +V\u30d8\u30d6\u30e9\u30a4\u8a9e p9158 sVloz p9159 -Vlozi +V\u30ed\u30b8\u8a9e p9160 sVgil p9161 -Vgilberta\u0144ski +V\u30ad\u30ea\u30d0\u30b9\u8a9e p9162 sVwas p9163 -Vwasho +V\u30ef\u30b7\u30e7\u8a9e p9164 sVwar p9165 -Vwarajski (Filipiny) +VWaray (Philippines) p9166 sVbul p9167 -Vbu\u0142garski +V\u30d6\u30eb\u30ac\u30ea\u30a2\u8a9e p9168 sVwal p9169 -Vwalamo +VWolaytta p9170 sVbua p9171 -Vburiacki +V\u30d6\u30ea\u30e4\u30fc\u30c8\u8a9e p9172 sVbug p9173 -Vbugijski +V\u30d6\u30ae\u8a9e p9174 sVaze p9175 -Vazerski +V\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3\u8a9e p9176 sVzha p9177 -Vzhuang +VZhuang p9178 sVzho p9179 -Vchi\u0144ski +V\u4e2d\u56fd\u8a9e p9180 sVnno p9181 -Vnorweski Nynorsk +V\u30cb\u30fc\u30ce\u30b7\u30e5\u30af\u30fb\u30ce\u30eb\u30a6\u30a7\u30fc\u8a9e p9182 sVuig p9183 -Vujgurski +V\u30a6\u30a4\u30b0\u30eb\u8a9e p9184 sVmyv p9185 -Verzja +V\u30a8\u30eb\u30b8\u30e3\u8a9e p9186 sVinh p9187 -Vinguski +V\u30a4\u30f3\u30b0\u30fc\u30b7\u8a9e p9188 sVkhm p9189 -V\u015brodkowokhmerski +VKhmer; Central p9190 sVkho p9191 -Vchota\u0144ski +V\u30db\u30fc\u30bf\u30f3\u8a9e p9192 sVmya p9193 -Vbirma\u0144ski +V\u30d3\u30eb\u30de\u8a9e p9194 sVkha p9195 -Vkhasi +V\u30ab\u30b7\u8a9e p9196 sVina p9197 -Vinterlingua (Mi\u0119dzynarodowe Stowarzyszenie J\u0119zyka Pomocniczego) +V\u30a4\u30f3\u30bf\u30fc\u30ea\u30f3\u30b0\u30a2\u8a9e (\u56fd\u969b\u88dc\u52a9\u8a9e\u5354\u4f1a) p9198 sVtiv p9199 -Vtiw +V\u30c6\u30a3\u30d6\u8a9e p9200 sVtir p9201 -Vtigrinia +V\u30c6\u30a3\u30b0\u30ea\u30cb\u30a2\u8a9e p9202 sVnap p9203 -Vneapolita\u0144ski +V\u30ca\u30dd\u30ea\u8a9e p9204 sVgrb p9205 -Vgrebo +V\u30b0\u30ec\u30dc\u8a9e p9206 sVgrc p9207 -Vgrecki staro\u017cytny (do 1453) +V\u30ae\u30ea\u30b7\u30a2\u8a9e; \u53e4\u4ee3 (-1453) p9208 sVnau p9209 -Vnaurua\u0144ski +V\u30ca\u30a6\u30eb\u8a9e p9210 sVgrn p9211 -Vguarani +V\u30b0\u30a2\u30e9\u30cb\u30fc\u8a9e p9212 sVtig p9213 -Vtigre +V\u30c6\u30a3\u30b0\u30ec\u8a9e p9214 sVyor p9215 -Vjoruba +V\u30e8\u30eb\u30d0\u8a9e p9216 sVile p9217 -Vinterlingue +V\u30a4\u30f3\u30bf\u30fc\u30ea\u30f3\u30b0 p9218 sVsqi p9219 -Valba\u0144ski +V\u30a2\u30eb\u30d0\u30cb\u30a2\u8a9e p9220 +ssS'pl' +p9221 +(dp9222 +Vroh +p9223 +Vretoroma\u0144ski +p9224 +sVsco +p9225 +Vscots +p9226 +sVscn +p9227 +Vsycylijski +p9228 +sVrom +p9229 +Vromski +p9230 +sVron +p9231 +Vrumu\u0144ski +p9232 +sVoss +p9233 +Vosetyjski +p9234 +sVale +p9235 +Valeucki +p9236 +sVmni +p9237 +Vmanipuri +p9238 +sVnwc +p9239 +Vnewarski klasyczny +p9240 +sVosa +p9241 +Vosage +p9242 +sValt +p9243 +Va\u0142tajski po\u0142udniowy +p9244 +sVmnc +p9245 +Vmand\u017curski +p9246 +sVmwr +p9247 +Vmarwari +p9248 +sVven +p9249 +Vvenda +p9250 +sVuga +p9251 +Vugarycki +p9252 +sVmwl +p9253 +Vmirandyjski +p9254 +sVfas +p9255 +Vperski +p9256 +sVfat +p9257 +Vfanti +p9258 +sVfan +p9259 +Vfang (Gwinea Rwnikowa) +p9260 +sVfao +p9261 +Vfarerski +p9262 +sVdin +p9263 +Vdinka +p9264 +sVhye +p9265 +Vormia\u0144ski +p9266 +sVbla +p9267 +Vsiksika +p9268 +sVsrd +p9269 +Vsardy\u0144ski +p9270 +sVcar +p9271 +Vkaraibski galibi +p9272 +sVdiv +p9273 +Vmalediwski; divehi +p9274 +sVtel +p9275 +Vtelugu +p9276 +sVtem +p9277 +Vtemne +p9278 +sVnbl +p9279 +Vndebele po\u0142udniowy +p9280 +sVter +p9281 +Vtereno +p9282 +sVtet +p9283 +Vtetum +p9284 +sVsun +p9285 +Vsundajski +p9286 +sVkut +p9287 +Vkutenai +p9288 +sVsuk +p9289 +Vsukuma +p9290 +sVkur +p9291 +Vkurdyjski +p9292 +sVkum +p9293 +Vkumycki +p9294 +sVsus +p9295 +Vsusu +p9296 +sVnew +p9297 +Vnewarski +p9298 +sVkua +p9299 +Vkwanyama +p9300 +sVsux +p9301 +Vsumeryjski +p9302 +sVmen +p9303 +Vmende (Sierra Leone) +p9304 +sVlez +p9305 +Vlezgi\u0144ski +p9306 +sVgla +p9307 +Vszkocki gaelicki +p9308 +sVbos +p9309 +Vbo\u015bniacki +p9310 +sVgle +p9311 +Virlandzki +p9312 +sVeka +p9313 +Vekajuk +p9314 +sVglg +p9315 +Vgalicyjski +p9316 +sVakk +p9317 +Vakadyjski +p9318 +sVaka +p9319 +Vakan +p9320 +sVbod +p9321 +Vtybeta\u0144ski +p9322 +sVglv +p9323 +Vmanx +p9324 +sVjrb +p9325 +Vjudeoarabski +p9326 +sVvie +p9327 +Vwietnamski +p9328 +sVipk +p9329 +Vinupiaq +p9330 +sVuzb +p9331 +Vuzbecki +p9332 +sVsga +p9333 +Vstaroirlandzki (do 900) +p9334 +sVbre +p9335 +Vbreto\u0144ski +p9336 +sVbra +p9337 +Vbrad\u017a +p9338 +sVaym +p9339 +Vajmara +p9340 +sVcha +p9341 +Vczamorro +p9342 +sVchb +p9343 +Vczibcza +p9344 +sVche +p9345 +Vczecze\u0144ski +p9346 +sVchg +p9347 +Vczagatajski +p9348 +sVchk +p9349 +Vchuuk +p9350 +sVchm +p9351 +Vmaryjski (Rosja) +p9352 +sVchn +p9353 +V\u017cargon chinoocki +p9354 +sVcho +p9355 +Vczoktaw +p9356 +sVchp +p9357 +Vchipewyan +p9358 +sVchr +p9359 +Vczerokeski +p9360 +sVchu +p9361 +Vstaros\u0142owia\u0144ski +p9362 +sVchv +p9363 +Vczuwaski +p9364 +sVchy +p9365 +Vczeje\u0144ski +p9366 +sVmsa +p9367 +Vmalajski (makroj\u0119zyk) +p9368 +sViii +p9369 +Vsyczua\u0144ski +p9370 +sVndo +p9371 +Vndonga +p9372 +sVibo +p9373 +Vibo +p9374 +sViba +p9375 +Vibanag +p9376 +sVxho +p9377 +Vxhosa +p9378 +sVdeu +p9379 +Vniemiecki +p9380 +sVcat +p9381 +Vkatalo\u0144ski +p9382 +sVdel +p9383 +Vdelaware +p9384 +sVden +p9385 +Vslavey (atapaska\u0144ski) +p9386 +sVcad +p9387 +Vkaddo +p9388 +sVtat +p9389 +Vtatarski +p9390 +sVsrn +p9391 +Vsranan tongo +p9392 +sVraj +p9393 +Vrad\u017aasthani +p9394 +sVtam +p9395 +Vtamilski +p9396 +sVspa +p9397 +Vhiszpa\u0144ski +p9398 +sVtah +p9399 +Vtahita\u0144ski +p9400 +sVafh +p9401 +Vafrihili +p9402 +sVeng +p9403 +VAngielski +p9404 +sVenm +p9405 +Vangielski \u015bredniowieczny (1100-1500) +p9406 +sVcsb +p9407 +Vkaszubski +p9408 +sVnyn +p9409 +Vnyankole +p9410 +sVnyo +p9411 +Vnyoro +p9412 +sVsid +p9413 +Vsidamo +p9414 +sVnya +p9415 +Vnjand\u017ca +p9416 +sVsin +p9417 +Vsyngaleski +p9418 +sVafr +p9419 +Vafrykanerski +p9420 +sVlam +p9421 +Vlamba +p9422 +sVsnd +p9423 +Vsindhi +p9424 +sVmar +p9425 +Vmarathi +p9426 +sVlah +p9427 +Vlahnda +p9428 +sVnym +p9429 +Vnyamwezi +p9430 +sVsna +p9431 +Vshona +p9432 +sVlad +p9433 +Vladino +p9434 +sVsnk +p9435 +Vsoninke +p9436 +sVmad +p9437 +Vmadurajski +p9438 +sVmag +p9439 +Vmagahi +p9440 +sVmai +p9441 +Vmaithili +p9442 +sVmah +p9443 +Vmarshalski +p9444 +sVlav +p9445 +V\u0142otewski +p9446 +sVmal +p9447 +Vmalajalam +p9448 +sVman +p9449 +Vmandingo +p9450 +sVegy +p9451 +Vegipski (staro\u017cytny) +p9452 +sVzen +p9453 +Vzenaga +p9454 +sVkbd +p9455 +Vkabardyjski +p9456 +sVita +p9457 +Vw\u0142oski +p9458 +sVvai +p9459 +Vwai +p9460 +sVtsn +p9461 +Vtswana +p9462 +sVtso +p9463 +Vtsonga +p9464 +sVtsi +p9465 +Vtsimszian +p9466 +sVbyn +p9467 +Vblin +p9468 +sVfij +p9469 +Vfid\u017cyjski +p9470 +sVfin +p9471 +Vfi\u0144ski +p9472 +sVeus +p9473 +Vbaskijski +p9474 +sVnon +p9475 +Vstaronordyjski +p9476 +sVceb +p9477 +Vcebua\u0144ski +p9478 +sVdan +p9479 +Vdu\u0144ski +p9480 +sVnog +p9481 +Vnogajski +p9482 +sVnob +p9483 +Vnorweski Bokml +p9484 +sVdak +p9485 +Vdakota +p9486 +sVces +p9487 +Vczeski +p9488 +sVdar +p9489 +Vdargwijski +p9490 +sVnor +p9491 +Vnorweski +p9492 +sVkpe +p9493 +Vkpelle +p9494 +sVguj +p9495 +Vgud\u017aarati +p9496 +sVmdf +p9497 +Vmoksza +p9498 +sVmas +p9499 +Vmasajski +p9500 +sVlao +p9501 +Vlaota\u0144ski +p9502 +sVmdr +p9503 +Vmandar +p9504 +sVgon +p9505 +Vgondi +p9506 +sVgoh +p9507 +Vstaro-wysoko-niemiecki (ok. 750-1050) +p9508 +sVsms +p9509 +Vlapo\u0144ski skolt +p9510 +sVsmo +p9511 +Vsamoa\u0144ski +p9512 +sVsmn +p9513 +Vlapo\u0144ski inari +p9514 +sVsmj +p9515 +Vlapo\u0144ski lule +p9516 +sVgot +p9517 +Vgocki +p9518 +sVsme +p9519 +Vp\u0142nocnolapo\u0144ski +p9520 +sVdsb +p9521 +Vdolno\u0142u\u017cycki +p9522 +sVsma +p9523 +Vpo\u0142udniowolapo\u0144ski +p9524 +sVgor +p9525 +Vgorontalo +p9526 +sVast +p9527 +Vasturyjski +p9528 +sVorm +p9529 +Voromo +p9530 +sVque +p9531 +Vkeczua +p9532 +sVori +p9533 +Vorija +p9534 +sVcrh +p9535 +Vkrymskotatarski +p9536 +sVasm +p9537 +Vasamski +p9538 +sVpus +p9539 +Vpaszto +p9540 +sVdgr +p9541 +Vdogrib +p9542 +sVltz +p9543 +Vluksemburski +p9544 +sVgez +p9545 +Vgyyz +p9546 +sVisl +p9547 +Vislandzki +p9548 +sVlat +p9549 +V\u0142aci\u0144ski +p9550 +sVmak +p9551 +Vmakasar +p9552 +sVzap +p9553 +Vzapotecki +p9554 +sVyid +p9555 +Vjidysz +p9556 +sVkok +p9557 +Vkonkani (makroj\u0119zyk) +p9558 +sVkom +p9559 +Vkomi +p9560 +sVkon +p9561 +Vkongo +p9562 +sVukr +p9563 +Vukrai\u0144ski +p9564 +sVton +p9565 +Vtonga\u0144ski (Wyspy Tonga) +p9566 +sVzxx +p9567 +Vbrak kontekstu j\u0119zykowego +p9568 +sVkos +p9569 +Vkosrae +p9570 +sVkor +p9571 +Vkorea\u0144ski +p9572 +sVtog +p9573 +Vtonga\u0144ski (Nyasa) +p9574 +sVhun +p9575 +Vw\u0119gierski +p9576 +sVhup +p9577 +Vhupa +p9578 +sVcym +p9579 +Vwalijski +p9580 +sVudm +p9581 +Vudmurcki +p9582 +sVbej +p9583 +Vbed\u017ca +p9584 +sVben +p9585 +Vbengalski +p9586 +sVbel +p9587 +Vbia\u0142oruski +p9588 +sVbem +p9589 +Vbemba (Zambia) +p9590 +sVaar +p9591 +Vafarski +p9592 +sVnzi +p9593 +Vnzema +p9594 +sVsah +p9595 +Vjakucki +p9596 +sVsan +p9597 +Vsanskryt +p9598 +sVsam +p9599 +Vsamaryta\u0144ski aramejski +p9600 +sVpro +p9601 +Vprowansalski \u015bredniowieczny (do 1500) +p9602 +sVsag +p9603 +Vsango +p9604 +sVsad +p9605 +Vsandawe +p9606 +sVanp +p9607 +Vangika +p9608 +sVrap +p9609 +Vrapanui +p9610 +sVsas +p9611 +Vsasak +p9612 +sVnqo +p9613 +Vn\u2019ko +p9614 +sVsat +p9615 +Vsantali +p9616 +sVmin +p9617 +Vminangkabau +p9618 +sVlim +p9619 +Vlimburgijski +p9620 +sVlin +p9621 +Vlingala +p9622 +sVlit +p9623 +Vlitewski +p9624 +sVefi +p9625 +Vefik +p9626 +sVmis +p9627 +Vj\u0119zyki niezakodowane +p9628 +sVkac +p9629 +Vkaczin +p9630 +sVkab +p9631 +Vkabylski +p9632 +sVkaa +p9633 +Vkaraka\u0142packi +p9634 +sVkan +p9635 +Vkannada +p9636 +sVkam +p9637 +Vkamba (Kenia) +p9638 +sVkal +p9639 +Vkalaallisut +p9640 +sVkas +p9641 +Vkaszmirski +p9642 +sVkaw +p9643 +Vkawi +p9644 +sVkau +p9645 +Vkanuri +p9646 +sVkat +p9647 +Vgruzi\u0144ski +p9648 +sVkaz +p9649 +Vkazaski +p9650 +sVtyv +p9651 +Vtuwi\u0144ski +p9652 +sVawa +p9653 +Vawadhi +p9654 +sVurd +p9655 +Vurdu +p9656 +sVdoi +p9657 +Vdogri (makroj\u0119zyk) +p9658 +sVtpi +p9659 +Vtok pisin +p9660 +sVmri +p9661 +Vmaoryski +p9662 +sVabk +p9663 +Vabchaski +p9664 +sVtkl +p9665 +Vtokelau +p9666 +sVnld +p9667 +Vholenderski +p9668 +sVoji +p9669 +Vod\u017cibwe +p9670 +sVoci +p9671 +Vokcyta\u0144ski (po 1500) +p9672 +sVwol +p9673 +Vwolof +p9674 +sVjav +p9675 +Vjawajski +p9676 +sVhrv +p9677 +Vchorwacki +p9678 +sVzza +p9679 +Vzazaki +p9680 +sVmga +p9681 +Virlandzki \u015bredniowieczny (900-1200) +p9682 +sVhit +p9683 +Vhetycki +p9684 +sVdyu +p9685 +Vdiula +p9686 +sVssw +p9687 +Vsuazi +p9688 +sVmul +p9689 +Vwiele j\u0119zykw +p9690 +sVhil +p9691 +Vhiligajnon +p9692 +sVhin +p9693 +Vhindi +p9694 +sVbas +p9695 +Vbasa (Kamerun) +p9696 +sVgba +p9697 +Vgbaya (Republika \u015arodkowoafryka\u0144ska) +p9698 +sVwln +p9699 +Vwalo\u0144ski +p9700 +sVnep +p9701 +Vnepalski +p9702 +sVcre +p9703 +Vkri +p9704 +sVban +p9705 +Vbalijski +p9706 +sVbal +p9707 +Vbaluczi +p9708 +sVbam +p9709 +Vbambara +p9710 +sVbak +p9711 +Vbaszkirski +p9712 +sVshn +p9713 +Vszan +p9714 +sVarp +p9715 +Varapaho +p9716 +sVarw +p9717 +Varawak +p9718 +sVara +p9719 +Varabski +p9720 +sVarc +p9721 +Varamejski oficjalny (700-300 p.n.e.) +p9722 +sVarg +p9723 +Varago\u0144ski +p9724 +sVsel +p9725 +Vselkupski +p9726 +sVarn +p9727 +Varauka\u0144ski +p9728 +sVlus +p9729 +Vlushai +p9730 +sVmus +p9731 +Vkrik +p9732 +sVlua +p9733 +Vluba-lulua +p9734 +sVlub +p9735 +Vluba-katanga +p9736 +sVlug +p9737 +Vluganda +p9738 +sVlui +p9739 +Vluiseno +p9740 +sVlun +p9741 +Vlunda +p9742 +sVluo +p9743 +Vluo (Kenia i Tanzania) +p9744 +sViku +p9745 +Vinuktitut +p9746 +sVtur +p9747 +Vturecki +p9748 +sVzbl +p9749 +Vbliss +p9750 +sVtuk +p9751 +Vturkme\u0144ski +p9752 +sVtum +p9753 +Vtumbuka +p9754 +sVcop +p9755 +Vkoptyjski +p9756 +sVcos +p9757 +Vkorsyka\u0144ski +p9758 +sVcor +p9759 +Vkornijski +p9760 +sVilo +p9761 +Vilokano +p9762 +sVgwi +p9763 +Vgwich\u02bcin +p9764 +sVund +p9765 +Vnieokre\u015blony +p9766 +sVtli +p9767 +Vtlingit +p9768 +sVtlh +p9769 +Vklingo\u0144ski +p9770 +sVpor +p9771 +Vportugalski +p9772 +sVpon +p9773 +Vpohnpei +p9774 +sVpol +p9775 +VPolski +p9776 +sVang +p9777 +VStaroangielski (ok. 450-1100) +p9778 +sVtgk +p9779 +Vtad\u017cycki +p9780 +sVtgl +p9781 +Vtagalski +p9782 +sVfra +p9783 +Vfrancuski +p9784 +sVdum +p9785 +Vholenderski \u015bredniowieczny (ok. 1050-1350) +p9786 +sVswa +p9787 +Vsuahili (makroj\u0119zyk) +p9788 +sVdua +p9789 +Vduala +p9790 +sVfro +p9791 +Vstarofrancuski (842-ok. 1400) +p9792 +sVyap +p9793 +Vjapski +p9794 +sVfrm +p9795 +Vfrancuski \u015bredniowieczny (ok. 1400-1600) +p9796 +sVfrs +p9797 +Vwschodniofryzyjski +p9798 +sVfrr +p9799 +Vp\u0142nocnofryzyjski +p9800 +sVyao +p9801 +Vyao +p9802 +sVxal +p9803 +Vka\u0142mucki +p9804 +sVfry +p9805 +Vzachodniofryzyjski +p9806 +sVgay +p9807 +Vgayo +p9808 +sVota +p9809 +Vturecki otoma\u0144ski (1500-1928) +p9810 +sVhmn +p9811 +Vhmong +p9812 +sVhmo +p9813 +Vhiri motu +p9814 +sVgaa +p9815 +Vga +p9816 +sVfur +p9817 +Vfriulski +p9818 +sVmlg +p9819 +Vmalgaski +p9820 +sVslv +p9821 +Vs\u0142owe\u0144ski +p9822 +sVain +p9823 +Vajnoski (Japonia) +p9824 +sVfil +p9825 +Vpilipino +p9826 +sVmlt +p9827 +Vmalta\u0144ski +p9828 +sVslk +p9829 +Vs\u0142owacki +p9830 +sVrar +p9831 +Vmaoryski Wysp Cooka +p9832 +sVful +p9833 +Vfulani +p9834 +sVjpn +p9835 +Vjapo\u0144ski +p9836 +sVvol +p9837 +Vwolapik +p9838 +sVvot +p9839 +Vwotycki +p9840 +sVind +p9841 +Vindonezyjski +p9842 +sVave +p9843 +Vawestyjski +p9844 +sVjpr +p9845 +Vjudeo-perski +p9846 +sVava +p9847 +Vawarski +p9848 +sVpap +p9849 +Vpapiamento +p9850 +sVewo +p9851 +Vewondo +p9852 +sVpau +p9853 +Vpalau +p9854 +sVewe +p9855 +Vewe +p9856 +sVpag +p9857 +Vpangasino +p9858 +sVpal +p9859 +Vpahlawi +p9860 +sVpam +p9861 +Vpampango +p9862 +sVpan +p9863 +Vpend\u017cabski +p9864 +sVsyc +p9865 +Vsyryjski klasyczny +p9866 +sVphn +p9867 +Vfenicki +p9868 +sVkir +p9869 +Vkirgiski +p9870 +sVnia +p9871 +Vnias +p9872 +sVkik +p9873 +Vkikiju +p9874 +sVsyr +p9875 +Vsyryjski +p9876 +sVkin +p9877 +Vruanda +p9878 +sVniu +p9879 +Vniue +p9880 +sVgsw +p9881 +Vniemiecki szwajcarski +p9882 +sVepo +p9883 +Vesperanto +p9884 +sVjbo +p9885 +Vlojban +p9886 +sVmic +p9887 +Vmicmac +p9888 +sVtha +p9889 +Vtajski +p9890 +sVhai +p9891 +Vhaida +p9892 +sVgmh +p9893 +V\u015brednio-wysoko-niemiecki (ok. 1050-1500) +p9894 +sVell +p9895 +Vgrecki wsp\u0142czesny (1453-) +p9896 +sVady +p9897 +Vadygejski +p9898 +sVelx +p9899 +Velamicki +p9900 +sVada +p9901 +Vadangme +p9902 +sVnav +p9903 +Vnavaho +p9904 +sVhat +p9905 +Vkreolski haita\u0144ski +p9906 +sVhau +p9907 +Vhausa +p9908 +sVhaw +p9909 +Vhawajski +p9910 +sVbin +p9911 +Vedo +p9912 +sVamh +p9913 +Vamharski +p9914 +sVbik +p9915 +Vbikol +p9916 +sVmos +p9917 +Vmossi +p9918 +sVmoh +p9919 +Vmohawk +p9920 +sVmon +p9921 +Vmongolski +p9922 +sVbho +p9923 +Vbhod\u017apuri +p9924 +sVbis +p9925 +Vbislama +p9926 +sVtvl +p9927 +Vtuvalu +p9928 +sVest +p9929 +Vesto\u0144ski +p9930 +sVkmb +p9931 +Vkimbundu +p9932 +sVpeo +p9933 +Vstaroperski (ok. 600-400 p.n.e) +p9934 +sVumb +p9935 +Vumbundu +p9936 +sVtmh +p9937 +Vtuareski +p9938 +sVfon +p9939 +Vfon +p9940 +sVhsb +p9941 +Vgrno\u0142u\u017cycki +p9942 +sVrun +p9943 +Vrundi +p9944 +sVrus +p9945 +Vrosyjski +p9946 +sVrup +p9947 +Varumu\u0144ski +p9948 +sVpli +p9949 +Vpali +p9950 +sVace +p9951 +Vaczineski +p9952 +sVach +p9953 +Vaczoli +p9954 +sVnde +p9955 +Vndebele p\u0142nocny +p9956 +sVdzo +p9957 +Vdzongka +p9958 +sVkru +p9959 +Vkurukh +p9960 +sVsrr +p9961 +Vserer +p9962 +sVido +p9963 +Vido +p9964 +sVsrp +p9965 +Vserbski +p9966 +sVkrl +p9967 +Vkarelski +p9968 +sVkrc +p9969 +Vkaraczajsko-ba\u0142karski +p9970 +sVnds +p9971 +VGerman; Low +p9972 +sVzun +p9973 +Vzuni +p9974 +sVzul +p9975 +Vzuluski +p9976 +sVtwi +p9977 +Vtwi +p9978 +sVsog +p9979 +Vsogdia\u0144ski +p9980 +sVnso +p9981 +Vsotho p\u0142nocny +p9982 +sVswe +p9983 +Vszwedzki +p9984 +sVsom +p9985 +Vsomalijski +p9986 +sVsot +p9987 +Vsotho po\u0142udniowy +p9988 +sVmkd +p9989 +Vmacedo\u0144ski +p9990 +sVher +p9991 +Vherero +p9992 +sVlol +p9993 +Vmongo +p9994 +sVheb +p9995 +Vhebrajski +p9996 +sVloz +p9997 +Vlozi +p9998 +sVgil +p9999 +Vgilberta\u0144ski +p10000 +sVwas +p10001 +Vwasho +p10002 +sVwar +p10003 +Vwarajski (Filipiny) +p10004 +sVbul +p10005 +Vbu\u0142garski +p10006 +sVwal +p10007 +Vwalamo +p10008 +sVbua +p10009 +Vburiacki +p10010 +sVbug +p10011 +Vbugijski +p10012 +sVaze +p10013 +Vazerski +p10014 +sVzha +p10015 +Vzhuang +p10016 +sVzho +p10017 +Vchi\u0144ski +p10018 +sVnno +p10019 +Vnorweski Nynorsk +p10020 +sVuig +p10021 +Vujgurski +p10022 +sVmyv +p10023 +Verzja +p10024 +sVinh +p10025 +Vinguski +p10026 +sVkhm +p10027 +V\u015brodkowokhmerski +p10028 +sVkho +p10029 +Vchota\u0144ski +p10030 +sVmya +p10031 +Vbirma\u0144ski +p10032 +sVkha +p10033 +Vkhasi +p10034 +sVina +p10035 +Vinterlingua (Mi\u0119dzynarodowe Stowarzyszenie J\u0119zyka Pomocniczego) +p10036 +sVtiv +p10037 +Vtiw +p10038 +sVtir +p10039 +Vtigrinia +p10040 +sVnap +p10041 +Vneapolita\u0144ski +p10042 +sVgrb +p10043 +Vgrebo +p10044 +sVgrc +p10045 +Vgrecki staro\u017cytny (do 1453) +p10046 +sVnau +p10047 +Vnaurua\u0144ski +p10048 +sVgrn +p10049 +Vguarani +p10050 +sVtig +p10051 +Vtigre +p10052 +sVyor +p10053 +Vjoruba +p10054 +sVile +p10055 +Vinterlingue +p10056 +sVsqi +p10057 +Valba\u0144ski +p10058 ss. \ No newline at end of file diff --git a/cps/translations/sv/LC_MESSAGES/messages.mo b/cps/translations/sv/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000000000000000000000000000000000..ea104dd6428fcad8ece5c67b531ca84c698a35e7 GIT binary patch literal 46498 zcmcJY34CN#nYXX(G>h!JaJ!-D1d?<&I~}&9lV0egyXhnijWTkRs#GdfsVZtoI*lSI z;KHaV;sP$<(1Qpf4$v-xYXo<3ok4LMw-0goaBy50WxnVCo^x+iC2573`TR+qI_I8y z?pfdSp7$*MgM)UvIpBZey9U8AFn_dM_5VF|Mi3l;^W$(i{3>kI<1=0Oc6b8L3*kYq z2#4S+p~61~_l6733WD9?A#g8vly@Hw_r%=_NkXt3E`X=Qec=V3{ZQ{;>YrcknS=Y| zKM7w5uY-HQo8fNoolxJq9V#8~hl=+B|NPVb`6Hf>LVf2kcsTq4RK9)>760C6yYw9i zRa7Uy{on=gIJh1vTmdRySHUCU_3#vU8&vwf2^H^mz5CZt>H8g2JkR>)$F6YkEQfmU zYrRD5st z&u@Wx?>(OPLDl1@p}zlBsCxTX&+kLU`xB^mo`6dKQ{Mm2Q18Fs9QWP*;S$_O!joYa zTm~m#8+%o^GT_D)w+#om!o(mQ4m}eEX~S7_0ESTh zo$z!x0G0pOLZ$odQ2DqGs=T&)-UF5I`=RRpA@BbP)O%lnDvxhN#rHVW_nw3c;qK?V zbS#1Teiw}37O3|8&rtDv0jgfU4)y-`{PRCRwcp(@aN&-CG}$18O4p^HBT(%%4^`gR zKz;uWQ1RafRj(g`dhZLK-++4lxaUux^6^Wk{5}Kqe7CM3I1ug&_5QI?{!5_hZ7Eba zyaXy=!|*g%g8J@usC4asO6LqzxW}OC_2*FE`**1F|1(tlyLP+p?E{zKJ_Ig;=RlRi zOW{l4JK*u~_wWRG)Jm6+^P%c>JyiMzp!&-esC;C-yX>F85}u0xYv8W%A*l3x%JXxc zUxkYI+weH}U3e^f1}=g}_PF@ZfqK6eDxZB&?er38@(Ze5uYxM48=>04?NH(GfhxC; zK$XYCo?n61?x6DVI8^)kDO5TA8Fs)EdR_k+fbzcz>iho)m9B@N-k*VLcVC9e&;NnD z!#!6y?gw9l`(W>04)xxdQ2p!zxCguxs{KSz@syy-SBfV;t8Lgo7@ zsP_J!Q2E|}wUhrxL$#MPp~Ckg6wWYhsx)j-v0rp@Q*;X!>>R@S@41jo%?*a7)Om5<%~9QTJRufw6r|2Vh+o&c54rBLN@ zDpb14P~Y1QmA-qR>f=jL_3(43a`=OH@7?dda}?YM|Ks7_a4A%N&W5|d^P%4FhE~r0 z`AeYEH4HAC~zJ9oq5;fJBx>*H`g_@D3?xc7QjKPN)v_f)9- zo(Gk#Zm4{$fs$*NLba!&=M7N#xD)ETAA)-CBT)7A38?z{SE%y+HB>tP1M0nJp}xD< z2KU~PhU{f|)P zd!Ofn-v47z!PeIkw@1fq`eUp3d zg;4Py=H16ZrRzk9N)?<2m7Wq*d@u977V7(d4;BBLpvv!UQ0e&~RJ=R9`;*@N2vqn- zq2l|tfBt>%{;7BW%JXTc@XtWS7Yw+3?hTcXW1!l_iBREAf{J$;RQR)?+I^RQelgU0 zmqCTgz*bm<2f%kgwWIfYJ_uC~pMvVAe}-xoM-IApPJxnd=Xm!3)b}ofs)q_xy6%B0 zmw)p7C{+1<3ab4)4E5b_K&9*ZQ0e>`)cgMz>bw5|70>=duAUBsdhd9s{B}S+KhwL< zgNkppcW;1);=Tkb{sPqVtx)e>?fGh`_}<|8HmLO829=)e@L+g1)b~FL70(x;+Rrzj z+Rcx=|F59l`yD(4J_9v=zHqY}?^~gz6Y9MUQ0aRyRJzihd8l|Q{`oZ2d$02TH^75% zzX>Y6cR;;=mw$erckh7e44r;TFI4}oLDm0t@KE?>sPX@OP;&8?Q2E{S68D|`pwf2`)c0Nl z4}?oR&xZQ$I;igsdiRT=;z@aqL%mmms>fGCg?}qlI^X5pw?U=vPS^t8?WM@8wYScZ27x{`uYTNcfUUKdpS zeNg@7B~b193aIp63zh#Hpu*n-RZs8s{&z!#yC3TPk9j@{70*wh((?zXdfDqT7telB z?feL+@1Fn_?lh=$_Cm!s2oHx@D81$ysPfqk4}iJ=)^8KcF{{X7qeg!XtzlR!sx-NI~#9pX&^a`kWKL(Y)&p>_u zOHk$buipK0@BVkF{JbD?@9hPZz5}4%Kg|0d2lf3W{`qpKbe;(p!Cvn_=KTv$<@qwt zzlZw%JE7vg8|u3sf{N!O-u(zvxUWFv<9kryf9jt<36+lDLe=+wLgnwEVOI~wLba1+ zQ2xD8^?wmmekP&X-7BEl(Y2oMgzdN=fU3_QLw)ym-u(>J`}>YKxp1iG$?ypLyP)E` z6e|5?@4g1A9lZl8+y|iIe*}i`F{t$Z$@}l0a`A^y;m&~i?i#4_x(KRVF7fWmy*mTd zzlu=h`AYx%MyT?78`OKZd;hz<`#z}je#G;0a5e6KfxYn9w0kcF)qe9(^*ZhOTBvlr z1D*-lw77|Fd`Rl5y^R zpu!*M-G@Q-(__4Q3ETsByXR?8?XVLrg{z_Boq~$zmDD;{Pe!3qA=K!>7Ifky-crIJhhRi=p0Yg({cjaBsNM z`}ceQA*lMuK(((asPXYSxHr5ND&N~Z?}3W`B3R!4b|?pK$Y95fBrV8cK9C8d!gj*$DzW12daPm z9O`@j1yyf*a6+QBnW-wP(3dpD@^ zS^yRPAh-Y?4b|RG^!{f%IGZp7%nf z>j9{8{D^md67GY02I{+y`se=&&%ylzsQe#YaOJuRo``z@D*fA_-g`Y%Io=Ev|1F-k zd;j-&egNvde}XE9hoRcV*I)KuV01=_XF?# z1626EtFB!f0rk8M%D)#L1P7toYX+)bu7HvQlivR(xG(N^L6z70z5nN-%IzE8{Ww(o zKZBCj&%%S@VKtY}li(8Eolx>=1fBq=p~~Ui@DTVxsP{h$+u`@1>Se*ClXC|`eRm;L zx=(_N=QODIw?LIo0jhi^q0)5?RQOw<-oFE?J%7Oae-tX*jQ9T@d?D^9y!(%E5$@fl z+;^5h#d8i+yuDEA+yGS{o1xwxg9^75svNI@`tBQ`(s>I!6uuX#UOwWVe-5f1z6sS& zpMr{KpRKN49|Gk*3hKS%q4Il*e||1hyemDoKz+Xm_1?>%`p0#iH$c7rCa8416Dpl| zK*@vqy!!#D_df+&;1{6k>EGcp7*4x&u8ZIqxL*xVg`a@x2mcP0-V?Sto(k3OyP@JM z!eimv;X?Rf@BR)v3iltO%H`lIoqSye)qe6&>3TU-JH8&OUT*OIH$&y;-B9^_zvqKc z;XVab9$$n?-`C*L@P|p$TUFnpP7pJ&4o?u(%0&S$*;*P!Bm0xJDa`{#$g-1WEP zp}uzpTmdhDO81qX*Fxp<^-%eGA6yJS3Kj1U;bHJesQP@tRqp-$q3Z2$sQ8cb?pCOL zE%)v-;o-Q?hx+ctP~~ztJRjzv+VMS5`MMvf-aZXgE>AqM9_o7s zUgP@P(NOM_;c4)6sP;P!m9K(l>iRuY&5|uY)JS4?v~wF{tnD@=8~}`#_b;!BF2{ z2-VNefhyNNcnnNIy>|^%zF!AbUvKsP{{XF=q3Y*;@BdL4;{FU&zxoM02Ojt;m!I`e z_3@eZ7+ptx$4)6I8ei)OXA9NO&bw_?w~9@gVGj5Bui_y_zu(cN^RQuYqge z*WvE)sMomm6GFv%65JJ@3ip6#Lgni`sCM}h&z$ErsB(ENRQcTk&x3cu3*pbomVe*}+(Pk8S6_pW?Tger$Kpz_@dmA=hz zUwFCqpMd)ARd5%09aOt`4OIABpz?PIRJ-_Rcmn(slpgUjxG($@RQNq!@6vw&+z0nz zFocWXLbwtt{xnoSoq}o)Z-)E9_d@0WKF=Lc?dl<@^8Y$id-?@j1b2Od`|gQQ<*^Lv z{j;FLp9fVBoBi`5)c2>L()(JddbkPdy>~*D$9w(ryFBmr&p+;;&p@T?i*Nz_p@04) zRJ>0?edihPzwaAec^m{)UdKYoqm!Y&zXqy&FY??B74M6o>VMR`$Dz_$gRSsNxF6gO zRo?eQrT>#q_45c+d-<+^e&~%ZeG8$=>tv{UI2G!>^-ywZ2uhA!0hNwdL#6Z0P~W)~ zDj#=xJ^Ws@_qKQrLwzp? zr5|sFO5Y7o`M({W4L=B#uU|lw({G`^^9QJQyw{uEcaDPx;_iU@{smC+tcL2ZLs0em zHmLmH0~POwq3Y?AQ1O2js-1liD&IebitksRPeXm@8L064-sJLi5LCFMq2gTx4~8ds z|MQ^2_j>m_sC;bl?h&YR8ixwE4XV7ZhDyh4q3ZP}|NLI>{{TE0|4+aU_#`|C9{Cpc zUK><7p8+KwS33UJy7v~*tN{JY z%6Am19Ik-M*ECeVUJKQK-w0Jd@AKRN_1xE1~M;dZ={24XS_K3HAN^p~C$$)O(LW z^@qoy#;ZR-g*)_Z?!6a5m2WFlx=!_60hNy~sQA`<|1D7Iz1%+^g-UM)Dji#)!e0v& z-y5O&*;}FF+wT4U2_BC7qfqaC-ShiU;eP@3oj-c_vrzHv_jVWl5UB5lQ02B5>Ujs0 z{5l<;3D1TH!z-Zb;W~IId^=nZ?}aD8zd*&a=pF96CqtFa*KeWp)ZO0cwU57eE_j!dV~0bP zTPsxh&xK0QdUy=H7)st%p~7A7-M4t&163}cfU3Vopu&9{s$6~n_5Sam%5jf(JGp%< zRJu=xdjA}#@I6rNXM^`oL)FU!RJ;|>S3|{nD^$8a02S^NQ0e$ARJ;Es)O$bld>ShJ zp6_w>egr%k_j0Im?uSapmGDS-Jvua^6Y~8{vcF(F7wYvpp`p30{<#heY_s3eBTaL-tYJRpMdJOUw|st z-^1PD?%Un_3!vKh@lfU02^CKbDj%H9c*5&Rm|`@ew-zsEni_Ya5q zUMp03&VovBA5?s4cp|(S>is*R8QYEa2wnc-VG(c?uQEZDX4H?_0PWz_rm>ssQ7*k_53NQ^8Eu;dKTQ}{Evd|xEFf& z2Dmrw%~0RD9I9R?puS&*Dvxd6eYNLnpz7&HsPerX>boC-s+Ui~z2SGg`=@X(-2Vkn zfP1~)#orDU?sTa9oez6pKUBKk3>EKtq3Z80cp`idDqY`$O81YU>iz%1^WkoHyL|LO zwZpaWH27k;9Nq|3&Y$uAPeZ-ea*wO;F{tlXpvHq&!6ooEsPBH>^Q%zh^)0CK`VQ3h z{tYT$PkaBrK-I_YA8_sX2&nwFdG`va@av)SdkK_0dMQ-AZ-*+s+u(liE~s+!ISk8J+=ehkE}pxIg@% z=Wn3;?_Z$G>*x=<`P0cz@m>hkP6nagOGDK|6`lm|f(rL7sC51SD*OxXbNM+4F2H>> z+z*}z)z43ZN^c)jISfLTdk!j|mqWdG8w}yya3TCMRC<2{+u^<+a_L$D`*E*@`p(-y@4eGroq3ZdM-hZEea^Vi~JO(Ph6QJ5_2UL73q2gKV z-J87o5~%(XL8bqCcp!WqR6HMpO4nySKM!}o{bi{7dlV|($D!))r|=Z`OQ`Zc_I?*` zEo{R*1P_3(gv#GdQ0@CxsP}L4yb~_NeXoE1Ln!^_r*L2R3{=0_^8pv`1b80qA*gon z7N~su15~^ZLZ$N||NLR7bbJdcKR<(qz$c*U^)FEA+Ur5*zaNy`Sp+pcoC_82W~lPH z3`(zw;EC``7=#1qs5~+j=F-zs#d0bP7PpKR%M($xwGz4?VWC*%XRVNuM>t$8=E7`h zMYy;{KU-6cZ`6Yp3*qWwF_TY+J>~3VTERyPt(AELH$2Qog-juuNb~h<#l9SclTkjK z3iYHGWzxjp0xYS7rE+mJ%eIWJu#lb#Yo%0FP3ygAGRo$o;e5IyT$#^~ z38Q>D9i^tj^ww;pTH%f1+*q_N8x{CftX0_=GnOr+DCM!%O5NWrbsn zFf6AtfkSp-UlYwQ@Suv6Cly z6mHC?qe?ogmZ!rgLtR)KDC?CB1qF(Q>4{>k5)PM(Qx*GsIU3g2%2B51s{a+?lehPBkZIr+etcx5PG+&>fBB?2o$D zSdm8FO|P{A;zx~sfXBqJUh9r3QP{GQtdxsIS|9GQT(&IICRP>;quET&w`%8C-C7Md z(b4E0cwA8<^7J?nrSnm_R#8E8r-?gkxs*?2BceGi5r2FE`(7kMH1q^Etywwf^1f}a(bdTNyyQ1al*-gIbkK@yyz)KgHAY^F5Mhg3gjOe3oj{)@rCmxYwULo@r7~JmYoxSmN(>!pq*y>US_dWwK9z`^0AfD zWj9!K7b_+~y35gc&|OY5^a11;A!`V8iIVPGK0_B*7m`S!x6}|kJXlF{E%MjZK~Hy> zqKn2(c_K1GghCb3k{zkUkJ>Lz538Zn`>-EmQ%xb#!>V>lD9RTzO;2nHPPeOd$e*!@ z;oFS`u|`04v!mH`sx2%z@jY6!frk;IR8fIgfa&C|LYQ%yNQ#om7gau_uu`Olt|afn zo#AR_GmDG#P!v!#r;4cmoFgy&qiH8yW0$(0Z)q#j!?mbDA<}82riA(8hz-_BM)+(! z7YK4oS-G4ZsZxX0v4BxGLz+n0STs>&RMU?_CLIp+4{i)A>8d&-iFBUUjG7!03^vHF zklNyswS*Aq5rz$8&U&`foa9k1=F$|)Sb92Lphc}5%MOpQuNhi%5mj^JQJLXS-lg=^ zw2Ex3I8u$K#3BP~WIBpIh)=DSvlca0n?%$HP9u}THG-TgtHLz$hZ6`;^>umZsU!=5 zi7sd!6wD>rJcpt)8%6h(n@wO6Db$b+v}O?7E<*oUL) zio{cbxbCVJliw>s!jx$Kpo}g?-iqjsBPx$#Ess`*=1f0w>XDLGm(Xz=Ny3e$tEl0z z4qI??RhnHrs!;@I7!{^{3dwN|eL_+|;yISFh@`mxSoscZ>I+-OOPMxb-V7couc9GY zBBHERi;`ssnON4gg>*17pn+zTW;qp=Q>;&qpy%4NK??HWuTuYUc7x|OZUpi@LxF$kvRH2rORJwlD=p=4Dho(IxS2@QYH}pte_|`*#Fwl&sS*C)X^k`Je zlUd&rtsY`kzLGpPS&bf1MWW0Jl1B$DrwJ=X+9TAs5dWsuHCWKJqY6s4*SKB#sH}+H zrpj4gZ}PFJLQgu;A@#GIrOnc?8h$Gpr@r)zF&X^SfP1nP>!it#uw@f12F1ii zuGXN(x?8NePDNA-&D@RSb)Dq=zZK5fq$WdQxt2%!oj=;Lv{1UNABHs6>?|lvx->gn zrko91CZdsYF`i2*{rC<8H)lzHAXnqQSYiay+^YwbKU_i|DHAoBq}i6sCXJoo?Wr+% z1U)snvHRN@_GeRQI$_I5)DbRUcKWjR<)@y$jE_#&6mna!kYT4 zZAOK*W^+0H@txIv4)G<8dQ7x^5IVC-Itw3*;#ui&&tjn;^p0k8L2qW7rWqAb@(Lqa zdU$Kln~TP4JVEo$(m#3&Chr(lXHU%h6R#$@8Ka*?_(xK#5j1EVw6m5)NFe4LX!p5A ze8$CFvq`8XTfK#mvJyi-=`CcWuEnfZ>+B#j4JhEm<1v=t-eoFbrV3(RH?3V zY)I_2`DxluhE?c^D#O5xzC#jCXiBW7e8==JZ5>IE)Jz8-Dr{nI@4QiJ3Tm=xwWN-4 zm9&ji5osggY}N^sNfWnmvteMQElGv^Ux;GGtT?RlJ6s!?Cmr!v(3pg6({zLix)~y* z$S;&tN&4O?(l=E^kRq?n_vz`tSQYQr_>%-XsIv}A}S!4H5{~mGUQuEZQWn=PbYNmh|+S;*`cT{;!!$~Gyf8%X0 zHm&M0mr;qW%yItu7j5iz-*E%&;uia8E9NMdCDS`J!n^u^ei1jNMKRLIT6(XjMMNlD z$Lbo2Av10sRI~go)9BK{Dn@jy7$G`VeIgL7%8si_t#Kx)*r~;ERyfx)8FTIRG}Tv7 z{Y$UKA!A(Jsx%kSXj#;ZGJZ`?8zP+)a^r6*X0NLgj(REt3KCkoXos-_-TLenPuW1+9^D*-F{ zK{Y(z*LekniGj(XF2ZbNI!$8i42i1vu}QJBPCKPNey&H%IHN*m*c-_dM;>C2^~JI? z#U(x$Gf?{=wY=52Y#A;`yvJ`F*H$qMjs>eD{-4Gkh*58($dm?As|gvlv;sd0DLtPq z2CIjoX&H_f7Rt1|E^L{oniz(h$Zri+r_bD*5dP z={4ERSmQ`-Vm%J8@~8(mQ=*;WT%T05Bzy{Sgo|-e8Vb$NjK&R$iakt5yVcqJu*Q1& z%Ie}m{=>q@-y#D%hSRWX18&$tb68Fx6_n^N>#Eh5nY{$2T4G&}3>Kb!E zwDDl|RCZ+Siw|KWTQkU{)W)L#jh$*+6V)pEI~8SB2W!%pbEW_#T?J)ko57kaGMjn6 z*KXI)jWW?R!#ht@C~LB4ZT-b+jbF44RDd-T=uN>Ip4 z8my^d6EsW5np!Ce)?(xi){bC89gi{MGX{9MO#i^ zQOlxF&=%_>(Aq-S=WVHL8L*fzE7xloj%d+q3+S$S)TwZ@TVKG3K7#teXce}YqhM27 zwe8wg%0U*Ecr**UDwQHVLWyZ@cs0%MT8?tTQqQkaHo5{jb;@noQ3TlvY329CbPkx^c3rwK%^Bz!=x}l8?hfXtiST&gyy}eNGJ=Qw=x9;KR?o1?=_eXC?@mWd$t4-rWy_hd?6zQ?8WNpmU2%e>(Lsv( z%ev0oDbG4o0hLm*QjY9LDNVZ!)?urfmU(+!&1$Ab71CVR)yg%MV~qh9LsTDYL=19$ z(U`v8r|RRcUzv-4G}ypmuL_~`8e^UQPO6^z(%VS8et2_Yv%1h{VxmvQC_5;jWYp(# zXzZGNrIywTf>|M1qM^;k_DNRTY7_QGjt=LnmD2J0Sji)s_DxJqMA*^M5%k4oIZ8Ct z0IPlAAhkO})_jI>|O zMr^dGPe{x=9|y43I;(8_1mStNVZN*yC}y-g*;gEw6znT*qhf2r>TI;(3`HzQUoBtL z&n$)|s*ZVi$P$)9TGiKzVT<)!Ga(H|g>5QWN(5=AhEm(gnhcgWR_?}v{)nYXr_uLE zDO5v5Nq>}yFf`B|7>!u0>5pJeumSS+I75K@JW@(bCU{j4L206l)EYU|S z(Xxdpq6(Sp$KuHJejrPSji^y%KEY!<=EadLdNR%y()n<0PyI>L3X3!OrGozKlH3I1 zyPp{eh5>{qdCD@_rtHJTv1lq6^t0@N$)MkQxcxOL*e~^dm?A5Z8Qj4ww3^Gkt_?Q{Fuux z3dAP9@A~wfdJqqebXtkfMB%>6T4R zSVzf@Fb&yI&N6G?fIeRgHfV6-FXkp?c4N<~j`0esRJ4e4urV6TN0V8YkC4Bj924w5 zpmlB3Ul!Nx0l8)+W@CgVBkiilPruZXNtGmPxJNM)*dO0Sq+a_-F=);Uwus?YN@D|>xBoGXZ+?mKAs-^o zO^r6YePv-Bp)(#gE3cGQt>ooASFUQaiHM{Prw2AL^VHp2>&O6DMLtwy%d4#K!CM9B|Qrj;6Rck$jT1RAWj zy~u(m3DZzjL}N`qy|tuvq`(T5%^<&3Nlx>m5a$nPJI4^Xwu^#56X-~kC(ES#PK?ty zObtaAGi$Lrw*}lvc|?XTnkrT=$#l6I=MOe-P-^`IB96#?*48og>VGGmQa&0{2BnND zd+ZBwhAY2f8LyHsh%;uGc#Z`&q35jI$dAF^58j*7ldL-jn;3aaIgfuZO*O@_-919| z*pq3%&I7$5pm>c|K%wGOz8)d zH5!Y=PNmu9R;9I^KSB*d=2>I1g9D{*y901S~#Um|NLo z9QU3!&iUU67-vjO)DmnS+9_dMK?jnOlk6R^ovO*!)DT+<`$S0KY=36Vm?yn|yzdHa zM_YW^H9^8Kn6RZ)Ef*hoP&SICX%7kJ6t21B?^M_{z?cu6!9DTR-TZAsr}Y%p5m>d{svz zXaR9MP_(vf)^IiM*f~@xIVbigzncUrNjz?_0HfE~N&XRcaq@b0=?!u&9zd=2(~*kV<2W+yPFF1Fnxc+HiwU zyem#WQBntH?M5&UR*RT}m@EheYQrpV16vYJX1<7lpK{l$`A4R~P6{q3+a z7FtMZZPMvAgRDCYt(`Tn52Yq*h>0OBK547q5DIFo91P{kXo*VMkY6VlDvYqyRzK)c z35GEJF~8)T2iYGgP!J5Ggph&R7rh#?N`0PvgG25#1TVT%5ndL>PW4PS0X5pCT}P>x zFwZo&xh^$S*p@As%$lX~d&7zYOKw!T|LvwGD-x$)8Bf$1n?i-fT;$Y^M(xI8AY(~b z>{Lova~Nqu#BNHF+mC2Nh^*py_G!u3>7P1j?_J7vve75`B{R%WnFX66>V-2M~qPuH9^ z1Z(?Hf`;gj z88`Gqd|mceHw3xu=QQeV!wCJ&NZ`!~wTQnqii&1I3^r%eHldz0+^TaA~G5RAXLtvSf(XvsanOYtK6~77xXD&|X>9kIzznDm-tL)$8M{zW` z*rd6#9}BsS@!ahargu@WCCah%u_Y?~JEW@?DWVAyBt6g{JYvqNZHo=ArVJwNYbTbaL1|xZG z%X?|Xwjxw8@nQfWfnII0T`JZ~S;p1YvYiB1Q)ZlSwo!Mugypp`DwWvw;YI|%`zqc@ zXeE|xpNMt+z)jJcqYLD$o9t;5EQLh$XG9YllgsH*hGuu5&n8kyX?k;~Q_(f%yS4v- z7AMs~{l)r{_7&L-V&wdwNl|h8w^)#r`ilzS8-YKT7BC+3AH6^WxHlatU%_C72#O5TB@vA zx|FeZtTx;+Qk+=Ip{?}Dwp?xLN+-mmAS~FpVX%FrCWs8l?LADpR)nW4TYeVX7~7Yh z87@C##i?hVyo@c41Z>A-!+1R>+_KZd<;z!`ezptO7geh5gQ(CfwXtDrMR*~zMlDpV zNAW6W!gI!*yQ5(44p#Q_7i83)mB{lJ^!bV4im)=7INAr((Zq^y!A6>Bly6^!9#2UX zO6IJbdrBwALiFU^mO{Aj+;Dm8g8sGrz4ZcH-mz=}a!7h?``~nmOja=*E;Xx7rzXy< z-Bi!5RY%*;s)th^u!^^{EwrcscSU&CaJIU@?KWaeZttF65q3u`rG=+-oWU1@aA0Of zF0Al}?ZNXLtHnx&4$YB=w9Xh|#TuR2q0_aw_MIKBZ4O?V+1@llNq?Mu!nWy+h5+h6 zu5pGlcVNBL=P@UQnJf#384UlW^33*J5Vzp?pe;LDLrx#mN;YDdy;HAOS%1jP+@W2v znU0X12<(>*l{|K7JBexdiMW^`Q;k04Jt|D%$t1AxEtgP^N9wpPMt*D?)McZSj>7bc z5z>OhAsSm!0MTvDPG{1V#ja5%QriFK=6N|HuV%*S_`c%E84q`I z&^K&Zjcq7u3w!gU>B2DED0A#+w9>H?z$(Ko9RYSfI09_n9Hew+wpYWMYYQpXy7MzT zs54r25I-2yB%UM;&+HhWA@*2D&^*G$>OBa>*=^S2NLf`I z!K`FCtP_XBG?8bdYmTlE`MN?su}5 zTMR$!!Koh{9_?6H?w}S~y7GZ4%&^(GrMhW4JZxSw*P@u!)Om6gn$k0K2UQRsBGy|2 z^lKWu&JGim>l^+Yu|=xwJybMx(j-&@<#Uuys|H{HEfq6ra5p}~TuqloxJfh&v%x%z zK9Xa3R&^MQ35IniVrb_+TRLLwGT3;?7`=lo%c!Z|Yv+x}Q`;E4lxRgb%%+h*hmU0> zX*_pqQFSvtW9u0K?C5dWvU%nXQf{4tbE8Zg*~3C{lxswfbDVR?_Tp-MQhA956mjF;+X>3n6^>Ifsd8UVPqTc#Im?o&k~;tSWP73%1>O3qZ3UdcXCsI2LObzg zQvBCXEB7*4YGGr0mQ2liW?4s;b2?a%AE&4C8>z}>B!19%7yvP*WLTT2Qoz)viQ$5V zkNSb-IAE1S6oj;%Kgyuth4!q_s5=d|g_6$ju;!j9R2FrE$&hrYZy{;bn3LV}O{19& zFpYaMed=vI3v)9&oG75?=oU<(C0Z;$bI&a+FSB0LFhxyjAoDM|rFf|(San=M<%$zD zols#pn$=hau~Map`Y@^|r)yo6VzzCcc`MZtJ7?Z%Cz!ocsjv}^?PZ!TN*LBl->Z}H zyR+)49xkaRAL~x~V;m1coL!eF0JfGb0UCGs`9tJT40Sq|QqcAnJN(2D&9TG8te)hr zIc~%YJEa;P(z{IN@b&Cmsoxe>rVBO-C{fzoKu7XAUB(Jg1t<&sVh0cCu z*Teat^)Rc6b&Ssl4Ydz)#xU(tI_$-RB|EOm`nc8b7V60aR@8=S#MtE$D*d~Ma^-j+ zpO`CLI~vUMh` zEu_#~Mk? zwnVVyV$voZ4Zq##ZqxO88c%l*l}Z!~7x%gAT-820?14!PQqQbpBGQ-tlD~KtlLYhLhl0vtOU)5ETL0Z%(6K z!+jP}%xd}drnfabQ}v?&*fEXK0W8E?}l9Guwk zevMt#2np|Jf059_t#KaEz+(4vs_ zZED^g5E}-()*B@5hUP960?Eu5lBbD?N_=Le*u=7v!!AelcN3#>!wGb&nM^dnc8TT# z=&?|v7g5J7if{_OVV=)C${r*J477P|JB&>c@$=DfBmt$0`Pvk`*{9JFn=T?sI<|Kp zRXLAt6B(U0XRM|r^{e%8*_F9iqii~mZl0Z?%g5|P>6j{H5toU}w2ip~UfCOIoDgFW zVd&@TguHUDguCIxN>|+|n*zJru?zsBg&&=#7l@QX_cCq_~t87$a z-!j%cXPDF{ZE3P$u+jh@8xuHg>^|qBl48KT$s+vkM7N?jKA(Ii+d9HEW|N$gykz)l zN?31s&arl<$}}8nAF8Sd&CD>I9^)tL!wmE6ki#Sz3^6ZYEQ`%0iPO!bVkfh3nb&&V zp>~}zB0Y>Q{hUgT``bJ!4J`<<7%S8Ct5Rh5gS9j!q>!e&a>#vd&CPn@_r z9jjOjvh7ForUsLeI~uPZ?V5j50)NBiF)Oqe7c7eNK%G>Ir75GiqVLM*HGY`MoB%p%FYiG!dD`DjrbgQ{&c~MnHGSiOUQ$%}4RuH8Zat#7|D*tBUL>z9nMK%#QI?d>FsSEJ>P8 zG)z&}&|`OYBp<7VP5csje*JJhI|DE%kOIui@kFA@f$}Yz*O=+rDGp8!p^|V2j?~o; z=u5kHO0%8NAI7k)WBTa7jpy_k?%9b&!;KAGcIPm&Q6Bh#bZygGM7$`dudQXXab?^T zYH}`wpAI0L2>syREq|fZ%twhOz4b_>f{DFPz^DPoj*t^Qy*=J8>_u~}5Md1(fuVyqW z#1$hOVREitfp>nezur*|3c_6Y58@A;9T>wf5U$^@J2aRUK7AsX0|eBa89J-5Ic9l7%(8WRCqs zx;udQ8!it}#Wmj^pk3ADSdCOaXbRjUz|mA z6D#zRLQ0%26mSYfcYWQl(rlOy`o>xA4(41dK>cWscRS_I0qY9uax_FQEgF*B2V@9|#~=>L*!=?*oasoibijA35hv=ESR%1$lRN&23EWJ7(pSvD zQlDbYy@G%NjJc7_{hD)g@>CXdrxC?TNGykq4{ft23mKXoaO_``&&iqX_A4SnYhBH^ z5Hy4s<=|@5(AM0Oh>j5KjPlm}=hUN=27TEl;d$OkpkqiBB?lO|oIv@|MtJ@vHxtM{ zGnm{=(9eZ2v^%?>fV!M@K>;^KuoyzcJckPkQmi`oh2DOIpPA-mOUjjtjQ4Dv;T8b= z?V5tR(8G(_oKhUN=r`S^f6mnfx))*2y#+2=%q%Roy1ig#hfJG6qHvsG_zz z4*Z%8+shN}CBEvwTZVXqB(cBsHT(6F4MbsZOO$ry!GNEO1o4#zX{j7Eel{a=5R%1& zc&fLszPSW7-!BZYZO$g@3_l&S-qXB$h5Qf)^iK>>C@nHZ&wmSo3mBX5kRmq!i)|?# zVNcC=0AT%L(LnPnW{~8wVQ&`wl`J|{iIpIJVg#MXY;4OW7|$sUU5%iUwU6V}-7<9z zMjlq~f(~{0>k*#Mr3hhsb969;W)+fctNA#4fbjYo_!PAk~i z^$E7C#9yBvg_&7jthOQckuh_wQwUpZimm<9NC*X@m9e(P&gP9ZyIr9!A~x2qS?EhP zbS1yMO*`4~rmYy-D2^e3wI`HETU_P5nO}`{h6MKYx+ZA1FF5N~qXpeBL27z#w&enw z$r&f<#A<7{OrsCe#I#7w54E;lWMm0 zN)QEg~srxC1K7~vi3%+LPO|P*Z^6avw4y&%Pln9h08)TDT7_}HmatTXup75 zxBl8jDp}#wdUXYsHgNe(e;e5#TjCl3Q&^x()S^?6_*w|F##d0aIEWU13yJD{T&>LGFB37{a%UGd49q7> zgZSnKw&71_Sm@*Lta}@rU-PvM&W~olgL57%gt8II-ejLD77p`}9*REf#w)+zXHK<7 zM6vsw4Yh7f+mk@z$e|w-8rl>Cq3Zz3UZkbg*&fL_+GXprPF#3>HDn1`5+Lw>OIxz} zz6k|st7ua{0>n#28tqz#Fx$+`jX~EuzI4*D|M8hGMVl+On<*?a;t)YquTgz*8 zhHc7KHt(?mK<&gNyj}9Zr-)YSJ@)mTg|_W<6}pF8t}#p17=|$Ba+zS&ti_+8dz$3N zYQMhb_g}dNv?5%@1_s^yu*j7dPOPw)V;9XkHB@Heb+x9LEm8mTI5}d_bQMH5eVqD< zyR@2ryhb{6T{244*VU7q!?qh`p4D7R)oVm5ixq*zf|Y<})J-+n8ztbAUpu)Xg3BM+ zcB*D!(12yb42lfZR`-*sQ9jHZxbvJnRZJzheZ(x7Yn#Rk*A8qjal?WezU&@|c1AGm zqGQ*N-*_Z#z?R|7o#fd)))|fZudoH<1zm?r@hWzOgxZ_)3iY;43+)mKJf9-rz}R@*}-= zyy%3z{<_XKY|^p8g9d}Ww85j+Fbiq$=3rndh3wp(iH-46lT24qyU@0&g@{pi=S0I! zQ*R6!(7h8C6+->u34i}YnFAv7X7``ld?)*AZ0~RnG=kZygpoX;mK$!KKq@vYJrNW7 znro8wQx*;OSYVErXjIMO4vwjp-3kR%`9^Ij7|<;gwm2#^5m{rGSJPYB41s-FtEP<) z$XY4(kCkd^(I^krLi0tbEl%{x9IYlFyXc_{U5smdFX3)ctiCJXBgy2--*m|(i@eo=glw^?x7h{-P(MOX*w3}<#sI`_`6pkEm_ZDS$4@Y3$z^yZd0n7uPPhi?p3GRdbwHqo3_T=br#4c+tBAOx1inEOIS1I zif*}x@3vrKK!*y}Nyf$StDU-1(5=|Io;=47U4Ge}MRI9Msu zsb*biO_rOlx3I*@tQYU0ZM@<_S6y&d;sDp2SUB#oh#7Gg3LBhl34_gZcBRGanK9mW zD9PZ;Y*ue{*IX#h!H8ogS#RG@9Jad9eECH@xo!&wFu(QbLb6vVoNVHN6K^XxnDWAy=s5sjbut~+nP0$CNI#{ogP?^(S(Bg7UuXl*Ka6YmfmDDo7bjod4XbaVf%v9k+Z0{$>w~bH2+xOp>?@K2U7ziVrJzuK4JREn*o2Kj%6N z+8*DmR5f4vp%>k?AN=KJbNi(0z{x6QTevYoydY83w^^iPkApcHg-u(ymf=)A+zAAW z*k2#AAy-Uk=uhLkqU=!6J2ze>*Pq_Mj>L_71O2S^XqPPtgK!`ZY4euK_Ka{t70 zyFY}cMZcd_-5b2V5vvs&^=~QJWU=Y1@q`gkh%rUew)mHlsDmna=!w7WP*;l7&mil0 zoBj<~ChIbE(d@=e!-+E%tE}-$3a%n?_KJEa8_b<{+oyd@N@I}x@*B+jpw9LK?A~s~ zst0l7FR9a&By5VcCzjuapYcT_Ty2q5d0el)Z6$52X+r}CI$hI~^yf}_*-K)d5!4~( z9J&e!Syh*ks6I)1ZTxAw!rVUEC8o2mhp--9#CW08)^UKOjQDqd3L=DNFl?frTAM-nvL}CT9b9t6HbHaw#j4j%_c0(@lTte$h3v4WiLhi^>dLoqTHR% zTE(Cm#pS6i`(dSSd$9XYh$a@At!xkBE)>g)zYhhUrn^usw7XFFcVqlzC_Odwr0ww* z!iIx4lq$`R`9@vGB@Md&jXO%_yFtz_^sweIV)td}){`D|nz(83+mEj{5?a@kqA0zQ z8bsoj6N8^#^nv{rcXta)ZfCckG!%kLk;5BVSmZij3YJ^L7+IuQx^+{#F~#Pe?tClx z*99?*ZGn8_b)SZ7Q`~73u9cWzXkpgKSTx^7C~jwxuO`c&&gn>EvhjDm7c_diaP{R4 zKS{PzMY=x4tqBCy9o5#YK7ynJCcEAJFp;Ew)*UMLnZ|WK)?pJN;1b~kWkW4kKSHj? zr`cHTX4=P2cBRHQ3=CULcar__=Lc0?6s;+fYdC0FzTMbq{1g|a=+YEAnwpn8dgn7E eJp^4wg~GpO?v_(@UjqMFr%a|2T`sCc!T$sJBC!Vm literal 0 HcmV?d00001 diff --git a/cps/translations/sv/LC_MESSAGES/messages.po b/cps/translations/sv/LC_MESSAGES/messages.po new file mode 100644 index 00000000..14f961cd --- /dev/null +++ b/cps/translations/sv/LC_MESSAGES/messages.po @@ -0,0 +1,1948 @@ +# German translations for Calibre-Web. +# Copyright (C) 2016 Ozzie Isaacs +# This file is distributed under the same license as the Calibre-Web +# project. +# FIRST AUTHOR OzzieIsaacs, 2016. +msgid "" +msgstr "" +"Project-Id-Version: Calibre-Web\n" +"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" +"POT-Creation-Date: 2018-11-17 16:38+0100\n" +"PO-Revision-Date: 2018-11-05 11:59+0100\n" +"Last-Translator: Jonatan Nyberg \n" +"Language: sv\n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.6.0\n" + +#: cps/book_formats.py:129 cps/book_formats.py:130 cps/book_formats.py:134 +#: cps/book_formats.py:138 cps/converter.py:11 cps/converter.py:27 +msgid "not installed" +msgstr "inte installerad" + +#: cps/converter.py:22 cps/converter.py:38 +msgid "Excecution permissions missing" +msgstr "Utförande behörighet saknas" + +#: cps/converter.py:48 +msgid "not configured" +msgstr "" + +#: cps/helper.py:58 +#, python-format +msgid "%(format)s format not found for book id: %(book)d" +msgstr "%(format)s formatet hittades inte för bok-id: %(book)d" + +#: cps/helper.py:70 +#, python-format +msgid "%(format)s not found on Google Drive: %(fn)s" +msgstr "%(format)s hittades inte på Google Drive: %(fn)s" + +#: cps/helper.py:77 cps/helper.py:147 cps/templates/detail.html:44 +msgid "Send to Kindle" +msgstr "Skicka till Kindle" + +#: cps/helper.py:78 cps/helper.py:96 cps/helper.py:149 +msgid "This e-mail has been sent via Calibre-Web." +msgstr "Detta e-postmeddelande har skickats via Calibre-Web." + +#: cps/helper.py:89 +#, python-format +msgid "%(format)s not found: %(fn)s" +msgstr "%(format)s hittades inte: %(fn)s" + +#: cps/helper.py:94 +msgid "Calibre-Web test e-mail" +msgstr "Calibre-Web test e-post" + +#: cps/helper.py:95 +msgid "Test e-mail" +msgstr "Test e-post" + +#: cps/helper.py:111 +msgid "Get Started with Calibre-Web" +msgstr "Kom igång med Calibre-Web" + +#: cps/helper.py:112 +#, python-format +msgid "Registration e-mail for user: %(name)s" +msgstr "Registrera e-post för användare: %(name)s" + +#: cps/helper.py:135 cps/helper.py:145 +msgid "Could not find any formats suitable for sending by e-mail" +msgstr "Det gick inte att hitta några format som är lämpliga för att skicka via e-post" + +#: cps/helper.py:148 +#, python-format +msgid "E-mail: %(book)s" +msgstr "E-post: %(book)s" + +#: cps/helper.py:151 +msgid "The requested file could not be read. Maybe wrong permissions?" +msgstr "Den begärda filen kunde inte läsas. Kanske fel behörigheter?" + +#: cps/helper.py:251 +#, python-format +msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" +msgstr "Byt namn på titel från: \"%(src)s\" till \"%(dest)s\" misslyckades med fel: %(error)s" + +#: cps/helper.py:260 +#, python-format +msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" +msgstr "Byt namn på författare från: \"%(src)s\" till \"%(dest)s\" misslyckades med fel: %(error)s" + +#: cps/helper.py:282 cps/helper.py:291 +#, python-format +msgid "File %(file)s not found on Google Drive" +msgstr "Filen %(file)s hittades inte på Google Drive" + +#: cps/helper.py:309 +#, python-format +msgid "Book path %(path)s not found on Google Drive" +msgstr "Boksökvägen %(path)s hittades inte på Google Drive" + +#: cps/helper.py:570 +msgid "Error excecuting UnRar" +msgstr "Fel vid körning av UnRar" + +#: cps/helper.py:572 +msgid "Unrar binary file not found" +msgstr "Unrar binärfil hittades inte" + +#: cps/helper.py:614 +msgid "Waiting" +msgstr "Väntar" + +#: cps/helper.py:616 +msgid "Failed" +msgstr "Misslyckades" + +#: cps/helper.py:618 +msgid "Started" +msgstr "Startad" + +#: cps/helper.py:620 +msgid "Finished" +msgstr "Klar" + +#: cps/helper.py:622 +msgid "Unknown Status" +msgstr "" + +#: cps/helper.py:627 +msgid "E-mail: " +msgstr "" + +#: cps/helper.py:629 cps/helper.py:633 +msgid "Convert: " +msgstr "" + +#: cps/helper.py:631 +msgid "Upload: " +msgstr "" + +#: cps/helper.py:635 +msgid "Unknown Task: " +msgstr "" + +#: cps/web.py:1155 cps/web.py:2858 +msgid "Unknown" +msgstr "Okänd" + +#: cps/web.py:1164 cps/web.py:1195 cps/web.py:1280 +msgid "HTTP Error" +msgstr "HTTP-fel" + +#: cps/web.py:1166 cps/web.py:1197 cps/web.py:1281 +msgid "Connection error" +msgstr "Anslutningsfel" + +#: cps/web.py:1168 cps/web.py:1199 cps/web.py:1282 +msgid "Timeout while establishing connection" +msgstr "Tiden ute när du etablerade anslutning" + +#: cps/web.py:1170 cps/web.py:1201 cps/web.py:1283 +msgid "General error" +msgstr "Allmänt fel" + +#: cps/web.py:1176 +msgid "Unexpected data while reading update information" +msgstr "Oväntade data vid läsning av uppdateringsinformation" + +#: cps/web.py:1183 +msgid "No update available. You already have the latest version installed" +msgstr "Ingen uppdatering tillgänglig. Du har redan den senaste versionen installerad" + +#: cps/web.py:1208 +msgid "A new update is available. Click on the button below to update to the latest version." +msgstr "En ny uppdatering är tillgänglig. Klicka på knappen nedan för att uppdatera till den senaste versionen." + +#: cps/web.py:1258 +msgid "Could not fetch update information" +msgstr "Kunde inte hämta uppdateringsinformation" + +#: cps/web.py:1273 +msgid "Requesting update package" +msgstr "Begär uppdateringspaketet" + +#: cps/web.py:1274 +msgid "Downloading update package" +msgstr "Hämtar uppdateringspaketet" + +#: cps/web.py:1275 +msgid "Unzipping update package" +msgstr "Packar upp uppdateringspaketet" + +#: cps/web.py:1276 +msgid "Replacing files" +msgstr "" + +#: cps/web.py:1277 +msgid "Database connections are closed" +msgstr "Databasanslutningarna är stängda" + +#: cps/web.py:1278 +msgid "Stopping server" +msgstr "" + +#: cps/web.py:1279 +msgid "Update finished, please press okay and reload page" +msgstr "Uppdatering klar, tryck på okej och uppdatera sidan" + +#: cps/web.py:1280 cps/web.py:1281 cps/web.py:1282 cps/web.py:1283 +msgid "Update failed:" +msgstr "" + +#: cps/web.py:1306 +msgid "Recently Added Books" +msgstr "Nyligen tillagda böcker" + +#: cps/web.py:1316 +msgid "Newest Books" +msgstr "Nyaste böcker" + +#: cps/web.py:1328 +msgid "Oldest Books" +msgstr "Äldsta böcker" + +#: cps/web.py:1340 +msgid "Books (A-Z)" +msgstr "Böcker (A-Ö)" + +#: cps/web.py:1351 +msgid "Books (Z-A)" +msgstr "Böcker (Ö-A)" + +#: cps/web.py:1380 +msgid "Hot Books (most downloaded)" +msgstr "Heta böcker (mest hämtade)" + +#: cps/web.py:1393 +msgid "Best rated books" +msgstr "Bäst rankade böcker" + +#: cps/templates/index.xml:39 cps/web.py:1406 +msgid "Random Books" +msgstr "Slumpmässiga böcker" + +#: cps/web.py:1421 +msgid "Author list" +msgstr "Författarlista" + +#: cps/web.py:1433 cps/web.py:1524 cps/web.py:1686 cps/web.py:2229 +msgid "Error opening eBook. File does not exist or file is not accessible:" +msgstr "Fel vid öppnande av e-bok. Filen finns inte eller filen är inte tillgänglig:" + +#: cps/web.py:1461 +msgid "Publisher list" +msgstr "" + +#: cps/web.py:1475 +#, python-format +msgid "Publisher: %(name)s" +msgstr "" + +#: cps/templates/index.xml:83 cps/web.py:1507 +msgid "Series list" +msgstr "Serielista" + +#: cps/web.py:1522 +#, python-format +msgid "Series: %(serie)s" +msgstr "Serier: %(serie)s" + +#: cps/web.py:1551 +msgid "Available languages" +msgstr "Tillgängliga språk" + +#: cps/web.py:1571 +#, python-format +msgid "Language: %(name)s" +msgstr "Språk: %(name)s" + +#: cps/templates/index.xml:76 cps/web.py:1582 +msgid "Category list" +msgstr "Kategorilista" + +#: cps/web.py:1596 +#, python-format +msgid "Category: %(name)s" +msgstr "Kategori: %(name)s" + +#: cps/templates/layout.html:71 cps/web.py:1722 +msgid "Tasks" +msgstr "Uppgifter" + +#: cps/web.py:1756 +msgid "Statistics" +msgstr "Statistik" + +#: cps/web.py:1863 +msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" +msgstr "Återuppringningsdomänen är inte verifierad, följ stegen för att verifiera domänen i Google utvecklarkonsol" + +#: cps/web.py:1938 +msgid "Server restarted, please reload page" +msgstr "Server startas om, vänligen uppdatera sidan" + +#: cps/web.py:1941 +msgid "Performing shutdown of server, please close window" +msgstr "Stänger servern, vänligen stäng fönstret" + +#: cps/web.py:1960 +msgid "Update done" +msgstr "Uppdatering klar" + +#: cps/web.py:2030 +msgid "Published after " +msgstr "Publicerad efter " + +#: cps/web.py:2037 +msgid "Published before " +msgstr "Publicerad före " + +#: cps/web.py:2051 +#, python-format +msgid "Rating <= %(rating)s" +msgstr "Betyg <= %(rating)s" + +#: cps/web.py:2053 +#, python-format +msgid "Rating >= %(rating)s" +msgstr "Betyg >= %(rating)s" + +#: cps/web.py:2112 cps/web.py:2121 +msgid "search" +msgstr "sök" + +#: cps/templates/index.xml:47 cps/templates/index.xml:51 +#: cps/templates/layout.html:146 cps/web.py:2188 +msgid "Read Books" +msgstr "Lästa böcker" + +#: cps/templates/index.xml:55 cps/templates/index.xml:59 +#: cps/templates/layout.html:148 cps/web.py:2191 +msgid "Unread Books" +msgstr "Olästa böcker" + +#: cps/web.py:2239 cps/web.py:2241 cps/web.py:2243 cps/web.py:2255 +msgid "Read a Book" +msgstr "Läs en bok" + +#: cps/web.py:2314 cps/web.py:3217 +msgid "Please fill out all fields!" +msgstr "Fyll i alla fält!" + +#: cps/web.py:2315 cps/web.py:2336 cps/web.py:2340 cps/web.py:2345 +#: cps/web.py:2347 +msgid "register" +msgstr "registrera" + +#: cps/web.py:2335 cps/web.py:3433 +msgid "An unknown error occurred. Please try again later." +msgstr "Ett okänt fel uppstod. Försök igen senare." + +#: cps/web.py:2338 +msgid "Your e-mail is not allowed to register" +msgstr "Din e-post är inte tillåten att registrera" + +#: cps/web.py:2341 +msgid "Confirmation e-mail was send to your e-mail account." +msgstr "Bekräftelsemail skickades till ditt e-postkonto." + +#: cps/web.py:2344 +msgid "This username or e-mail address is already in use." +msgstr "Det här användarnamnet eller e-postadressen är redan i bruk." + +#: cps/web.py:2361 cps/web.py:2457 +#, python-format +msgid "you are now logged in as: '%(nickname)s'" +msgstr "du är nu inloggad som: \"%(nickname)s\"" + +#: cps/web.py:2366 +msgid "Wrong Username or Password" +msgstr "Fel användarnamn eller lösenord" + +#: cps/web.py:2372 cps/web.py:2393 +msgid "login" +msgstr "logga in" + +#: cps/web.py:2405 cps/web.py:2436 +msgid "Token not found" +msgstr "Token hittades inte" + +#: cps/web.py:2413 cps/web.py:2444 +msgid "Token has expired" +msgstr "Token har löpt ut" + +#: cps/web.py:2421 +msgid "Success! Please return to your device" +msgstr "Lyckades! Vänligen återvänd till din enhet" + +#: cps/web.py:2471 +msgid "Please configure the SMTP mail settings first..." +msgstr "Konfigurera SMTP-postinställningarna först..." + +#: cps/web.py:2475 +#, python-format +msgid "Book successfully queued for sending to %(kindlemail)s" +msgstr "Boken är i kö för att skicka till %(kindlemail)s" + +#: cps/web.py:2479 +#, python-format +msgid "There was an error sending this book: %(res)s" +msgstr "Det gick inte att skicka den här boken: %(res)s" + +#: cps/web.py:2481 cps/web.py:3271 +msgid "Please configure your kindle e-mail address first..." +msgstr "Konfigurera din kindle-e-postadress först..." + +#: cps/web.py:2492 cps/web.py:2544 +msgid "Invalid shelf specified" +msgstr "Ogiltig hylla specificerad" + +#: cps/web.py:2499 +#, python-format +msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" +msgstr "" + +#: cps/web.py:2507 +msgid "You are not allowed to edit public shelves" +msgstr "" + +#: cps/web.py:2516 +#, python-format +msgid "Book is already part of the shelf: %(shelfname)s" +msgstr "" + +#: cps/web.py:2530 +#, python-format +msgid "Book has been added to shelf: %(sname)s" +msgstr "Boken har lagts till i hyllan: %(sname)s" + +#: cps/web.py:2549 +#, python-format +msgid "You are not allowed to add a book to the the shelf: %(name)s" +msgstr "Du får inte lägga till en bok i hyllan: %(name)s" + +#: cps/web.py:2554 +msgid "User is not allowed to edit public shelves" +msgstr "Användaren får inte redigera publika hyllor" + +#: cps/web.py:2572 +#, python-format +msgid "Books are already part of the shelf: %(name)s" +msgstr "Böcker är redan en del av hyllan: %(name)s" + +#: cps/web.py:2586 +#, python-format +msgid "Books have been added to shelf: %(sname)s" +msgstr "Böcker har lagts till hyllan: %(sname)s" + +#: cps/web.py:2588 +#, python-format +msgid "Could not add books to shelf: %(sname)s" +msgstr "Kunde inte lägga till böcker till hyllan: %(sname)s" + +#: cps/web.py:2625 +#, python-format +msgid "Book has been removed from shelf: %(sname)s" +msgstr "Boken har tagits bort från hyllan: %(sname)s" + +#: cps/web.py:2631 +#, python-format +msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" +msgstr "Tyvärr har du inte rätt att ta bort en bok från den här hyllan: %(sname)s" + +#: cps/web.py:2651 cps/web.py:2675 +#, python-format +msgid "A shelf with the name '%(title)s' already exists." +msgstr "En hylla med namnet '%(title)s' finns redan." + +#: cps/web.py:2656 +#, python-format +msgid "Shelf %(title)s created" +msgstr "Hyllan %(title)s skapad" + +#: cps/web.py:2658 cps/web.py:2686 +msgid "There was an error" +msgstr "Det fanns ett fel" + +#: cps/web.py:2659 cps/web.py:2661 +msgid "create a shelf" +msgstr "skapa en hylla" + +#: cps/web.py:2684 +#, python-format +msgid "Shelf %(title)s changed" +msgstr "Hyllan %(title)s ändrad" + +#: cps/web.py:2687 cps/web.py:2689 +msgid "Edit a shelf" +msgstr "Redigera en hylla" + +#: cps/web.py:2710 +#, python-format +msgid "successfully deleted shelf %(name)s" +msgstr "tog bort hyllan %(name)s" + +#: cps/web.py:2737 +#, python-format +msgid "Shelf: '%(name)s'" +msgstr "Hylla: '%(name)s'" + +#: cps/web.py:2740 +msgid "Error opening shelf. Shelf does not exist or is not accessible" +msgstr "Fel vid öppning av hyllan. Hylla finns inte eller är inte tillgänglig" + +#: cps/web.py:2771 +#, python-format +msgid "Change order of Shelf: '%(name)s'" +msgstr "Ändra ordning på hyllan: '%(name)s'" + +#: cps/web.py:2800 cps/web.py:3223 +msgid "E-mail is not from valid domain" +msgstr "E-posten är inte från giltig domän" + +#: cps/web.py:2802 cps/web.py:2845 cps/web.py:2848 +#, python-format +msgid "%(name)s's profile" +msgstr "%(name)ss profil" + +#: cps/web.py:2843 +msgid "Found an existing account for this e-mail address." +msgstr "Hittade ett befintligt konto för den här e-postadressen." + +#: cps/web.py:2846 +msgid "Profile updated" +msgstr "Profilen uppdaterad" + +#: cps/web.py:2874 +msgid "Admin page" +msgstr "Administrationssida" + +#: cps/web.py:2954 cps/web.py:3128 +msgid "Calibre-Web configuration updated" +msgstr "Calibre-Web konfiguration uppdaterad" + +#: cps/templates/admin.html:100 cps/web.py:2967 +msgid "UI Configuration" +msgstr "Användargränssnitt konfiguration" + +#: cps/web.py:2985 +msgid "Import of optional Google Drive requirements missing" +msgstr "Import av valfri Google Drive krav saknas" + +#: cps/web.py:2988 +msgid "client_secrets.json is missing or not readable" +msgstr "client_secrets.json saknas eller inte kan läsas" + +#: cps/web.py:2993 cps/web.py:3020 +msgid "client_secrets.json is not configured for web application" +msgstr "client_secrets.json är inte konfigurerad för webbapplikation" + +#: cps/templates/admin.html:99 cps/web.py:3023 cps/web.py:3049 cps/web.py:3061 +#: cps/web.py:3104 cps/web.py:3119 cps/web.py:3136 cps/web.py:3143 +#: cps/web.py:3158 +msgid "Basic Configuration" +msgstr "Grundläggande konfiguration" + +#: cps/web.py:3046 +msgid "Keyfile location is not valid, please enter correct path" +msgstr "Platsen för Keyfile är inte giltig, ange rätt sökväg" + +#: cps/web.py:3058 +msgid "Certfile location is not valid, please enter correct path" +msgstr "Platsen för Certfile är inte giltig, ange rätt sökväg" + +#: cps/web.py:3101 +msgid "Logfile location is not valid, please enter correct path" +msgstr "Platsen för Logfile platsen är inte giltig, ange rätt sökväg" + +#: cps/web.py:3140 +msgid "DB location is not valid, please enter correct path" +msgstr "Platsen för DB är inte giltig, ange rätt sökväg" + +#: cps/templates/admin.html:33 cps/web.py:3219 cps/web.py:3225 cps/web.py:3241 +msgid "Add new user" +msgstr "Lägg till ny användare" + +#: cps/web.py:3231 +#, python-format +msgid "User '%(user)s' created" +msgstr "Användaren '%(user)s' skapad" + +#: cps/web.py:3235 +msgid "Found an existing account for this e-mail address or nickname." +msgstr "Hittade ett befintligt konto för den här e-postadressen eller smeknamnet." + +#: cps/web.py:3259 cps/web.py:3273 +msgid "E-mail server settings updated" +msgstr "E-postserverinställningar uppdaterade" + +#: cps/web.py:3266 +#, python-format +msgid "Test e-mail successfully send to %(kindlemail)s" +msgstr "Test-e-post skicka till %(kindlemail)s" + +#: cps/web.py:3269 +#, python-format +msgid "There was an error sending the Test e-mail: %(res)s" +msgstr "Det gick inte att skicka Testmeddelandet: %(res)s" + +#: cps/web.py:3274 +msgid "Edit e-mail server settings" +msgstr "Redigera inställningar för e-postserver" + +#: cps/web.py:3299 +#, python-format +msgid "User '%(nick)s' deleted" +msgstr "Användaren '%(nick)s' borttagen" + +#: cps/web.py:3408 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "Användaren '%(nick)s' uppdaterad" + +#: cps/web.py:3411 +msgid "An unknown error occured." +msgstr "Ett okänt fel uppstod." + +#: cps/web.py:3413 +#, python-format +msgid "Edit User %(nick)s" +msgstr "Redigera användaren %(nick)s" + +#: cps/web.py:3430 +#, python-format +msgid "Password for user %(user)s reset" +msgstr "Lösenord för användaren %(user)s återställd" + +#: cps/web.py:3444 cps/web.py:3645 +msgid "Error opening eBook. File does not exist or file is not accessible" +msgstr "Det gick inte att öppna e-boken. Filen finns inte eller filen är inte tillgänglig" + +#: cps/web.py:3469 cps/web.py:3928 +msgid "edit metadata" +msgstr "redigera metadata" + +#: cps/web.py:3562 cps/web.py:3798 +#, python-format +msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" +msgstr "Filändelsen '%(ext)s' får inte laddas upp till den här servern" + +#: cps/web.py:3566 cps/web.py:3802 +msgid "File to be uploaded must have an extension" +msgstr "Filen som ska laddas upp måste ha en ändelse" + +#: cps/web.py:3578 cps/web.py:3822 +#, python-format +msgid "Failed to create path %(path)s (Permission denied)." +msgstr "Det gick inte att skapa sökväg %(path)s (behörighet nekad)." + +#: cps/web.py:3583 +#, python-format +msgid "Failed to store file %(file)s." +msgstr "Det gick inte att lagra filen %(file)s." + +#: cps/web.py:3599 +#, python-format +msgid "File format %(ext)s added to %(book)s" +msgstr "Filformatet %(ext)s lades till %(book)s" + +#: cps/web.py:3617 +#, python-format +msgid "Failed to create path for cover %(path)s (Permission denied)." +msgstr "Det gick inte att skapa sökväg för omslag %(path)s (behörighet nekad)." + +#: cps/web.py:3624 +#, python-format +msgid "Failed to store cover-file %(cover)s." +msgstr "Det gick inte att lagra omslagsfilen %(cover)s." + +#: cps/web.py:3627 +msgid "Cover-file is not a valid image file" +msgstr "Omslagsfilen är inte en giltig bildfil" + +#: cps/web.py:3657 cps/web.py:3666 cps/web.py:3670 +msgid "unknown" +msgstr "okänd" + +#: cps/web.py:3689 +msgid "Cover is not a jpg file, can't save" +msgstr "Omslag är inte en jpg-fil, kan inte spara" + +#: cps/web.py:3737 +#, python-format +msgid "%(langname)s is not a valid language" +msgstr "%(langname)s är inte ett giltigt språk" + +#: cps/web.py:3768 +msgid "Metadata successfully updated" +msgstr "" + +#: cps/web.py:3777 +msgid "Error editing book, please check logfile for details" +msgstr "Det gick inte att redigera boken, kontrollera loggfilen för mer information" + +#: cps/web.py:3827 +#, python-format +msgid "Failed to store file %(file)s (Permission denied)." +msgstr "Det gick inte att lagra filen %(file)s (behörighet nekad)." + +#: cps/web.py:3832 +#, python-format +msgid "Failed to delete file %(file)s (Permission denied)." +msgstr "Det gick inte att ta bort filen %(file)s (behörighet nekad)." + +#: cps/web.py:3914 +#, python-format +msgid "File %(file)s uploaded" +msgstr "Filen %(file)s uppladdad" + +#: cps/web.py:3944 +msgid "Source or destination format for conversion missing" +msgstr "Källa eller målformat för konvertering saknas" + +#: cps/web.py:3954 +#, python-format +msgid "Book successfully queued for converting to %(book_format)s" +msgstr "Boken är i kö för konvertering till %(book_format)s" + +#: cps/web.py:3958 +#, python-format +msgid "There was an error converting this book: %(res)s" +msgstr "Det gick inte att konvertera den här boken: %(res)s" + +#: cps/worker.py:287 +#, python-format +msgid "Ebook-converter failed: %(error)s" +msgstr "E-bokkonverteraren misslyckades: %(error)s" + +#: cps/worker.py:298 +#, python-format +msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" +msgstr "Kindlegen misslyckades med fel %(error)s. Meddelande: %(message)s" + +#: cps/templates/admin.html:6 +msgid "User list" +msgstr "Användarlista" + +#: cps/templates/admin.html:9 +msgid "Nickname" +msgstr "Smeknamn" + +#: cps/templates/admin.html:10 +msgid "E-mail" +msgstr "E-post" + +#: cps/templates/admin.html:11 +msgid "Kindle" +msgstr "Kindle" + +#: cps/templates/admin.html:12 +msgid "DLS" +msgstr "DLS" + +#: cps/templates/admin.html:13 cps/templates/layout.html:74 +msgid "Admin" +msgstr "Administratör" + +#: cps/templates/admin.html:14 cps/templates/detail.html:22 +#: cps/templates/detail.html:31 +msgid "Download" +msgstr "Hämta" + +#: cps/templates/admin.html:15 cps/templates/layout.html:64 +msgid "Upload" +msgstr "Ladda upp" + +#: cps/templates/admin.html:16 +msgid "Edit" +msgstr "Redigera" + +#: cps/templates/admin.html:39 +msgid "SMTP e-mail server settings" +msgstr "Inställningar för SMTP-e-postserver" + +#: cps/templates/admin.html:42 cps/templates/email_edit.html:11 +msgid "SMTP hostname" +msgstr "SMTP-värdnamn" + +#: cps/templates/admin.html:43 +msgid "SMTP port" +msgstr "SMTP-port" + +#: cps/templates/admin.html:44 +msgid "SSL" +msgstr "SSL" + +#: cps/templates/admin.html:45 cps/templates/email_edit.html:27 +msgid "SMTP login" +msgstr "SMTP-inloggning" + +#: cps/templates/admin.html:46 +msgid "From mail" +msgstr "Från meddelande" + +#: cps/templates/admin.html:56 +msgid "Change SMTP settings" +msgstr "Ändra SMTP-inställningar" + +#: cps/templates/admin.html:62 +msgid "Configuration" +msgstr "Konfiguration" + +#: cps/templates/admin.html:65 +msgid "Calibre DB dir" +msgstr "Calibre DB dir" + +#: cps/templates/admin.html:69 +msgid "Log level" +msgstr "Loggnivå" + +#: cps/templates/admin.html:73 +msgid "Port" +msgstr "Port" + +#: cps/templates/admin.html:79 cps/templates/config_view_edit.html:23 +msgid "Books per page" +msgstr "Böcker per sida" + +#: cps/templates/admin.html:83 +msgid "Uploading" +msgstr "Laddar upp" + +#: cps/templates/admin.html:87 +msgid "Anonymous browsing" +msgstr "Anonym surfning" + +#: cps/templates/admin.html:91 +msgid "Public registration" +msgstr "Publik registrering" + +#: cps/templates/admin.html:95 cps/templates/remote_login.html:4 +msgid "Remote login" +msgstr "Fjärrinloggning" + +#: cps/templates/admin.html:106 +msgid "Administration" +msgstr "Administration" + +#: cps/templates/admin.html:107 +msgid "Reconnect to Calibre DB" +msgstr "Anslut till Calibre DB igen" + +#: cps/templates/admin.html:108 +msgid "Restart Calibre-Web" +msgstr "Starta om Calibre-Web" + +#: cps/templates/admin.html:109 +msgid "Stop Calibre-Web" +msgstr "Stoppa Calibre-Web" + +#: cps/templates/admin.html:115 +msgid "Update" +msgstr "Uppdatera" + +#: cps/templates/admin.html:119 +msgid "Version" +msgstr "Version" + +#: cps/templates/admin.html:120 +msgid "Details" +msgstr "Detaljer" + +#: cps/templates/admin.html:126 +msgid "Current version" +msgstr "Aktuell version" + +#: cps/templates/admin.html:132 +msgid "Check for update" +msgstr "Sök efter uppdatering" + +#: cps/templates/admin.html:133 +msgid "Perform Update" +msgstr "Utför uppdatering" + +#: cps/templates/admin.html:145 +msgid "Do you really want to restart Calibre-Web?" +msgstr "Är du säker på att du vill starta om Calibre-Web?" + +#: cps/templates/admin.html:150 cps/templates/admin.html:164 +#: cps/templates/admin.html:184 cps/templates/shelf.html:63 +msgid "Ok" +msgstr "Ok" + +#: cps/templates/admin.html:151 cps/templates/admin.html:165 +#: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200 +#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:168 +#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75 +#: cps/templates/shelf.html:64 cps/templates/shelf_edit.html:19 +#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:155 +msgid "Back" +msgstr "Tillbaka" + +#: cps/templates/admin.html:163 +msgid "Do you really want to stop Calibre-Web?" +msgstr "Är du säker på att du vill stoppa Calibre-Web?" + +#: cps/templates/admin.html:175 +msgid "Updating, please do not reload page" +msgstr "Uppdaterar, vänligen uppdatera inte sidan" + +#: cps/templates/author.html:15 +msgid "via" +msgstr "via" + +#: cps/templates/author.html:23 +msgid "In Library" +msgstr "I biblioteket" + +#: cps/templates/author.html:71 +msgid "More by" +msgstr "Mer av" + +#: cps/templates/book_edit.html:16 +msgid "Delete Book" +msgstr "Ta bort boken" + +#: cps/templates/book_edit.html:19 +msgid "Delete formats:" +msgstr "Ta bort format:" + +#: cps/templates/book_edit.html:22 cps/templates/book_edit.html:199 +#: cps/templates/email_edit.html:73 cps/templates/email_edit.html:74 +msgid "Delete" +msgstr "Ta bort" + +#: cps/templates/book_edit.html:30 +msgid "Convert book format:" +msgstr "Konvertera bokformat:" + +#: cps/templates/book_edit.html:34 +msgid "Convert from:" +msgstr "Konvertera från:" + +#: cps/templates/book_edit.html:36 cps/templates/book_edit.html:43 +msgid "select an option" +msgstr "välj ett alternativ" + +#: cps/templates/book_edit.html:41 +msgid "Convert to:" +msgstr "Konvertera till:" + +#: cps/templates/book_edit.html:50 +msgid "Convert book" +msgstr "Konvertera boken" + +#: cps/templates/book_edit.html:59 cps/templates/search_form.html:6 +msgid "Book Title" +msgstr "Boktitel" + +#: cps/templates/book_edit.html:63 cps/templates/book_edit.html:259 +#: cps/templates/book_edit.html:277 cps/templates/search_form.html:10 +msgid "Author" +msgstr "Författare" + +#: cps/templates/book_edit.html:67 cps/templates/book_edit.html:264 +#: cps/templates/book_edit.html:279 cps/templates/search_form.html:106 +msgid "Description" +msgstr "Beskrivning" + +#: cps/templates/book_edit.html:71 cps/templates/search_form.html:33 +msgid "Tags" +msgstr "Taggar" + +#: cps/templates/book_edit.html:75 cps/templates/layout.html:157 +#: cps/templates/search_form.html:53 +msgid "Series" +msgstr "Serier" + +#: cps/templates/book_edit.html:79 +msgid "Series id" +msgstr "Serier-id" + +#: cps/templates/book_edit.html:83 +msgid "Rating" +msgstr "Betyg" + +#: cps/templates/book_edit.html:87 +msgid "Cover URL (jpg, cover is downloaded and stored in database, field is afterwards empty again)" +msgstr "Omslagswebbadress (jpg, omslag hämtas och lagras i databasen, fältet är efteråt tomt igen)" + +#: cps/templates/book_edit.html:91 +msgid "Upload Cover from local drive" +msgstr "Ladda upp omslag från lokal enhet" + +#: cps/templates/book_edit.html:96 cps/templates/detail.html:135 +msgid "Publishing date" +msgstr "Publiceringsdatum" + +#: cps/templates/book_edit.html:103 cps/templates/book_edit.html:261 +#: cps/templates/book_edit.html:278 cps/templates/detail.html:127 +#: cps/templates/search_form.html:14 +msgid "Publisher" +msgstr "Förlag" + +#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:31 +msgid "Language" +msgstr "Språk" + +#: cps/templates/book_edit.html:117 cps/templates/search_form.html:117 +msgid "Yes" +msgstr "Ja" + +#: cps/templates/book_edit.html:118 cps/templates/search_form.html:118 +msgid "No" +msgstr "Nej" + +#: cps/templates/book_edit.html:164 +msgid "Upload format" +msgstr "Ladda upp format" + +#: cps/templates/book_edit.html:173 +msgid "view book after edit" +msgstr "visa bok efter redigering" + +#: cps/templates/book_edit.html:176 cps/templates/book_edit.html:212 +msgid "Get metadata" +msgstr "Hämta metadata" + +#: cps/templates/book_edit.html:177 cps/templates/config_edit.html:210 +#: cps/templates/config_view_edit.html:167 cps/templates/login.html:20 +#: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 +#: cps/templates/user_edit.html:153 +msgid "Submit" +msgstr "Skicka" + +#: cps/templates/book_edit.html:191 +msgid "Are you really sure?" +msgstr "Är du verkligen säker?" + +#: cps/templates/book_edit.html:194 +msgid "Book will be deleted from Calibre database" +msgstr "Boken kommer att tas bort från Calibre-databasen" + +#: cps/templates/book_edit.html:195 +msgid "and from hard disk" +msgstr "och från hårddisken" + +#: cps/templates/book_edit.html:215 +msgid "Keyword" +msgstr "Sökord" + +#: cps/templates/book_edit.html:216 +msgid " Search keyword " +msgstr " Sök sökord " + +#: cps/templates/book_edit.html:218 cps/templates/layout.html:46 +msgid "Go!" +msgstr "Kör!" + +#: cps/templates/book_edit.html:222 +msgid "Click the cover to load metadata to the form" +msgstr "Klicka på omslaget för att läsa in metadata till formuläret" + +#: cps/templates/book_edit.html:234 cps/templates/book_edit.html:274 +msgid "Loading..." +msgstr "Läser in..." + +#: cps/templates/book_edit.html:239 cps/templates/layout.html:224 +msgid "Close" +msgstr "Stäng" + +#: cps/templates/book_edit.html:266 cps/templates/book_edit.html:280 +msgid "Source" +msgstr "Källa" + +#: cps/templates/book_edit.html:275 +msgid "Search error!" +msgstr "Sökningsfel!" + +#: cps/templates/book_edit.html:276 +msgid "No Result(s) found! Please try aonther keyword." +msgstr "Inga resultat hittades! Försök med ett annat sökord." + +#: cps/templates/config_edit.html:12 +msgid "Library Configuration" +msgstr "Bibliotekets konfiguration" + +#: cps/templates/config_edit.html:19 +msgid "Location of Calibre database" +msgstr "Plats för Calibre-databasen" + +#: cps/templates/config_edit.html:24 +msgid "Use Google Drive?" +msgstr "Använda Google Drive?" + +#: cps/templates/config_edit.html:30 +msgid "Google Drive config problem" +msgstr "Google Drive-konfigurationsproblem" + +#: cps/templates/config_edit.html:36 +msgid "Authenticate Google Drive" +msgstr "Autentisera Google Drive" + +#: cps/templates/config_edit.html:40 +msgid "Please finish Google Drive setup after login" +msgstr "Vänligen avsluta Google Drive-inställning efter inloggning" + +#: cps/templates/config_edit.html:44 +msgid "Google Drive Calibre folder" +msgstr "Google Drive Calibre-mapp" + +#: cps/templates/config_edit.html:52 +msgid "Metadata Watch Channel ID" +msgstr "Metadata Titta på kanal ID" + +#: cps/templates/config_edit.html:55 +msgid "Revoke" +msgstr "Återkalla" + +#: cps/templates/config_edit.html:73 +msgid "Server Configuration" +msgstr "Serverkonfiguration" + +#: cps/templates/config_edit.html:80 +msgid "Server Port" +msgstr "Serverport" + +#: cps/templates/config_edit.html:84 +msgid "SSL certfile location (leave it empty for non-SSL Servers)" +msgstr "SSL certfile plats (lämna den tom för icke-SSL-servrar)" + +#: cps/templates/config_edit.html:88 +msgid "SSL Keyfile location (leave it empty for non-SSL Servers)" +msgstr "SSL Keyfile plats (lämna den tom för icke-SSL-servrar)" + +#: cps/templates/config_edit.html:99 +msgid "Logfile Configuration" +msgstr "Loggfil konfiguration" + +#: cps/templates/config_edit.html:106 +msgid "Log Level" +msgstr "Loggnivå" + +#: cps/templates/config_edit.html:115 +msgid "Location and name of logfile (calibre-web.log for no entry)" +msgstr "Plats och namn på loggfilen (calibre-web.log för ingen post)" + +#: cps/templates/config_edit.html:126 +msgid "Feature Configuration" +msgstr "Funktion konfiguration" + +#: cps/templates/config_edit.html:134 +msgid "Enable uploading" +msgstr "Aktivera uppladdning" + +#: cps/templates/config_edit.html:138 +msgid "Enable anonymous browsing" +msgstr "Aktivera anonym surfning" + +#: cps/templates/config_edit.html:142 +msgid "Enable public registration" +msgstr "Aktivera offentlig registrering" + +#: cps/templates/config_edit.html:146 +msgid "Enable remote login (\"magic link\")" +msgstr "Aktivera fjärrinloggning (\"magic link\")" + +#: cps/templates/config_edit.html:151 +msgid "Use" +msgstr "Använd" + +#: cps/templates/config_edit.html:152 +msgid "Obtain an API Key" +msgstr "Hämta en API-nyckel" + +#: cps/templates/config_edit.html:156 +msgid "Goodreads API Key" +msgstr "Goodreads API-nyckel" + +#: cps/templates/config_edit.html:160 +msgid "Goodreads API Secret" +msgstr "Goodreads API-hemlighet" + +#: cps/templates/config_edit.html:173 +msgid "External binaries" +msgstr "Externa binärer" + +#: cps/templates/config_edit.html:181 +msgid "No converter" +msgstr "Ingen konverterare" + +#: cps/templates/config_edit.html:183 +msgid "Use Kindlegen" +msgstr "Använd Kindlegen" + +#: cps/templates/config_edit.html:185 +msgid "Use calibre's ebook converter" +msgstr "Använd calibres e-bokkonverterare" + +#: cps/templates/config_edit.html:189 +msgid "E-Book converter settings" +msgstr "Inställningar för e-bokkonverteraren" + +#: cps/templates/config_edit.html:193 +msgid "Path to convertertool" +msgstr "Sökväg till convertertool" + +#: cps/templates/config_edit.html:199 +msgid "Location of Unrar binary" +msgstr "Plats för Unrar-binär" + +#: cps/templates/config_edit.html:215 cps/templates/layout.html:82 +#: cps/templates/login.html:4 +msgid "Login" +msgstr "Logga in" + +#: cps/templates/config_view_edit.html:12 +msgid "View Configuration" +msgstr "Visa konfiguration" + +#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:133 +#: cps/templates/layout.html:134 cps/templates/shelf_edit.html:7 +msgid "Title" +msgstr "Titel" + +#: cps/templates/config_view_edit.html:27 +msgid "No. of random books to show" +msgstr "Antal slumpmässiga böcker att visa" + +#: cps/templates/config_view_edit.html:31 +msgid "Regular expression for ignoring columns" +msgstr "Reguljärt uttryck för att ignorera kolumner" + +#: cps/templates/config_view_edit.html:35 +msgid "Link read/unread status to Calibre column" +msgstr "Länka läst/oläst status till Calibre-kolumn" + +#: cps/templates/config_view_edit.html:44 +msgid "Regular expression for title sorting" +msgstr "Reguljärt uttryck för titelsortering" + +#: cps/templates/config_view_edit.html:48 +msgid "Tags for Mature Content" +msgstr "Taggar för vuxeninnehåll" + +#: cps/templates/config_view_edit.html:62 +msgid "Default settings for new users" +msgstr "Standardinställningar för nya användare" + +#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:110 +msgid "Admin user" +msgstr "Adminstratör användare" + +#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:119 +msgid "Allow Downloads" +msgstr "Tillåt Hämtningar" + +#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:123 +msgid "Allow Uploads" +msgstr "Tillåt Uppladdningar" + +#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:127 +msgid "Allow Edit" +msgstr "Tillåt Redigera" + +#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:131 +msgid "Allow Delete books" +msgstr "Tillåt Ta bort böcker" + +#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:136 +msgid "Allow Changing Password" +msgstr "Tillåt Ändra lösenord" + +#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:140 +msgid "Allow Editing Public Shelfs" +msgstr "Tillåt Redigering av offentliga hyllor" + +#: cps/templates/config_view_edit.html:104 +msgid "Default visibilities for new users" +msgstr "Standardvisibiliteter för nya användare" + +#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:58 +msgid "Show random books" +msgstr "Visa slumpmässiga böcker" + +#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:62 +msgid "Show recent books" +msgstr "Visa senaste böcker" + +#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:66 +msgid "Show sorted books" +msgstr "Visa sorterade böcker" + +#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:70 +msgid "Show hot books" +msgstr "Visa heta böcker" + +#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:74 +msgid "Show best rated books" +msgstr "Visa böcker med bästa betyg" + +#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:78 +msgid "Show language selection" +msgstr "Visa språkval" + +#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:82 +msgid "Show series selection" +msgstr "Visa serieval" + +#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:86 +msgid "Show category selection" +msgstr "Visa kategorival" + +#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:90 +msgid "Show author selection" +msgstr "Visa författarval" + +#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:94 +msgid "Show publisher selection" +msgstr "" + +#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:98 +msgid "Show read and unread" +msgstr "Visa lästa och olästa" + +#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:102 +msgid "Show random books in detail view" +msgstr "Visa slumpmässiga böcker i detaljvyn" + +#: cps/templates/config_view_edit.html:160 cps/templates/user_edit.html:115 +msgid "Show mature content" +msgstr "Visa vuxeninnehåll" + +#: cps/templates/detail.html:49 +msgid "Read in browser" +msgstr "Läs i webbläsaren" + +#: cps/templates/detail.html:88 +msgid "Book" +msgstr "Bok" + +#: cps/templates/detail.html:88 +msgid "of" +msgstr "av" + +#: cps/templates/detail.html:94 +msgid "language" +msgstr "språk" + +#: cps/templates/detail.html:172 +msgid "Read" +msgstr "Läst" + +#: cps/templates/detail.html:182 +msgid "Description:" +msgstr "Beskrivning:" + +#: cps/templates/detail.html:195 cps/templates/search.html:14 +msgid "Add to shelf" +msgstr "Lägg till hyllan" + +#: cps/templates/detail.html:257 +msgid "Edit metadata" +msgstr "Redigera metadata" + +#: cps/templates/email_edit.html:15 +msgid "SMTP port (usually 25 for plain SMTP and 465 for SSL and 587 for STARTTLS)" +msgstr "SMTP-port (vanligtvis 25 för vanlig SMTP och 465 för SSL och 587 för STARTTLS)" + +#: cps/templates/email_edit.html:19 +msgid "Encryption" +msgstr "Kryptering" + +#: cps/templates/email_edit.html:21 +msgid "None" +msgstr "Ingen" + +#: cps/templates/email_edit.html:22 +msgid "STARTTLS" +msgstr "STARTTLS" + +#: cps/templates/email_edit.html:23 +msgid "SSL/TLS" +msgstr "SSL/TLS" + +#: cps/templates/email_edit.html:31 +msgid "SMTP password" +msgstr "SMTP-lösenord" + +#: cps/templates/email_edit.html:35 +msgid "From e-mail" +msgstr "Från e-post" + +#: cps/templates/email_edit.html:38 +msgid "Save settings" +msgstr "Spara inställningarna" + +#: cps/templates/email_edit.html:39 +msgid "Save settings and send Test E-Mail" +msgstr "Spara inställningarna och skicka test-e-post" + +#: cps/templates/email_edit.html:43 +msgid "Allowed domains for registering" +msgstr "Tillåtna domäner för registrering" + +#: cps/templates/email_edit.html:47 +msgid "Enter domainname" +msgstr "Ange domännamn" + +#: cps/templates/email_edit.html:55 +msgid "Add Domain" +msgstr "Lägg till domän" + +#: cps/templates/email_edit.html:58 +msgid "Add" +msgstr "Lägg till" + +#: cps/templates/email_edit.html:72 +msgid "Do you really want to delete this domain rule?" +msgstr "Är du säker på att du vill ta bort den här domänregeln?" + +#: cps/templates/feed.xml:21 cps/templates/layout.html:208 +msgid "Next" +msgstr "Nästa" + +#: cps/templates/feed.xml:33 cps/templates/index.xml:11 +#: cps/templates/layout.html:43 cps/templates/layout.html:44 +msgid "Search" +msgstr "Sök" + +#: cps/templates/http_error.html:23 +msgid "Back to home" +msgstr "" + +#: cps/templates/index.html:5 +msgid "Discover (Random Books)" +msgstr "Upptäck (slumpmässiga böcker)" + +#: cps/templates/index.xml:6 +msgid "Start" +msgstr "Starta" + +#: cps/templates/index.xml:18 cps/templates/layout.html:139 +msgid "Hot Books" +msgstr "Heta böcker" + +#: cps/templates/index.xml:22 +msgid "Popular publications from this catalog based on Downloads." +msgstr "Populära publikationer från den här katalogen baserad på hämtningar." + +#: cps/templates/index.xml:25 cps/templates/layout.html:142 +msgid "Best rated Books" +msgstr "Bäst rankade böcker" + +#: cps/templates/index.xml:29 +msgid "Popular publications from this catalog based on Rating." +msgstr "Populära publikationer från den här katalogen baserad på betyg." + +#: cps/templates/index.xml:32 +msgid "New Books" +msgstr "Nya böcker" + +#: cps/templates/index.xml:36 +msgid "The latest Books" +msgstr "De senaste böckerna" + +#: cps/templates/index.xml:43 +msgid "Show Random Books" +msgstr "Visa slumpmässiga böcker" + +#: cps/templates/index.xml:62 cps/templates/layout.html:160 +msgid "Authors" +msgstr "Författare" + +#: cps/templates/index.xml:66 +msgid "Books ordered by Author" +msgstr "Böcker ordnade efter författare" + +#: cps/templates/index.xml:69 cps/templates/layout.html:163 +msgid "Publishers" +msgstr "" + +#: cps/templates/index.xml:73 +msgid "Books ordered by publisher" +msgstr "" + +#: cps/templates/index.xml:80 +msgid "Books ordered by category" +msgstr "Böcker ordnade efter kategori" + +#: cps/templates/index.xml:87 +msgid "Books ordered by series" +msgstr "Böcker ordnade efter serier" + +#: cps/templates/index.xml:90 cps/templates/layout.html:169 +msgid "Public Shelves" +msgstr "Offentliga hyllor" + +#: cps/templates/index.xml:94 +msgid "Books organized in public shelfs, visible to everyone" +msgstr "Böcker organiserade i offentliga hyllor, synliga för alla" + +#: cps/templates/index.xml:98 cps/templates/layout.html:173 +msgid "Your Shelves" +msgstr "Dina hyllor" + +#: cps/templates/index.xml:102 +msgid "User's own shelfs, only visible to the current user himself" +msgstr "Användarens egna hyllor, endast synliga för den aktuella användaren själv" + +#: cps/templates/layout.html:33 +msgid "Toggle navigation" +msgstr "Växla navigering" + +#: cps/templates/layout.html:54 +msgid "Advanced Search" +msgstr "Avancerad sökning" + +#: cps/templates/layout.html:78 +msgid "Logout" +msgstr "Logga ut" + +#: cps/templates/layout.html:83 cps/templates/register.html:14 +msgid "Register" +msgstr "Registrera" + +#: cps/templates/layout.html:108 +msgid "Uploading..." +msgstr "Laddar upp..." + +#: cps/templates/layout.html:109 +msgid "please don't refresh the page" +msgstr "uppdatera inte sidan" + +#: cps/templates/layout.html:120 +msgid "Browse" +msgstr "Bläddra" + +#: cps/templates/layout.html:122 +msgid "Recently Added" +msgstr "Nyligen tillagda" + +#: cps/templates/layout.html:127 +msgid "Sorted Books" +msgstr "Sorterade böcker" + +#: cps/templates/layout.html:131 cps/templates/layout.html:132 +#: cps/templates/layout.html:133 cps/templates/layout.html:134 +msgid "Sort By" +msgstr "Sortera efter" + +#: cps/templates/layout.html:131 +msgid "Newest" +msgstr "Nyast" + +#: cps/templates/layout.html:132 +msgid "Oldest" +msgstr "Äldst" + +#: cps/templates/layout.html:133 +msgid "Ascending" +msgstr "Stigande" + +#: cps/templates/layout.html:134 +msgid "Descending" +msgstr "Fallande" + +#: cps/templates/layout.html:151 +msgid "Discover" +msgstr "Upptäck" + +#: cps/templates/layout.html:154 +msgid "Categories" +msgstr "Kategorier" + +#: cps/templates/layout.html:166 cps/templates/search_form.html:74 +msgid "Languages" +msgstr "Språk" + +#: cps/templates/layout.html:178 +msgid "Create a Shelf" +msgstr "Skapa en hylla" + +#: cps/templates/layout.html:179 cps/templates/stats.html:3 +msgid "About" +msgstr "Om" + +#: cps/templates/layout.html:193 +msgid "Previous" +msgstr "Föregående" + +#: cps/templates/layout.html:220 +msgid "Book Details" +msgstr "Bokdetaljer" + +#: cps/templates/login.html:8 cps/templates/login.html:9 +#: cps/templates/register.html:7 cps/templates/user_edit.html:8 +msgid "Username" +msgstr "Användarnamn" + +#: cps/templates/login.html:12 cps/templates/login.html:13 +#: cps/templates/user_edit.html:21 +msgid "Password" +msgstr "Lösenord" + +#: cps/templates/login.html:17 +msgid "Remember me" +msgstr "Kom ihåg mig" + +#: cps/templates/login.html:22 +msgid "Log in with magic link" +msgstr "Logga in med magic link" + +#: cps/templates/osd.xml:5 +msgid "Calibre-Web ebook catalog" +msgstr "Calibre-Web e-bokkatalog" + +#: cps/templates/read.html:69 cps/templates/readcbr.html:79 +#: cps/templates/readcbr.html:103 +msgid "Settings" +msgstr "Inställningar" + +#: cps/templates/read.html:72 +msgid "Reflow text when sidebars are open." +msgstr "Fyll i texten igen när sidofält är öppna." + +#: cps/templates/readcbr.html:84 +msgid "Keyboard Shortcuts" +msgstr "Kortkommandon" + +#: cps/templates/readcbr.html:87 +msgid "Previous Page" +msgstr "Föregående sida" + +#: cps/templates/readcbr.html:88 +msgid "Next Page" +msgstr "Nästa sida" + +#: cps/templates/readcbr.html:89 +msgid "Scale to Best" +msgstr "Skala till bäst" + +#: cps/templates/readcbr.html:90 +msgid "Scale to Width" +msgstr "Skala till bredd" + +#: cps/templates/readcbr.html:91 +msgid "Scale to Height" +msgstr "Skala till höjd" + +#: cps/templates/readcbr.html:92 +msgid "Scale to Native" +msgstr "Skala till ursprunglig" + +#: cps/templates/readcbr.html:93 +msgid "Rotate Right" +msgstr "Rotera åt höger" + +#: cps/templates/readcbr.html:94 +msgid "Rotate Left" +msgstr "Rotera åt vänster" + +#: cps/templates/readcbr.html:95 +msgid "Flip Image" +msgstr "Vänd bilden" + +#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:39 +msgid "Theme" +msgstr "Tema" + +#: cps/templates/readcbr.html:111 +msgid "Light" +msgstr "Ljust" + +#: cps/templates/readcbr.html:112 +msgid "Dark" +msgstr "Mörkt" + +#: cps/templates/readcbr.html:117 +msgid "Scale" +msgstr "Skala" + +#: cps/templates/readcbr.html:120 +msgid "Best" +msgstr "Bäst" + +#: cps/templates/readcbr.html:121 +msgid "Width" +msgstr "Bredd" + +#: cps/templates/readcbr.html:122 +msgid "Height" +msgstr "Höjd" + +#: cps/templates/readcbr.html:123 +msgid "Native" +msgstr "Ursprunglig" + +#: cps/templates/readcbr.html:128 +msgid "Rotate" +msgstr "Rotera" + +#: cps/templates/readcbr.html:139 +msgid "Flip" +msgstr "Vänd" + +#: cps/templates/readcbr.html:142 +msgid "Horizontal" +msgstr "Horisontell" + +#: cps/templates/readcbr.html:143 +msgid "Vertical" +msgstr "Vertikal" + +#: cps/templates/readpdf.html:29 +msgid "PDF.js viewer" +msgstr "PDF.js visare" + +#: cps/templates/readtxt.html:6 +msgid "Basic txt Reader" +msgstr "Grundläggande txt-läsare" + +#: cps/templates/register.html:4 +msgid "Register a new account" +msgstr "Registrera ett nytt konto" + +#: cps/templates/register.html:8 +msgid "Choose a username" +msgstr "Välj ett användarnamn" + +#: cps/templates/register.html:11 cps/templates/user_edit.html:13 +msgid "E-mail address" +msgstr "E-postadress" + +#: cps/templates/register.html:12 +msgid "Your email address" +msgstr "Din e-postadress" + +#: cps/templates/remote_login.html:6 +msgid "Using your another device, visit" +msgstr "Använda en annan enhet, besök" + +#: cps/templates/remote_login.html:6 +msgid "and log in" +msgstr "och logga in" + +#: cps/templates/remote_login.html:9 +msgid "Once you do so, you will automatically get logged in on this device." +msgstr "När du gör det kommer du automatiskt att logga in på den här enheten." + +#: cps/templates/search.html:5 +msgid "No Results for:" +msgstr "Inga resultat för:" + +#: cps/templates/search.html:6 +msgid "Please try a different search" +msgstr "Försök en annan sökning" + +#: cps/templates/search.html:8 +msgid "Results for:" +msgstr "Resultat för:" + +#: cps/templates/search_form.html:19 +msgid "Publishing date from" +msgstr "Publiceringsdatum från" + +#: cps/templates/search_form.html:26 +msgid "Publishing date to" +msgstr "Publiceringsdatum till" + +#: cps/templates/search_form.html:43 +msgid "Exclude Tags" +msgstr "Uteslut taggar" + +#: cps/templates/search_form.html:63 +msgid "Exclude Series" +msgstr "Uteslut serier" + +#: cps/templates/search_form.html:84 +msgid "Exclude Languages" +msgstr "Uteslut språk" + +#: cps/templates/search_form.html:97 +msgid "Rating bigger than" +msgstr "Betyg större än" + +#: cps/templates/search_form.html:101 +msgid "Rating less than" +msgstr "Betyg mindre än" + +#: cps/templates/shelf.html:7 +msgid "Delete this Shelf" +msgstr "Ta bort den här hyllan" + +#: cps/templates/shelf.html:8 +msgid "Edit Shelf" +msgstr "Redigera hyllan" + +#: cps/templates/shelf.html:9 cps/templates/shelf_order.html:11 +msgid "Change order" +msgstr "Ändra ordningen" + +#: cps/templates/shelf.html:58 +msgid "Do you really want to delete the shelf?" +msgstr "Är du säker på att du vill ta bort hyllan?" + +#: cps/templates/shelf.html:61 +msgid "Shelf will be lost for everybody and forever!" +msgstr "Hylla kommer att gå förlorad för alla och för alltid!" + +#: cps/templates/shelf_edit.html:13 +msgid "should the shelf be public?" +msgstr "ska hyllan vara offentlig?" + +#: cps/templates/shelf_order.html:5 +msgid "Drag 'n drop to rearrange order" +msgstr "Drag och släpp för att ändra ordning" + +#: cps/templates/stats.html:7 +msgid "Calibre library statistics" +msgstr "Calibre-biblioteksstatistik" + +#: cps/templates/stats.html:12 +msgid "Books in this Library" +msgstr "Böcker i det här biblioteket" + +#: cps/templates/stats.html:16 +msgid "Authors in this Library" +msgstr "Författare i det här biblioteket" + +#: cps/templates/stats.html:20 +msgid "Categories in this Library" +msgstr "Kategorier i det här biblioteket" + +#: cps/templates/stats.html:24 +msgid "Series in this Library" +msgstr "Serier i detta bibliotek" + +#: cps/templates/stats.html:28 +msgid "Linked libraries" +msgstr "Länkade bibliotek" + +#: cps/templates/stats.html:32 +msgid "Program library" +msgstr "Programbibliotek" + +#: cps/templates/stats.html:33 +msgid "Installed Version" +msgstr "Installerad version" + +#: cps/templates/tasks.html:7 +msgid "Tasks list" +msgstr "Uppgiftslista" + +#: cps/templates/tasks.html:12 +msgid "User" +msgstr "Användare" + +#: cps/templates/tasks.html:14 +msgid "Task" +msgstr "Uppgift" + +#: cps/templates/tasks.html:15 +msgid "Status" +msgstr "Status" + +#: cps/templates/tasks.html:16 +msgid "Progress" +msgstr "Förlopp" + +#: cps/templates/tasks.html:17 +msgid "Runtime" +msgstr "Drifttid" + +#: cps/templates/tasks.html:18 +msgid "Starttime" +msgstr "Starttid" + +#: cps/templates/tasks.html:24 +msgid "Delete finished tasks" +msgstr "Ta bort färdiga uppgifter" + +#: cps/templates/tasks.html:25 +msgid "Hide all tasks" +msgstr "Dölj alla uppgifter" + +#: cps/templates/user_edit.html:18 +msgid "Reset user Password" +msgstr "Återställ användarlösenordet" + +#: cps/templates/user_edit.html:27 +msgid "Kindle E-Mail" +msgstr "Kindle e-post" + +#: cps/templates/user_edit.html:41 +msgid "Standard Theme" +msgstr "Standard tema" + +#: cps/templates/user_edit.html:42 +msgid "caliBlur! Dark Theme (Beta)" +msgstr "caliBlur! Mörkt tema (beta)" + +#: cps/templates/user_edit.html:47 +msgid "Show books with language" +msgstr "Visa böcker med språk" + +#: cps/templates/user_edit.html:49 +msgid "Show all" +msgstr "Visa alla" + +#: cps/templates/user_edit.html:147 +msgid "Delete this user" +msgstr "Ta bort den här användaren" + +#: cps/templates/user_edit.html:162 +msgid "Recent Downloads" +msgstr "Senaste hämtningar" + +#~ msgid "Current commit timestamp" +#~ msgstr "Aktuelles Commit Datum" + +#~ msgid "Newest commit timestamp" +#~ msgstr "Neuestes Commit Datum" + +#~ msgid "Convert: %(book)s" +#~ msgstr "Konvertera: %(book)s" + +#~ msgid "Convert to %(format)s: %(book)s" +#~ msgstr "Konvertera till %(format)s: %(book)s" + +#~ msgid "Files are replaced" +#~ msgstr "Filer ersätts" + +#~ msgid "Server is stopped" +#~ msgstr "Servern stoppas" + +#~ msgid "Convertertool %(converter)s not found" +#~ msgstr "Convertertool %(converter)s hittades inte" + +#~ msgid "Choose a password" +#~ msgstr "Välj ett lösenord" + diff --git a/messages.pot b/messages.pot index 7eb09c9a..4f7d0bcd 100644 --- a/messages.pot +++ b/messages.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-11-03 14:03+0100\n" +"POT-Creation-Date: 2018-11-17 16:38+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -44,7 +44,7 @@ msgstr "" msgid "Send to Kindle" msgstr "" -#: cps/helper.py:78 cps/helper.py:96 +#: cps/helper.py:78 cps/helper.py:96 cps/helper.py:149 msgid "This e-mail has been sent via Calibre-Web." msgstr "" @@ -79,659 +79,659 @@ msgstr "" msgid "E-mail: %(book)s" msgstr "" -#: cps/helper.py:150 +#: cps/helper.py:151 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "" -#: cps/helper.py:250 +#: cps/helper.py:251 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:259 +#: cps/helper.py:260 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:281 cps/helper.py:290 +#: cps/helper.py:282 cps/helper.py:291 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "" -#: cps/helper.py:308 +#: cps/helper.py:309 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "" -#: cps/helper.py:565 +#: cps/helper.py:570 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:567 +#: cps/helper.py:572 msgid "Unrar binary file not found" msgstr "" -#: cps/helper.py:609 +#: cps/helper.py:614 msgid "Waiting" msgstr "" -#: cps/helper.py:611 +#: cps/helper.py:616 msgid "Failed" msgstr "" -#: cps/helper.py:613 +#: cps/helper.py:618 msgid "Started" msgstr "" -#: cps/helper.py:615 +#: cps/helper.py:620 msgid "Finished" msgstr "" -#: cps/helper.py:617 +#: cps/helper.py:622 msgid "Unknown Status" msgstr "" -#: cps/helper.py:622 +#: cps/helper.py:627 msgid "E-mail: " msgstr "" -#: cps/helper.py:624 cps/helper.py:628 +#: cps/helper.py:629 cps/helper.py:633 msgid "Convert: " msgstr "" -#: cps/helper.py:626 +#: cps/helper.py:631 msgid "Upload: " msgstr "" -#: cps/helper.py:630 +#: cps/helper.py:635 msgid "Unknown Task: " msgstr "" -#: cps/web.py:1132 cps/web.py:2842 +#: cps/web.py:1155 cps/web.py:2858 msgid "Unknown" msgstr "" -#: cps/web.py:1141 cps/web.py:1172 cps/web.py:1257 +#: cps/web.py:1164 cps/web.py:1195 cps/web.py:1280 msgid "HTTP Error" msgstr "" -#: cps/web.py:1143 cps/web.py:1174 cps/web.py:1258 +#: cps/web.py:1166 cps/web.py:1197 cps/web.py:1281 msgid "Connection error" msgstr "" -#: cps/web.py:1145 cps/web.py:1176 cps/web.py:1259 +#: cps/web.py:1168 cps/web.py:1199 cps/web.py:1282 msgid "Timeout while establishing connection" msgstr "" -#: cps/web.py:1147 cps/web.py:1178 cps/web.py:1260 +#: cps/web.py:1170 cps/web.py:1201 cps/web.py:1283 msgid "General error" msgstr "" -#: cps/web.py:1153 +#: cps/web.py:1176 msgid "Unexpected data while reading update information" msgstr "" -#: cps/web.py:1160 +#: cps/web.py:1183 msgid "No update available. You already have the latest version installed" msgstr "" -#: cps/web.py:1185 +#: cps/web.py:1208 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "" -#: cps/web.py:1235 +#: cps/web.py:1258 msgid "Could not fetch update information" msgstr "" -#: cps/web.py:1250 +#: cps/web.py:1273 msgid "Requesting update package" msgstr "" -#: cps/web.py:1251 +#: cps/web.py:1274 msgid "Downloading update package" msgstr "" -#: cps/web.py:1252 +#: cps/web.py:1275 msgid "Unzipping update package" msgstr "" -#: cps/web.py:1253 +#: cps/web.py:1276 msgid "Replacing files" msgstr "" -#: cps/web.py:1254 +#: cps/web.py:1277 msgid "Database connections are closed" msgstr "" -#: cps/web.py:1255 +#: cps/web.py:1278 msgid "Stopping server" msgstr "" -#: cps/web.py:1256 +#: cps/web.py:1279 msgid "Update finished, please press okay and reload page" msgstr "" -#: cps/web.py:1257 cps/web.py:1258 cps/web.py:1259 cps/web.py:1260 +#: cps/web.py:1280 cps/web.py:1281 cps/web.py:1282 cps/web.py:1283 msgid "Update failed:" msgstr "" -#: cps/web.py:1283 +#: cps/web.py:1306 msgid "Recently Added Books" msgstr "" -#: cps/web.py:1293 +#: cps/web.py:1316 msgid "Newest Books" msgstr "" -#: cps/web.py:1305 +#: cps/web.py:1328 msgid "Oldest Books" msgstr "" -#: cps/web.py:1317 +#: cps/web.py:1340 msgid "Books (A-Z)" msgstr "" -#: cps/web.py:1328 +#: cps/web.py:1351 msgid "Books (Z-A)" msgstr "" -#: cps/web.py:1357 +#: cps/web.py:1380 msgid "Hot Books (most downloaded)" msgstr "" -#: cps/web.py:1370 +#: cps/web.py:1393 msgid "Best rated books" msgstr "" -#: cps/templates/index.xml:39 cps/web.py:1383 +#: cps/templates/index.xml:39 cps/web.py:1406 msgid "Random Books" msgstr "" -#: cps/web.py:1398 +#: cps/web.py:1421 msgid "Author list" msgstr "" -#: cps/web.py:1410 cps/web.py:1501 cps/web.py:1663 cps/web.py:2206 +#: cps/web.py:1433 cps/web.py:1524 cps/web.py:1686 cps/web.py:2229 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "" -#: cps/web.py:1438 +#: cps/web.py:1461 msgid "Publisher list" msgstr "" -#: cps/web.py:1452 +#: cps/web.py:1475 #, python-format msgid "Publisher: %(name)s" msgstr "" -#: cps/templates/index.xml:83 cps/web.py:1484 +#: cps/templates/index.xml:83 cps/web.py:1507 msgid "Series list" msgstr "" -#: cps/web.py:1499 +#: cps/web.py:1522 #, python-format msgid "Series: %(serie)s" msgstr "" -#: cps/web.py:1528 +#: cps/web.py:1551 msgid "Available languages" msgstr "" -#: cps/web.py:1548 +#: cps/web.py:1571 #, python-format msgid "Language: %(name)s" msgstr "" -#: cps/templates/index.xml:76 cps/web.py:1559 +#: cps/templates/index.xml:76 cps/web.py:1582 msgid "Category list" msgstr "" -#: cps/web.py:1573 +#: cps/web.py:1596 #, python-format msgid "Category: %(name)s" msgstr "" -#: cps/templates/layout.html:71 cps/web.py:1699 +#: cps/templates/layout.html:71 cps/web.py:1722 msgid "Tasks" msgstr "" -#: cps/web.py:1733 +#: cps/web.py:1756 msgid "Statistics" msgstr "" -#: cps/web.py:1840 +#: cps/web.py:1863 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "" -#: cps/web.py:1915 +#: cps/web.py:1938 msgid "Server restarted, please reload page" msgstr "" -#: cps/web.py:1918 +#: cps/web.py:1941 msgid "Performing shutdown of server, please close window" msgstr "" -#: cps/web.py:1937 +#: cps/web.py:1960 msgid "Update done" msgstr "" -#: cps/web.py:2007 +#: cps/web.py:2030 msgid "Published after " msgstr "" -#: cps/web.py:2014 +#: cps/web.py:2037 msgid "Published before " msgstr "" -#: cps/web.py:2028 +#: cps/web.py:2051 #, python-format msgid "Rating <= %(rating)s" msgstr "" -#: cps/web.py:2030 +#: cps/web.py:2053 #, python-format msgid "Rating >= %(rating)s" msgstr "" -#: cps/web.py:2089 cps/web.py:2098 +#: cps/web.py:2112 cps/web.py:2121 msgid "search" msgstr "" #: cps/templates/index.xml:47 cps/templates/index.xml:51 -#: cps/templates/layout.html:146 cps/web.py:2165 +#: cps/templates/layout.html:146 cps/web.py:2188 msgid "Read Books" msgstr "" #: cps/templates/index.xml:55 cps/templates/index.xml:59 -#: cps/templates/layout.html:148 cps/web.py:2168 +#: cps/templates/layout.html:148 cps/web.py:2191 msgid "Unread Books" msgstr "" -#: cps/web.py:2216 cps/web.py:2218 cps/web.py:2220 cps/web.py:2232 +#: cps/web.py:2239 cps/web.py:2241 cps/web.py:2243 cps/web.py:2255 msgid "Read a Book" msgstr "" -#: cps/web.py:2298 cps/web.py:3201 +#: cps/web.py:2314 cps/web.py:3217 msgid "Please fill out all fields!" msgstr "" -#: cps/web.py:2299 cps/web.py:2320 cps/web.py:2324 cps/web.py:2329 -#: cps/web.py:2331 +#: cps/web.py:2315 cps/web.py:2336 cps/web.py:2340 cps/web.py:2345 +#: cps/web.py:2347 msgid "register" msgstr "" -#: cps/web.py:2319 cps/web.py:3417 +#: cps/web.py:2335 cps/web.py:3433 msgid "An unknown error occurred. Please try again later." msgstr "" -#: cps/web.py:2322 +#: cps/web.py:2338 msgid "Your e-mail is not allowed to register" msgstr "" -#: cps/web.py:2325 +#: cps/web.py:2341 msgid "Confirmation e-mail was send to your e-mail account." msgstr "" -#: cps/web.py:2328 +#: cps/web.py:2344 msgid "This username or e-mail address is already in use." msgstr "" -#: cps/web.py:2345 cps/web.py:2441 +#: cps/web.py:2361 cps/web.py:2457 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "" -#: cps/web.py:2350 +#: cps/web.py:2366 msgid "Wrong Username or Password" msgstr "" -#: cps/web.py:2356 cps/web.py:2377 +#: cps/web.py:2372 cps/web.py:2393 msgid "login" msgstr "" -#: cps/web.py:2389 cps/web.py:2420 +#: cps/web.py:2405 cps/web.py:2436 msgid "Token not found" msgstr "" -#: cps/web.py:2397 cps/web.py:2428 +#: cps/web.py:2413 cps/web.py:2444 msgid "Token has expired" msgstr "" -#: cps/web.py:2405 +#: cps/web.py:2421 msgid "Success! Please return to your device" msgstr "" -#: cps/web.py:2455 +#: cps/web.py:2471 msgid "Please configure the SMTP mail settings first..." msgstr "" -#: cps/web.py:2459 +#: cps/web.py:2475 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "" -#: cps/web.py:2463 +#: cps/web.py:2479 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "" -#: cps/web.py:2465 cps/web.py:3255 +#: cps/web.py:2481 cps/web.py:3271 msgid "Please configure your kindle e-mail address first..." msgstr "" -#: cps/web.py:2476 cps/web.py:2528 +#: cps/web.py:2492 cps/web.py:2544 msgid "Invalid shelf specified" msgstr "" -#: cps/web.py:2483 +#: cps/web.py:2499 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" msgstr "" -#: cps/web.py:2491 +#: cps/web.py:2507 msgid "You are not allowed to edit public shelves" msgstr "" -#: cps/web.py:2500 +#: cps/web.py:2516 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" msgstr "" -#: cps/web.py:2514 +#: cps/web.py:2530 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "" -#: cps/web.py:2533 +#: cps/web.py:2549 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "" -#: cps/web.py:2538 +#: cps/web.py:2554 msgid "User is not allowed to edit public shelves" msgstr "" -#: cps/web.py:2556 +#: cps/web.py:2572 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "" -#: cps/web.py:2570 +#: cps/web.py:2586 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "" -#: cps/web.py:2572 +#: cps/web.py:2588 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "" -#: cps/web.py:2609 +#: cps/web.py:2625 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "" -#: cps/web.py:2615 +#: cps/web.py:2631 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" -#: cps/web.py:2635 cps/web.py:2659 +#: cps/web.py:2651 cps/web.py:2675 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "" -#: cps/web.py:2640 +#: cps/web.py:2656 #, python-format msgid "Shelf %(title)s created" msgstr "" -#: cps/web.py:2642 cps/web.py:2670 +#: cps/web.py:2658 cps/web.py:2686 msgid "There was an error" msgstr "" -#: cps/web.py:2643 cps/web.py:2645 +#: cps/web.py:2659 cps/web.py:2661 msgid "create a shelf" msgstr "" -#: cps/web.py:2668 +#: cps/web.py:2684 #, python-format msgid "Shelf %(title)s changed" msgstr "" -#: cps/web.py:2671 cps/web.py:2673 +#: cps/web.py:2687 cps/web.py:2689 msgid "Edit a shelf" msgstr "" -#: cps/web.py:2694 +#: cps/web.py:2710 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "" -#: cps/web.py:2721 +#: cps/web.py:2737 #, python-format msgid "Shelf: '%(name)s'" msgstr "" -#: cps/web.py:2724 +#: cps/web.py:2740 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "" -#: cps/web.py:2755 +#: cps/web.py:2771 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "" -#: cps/web.py:2784 cps/web.py:3207 +#: cps/web.py:2800 cps/web.py:3223 msgid "E-mail is not from valid domain" msgstr "" -#: cps/web.py:2786 cps/web.py:2829 cps/web.py:2832 +#: cps/web.py:2802 cps/web.py:2845 cps/web.py:2848 #, python-format msgid "%(name)s's profile" msgstr "" -#: cps/web.py:2827 +#: cps/web.py:2843 msgid "Found an existing account for this e-mail address." msgstr "" -#: cps/web.py:2830 +#: cps/web.py:2846 msgid "Profile updated" msgstr "" -#: cps/web.py:2858 +#: cps/web.py:2874 msgid "Admin page" msgstr "" -#: cps/web.py:2938 cps/web.py:3112 +#: cps/web.py:2954 cps/web.py:3128 msgid "Calibre-Web configuration updated" msgstr "" -#: cps/templates/admin.html:100 cps/web.py:2951 +#: cps/templates/admin.html:100 cps/web.py:2967 msgid "UI Configuration" msgstr "" -#: cps/web.py:2969 +#: cps/web.py:2985 msgid "Import of optional Google Drive requirements missing" msgstr "" -#: cps/web.py:2972 +#: cps/web.py:2988 msgid "client_secrets.json is missing or not readable" msgstr "" -#: cps/web.py:2977 cps/web.py:3004 +#: cps/web.py:2993 cps/web.py:3020 msgid "client_secrets.json is not configured for web application" msgstr "" -#: cps/templates/admin.html:99 cps/web.py:3007 cps/web.py:3033 cps/web.py:3045 -#: cps/web.py:3088 cps/web.py:3103 cps/web.py:3120 cps/web.py:3127 -#: cps/web.py:3142 +#: cps/templates/admin.html:99 cps/web.py:3023 cps/web.py:3049 cps/web.py:3061 +#: cps/web.py:3104 cps/web.py:3119 cps/web.py:3136 cps/web.py:3143 +#: cps/web.py:3158 msgid "Basic Configuration" msgstr "" -#: cps/web.py:3030 +#: cps/web.py:3046 msgid "Keyfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:3042 +#: cps/web.py:3058 msgid "Certfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:3085 +#: cps/web.py:3101 msgid "Logfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:3124 +#: cps/web.py:3140 msgid "DB location is not valid, please enter correct path" msgstr "" -#: cps/templates/admin.html:33 cps/web.py:3203 cps/web.py:3209 cps/web.py:3225 +#: cps/templates/admin.html:33 cps/web.py:3219 cps/web.py:3225 cps/web.py:3241 msgid "Add new user" msgstr "" -#: cps/web.py:3215 +#: cps/web.py:3231 #, python-format msgid "User '%(user)s' created" msgstr "" -#: cps/web.py:3219 +#: cps/web.py:3235 msgid "Found an existing account for this e-mail address or nickname." msgstr "" -#: cps/web.py:3243 cps/web.py:3257 +#: cps/web.py:3259 cps/web.py:3273 msgid "E-mail server settings updated" msgstr "" -#: cps/web.py:3250 +#: cps/web.py:3266 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "" -#: cps/web.py:3253 +#: cps/web.py:3269 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "" -#: cps/web.py:3258 +#: cps/web.py:3274 msgid "Edit e-mail server settings" msgstr "" -#: cps/web.py:3283 +#: cps/web.py:3299 #, python-format msgid "User '%(nick)s' deleted" msgstr "" -#: cps/web.py:3392 +#: cps/web.py:3408 #, python-format msgid "User '%(nick)s' updated" msgstr "" -#: cps/web.py:3395 +#: cps/web.py:3411 msgid "An unknown error occured." msgstr "" -#: cps/web.py:3397 +#: cps/web.py:3413 #, python-format msgid "Edit User %(nick)s" msgstr "" -#: cps/web.py:3414 +#: cps/web.py:3430 #, python-format msgid "Password for user %(user)s reset" msgstr "" -#: cps/web.py:3428 cps/web.py:3629 +#: cps/web.py:3444 cps/web.py:3645 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "" -#: cps/web.py:3453 cps/web.py:3912 +#: cps/web.py:3469 cps/web.py:3928 msgid "edit metadata" msgstr "" -#: cps/web.py:3546 cps/web.py:3782 +#: cps/web.py:3562 cps/web.py:3798 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "" -#: cps/web.py:3550 cps/web.py:3786 +#: cps/web.py:3566 cps/web.py:3802 msgid "File to be uploaded must have an extension" msgstr "" -#: cps/web.py:3562 cps/web.py:3806 +#: cps/web.py:3578 cps/web.py:3822 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "" -#: cps/web.py:3567 +#: cps/web.py:3583 #, python-format msgid "Failed to store file %(file)s." msgstr "" -#: cps/web.py:3583 +#: cps/web.py:3599 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "" -#: cps/web.py:3601 +#: cps/web.py:3617 #, python-format msgid "Failed to create path for cover %(path)s (Permission denied)." msgstr "" -#: cps/web.py:3608 +#: cps/web.py:3624 #, python-format msgid "Failed to store cover-file %(cover)s." msgstr "" -#: cps/web.py:3611 +#: cps/web.py:3627 msgid "Cover-file is not a valid image file" msgstr "" -#: cps/web.py:3641 cps/web.py:3650 cps/web.py:3654 +#: cps/web.py:3657 cps/web.py:3666 cps/web.py:3670 msgid "unknown" msgstr "" -#: cps/web.py:3673 +#: cps/web.py:3689 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/web.py:3721 +#: cps/web.py:3737 #, python-format msgid "%(langname)s is not a valid language" msgstr "" -#: cps/web.py:3752 +#: cps/web.py:3768 msgid "Metadata successfully updated" msgstr "" -#: cps/web.py:3761 +#: cps/web.py:3777 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/web.py:3811 +#: cps/web.py:3827 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "" -#: cps/web.py:3816 +#: cps/web.py:3832 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "" -#: cps/web.py:3898 +#: cps/web.py:3914 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/web.py:3928 +#: cps/web.py:3944 msgid "Source or destination format for conversion missing" msgstr "" -#: cps/web.py:3938 +#: cps/web.py:3954 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "" -#: cps/web.py:3942 +#: cps/web.py:3958 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "" @@ -892,7 +892,7 @@ msgid "Do you really want to restart Calibre-Web?" msgstr "" #: cps/templates/admin.html:150 cps/templates/admin.html:164 -#: cps/templates/admin.html:184 cps/templates/shelf.html:61 +#: cps/templates/admin.html:184 cps/templates/shelf.html:63 msgid "Ok" msgstr "" @@ -900,7 +900,7 @@ msgstr "" #: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200 #: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:168 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75 -#: cps/templates/shelf.html:62 cps/templates/shelf_edit.html:19 +#: cps/templates/shelf.html:64 cps/templates/shelf_edit.html:19 #: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:155 msgid "Back" msgstr "" @@ -921,7 +921,7 @@ msgstr "" msgid "In Library" msgstr "" -#: cps/templates/author.html:69 +#: cps/templates/author.html:71 msgid "More by" msgstr "" @@ -1433,6 +1433,10 @@ msgstr "" msgid "Search" msgstr "" +#: cps/templates/http_error.html:23 +msgid "Back to home" +msgstr "" + #: cps/templates/index.html:5 msgid "Discover (Random Books)" msgstr "" @@ -1801,11 +1805,11 @@ msgstr "" msgid "Change order" msgstr "" -#: cps/templates/shelf.html:56 +#: cps/templates/shelf.html:58 msgid "Do you really want to delete the shelf?" msgstr "" -#: cps/templates/shelf.html:59 +#: cps/templates/shelf.html:61 msgid "Shelf will be lost for everybody and forever!" msgstr "" diff --git a/readme.md b/readme.md index 6e6332e2..4539cd4c 100755 --- a/readme.md +++ b/readme.md @@ -12,7 +12,7 @@ Calibre-Web is a web app providing a clean interface for browsing, reading and d - full graphical setup - User management with fine grained per-user permissions - Admin interface -- User Interface in dutch, english, french, german, hungarian, italian, japanese, khmer, polish, russian, simplified chinese, spanish +- User Interface in dutch, english, french, german, hungarian, italian, japanese, khmer, polish, russian, simplified chinese, spanish, swedish - OPDS feed for eBook reader apps - Filter and search by titles, authors, tags, series and language - Create custom book collection (shelves) From 2422f782de275e13686d00d7c54b33f2dcc1ac62 Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Sat, 17 Nov 2018 16:51:30 +0100 Subject: [PATCH 032/160] Fix #701 --- cps/web.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cps/web.py b/cps/web.py index a72e3afc..d8544386 100644 --- a/cps/web.py +++ b/cps/web.py @@ -591,7 +591,7 @@ def modify_database_object(input_elements, db_book_object, db_object, db_session if db_type == 'custom' and db_element.value != add_element: new_element.value = add_element # new_element = db_element - elif db_type == 'language' and db_element.lang_code != add_element: + elif db_type == 'languages' and db_element.lang_code != add_element: db_element.lang_code = add_element # new_element = db_element elif db_type == 'series' and db_element.name != add_element: From e1b6fa25e9cb80bc203245b3daac37215f2c0275 Mon Sep 17 00:00:00 2001 From: haseo Date: Mon, 19 Nov 2018 15:54:28 +0800 Subject: [PATCH 033/160] A better solution to #681 --- cps/web.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/cps/web.py b/cps/web.py index 396066d9..5541ebcf 100644 --- a/cps/web.py +++ b/cps/web.py @@ -197,12 +197,7 @@ def get_locale(): if user.nickname != 'Guest': # if the account is the guest account bypass the config lang settings return user.locale translations = [item.language for item in babel.list_translations()] + ['en'] - preferred = [x.replace('-', '_') for x in request.accept_languages.values()] - - # In the case of Simplified Chinese, Accept-Language is "zh-CN", while our translation of Simplified Chinese is "zh_Hans_CN". - # TODO: This is Not a good solution, should be improved. - if "zh_CN" in preferred: - return "zh_Hans_CN" + preferred = [str(LC.parse(x, '-')) for x in request.accept_languages.values()] return negotiate_locale(preferred, translations) From cbc9169973269c29adfd5efe5a45bc35dc3e7a18 Mon Sep 17 00:00:00 2001 From: Jony <23194385+jony0008@users.noreply.github.com> Date: Fri, 23 Nov 2018 03:01:34 +0100 Subject: [PATCH 034/160] Update messages.po --- cps/translations/sv/LC_MESSAGES/messages.po | 46 ++++++++++----------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/cps/translations/sv/LC_MESSAGES/messages.po b/cps/translations/sv/LC_MESSAGES/messages.po index 14f961cd..0544e59c 100644 --- a/cps/translations/sv/LC_MESSAGES/messages.po +++ b/cps/translations/sv/LC_MESSAGES/messages.po @@ -5,18 +5,19 @@ # FIRST AUTHOR OzzieIsaacs, 2016. msgid "" msgstr "" -"Project-Id-Version: Calibre-Web\n" +"Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "POT-Creation-Date: 2018-11-17 16:38+0100\n" -"PO-Revision-Date: 2018-11-05 11:59+0100\n" +"PO-Revision-Date: 2018-11-23 02:57+0100\n" "Last-Translator: Jonatan Nyberg \n" "Language: sv\n" "Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.6.0\n" +"X-Generator: Poedit 2.2\n" #: cps/book_formats.py:129 cps/book_formats.py:130 cps/book_formats.py:134 #: cps/book_formats.py:138 cps/converter.py:11 cps/converter.py:27 @@ -29,7 +30,7 @@ msgstr "Utförande behörighet saknas" #: cps/converter.py:48 msgid "not configured" -msgstr "" +msgstr "inte konfigurerad" #: cps/helper.py:58 #, python-format @@ -130,23 +131,23 @@ msgstr "Klar" #: cps/helper.py:622 msgid "Unknown Status" -msgstr "" +msgstr "Okänd status" #: cps/helper.py:627 msgid "E-mail: " -msgstr "" +msgstr "E-post: " #: cps/helper.py:629 cps/helper.py:633 msgid "Convert: " -msgstr "" +msgstr "Konvertera: " #: cps/helper.py:631 msgid "Upload: " -msgstr "" +msgstr "Överför: " #: cps/helper.py:635 msgid "Unknown Task: " -msgstr "" +msgstr "Okänd uppgift: " #: cps/web.py:1155 cps/web.py:2858 msgid "Unknown" @@ -198,7 +199,7 @@ msgstr "Packar upp uppdateringspaketet" #: cps/web.py:1276 msgid "Replacing files" -msgstr "" +msgstr "Ersätta filer" #: cps/web.py:1277 msgid "Database connections are closed" @@ -206,7 +207,7 @@ msgstr "Databasanslutningarna är stängda" #: cps/web.py:1278 msgid "Stopping server" -msgstr "" +msgstr "Stoppar server" #: cps/web.py:1279 msgid "Update finished, please press okay and reload page" @@ -214,7 +215,7 @@ msgstr "Uppdatering klar, tryck på okej och uppdatera sidan" #: cps/web.py:1280 cps/web.py:1281 cps/web.py:1282 cps/web.py:1283 msgid "Update failed:" -msgstr "" +msgstr "Uppdateringen misslyckades:" #: cps/web.py:1306 msgid "Recently Added Books" @@ -258,12 +259,12 @@ msgstr "Fel vid öppnande av e-bok. Filen finns inte eller filen är inte tillg #: cps/web.py:1461 msgid "Publisher list" -msgstr "" +msgstr "Lista över förlag" #: cps/web.py:1475 #, python-format msgid "Publisher: %(name)s" -msgstr "" +msgstr "Förlag: %(name)s" #: cps/templates/index.xml:83 cps/web.py:1507 msgid "Series list" @@ -427,16 +428,16 @@ msgstr "Ogiltig hylla specificerad" #: cps/web.py:2499 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" -msgstr "" +msgstr "Tyvärr får du inte lägga till en bok på hyllan: %(shelfname)s" #: cps/web.py:2507 msgid "You are not allowed to edit public shelves" -msgstr "" +msgstr "Du får inte redigera offentliga hyllor" #: cps/web.py:2516 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" -msgstr "" +msgstr "Boken är redan en del av hyllan: %(shelfname)s" #: cps/web.py:2530 #, python-format @@ -702,7 +703,7 @@ msgstr "%(langname)s är inte ett giltigt språk" #: cps/web.py:3768 msgid "Metadata successfully updated" -msgstr "" +msgstr "Metadata uppdaterades" #: cps/web.py:3777 msgid "Error editing book, please check logfile for details" @@ -1323,7 +1324,7 @@ msgstr "Visa författarval" #: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:94 msgid "Show publisher selection" -msgstr "" +msgstr "Visa urval av förlag" #: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:98 msgid "Show read and unread" @@ -1436,7 +1437,7 @@ msgstr "Sök" #: cps/templates/http_error.html:23 msgid "Back to home" -msgstr "" +msgstr "Tillbaka till hemmet" #: cps/templates/index.html:5 msgid "Discover (Random Books)" @@ -1484,11 +1485,11 @@ msgstr "Böcker ordnade efter författare" #: cps/templates/index.xml:69 cps/templates/layout.html:163 msgid "Publishers" -msgstr "" +msgstr "Förlag" #: cps/templates/index.xml:73 msgid "Books ordered by publisher" -msgstr "" +msgstr "Böcker ordnade efter förlag" #: cps/templates/index.xml:80 msgid "Books ordered by category" @@ -1945,4 +1946,3 @@ msgstr "Senaste hämtningar" #~ msgid "Choose a password" #~ msgstr "Välj ett lösenord" - From bc0d19f33d26cbeef4a292836b8f480db77e78f2 Mon Sep 17 00:00:00 2001 From: Jony <23194385+jony0008@users.noreply.github.com> Date: Fri, 23 Nov 2018 03:03:02 +0100 Subject: [PATCH 035/160] Fix typo --- cps/translations/sv/LC_MESSAGES/messages.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cps/translations/sv/LC_MESSAGES/messages.po b/cps/translations/sv/LC_MESSAGES/messages.po index 0544e59c..c7e6c033 100644 --- a/cps/translations/sv/LC_MESSAGES/messages.po +++ b/cps/translations/sv/LC_MESSAGES/messages.po @@ -427,7 +427,7 @@ msgstr "Ogiltig hylla specificerad" #: cps/web.py:2499 #, python-format -msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" +msgid "Sorry you are not allowed to add a book to the shelf: %(shelfname)s" msgstr "Tyvärr får du inte lägga till en bok på hyllan: %(shelfname)s" #: cps/web.py:2507 From 863b77a5d7d342ac2f587c6f8d70679c707189a6 Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Sun, 25 Nov 2018 11:25:20 +0100 Subject: [PATCH 036/160] Fix #711 Fixing for send to kindle after uploading codecleaning --- cps/helper.py | 25 +++++++-- cps/templates/detail.html | 8 ++- cps/web.py | 104 ++++++++++++++++++-------------------- 3 files changed, 73 insertions(+), 64 deletions(-) diff --git a/cps/helper.py b/cps/helper.py index 2834bad1..43fb8520 100644 --- a/cps/helper.py +++ b/cps/helper.py @@ -114,9 +114,9 @@ def send_registration_mail(e_mail, user_name, default_password, resend=False): return def check_send_to_kindle(entry): - ''' + """ returns all available book formats for sending to Kindle - ''' + """ if len(entry.data): bookformats=list() if ub.config.config_ebookconverter == 0: @@ -156,6 +156,18 @@ def check_send_to_kindle(entry): return None +# Check if a reader is existing for any of the book formats, if not, return empty list, otherwise return +# list with supported formats +def check_read_formats(entry): + EXTENSIONS_READER = {'TXT', 'PDF', 'EPUB', 'ZIP', 'CBZ', 'TAR', 'CBT', 'RAR', 'CBR'} + bookformats = list() + if len(entry.data): + for ele in iter(entry.data): + if ele.format in EXTENSIONS_READER: + bookformats.append(ele.format.lower()) + return bookformats + + # Files are processed in the following order/priority: # 1: If Mobi file is existing, it's directly send to kindle email, # 2: If Epub file is existing, it's converted and send to kindle email, @@ -336,6 +348,7 @@ def delete_book_gdrive(book, book_format): error =_(u'Book path %(path)s not found on Google Drive', path=book.path) # file not found return error + def generate_random_password(): s = "abcdefghijklmnopqrstuvwxyz01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%&*()?" passlen = 8 @@ -349,12 +362,14 @@ def update_dir_stucture(book_id, calibrepath): else: return update_dir_structure_file(book_id, calibrepath) + def delete_book(book, calibrepath, book_format): if ub.config.config_use_google_drive: return delete_book_gdrive(book, book_format) else: return delete_book_file(book, calibrepath, book_format) + def get_book_cover(cover_path): if ub.config.config_use_google_drive: try: @@ -372,6 +387,7 @@ def get_book_cover(cover_path): else: return send_from_directory(os.path.join(ub.config.config_calibre_dir, cover_path), "cover.jpg") + # saves book cover to gdrive or locally def save_cover(url, book_path): img = requests.get(url) @@ -384,7 +400,7 @@ def save_cover(url, book_path): f = open(os.path.join(tmpDir, "uploaded_cover.jpg"), "wb") f.write(img.content) f.close() - uploadFileToEbooksFolder(os.path.join(book_path, 'cover.jpg'), os.path.join(tmpDir, f.name)) + gd.uploadFileToEbooksFolder(os.path.join(book_path, 'cover.jpg'), os.path.join(tmpDir, f.name)) web.app.logger.info("Cover is saved on Google Drive") return True @@ -394,6 +410,7 @@ def save_cover(url, book_path): web.app.logger.info("Cover is saved") return True + def do_download_file(book, book_format, data, headers): if ub.config.config_use_google_drive: startTime = time.time() @@ -621,6 +638,7 @@ def get_current_version_info(): return {'hash': content[0], 'datetime': content[1]} return False + def json_serial(obj): """JSON serializer for objects not serializable by default json code""" @@ -628,6 +646,7 @@ def json_serial(obj): return obj.isoformat() raise TypeError ("Type %s not serializable" % type(obj)) + def render_task_status(tasklist): #helper function to apply localize status information in tasklist entries renderedtasklist=list() diff --git a/cps/templates/detail.html b/cps/templates/detail.html index 27d73ae2..7631ce2f 100644 --- a/cps/templates/detail.html +++ b/cps/templates/detail.html @@ -57,17 +57,15 @@

{% endif %} {% endif %} - {% if entry.data|length %} + {% if reader_list %}
diff --git a/cps/web.py b/cps/web.py index 687a792c..558479cf 100644 --- a/cps/web.py +++ b/cps/web.py @@ -56,7 +56,6 @@ import tempfile from redirect import redirect_back import time import server -# import copy from reverseproxy import ReverseProxied try: @@ -116,8 +115,6 @@ EXTENSIONS_UPLOAD = {'txt', 'pdf', 'epub', 'mobi', 'azw', 'azw3', 'cbr', 'cbz', 'fb2', 'html', 'rtf', 'odt'} EXTENSIONS_CONVERT = {'pdf', 'epub', 'mobi', 'azw3', 'docx', 'rtf', 'fb2', 'lit', 'lrf', 'txt', 'html', 'rtf', 'odt'} -# EXTENSIONS_READER = set(['txt', 'pdf', 'epub', 'zip', 'cbz', 'tar', 'cbt'] + (['rar','cbr'] if rar_support else [])) - # Main code mimetypes.init() @@ -733,7 +730,8 @@ def feed_hot(): # ub.session.query(ub.Downloads).filter(book.Downloads.book_id == ub.Downloads.book_id).delete() # ub.session.commit() numBooks = entries.__len__() - pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page, numBooks) + pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), + config.config_books_per_page, numBooks) return render_xml_template('feed.xml', entries=entries, pagination=pagination) @@ -773,7 +771,8 @@ def feed_publisherindex(): def feed_publisher(book_id): off = request.args.get("offset") or 0 entries, __, pagination = fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), - db.Books, db.Books.publishers.any(db.Publishers.id == book_id), [db.Books.timestamp.desc()]) + db.Books, db.Books.publishers.any(db.Publishers.id == book_id), + [db.Books.timestamp.desc()]) return render_xml_template('feed.xml', entries=entries, pagination=pagination) @@ -872,7 +871,8 @@ def get_opds_download_link(book_id, book_format): file_name = book.authors[0].name + '_' + file_name file_name = helper.get_valid_filename(file_name) headers = Headers() - headers["Content-Disposition"] = "attachment; filename*=UTF-8''%s.%s" % (quote(file_name.encode('utf8')), book_format) + headers["Content-Disposition"] = "attachment; filename*=UTF-8''%s.%s" % (quote(file_name.encode('utf8')), + book_format) try: headers["Content-Type"] = mimetypes.types_map['.' + book_format] except KeyError: @@ -895,32 +895,8 @@ def get_metadata_calibre_companion(uuid): @app.route("/ajax/emailstat") @login_required def get_email_status_json(): - answer=list() - # UIanswer = list() tasks=helper.global_WorkerThread.get_taskstatus() - '''if not current_user.role_admin(): - for task in tasks: - if task['user'] == current_user.nickname: - if task['formStarttime']: - task['starttime'] = format_datetime(task['formStarttime'], format='short', locale=get_locale()) - # task['formStarttime'] = "" - else: - if 'starttime' not in task: - task['starttime'] = "" - answer.append(task) - else: - for task in tasks: - if task['formStarttime']: - task['starttime'] = format_datetime(task['formStarttime'], format='short', locale=get_locale()) - task['formStarttime'] = "" - else: - if 'starttime' not in task: - task['starttime'] = "" - answer = tasks''' - - # UIanswer = copy.deepcopy(answer) answer = helper.render_task_status(tasks) - js=json.dumps(answer, default=helper.json_serial) response = make_response(js) response.headers["Content-Type"] = "application/json; charset=utf-8" @@ -1423,7 +1399,7 @@ def author_list(): @login_required_if_no_ano def author(book_id, page): entries, __, pagination = fill_indexpage(page, db.Books, db.Books.authors.any(db.Authors.id == book_id), - [db.Series.name, db.Books.series_index],db.books_series_link, db.Series) + [db.Series.name, db.Books.series_index],db.books_series_link, db.Series) if entries is None: flash(_(u"Error opening eBook. File does not exist or file is not accessible:"), category="error") return redirect(url_for("index")) @@ -1464,8 +1440,9 @@ def publisher_list(): def publisher(book_id, page): publisher = db.session.query(db.Publishers).filter(db.Publishers.id == book_id).first() if publisher: - entries, random, pagination = fill_indexpage(page, db.Books, db.Books.publishers.any(db.Publishers.id == book_id), - (db.Series.name, db.Books.series_index), db.books_series_link, db.Series) + entries, random, pagination = fill_indexpage(page, db.Books, + db.Books.publishers.any(db.Publishers.id == book_id), + (db.Series.name, db.Books.series_index), db.books_series_link, db.Series) return render_title_template('index.html', random=random, entries=entries, pagination=pagination, title=_(u"Publisher: %(name)s", name=publisher.name), page="publisher") else: @@ -1675,10 +1652,11 @@ def show_book(book_id): entries.tags = sort(entries.tags, key = lambda tag: tag.name) kindle_list = helper.check_send_to_kindle(entries) + reader_list = helper.check_read_formats(entries) return render_title_template('detail.html', entry=entries, cc=cc, is_xhr=request.is_xhr, title=entries.title, books_shelfs=book_in_shelfs, - have_read=have_read, kindle_list=kindle_list, page="book") + have_read=have_read, kindle_list=kindle_list, reader_list=reader_list, page="book") else: flash(_(u"Error opening eBook. File does not exist or file is not accessible:"), category="error") return redirect(url_for("index")) @@ -1795,7 +1773,8 @@ def delete_book(book_id, book_format): getattr(book, cc_string).remove(del_cc) db.session.delete(del_cc) else: - modify_database_object([u''], getattr(book, cc_string), db.cc_classes[c.id], db.session, 'custom') + modify_database_object([u''], getattr(book, cc_string), db.cc_classes[c.id], + db.session, 'custom') db.session.query(db.Books).filter(db.Books.id == book_id).delete() else: db.session.query(db.Data).filter(db.Data.book == book.id).filter(db.Data.format == book_format).delete() @@ -1871,7 +1850,8 @@ def revoke_watch_gdrive(): last_watch_response = config.config_google_drive_watch_changes_response if last_watch_response: try: - gdriveutils.stopChannel(gdriveutils.Gdrive.Instance().drive, last_watch_response['id'], last_watch_response['resourceId']) + gdriveutils.stopChannel(gdriveutils.Gdrive.Instance().drive, last_watch_response['id'], + last_watch_response['resourceId']) except HttpError: pass settings = ub.session.query(ub.Settings).first() @@ -2467,7 +2447,8 @@ def send_to_kindle(book_id, book_format, convert): if settings.get("mail_server", "mail.example.com") == "mail.example.com": flash(_(u"Please configure the SMTP mail settings first..."), category="error") elif current_user.kindle_mail: - result = helper.send_mail(book_id, book_format, convert, current_user.kindle_mail, config.config_calibre_dir, current_user.nickname) + result = helper.send_mail(book_id, book_format, convert, current_user.kindle_mail, config.config_calibre_dir, + current_user.nickname) if result is None: flash(_(u"Book successfully queued for sending to %(kindlemail)s", kindlemail=current_user.kindle_mail), category="success") @@ -2625,7 +2606,8 @@ def remove_from_shelf(shelf_id, book_id): else: app.logger.info("Sorry you are not allowed to remove a book from this shelf: %s" % shelf.name) if not request.is_xhr: - flash(_(u"Sorry you are not allowed to remove a book from this shelf: %(sname)s", sname=shelf.name), category="error") + flash(_(u"Sorry you are not allowed to remove a book from this shelf: %(sname)s", sname=shelf.name), + category="error") return redirect(url_for('index')) return "Sorry you are not allowed to remove a book from this shelf: %s" % shelf.name, 403 @@ -3111,9 +3093,9 @@ def configuration_helper(origin): content.config_rarfile_location = to_save["config_rarfile_location"].strip() else: flash(check[1], category="error") - return render_title_template("config_edit.html", content=config, origin=origin, gdrive=gdriveutils.gdrive_support, - goodreads=goodreads_support, rarfile_support=rar_support, - title=_(u"Basic Configuration")) + return render_title_template("config_edit.html", content=config, origin=origin, + gdrive=gdriveutils.gdrive_support, goodreads=goodreads_support, + rarfile_support=rar_support, title=_(u"Basic Configuration")) try: if content.config_use_google_drive and is_gdrive_ready() and not os.path.exists(config.config_calibre_dir + "/metadata.db"): gdriveutils.downloadFile(None, "metadata.db", config.config_calibre_dir + "/metadata.db") @@ -3128,15 +3110,17 @@ def configuration_helper(origin): logging.getLogger("book_formats").setLevel(config.config_log_level) except Exception as e: flash(e, category="error") - return render_title_template("config_edit.html", content=config, origin=origin, gdrive=gdriveutils.gdrive_support, - gdriveError=gdriveError, goodreads=goodreads_support, rarfile_support=rar_support, + return render_title_template("config_edit.html", content=config, origin=origin, + gdrive=gdriveutils.gdrive_support, gdriveError=gdriveError, + goodreads=goodreads_support, rarfile_support=rar_support, title=_(u"Basic Configuration"), page="config") if db_change: reload(db) if not db.setup_db(): flash(_(u'DB location is not valid, please enter correct path'), category="error") - return render_title_template("config_edit.html", content=config, origin=origin, gdrive=gdriveutils.gdrive_support, - gdriveError=gdriveError, goodreads=goodreads_support, rarfile_support=rar_support, + return render_title_template("config_edit.html", content=config, origin=origin, + gdrive=gdriveutils.gdrive_support,gdriveError=gdriveError, + goodreads=goodreads_support, rarfile_support=rar_support, title=_(u"Basic Configuration"), page="config") if reboot_required: # stop Server @@ -3150,8 +3134,9 @@ def configuration_helper(origin): else: gdrivefolders=list() return render_title_template("config_edit.html", origin=origin, success=success, content=config, - show_authenticate_google_drive=not is_gdrive_ready(), gdrive=gdriveutils.gdrive_support, - gdriveError=gdriveError, gdrivefolders=gdrivefolders, rarfile_support=rar_support, + show_authenticate_google_drive=not is_gdrive_ready(), + gdrive=gdriveutils.gdrive_support, gdriveError=gdriveError, + gdrivefolders=gdrivefolders, rarfile_support=rar_support, goodreads=goodreads_support, title=_(u"Basic Configuration"), page="config") @@ -3581,7 +3566,8 @@ def upload_single_file(request, book, book_id): return redirect(url_for('show_book', book_id=book.id)) file_size = os.path.getsize(saved_filename) - is_format = db.session.query(db.Data).filter(db.Data.book == book_id).filter(db.Data.format == file_ext.upper()).first() + is_format = db.session.query(db.Data).filter(db.Data.book == book_id).\ + filter(db.Data.format == file_ext.upper()).first() # Format entry already exists, no need to update the database if is_format: @@ -3611,7 +3597,8 @@ def upload_cover(request, book): try: os.makedirs(filepath) except OSError: - flash(_(u"Failed to create path for cover %(path)s (Permission denied).", cover=filepath), category="error") + flash(_(u"Failed to create path for cover %(path)s (Permission denied).", cover=filepath), + category="error") return redirect(url_for('show_book', book_id=book.id)) try: requested_file.save(saved_filename) @@ -3826,11 +3813,13 @@ def upload(): try: os.unlink(meta.file_path) except OSError: - flash(_(u"Failed to delete file %(file)s (Permission denied).", file= meta.file_path), category="warning") + flash(_(u"Failed to delete file %(file)s (Permission denied).", file= meta.file_path), + category="warning") if meta.cover is None: has_cover = 0 - copyfile(os.path.join(config.get_main_dir, "cps/static/generic_cover.jpg"), os.path.join(filepath, "cover.jpg")) + copyfile(os.path.join(config.get_main_dir, "cps/static/generic_cover.jpg"), + os.path.join(filepath, "cover.jpg")) else: has_cover = 1 move(meta.cover, os.path.join(filepath, "cover.jpg")) @@ -3896,8 +3885,7 @@ def upload(): # save data to database, reread data db.session.commit() db.session.connection().connection.connection.create_function("title_sort", 1, db.title_sort) - book = db.session.query(db.Books) \ - .filter(db.Books.id == book_id).filter(common_filters()).first() + book = db.session.query(db.Books).filter(db.Books.id == book_id).filter(common_filters()).first() # upload book to gdrive if nesseccary and add "(bookid)" to folder name if config.config_use_google_drive: @@ -3919,14 +3907,18 @@ def upload(): for author in db_book.authors: author_names.append(author.name) if len(request.files.getlist("btn-upload")) < 2: - cc = db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all() + cc = db.session.query(db.Custom_Columns).filter(db.Custom_Columns. + datatype.notin_(db.cc_exceptions)).all() if current_user.role_edit() or current_user.role_admin(): return render_title_template('book_edit.html', book=book, authors=author_names, cc=cc, title=_(u"edit metadata"), page="upload") book_in_shelfs = [] - flg_send_to_kindle = helper.chk_send_to_kindle(book_id) + kindle_list = helper.check_send_to_kindle(book) + reader_list = helper.check_read_formats(book) + return render_title_template('detail.html', entry=book, cc=cc, - title=book.title, books_shelfs=book_in_shelfs, flg_kindle=flg_send_to_kindle, page="upload") + title=book.title, books_shelfs=book_in_shelfs, kindle_list=kindle_list, + reader_list=reader_list, page="upload") return redirect(url_for("index")) From 8c93a7afdd7b1cc45d87af7a736f77448e09810a Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Sun, 25 Nov 2018 12:48:53 +0100 Subject: [PATCH 037/160] Updated tests --- test/Calibre-Web TestSummary.html | 919 +++++++++++------------------- 1 file changed, 336 insertions(+), 583 deletions(-) diff --git a/test/Calibre-Web TestSummary.html b/test/Calibre-Web TestSummary.html index 85f133b6..e9503755 100644 --- a/test/Calibre-Web TestSummary.html +++ b/test/Calibre-Web TestSummary.html @@ -32,15 +32,15 @@
-

Start Time: 2018-10-28 21:05:48.274095

+

Start Time: 2018-11-25 12:06:17.948456

-

Stop Time: 2018-10-28 21:23:52.450214

+

Stop Time: 2018-11-25 12:24:09.768645

-

Duration: 0:18:04.176119

+

Duration: 0:17:51.820189

@@ -524,20 +524,20 @@ AssertionError: logfile config value is not empty after reseting to default - - test_ebook_convert.test_ebook_convert - 12 - 0 - 0 + + test_edit_books.test_edit_books + 22 + 3 + 2 0 - 12 + 17 - Detail + Detail -
test_SSL_smtp_setup_error
+
test_database_errors
@@ -561,7 +561,7 @@ AssertionError: logfile config value is not empty after reseting to default -
test_STARTTLS_smtp_setup_error
+
test_delete_book
@@ -585,7 +585,7 @@ AssertionError: logfile config value is not empty after reseting to default -
test_convert_deactivate
+
test_delete_format
@@ -607,57 +607,42 @@ AssertionError: logfile config value is not empty after reseting to default - + -
test_convert_email
+
test_edit_author
- SKIP + FAIL
-