Merge remote-tracking branch 'original/Develop' into kobo_book_delete

pull/1164/head
Michael Shavit 5 years ago
commit 7d99e21d0d

@ -30,7 +30,7 @@ Calibre-Web is a web app providing a clean interface for browsing, reading and d
## Quick start ## Quick start
1. Install dependencies by running `pip3 install --target vendor -r requirements.txt`. 1. Install dependencies by running `pip3 install --target vendor -r requirements.txt` (python3.x) or `pip install --target vendor -r requirements.txt` (python2.7).
2. Execute the command: `python cps.py` (or `nohup python cps.py` - recommended if you want to exit the terminal window) 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 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\ 4. Set `Location of Calibre database` to the path of the folder where your Calibre library (metadata.db) lives, push "submit" button\

@ -43,9 +43,9 @@ from cps.gdrive import gdrive
from cps.editbooks import editbook from cps.editbooks import editbook
try: try:
from cps.kobo import kobo from cps.kobo import kobo, get_kobo_activated
from cps.kobo_auth import kobo_auth from cps.kobo_auth import kobo_auth
kobo_available = True kobo_available = get_kobo_activated()
except ImportError: except ImportError:
kobo_available = False kobo_available = False

@ -116,14 +116,13 @@ def get_locale():
if user.nickname != 'Guest': # if the account is the guest account bypass the config lang settings if user.nickname != 'Guest': # if the account is the guest account bypass the config lang settings
return user.locale return user.locale
preferred = set() preferred = list()
if request.accept_languages: if request.accept_languages:
for x in request.accept_languages.values(): for x in request.accept_languages.values():
try: try:
preferred.add(str(LC.parse(x.replace('-', '_')))) preferred.append(str(LC.parse(x.replace('-', '_'))))
except (UnknownLocaleError, ValueError) as e: except (UnknownLocaleError, ValueError) as e:
log.warning('Could not parse locale "%s": %s', x, e) log.debug('Could not parse locale "%s": %s', x, e)
# preferred.append('en')
return negotiate_locale(preferred or ['en'], _BABEL_TRANSLATIONS) return negotiate_locale(preferred or ['en'], _BABEL_TRANSLATIONS)

@ -1,4 +1,3 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web) # This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
@ -172,10 +171,7 @@ def update_view_configuration():
_config_int("config_random_books") _config_int("config_random_books")
_config_int("config_books_per_page") _config_int("config_books_per_page")
_config_int("config_authors_max") _config_int("config_authors_max")
_config_string("config_restricted_tags")
_config_int("config_restricted_column") _config_int("config_restricted_column")
_config_string("config_restricted_column_value")
if config.config_google_drive_watch_changes_response: if config.config_google_drive_watch_changes_response:
config.config_google_drive_watch_changes_response = json.dumps(config.config_google_drive_watch_changes_response) config.config_google_drive_watch_changes_response = json.dumps(config.config_google_drive_watch_changes_response)
@ -290,14 +286,14 @@ def edit_restriction(type):
ub.session.commit() ub.session.commit()
if element['id'].startswith('d'): if element['id'].startswith('d'):
if type == 0: # Tags as template if type == 0: # Tags as template
elementlist = config.list_restricted_tags() elementlist = config.list_denied_tags()
elementlist[int(element['id'][1:])]=element['Element'] elementlist[int(element['id'][1:])]=element['Element']
config.config_restricted_tags = ','.join(elementlist) config.config_denied_tags = ','.join(elementlist)
config.save() config.save()
if type == 1: # CustomC if type == 1: # CustomC
elementlist = config.list_restricted_column_values() elementlist = config.list_denied_column_values()
elementlist[int(element['id'][1:])]=element['Element'] elementlist[int(element['id'][1:])]=element['Element']
config.config_restricted_column_value = ','.join(elementlist) config.config_denied_column_value = ','.join(elementlist)
config.save() config.save()
pass pass
if type == 2: # Tags per user if type == 2: # Tags per user
@ -306,9 +302,9 @@ def edit_restriction(type):
usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first() usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first()
else: else:
usr = current_user usr = current_user
elementlist = usr.list_restricted_tags() elementlist = usr.list_denied_tags()
elementlist[int(element['id'][1:])]=element['Element'] elementlist[int(element['id'][1:])]=element['Element']
usr.restricted_tags = ','.join(elementlist) usr.denied_tags = ','.join(elementlist)
ub.session.commit() ub.session.commit()
if type == 3: # CColumn per user if type == 3: # CColumn per user
usr_id = os.path.split(request.referrer)[-1] usr_id = os.path.split(request.referrer)[-1]
@ -316,9 +312,9 @@ def edit_restriction(type):
usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first() usr = ub.session.query(ub.User).filter(ub.User.id == int(usr_id)).first()
else: else:
usr = current_user usr = current_user
elementlist = usr.list_restricted_column_values() elementlist = usr.list_denied_column_values()
elementlist[int(element['id'][1:])]=element['Element'] elementlist[int(element['id'][1:])]=element['Element']
usr.restricted_column_value = ','.join(elementlist) usr.denied_column_value = ','.join(elementlist)
ub.session.commit() ub.session.commit()
return "" return ""
@ -342,21 +338,20 @@ def restriction_deletion(element, list_func):
@login_required @login_required
@admin_required @admin_required
def add_restriction(type): def add_restriction(type):
log.info("Hit: " + str(type))
element = request.form.to_dict() element = request.form.to_dict()
if type == 0: # Tags as template if type == 0: # Tags as template
if 'submit_allow' in element: if 'submit_allow' in element:
config.config_allowed_tags = restriction_addition(element, config.list_allowed_tags) config.config_allowed_tags = restriction_addition(element, config.list_allowed_tags)
config.save() config.save()
elif 'submit_deny' in element: elif 'submit_deny' in element:
config.config_restricted_tags = restriction_addition(element, config.list_restricted_tags) config.config_denied_tags = restriction_addition(element, config.list_denied_tags)
config.save() config.save()
if type == 1: # CCustom as template if type == 1: # CCustom as template
if 'submit_allow' in element: if 'submit_allow' in element:
config.config_allowed_column_value = restriction_addition(element, config.list_restricted_column_values) config.config_allowed_column_value = restriction_addition(element, config.list_denied_column_values)
config.save() config.save()
elif 'submit_deny' in element: elif 'submit_deny' in element:
config.config_restricted_column_value = restriction_addition(element, config.list_allowed_column_values) config.config_denied_column_value = restriction_addition(element, config.list_allowed_column_values)
config.save() config.save()
if type == 2: # Tags per user if type == 2: # Tags per user
usr_id = os.path.split(request.referrer)[-1] usr_id = os.path.split(request.referrer)[-1]
@ -368,7 +363,7 @@ def add_restriction(type):
usr.allowed_tags = restriction_addition(element, usr.list_allowed_tags) usr.allowed_tags = restriction_addition(element, usr.list_allowed_tags)
ub.session.commit() ub.session.commit()
elif 'submit_deny' in element: elif 'submit_deny' in element:
usr.restricted_tags = restriction_addition(element, usr.list_restricted_tags) usr.denied_tags = restriction_addition(element, usr.list_denied_tags)
ub.session.commit() ub.session.commit()
if type == 3: # CustomC per user if type == 3: # CustomC per user
usr_id = os.path.split(request.referrer)[-1] usr_id = os.path.split(request.referrer)[-1]
@ -380,7 +375,7 @@ def add_restriction(type):
usr.allowed_column_value = restriction_addition(element, usr.list_allowed_column_values) usr.allowed_column_value = restriction_addition(element, usr.list_allowed_column_values)
ub.session.commit() ub.session.commit()
elif 'submit_deny' in element: elif 'submit_deny' in element:
usr.restricted_column_value = restriction_addition(element, usr.list_restricted_column_values) usr.denied_column_value = restriction_addition(element, usr.list_denied_column_values)
ub.session.commit() ub.session.commit()
return "" return ""
@ -394,14 +389,14 @@ def delete_restriction(type):
config.config_allowed_tags = restriction_deletion(element, config.list_allowed_tags) config.config_allowed_tags = restriction_deletion(element, config.list_allowed_tags)
config.save() config.save()
elif element['id'].startswith('d'): elif element['id'].startswith('d'):
config.config_restricted_tags = restriction_deletion(element, config.list_restricted_tags) config.config_denied_tags = restriction_deletion(element, config.list_denied_tags)
config.save() config.save()
elif type == 1: # CustomC as template elif type == 1: # CustomC as template
if element['id'].startswith('a'): if element['id'].startswith('a'):
config.config_allowed_column_value = restriction_deletion(element, config.list_allowed_column_values) config.config_allowed_column_value = restriction_deletion(element, config.list_allowed_column_values)
config.save() config.save()
elif element['id'].startswith('d'): elif element['id'].startswith('d'):
config.config_restricted_column_value = restriction_deletion(element, config.list_restricted_column_values) config.config_denied_column_value = restriction_deletion(element, config.list_denied_column_values)
config.save() config.save()
elif type == 2: # Tags per user elif type == 2: # Tags per user
usr_id = os.path.split(request.referrer)[-1] usr_id = os.path.split(request.referrer)[-1]
@ -413,7 +408,7 @@ def delete_restriction(type):
usr.allowed_tags = restriction_deletion(element, usr.list_allowed_tags) usr.allowed_tags = restriction_deletion(element, usr.list_allowed_tags)
ub.session.commit() ub.session.commit()
elif element['id'].startswith('d'): elif element['id'].startswith('d'):
usr.restricted_tags = restriction_deletion(element, usr.list_restricted_tags) usr.denied_tags = restriction_deletion(element, usr.list_denied_tags)
ub.session.commit() ub.session.commit()
elif type == 3: # Columns per user elif type == 3: # Columns per user
usr_id = os.path.split(request.referrer)[-1] usr_id = os.path.split(request.referrer)[-1]
@ -425,7 +420,7 @@ def delete_restriction(type):
usr.allowed_column_value = restriction_deletion(element, usr.list_allowed_column_values) usr.allowed_column_value = restriction_deletion(element, usr.list_allowed_column_values)
ub.session.commit() ub.session.commit()
elif element['id'].startswith('d'): elif element['id'].startswith('d'):
usr.restricted_column_value = restriction_deletion(element, usr.list_restricted_column_values) usr.denied_column_value = restriction_deletion(element, usr.list_denied_column_values)
ub.session.commit() ub.session.commit()
return "" return ""
@ -437,13 +432,13 @@ def delete_restriction(type):
def list_restriction(type): def list_restriction(type):
if type == 0: # Tags as template if type == 0: # Tags as template
restrict = [{'Element': x, 'type':_('deny'), 'id': 'd'+str(i) } restrict = [{'Element': x, 'type':_('deny'), 'id': 'd'+str(i) }
for i,x in enumerate(config.list_restricted_tags()) if x != '' ] for i,x in enumerate(config.list_denied_tags()) if x != '' ]
allow = [{'Element': x, 'type':_('allow'), 'id': 'a'+str(i) } allow = [{'Element': x, 'type':_('allow'), 'id': 'a'+str(i) }
for i,x in enumerate(config.list_allowed_tags()) if x != ''] for i,x in enumerate(config.list_allowed_tags()) if x != '']
json_dumps = restrict + allow json_dumps = restrict + allow
elif type == 1: # CustomC as template elif type == 1: # CustomC as template
restrict = [{'Element': x, 'type':_('deny'), 'id': 'd'+str(i) } restrict = [{'Element': x, 'type':_('deny'), 'id': 'd'+str(i) }
for i,x in enumerate(config.list_restricted_column_values()) if x != '' ] for i,x in enumerate(config.list_denied_column_values()) if x != '' ]
allow = [{'Element': x, 'type':_('allow'), 'id': 'a'+str(i) } allow = [{'Element': x, 'type':_('allow'), 'id': 'a'+str(i) }
for i,x in enumerate(config.list_allowed_column_values()) if x != ''] for i,x in enumerate(config.list_allowed_column_values()) if x != '']
json_dumps = restrict + allow json_dumps = restrict + allow
@ -454,7 +449,7 @@ def list_restriction(type):
else: else:
usr = current_user usr = current_user
restrict = [{'Element': x, 'type':_('deny'), 'id': 'd'+str(i) } restrict = [{'Element': x, 'type':_('deny'), 'id': 'd'+str(i) }
for i,x in enumerate(usr.list_restricted_tags()) if x != '' ] for i,x in enumerate(usr.list_denied_tags()) if x != '' ]
allow = [{'Element': x, 'type':_('allow'), 'id': 'a'+str(i) } allow = [{'Element': x, 'type':_('allow'), 'id': 'a'+str(i) }
for i,x in enumerate(usr.list_allowed_tags()) if x != ''] for i,x in enumerate(usr.list_allowed_tags()) if x != '']
json_dumps = restrict + allow json_dumps = restrict + allow
@ -465,7 +460,7 @@ def list_restriction(type):
else: else:
usr = current_user usr = current_user
restrict = [{'Element': x, 'type':_('deny'), 'id': 'd'+str(i) } restrict = [{'Element': x, 'type':_('deny'), 'id': 'd'+str(i) }
for i,x in enumerate(usr.list_restricted_column_values()) if x != '' ] for i,x in enumerate(usr.list_denied_column_values()) if x != '' ]
allow = [{'Element': x, 'type':_('allow'), 'id': 'a'+str(i) } allow = [{'Element': x, 'type':_('allow'), 'id': 'a'+str(i) }
for i,x in enumerate(usr.list_allowed_column_values()) if x != ''] for i,x in enumerate(usr.list_allowed_column_values()) if x != '']
json_dumps = restrict + allow json_dumps = restrict + allow
@ -532,7 +527,7 @@ def _configuration_update_helper():
_config_checkbox_int("config_uploading") _config_checkbox_int("config_uploading")
_config_checkbox_int("config_anonbrowse") _config_checkbox_int("config_anonbrowse")
_config_checkbox_int("config_public_reg") _config_checkbox_int("config_public_reg")
_config_checkbox_int("config_kobo_sync") reboot_required |= _config_checkbox_int("config_kobo_sync")
_config_checkbox_int("config_kobo_proxy") _config_checkbox_int("config_kobo_proxy")
@ -679,6 +674,7 @@ def new_user():
content = ub.User() content = ub.User()
languages = speaking_language() languages = speaking_language()
translations = [LC('en')] + babel.list_translations() translations = [LC('en')] + babel.list_translations()
kobo_support = feature_support['kobo'] and config.config_kobo_sync
if request.method == "POST": if request.method == "POST":
to_save = request.form.to_dict() to_save = request.form.to_dict()
content.default_language = to_save["default_language"] content.default_language = to_save["default_language"]
@ -694,7 +690,7 @@ def new_user():
if not to_save["nickname"] or not to_save["email"] or not to_save["password"]: if not to_save["nickname"] or not to_save["email"] or not to_save["password"]:
flash(_(u"Please fill out all fields!"), category="error") flash(_(u"Please fill out all fields!"), category="error")
return render_title_template("user_edit.html", new_user=1, content=content, translations=translations, return render_title_template("user_edit.html", new_user=1, content=content, translations=translations,
registered_oauth=oauth_check, feature_support=feature_support, registered_oauth=oauth_check, kobo_support=kobo_support,
title=_(u"Add new user")) title=_(u"Add new user"))
content.password = generate_password_hash(to_save["password"]) content.password = generate_password_hash(to_save["password"])
existing_user = ub.session.query(ub.User).filter(func.lower(ub.User.nickname) == to_save["nickname"].lower())\ existing_user = ub.session.query(ub.User).filter(func.lower(ub.User.nickname) == to_save["nickname"].lower())\
@ -706,7 +702,7 @@ def new_user():
if config.config_public_reg and not check_valid_domain(to_save["email"]): if config.config_public_reg and not check_valid_domain(to_save["email"]):
flash(_(u"E-mail is not from valid domain"), category="error") flash(_(u"E-mail is not from valid domain"), category="error")
return render_title_template("user_edit.html", new_user=1, content=content, translations=translations, return render_title_template("user_edit.html", new_user=1, content=content, translations=translations,
registered_oauth=oauth_check, feature_support=feature_support, registered_oauth=oauth_check, kobo_support=kobo_support,
title=_(u"Add new user")) title=_(u"Add new user"))
else: else:
content.email = to_save["email"] content.email = to_save["email"]
@ -714,8 +710,12 @@ def new_user():
flash(_(u"Found an existing account for this e-mail address or nickname."), category="error") flash(_(u"Found an existing account for this e-mail address or nickname."), category="error")
return render_title_template("user_edit.html", new_user=1, content=content, translations=translations, return render_title_template("user_edit.html", new_user=1, content=content, translations=translations,
languages=languages, title=_(u"Add new user"), page="newuser", languages=languages, title=_(u"Add new user"), page="newuser",
feature_support=feature_support, registered_oauth=oauth_check) kobo_support=kobo_support, registered_oauth=oauth_check)
try: try:
content.allowed_tags = config.config_allowed_tags
content.denied_tags = config.config_denied_tags
content.allowed_column_value = config.config_allowed_column_value
content.denied_column_value = config.config_denied_column_value
ub.session.add(content) ub.session.add(content)
ub.session.commit() ub.session.commit()
flash(_(u"User '%(user)s' created", user=content.nickname), category="success") flash(_(u"User '%(user)s' created", user=content.nickname), category="success")
@ -726,13 +726,9 @@ def new_user():
else: else:
content.role = config.config_default_role content.role = config.config_default_role
content.sidebar_view = config.config_default_show content.sidebar_view = config.config_default_show
content.restricted_tags = config.config_restricted_tags
content.restricted_column = config.config_restricted_column
content.restricted_column_value = config.config_restricted_column_value
# content.mature_content = bool(config.config_default_show & constants.MATURE_CONTENT)
return render_title_template("user_edit.html", new_user=1, content=content, translations=translations, return render_title_template("user_edit.html", new_user=1, content=content, translations=translations,
languages=languages, title=_(u"Add new user"), page="newuser", languages=languages, title=_(u"Add new user"), page="newuser",
feature_support=feature_support, registered_oauth=oauth_check) kobo_support=kobo_support, registered_oauth=oauth_check)
@admi.route("/admin/mailsettings") @admi.route("/admin/mailsettings")
@ -787,6 +783,7 @@ def edit_user(user_id):
downloads = list() downloads = list()
languages = speaking_language() languages = speaking_language()
translations = babel.list_translations() + [LC('en')] translations = babel.list_translations() + [LC('en')]
kobo_support = feature_support['kobo'] and config.config_kobo_sync
for book in content.downloads: for book in content.downloads:
downloadbook = db.session.query(db.Books).filter(db.Books.id == book.book_id).first() downloadbook = db.session.query(db.Books).filter(db.Books.id == book.book_id).first()
if downloadbook: if downloadbook:
@ -832,14 +829,6 @@ def edit_user(user_id):
else: else:
content.sidebar_view &= ~constants.DETAIL_RANDOM content.sidebar_view &= ~constants.DETAIL_RANDOM
# content.mature_content = "Show_mature_content" in to_save
if "restricted_tags" in to_save:
content.restricted_tags = to_save["restricted_tags"]
if "config_restricted_column" in to_save:
content.restricted_tags = to_save["config_restricted_column"]
if "config_restricted_column_value" in to_save:
content.restricted_tags = to_save["config_restricted_column_value"]
if "default_language" in to_save: if "default_language" in to_save:
content.default_language = to_save["default_language"] content.default_language = to_save["default_language"]
if "locale" in to_save and to_save["locale"]: if "locale" in to_save and to_save["locale"]:
@ -855,7 +844,7 @@ def edit_user(user_id):
translations=translations, translations=translations,
languages=languages, languages=languages,
mail_configured = config.get_mail_server_configured(), mail_configured = config.get_mail_server_configured(),
feature_support=feature_support, kobo_support=kobo_support,
new_user=0, new_user=0,
content=content, content=content,
downloads=downloads, downloads=downloads,
@ -874,7 +863,7 @@ def edit_user(user_id):
new_user=0, content=content, new_user=0, content=content,
downloads=downloads, downloads=downloads,
registered_oauth=oauth_check, registered_oauth=oauth_check,
feature_support=feature_support, kobo_support=kobo_support,
title=_(u"Edit User %(nick)s", nick=content.nickname), title=_(u"Edit User %(nick)s", nick=content.nickname),
page="edituser") page="edituser")
@ -894,7 +883,7 @@ def edit_user(user_id):
downloads=downloads, downloads=downloads,
registered_oauth=oauth_check, registered_oauth=oauth_check,
mail_configured=config.get_mail_server_configured(), mail_configured=config.get_mail_server_configured(),
feature_support=feature_support, kobo_support=kobo_support,
title=_(u"Edit User %(nick)s", nick=content.nickname), page="edituser") title=_(u"Edit User %(nick)s", nick=content.nickname), page="edituser")
@ -925,10 +914,12 @@ def view_logfile():
logfiles = {} logfiles = {}
logfiles[0] = logger.get_logfile(config.config_logfile) logfiles[0] = logger.get_logfile(config.config_logfile)
logfiles[1] = logger.get_accesslogfile(config.config_access_logfile) logfiles[1] = logger.get_accesslogfile(config.config_access_logfile)
return render_title_template("logviewer.html",title=_(u"Logfile viewer"), return render_title_template("logviewer.html",
log_enable=bool(config.config_logfile != logger.LOG_TO_STDOUT), title=_(u"Logfile viewer"),
accesslog_enable=config.config_access_log, accesslog_enable=config.config_access_log,
logfiles=logfiles, page="logfile") log_enable=bool(config.config_logfile != logger.LOG_TO_STDOUT),
logfiles=logfiles,
page="logfile")
@admi.route("/ajax/log/<int:logtype>") @admi.route("/ajax/log/<int:logtype>")

@ -74,10 +74,10 @@ class _Settings(_Base):
config_default_show = Column(SmallInteger, default=38911) config_default_show = Column(SmallInteger, default=38911)
config_columns_to_ignore = Column(String) config_columns_to_ignore = Column(String)
config_restricted_tags = Column(String, default="") config_denied_tags = Column(String, default="")
config_allowed_tags = Column(String, default="") config_allowed_tags = Column(String, default="")
config_restricted_column = Column(SmallInteger, default=0) config_restricted_column = Column(SmallInteger, default=0)
config_restricted_column_value = Column(String, default="") config_denied_column_value = Column(String, default="")
config_allowed_column_value = Column(String, default="") config_allowed_column_value = Column(String, default="")
config_use_google_drive = Column(Boolean, default=False) config_use_google_drive = Column(Boolean, default=False)
@ -186,16 +186,16 @@ class _ConfigSQL(object):
def show_detail_random(self): def show_detail_random(self):
return self.show_element_new_user(constants.DETAIL_RANDOM) return self.show_element_new_user(constants.DETAIL_RANDOM)
def list_restricted_tags(self): def list_denied_tags(self):
mct = self.config_restricted_tags.split(",") mct = self.config_denied_tags.split(",")
return [t.strip() for t in mct] return [t.strip() for t in mct]
def list_allowed_tags(self): def list_allowed_tags(self):
mct = self.config_allowed_tags.split(",") mct = self.config_allowed_tags.split(",")
return [t.strip() for t in mct] return [t.strip() for t in mct]
def list_restricted_column_values(self): def list_denied_column_values(self):
mct = self.config_restricted_column_value.split(",") mct = self.config_denied_column_value.split(",")
return [t.strip() for t in mct] return [t.strip() for t in mct]
def list_allowed_column_values(self): def list_allowed_column_values(self):
@ -341,8 +341,8 @@ def load_configuration(session):
session.commit() session.commit()
conf = _ConfigSQL(session) conf = _ConfigSQL(session)
# Migrate from global restrictions to user based restrictions # Migrate from global restrictions to user based restrictions
if bool(conf.config_default_show & constants.MATURE_CONTENT) and conf.config_restricted_tags == "": if bool(conf.config_default_show & constants.MATURE_CONTENT) and conf.config_denied_tags == "":
conf.config_restricted_tags = conf.config_mature_content_tags conf.config_denied_tags = conf.config_mature_content_tags
conf.save() conf.save()
session.query(ub.User).filter(ub.User.mature_content != True). \ session.query(ub.User).filter(ub.User.mature_content != True). \
update({"restricted_tags": conf.config_mature_content_tags}, synchronize_session=False) update({"restricted_tags": conf.config_mature_content_tags}, synchronize_session=False)

@ -455,7 +455,7 @@ def get_cover_on_failure(use_generic_cover):
return None return None
def get_book_cover(book_id): def get_book_cover(book_id):
book = db.session.query(db.Books).filter(db.Books.id == book_id).first() book = db.session.query(db.Books).filter(db.Books.id == book_id).filter(common_filters()).first()
return get_book_cover_internal(book, use_generic_cover_on_failure=True) return get_book_cover_internal(book, use_generic_cover_on_failure=True)
def get_book_cover_with_uuid(book_uuid, def get_book_cover_with_uuid(book_uuid,
@ -700,20 +700,17 @@ def common_filters(allow_show_archived=False):
lang_filter = db.Books.languages.any(db.Languages.lang_code == current_user.filter_language()) lang_filter = db.Books.languages.any(db.Languages.lang_code == current_user.filter_language())
else: else:
lang_filter = true() lang_filter = true()
negtags_list = current_user.list_restricted_tags() negtags_list = current_user.list_denied_tags()
postags_list = current_user.list_allowed_tags() postags_list = current_user.list_allowed_tags()
neg_content_tags_filter = false() if negtags_list == [''] else db.Books.tags.any(db.Tags.name.in_(negtags_list)) neg_content_tags_filter = false() if negtags_list == [''] else db.Books.tags.any(db.Tags.name.in_(negtags_list))
pos_content_tags_filter = true() if postags_list == [''] else db.Books.tags.any(db.Tags.name.in_(postags_list)) pos_content_tags_filter = true() if postags_list == [''] else db.Books.tags.any(db.Tags.name.in_(postags_list))
# db.session.query(db.Books).filter(db.Books.custom_column_5.any(db.cc_classes[5].value == 'nikto')).first()
# db.session.query(db.Books).filter(
# getattr(db.Books, 'custom_column_' + str(5)).any(db.cc_classes[5].value == 'nikto').first())
if config.config_restricted_column: if config.config_restricted_column:
pos_cc_list = current_user.allowed_column_value.split(',') pos_cc_list = current_user.allowed_column_value.split(',')
pos_content_cc_filter = true() if pos_cc_list == [''] else \ pos_content_cc_filter = true() if pos_cc_list == [''] else \
getattr(db.Books, 'custom_column_' + str(config.config_restricted_column)).\ getattr(db.Books, 'custom_column_' + str(config.config_restricted_column)).\
any(db.cc_classes[config.config_restricted_column].value.in_(pos_cc_list)) any(db.cc_classes[config.config_restricted_column].value.in_(pos_cc_list))
neg_cc_list = current_user.restricted_column_value.split(',') neg_cc_list = current_user.denied_column_value.split(',')
neg_content_cc_filter = true() if neg_cc_list == [''] else \ neg_content_cc_filter = false() if neg_cc_list == [''] else \
getattr(db.Books, 'custom_column_' + str(config.config_restricted_column)).\ getattr(db.Books, 'custom_column_' + str(config.config_restricted_column)).\
any(db.cc_classes[config.config_restricted_column].value.in_(neg_cc_list)) any(db.cc_classes[config.config_restricted_column].value.in_(neg_cc_list))
else: else:
@ -724,7 +721,7 @@ def common_filters(allow_show_archived=False):
def tags_filters(): def tags_filters():
negtags_list = current_user.list_restricted_tags() negtags_list = current_user.list_denied_tags()
postags_list = current_user.list_allowed_tags() postags_list = current_user.list_allowed_tags()
neg_content_tags_filter = false() if negtags_list == [''] else db.Tags.name.in_(negtags_list) neg_content_tags_filter = false() if negtags_list == [''] else db.Tags.name.in_(negtags_list)
pos_content_tags_filter = true() if postags_list == [''] else db.Tags.name.in_(postags_list) pos_content_tags_filter = true() if postags_list == [''] else db.Tags.name.in_(postags_list)
@ -735,7 +732,8 @@ def tags_filters():
# Creates for all stored languages a translated speaking name in the array for the UI # Creates for all stored languages a translated speaking name in the array for the UI
def speaking_language(languages=None): def speaking_language(languages=None):
if not languages: if not languages:
languages = db.session.query(db.Languages).all() languages = db.session.query(db.Languages).join(db.books_languages_link).join(db.Books).filter(common_filters())\
.group_by(text('books_languages_link.lang_code')).all()
for lang in languages: for lang in languages:
try: try:
cur_l = LC.parse(lang.lang_code) cur_l = LC.parse(lang.lang_code)
@ -826,7 +824,7 @@ def get_cc_columns():
cc = [] cc = []
for col in tmpcc: for col in tmpcc:
r = re.compile(config.config_columns_to_ignore) r = re.compile(config.config_columns_to_ignore)
if r.match(col.label): if not r.match(col.name):
cc.append(col) cc.append(col)
else: else:
cc = tmpcc cc = tmpcc

@ -45,6 +45,7 @@ import requests
from . import config, logger, kobo_auth, db, helper, ub from . import config, logger, kobo_auth, db, helper, ub
from .services import SyncToken as SyncToken from .services import SyncToken as SyncToken
from .web import download_required from .web import download_required
from .kobo_auth import requires_kobo_auth
KOBO_FORMATS = {"KEPUB": ["KEPUB"], "EPUB": ["EPUB3", "EPUB"]} KOBO_FORMATS = {"KEPUB": ["KEPUB"], "EPUB": ["EPUB3", "EPUB"]}
KOBO_STOREAPI_URL = "https://storeapi.kobo.com" KOBO_STOREAPI_URL = "https://storeapi.kobo.com"
@ -72,9 +73,11 @@ CONNECTION_SPECIFIC_HEADERS = [
"transfer-encoding", "transfer-encoding",
] ]
def get_kobo_activated():
return config.config_kobo_sync
def redirect_or_proxy_request(): def redirect_or_proxy_request(proxy=False):
if config.config_kobo_proxy: if config.config_kobo_proxy or proxy == True:
if request.method == "GET": if request.method == "GET":
return redirect(get_store_url_for_current_request(), 307) return redirect(get_store_url_for_current_request(), 307)
else: else:
@ -100,7 +103,7 @@ def redirect_or_proxy_request():
return make_response(jsonify({})) return make_response(jsonify({}))
@kobo.route("/v1/library/sync") @kobo.route("/v1/library/sync")
@login_required @requires_kobo_auth
@download_required @download_required
def HandleSyncRequest(): def HandleSyncRequest():
sync_token = SyncToken.SyncToken.from_headers(request.headers) sync_token = SyncToken.SyncToken.from_headers(request.headers)
@ -214,7 +217,7 @@ def generate_sync_response(request, sync_token, entitlements):
@kobo.route("/v1/library/<book_uuid>/metadata") @kobo.route("/v1/library/<book_uuid>/metadata")
@login_required @requires_kobo_auth
@download_required @download_required
def HandleMetadataRequest(book_uuid): def HandleMetadataRequest(book_uuid):
if not current_app.wsgi_app.is_proxied: if not current_app.wsgi_app.is_proxied:
@ -367,7 +370,7 @@ def reading_state(book):
@kobo.route("/<book_uuid>/image.jpg") @kobo.route("/<book_uuid>/image.jpg")
@login_required @requires_kobo_auth
def HandleCoverImageRequest(book_uuid): def HandleCoverImageRequest(book_uuid):
log.debug("Cover request received for book %s" % book_uuid) log.debug("Cover request received for book %s" % book_uuid)
book_cover = helper.get_book_cover_with_uuid( book_cover = helper.get_book_cover_with_uuid(
@ -439,9 +442,13 @@ def handle_404(err):
log.debug("Unknown Request received: %s", request.base_url) log.debug("Unknown Request received: %s", request.base_url)
return redirect_or_proxy_request() return redirect_or_proxy_request()
@kobo.route("/v1/auth/device", methods=["POST"])
def login_auth_token():
log.info('Auth')
return redirect_or_proxy_request(proxy=True)
@kobo.route("/v1/initialization") @kobo.route("/v1/initialization")
@login_required @requires_kobo_auth
def HandleInitRequest(): def HandleInitRequest():
if not current_app.wsgi_app.is_proxied: if not current_app.wsgi_app.is_proxied:
log.debug('Kobo: Received unproxied request, changed request port to server port') log.debug('Kobo: Received unproxied request, changed request port to server port')

@ -61,13 +61,19 @@ from binascii import hexlify
from datetime import datetime from datetime import datetime
from os import urandom from os import urandom
from flask import g, Blueprint, url_for from flask import g, Blueprint, url_for, abort
from flask_login import login_user, login_required from flask_login import login_user, login_required
from flask_babel import gettext as _ from flask_babel import gettext as _
from . import logger, ub, lm from . import logger, ub, lm
from .web import render_title_template from .web import render_title_template
try:
from functools import wraps
except ImportError:
pass # We're not using Python 3
log = logger.create() log = logger.create()
@ -88,21 +94,24 @@ def get_auth_token():
return None return None
@lm.request_loader def requires_kobo_auth(f):
def load_user_from_kobo_request(request): @wraps(f)
auth_token = get_auth_token() def inner(*args, **kwargs):
if auth_token is not None: auth_token = get_auth_token()
user = ( if auth_token is not None:
ub.session.query(ub.User) user = (
.join(ub.RemoteAuthToken) ub.session.query(ub.User)
.filter(ub.RemoteAuthToken.auth_token == auth_token).filter(ub.RemoteAuthToken.token_type==1) .join(ub.RemoteAuthToken)
.first() .filter(ub.RemoteAuthToken.auth_token == auth_token).filter(ub.RemoteAuthToken.token_type==1)
) .first()
if user is not None: )
login_user(user) if user is not None:
return user login_user(user)
log.info("Received Kobo request without a recognizable auth token.") return f(*args, **kwargs)
return log.debug("Received Kobo request without a recognizable auth token.")
return abort(401)
return inner
kobo_auth = Blueprint("kobo_auth", __name__, url_prefix="/kobo_auth") kobo_auth = Blueprint("kobo_auth", __name__, url_prefix="/kobo_auth")

@ -50,7 +50,7 @@ def oauth_required(f):
def inner(*args, **kwargs): def inner(*args, **kwargs):
if config.config_login_type == constants.LOGIN_OAUTH: if config.config_login_type == constants.LOGIN_OAUTH:
return f(*args, **kwargs) return f(*args, **kwargs)
if request.is_xhr: if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
data = {'status': 'error', 'message': 'Not Found'} data = {'status': 'error', 'message': 'Not Found'}
response = make_response(json.dumps(data, ensure_ascii=False)) response = make_response(json.dumps(data, ensure_ascii=False))
response.headers["Content-Type"] = "application/json; charset=utf-8" response.headers["Content-Type"] = "application/json; charset=utf-8"

@ -55,6 +55,7 @@ class WebServer(object):
def __init__(self): def __init__(self):
signal.signal(signal.SIGINT, self._killServer) signal.signal(signal.SIGINT, self._killServer)
signal.signal(signal.SIGTERM, self._killServer) signal.signal(signal.SIGTERM, self._killServer)
signal.signal(signal.SIGQUIT, self._killServer)
self.wsgiserver = None self.wsgiserver = None
self.access_logger = None self.access_logger = None
@ -146,7 +147,7 @@ class WebServer(object):
self.unix_socket_file = None self.unix_socket_file = None
def _start_tornado(self): def _start_tornado(self):
if os.name == 'nt': if os.name == 'nt' and sys.version_info > (3, 7):
import asyncio import asyncio
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
log.info('Starting Tornado server on %s', _readable_listen_address(self.listen_address, self.listen_port)) log.info('Starting Tornado server on %s', _readable_listen_address(self.listen_address, self.listen_port))
@ -156,7 +157,7 @@ class WebServer(object):
max_buffer_size=209700000, max_buffer_size=209700000,
ssl_options=self.ssl_args) ssl_options=self.ssl_args)
http_server.listen(self.listen_port, self.listen_address) http_server.listen(self.listen_port, self.listen_address)
self.wsgiserver = IOLoop.instance() self.wsgiserver = IOLoop.current()
self.wsgiserver.start() self.wsgiserver.start()
# wait for stop signal # wait for stop signal
self.wsgiserver.close(True) self.wsgiserver.close(True)
@ -197,4 +198,4 @@ class WebServer(object):
if _GEVENT: if _GEVENT:
self.wsgiserver.close() self.wsgiserver.close()
else: else:
self.wsgiserver.add_callback(self.wsgiserver.stop) self.wsgiserver.add_callback_from_signal(self.wsgiserver.stop)

@ -41,3 +41,4 @@ try:
except ImportError as err: except ImportError as err:
log.debug("cannot import SyncToken, syncing books with Kobo Devices will not work: %s", err) log.debug("cannot import SyncToken, syncing books with Kobo Devices will not work: %s", err)
kobo = None kobo = None
SyncToken = None

@ -40,17 +40,18 @@ log = logger.create()
@shelf.route("/shelf/add/<int:shelf_id>/<int:book_id>") @shelf.route("/shelf/add/<int:shelf_id>/<int:book_id>")
@login_required @login_required
def add_to_shelf(shelf_id, book_id): def add_to_shelf(shelf_id, book_id):
xhr = request.headers.get('X-Requested-With') == 'XMLHttpRequest'
shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first() shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first()
if shelf is None: if shelf is None:
log.error("Invalid shelf specified: %s", shelf_id) log.error("Invalid shelf specified: %s", shelf_id)
if not request.is_xhr: if not xhr:
flash(_(u"Invalid shelf specified"), category="error") flash(_(u"Invalid shelf specified"), category="error")
return redirect(url_for('web.index')) return redirect(url_for('web.index'))
return "Invalid shelf specified", 400 return "Invalid shelf specified", 400
if not shelf.is_public and not shelf.user_id == int(current_user.id): if not shelf.is_public and not shelf.user_id == int(current_user.id):
log.error("User %s not allowed to add a book to %s", current_user, shelf) log.error("User %s not allowed to add a book to %s", current_user, shelf)
if not request.is_xhr: if not xhr:
flash(_(u"Sorry you are not allowed to add a book to the the shelf: %(shelfname)s", shelfname=shelf.name), flash(_(u"Sorry you are not allowed to add a book to the the shelf: %(shelfname)s", shelfname=shelf.name),
category="error") category="error")
return redirect(url_for('web.index')) return redirect(url_for('web.index'))
@ -58,7 +59,7 @@ def add_to_shelf(shelf_id, book_id):
if shelf.is_public and not current_user.role_edit_shelfs(): if shelf.is_public and not current_user.role_edit_shelfs():
log.info("User %s not allowed to edit public shelves", current_user) log.info("User %s not allowed to edit public shelves", current_user)
if not request.is_xhr: if not xhr:
flash(_(u"You are not allowed to edit public shelves"), category="error") flash(_(u"You are not allowed to edit public shelves"), category="error")
return redirect(url_for('web.index')) return redirect(url_for('web.index'))
return "User is not allowed to edit public shelves", 403 return "User is not allowed to edit public shelves", 403
@ -67,7 +68,7 @@ def add_to_shelf(shelf_id, book_id):
ub.BookShelf.book_id == book_id).first() ub.BookShelf.book_id == book_id).first()
if book_in_shelf: if book_in_shelf:
log.error("Book %s is already part of %s", book_id, shelf) log.error("Book %s is already part of %s", book_id, shelf)
if not request.is_xhr: if not xhr:
flash(_(u"Book is already part of the shelf: %(shelfname)s", shelfname=shelf.name), category="error") flash(_(u"Book is already part of the shelf: %(shelfname)s", shelfname=shelf.name), category="error")
return redirect(url_for('web.index')) return redirect(url_for('web.index'))
return "Book is already part of the shelf: %s" % shelf.name, 400 return "Book is already part of the shelf: %s" % shelf.name, 400
@ -81,7 +82,7 @@ def add_to_shelf(shelf_id, book_id):
ins = ub.BookShelf(shelf=shelf.id, book_id=book_id, order=maxOrder + 1) ins = ub.BookShelf(shelf=shelf.id, book_id=book_id, order=maxOrder + 1)
ub.session.add(ins) ub.session.add(ins)
ub.session.commit() ub.session.commit()
if not request.is_xhr: if not xhr:
flash(_(u"Book has been added to shelf: %(sname)s", sname=shelf.name), category="success") flash(_(u"Book has been added to shelf: %(sname)s", sname=shelf.name), category="success")
if "HTTP_REFERER" in request.environ: if "HTTP_REFERER" in request.environ:
return redirect(request.environ["HTTP_REFERER"]) return redirect(request.environ["HTTP_REFERER"])
@ -147,10 +148,11 @@ def search_to_shelf(shelf_id):
@shelf.route("/shelf/remove/<int:shelf_id>/<int:book_id>") @shelf.route("/shelf/remove/<int:shelf_id>/<int:book_id>")
@login_required @login_required
def remove_from_shelf(shelf_id, book_id): def remove_from_shelf(shelf_id, book_id):
xhr = request.headers.get('X-Requested-With') == 'XMLHttpRequest'
shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first() shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first()
if shelf is None: if shelf is None:
log.error("Invalid shelf specified: %s", shelf_id) log.error("Invalid shelf specified: %s", shelf_id)
if not request.is_xhr: if not xhr:
return redirect(url_for('web.index')) return redirect(url_for('web.index'))
return "Invalid shelf specified", 400 return "Invalid shelf specified", 400
@ -169,20 +171,20 @@ def remove_from_shelf(shelf_id, book_id):
if book_shelf is None: if book_shelf is None:
log.error("Book %s already removed from %s", book_id, shelf) log.error("Book %s already removed from %s", book_id, shelf)
if not request.is_xhr: if not xhr:
return redirect(url_for('web.index')) return redirect(url_for('web.index'))
return "Book already removed from shelf", 410 return "Book already removed from shelf", 410
ub.session.delete(book_shelf) ub.session.delete(book_shelf)
ub.session.commit() ub.session.commit()
if not request.is_xhr: if not xhr:
flash(_(u"Book has been removed from shelf: %(sname)s", sname=shelf.name), category="success") flash(_(u"Book has been removed from shelf: %(sname)s", sname=shelf.name), category="success")
return redirect(request.environ["HTTP_REFERER"]) return redirect(request.environ["HTTP_REFERER"])
return "", 204 return "", 204
else: else:
log.error("User %s not allowed to remove a book from %s", current_user, shelf) log.error("User %s not allowed to remove a book from %s", current_user, shelf)
if not request.is_xhr: if not xhr:
flash(_(u"Sorry you are not allowed to remove a book from this shelf: %(sname)s", sname=shelf.name), flash(_(u"Sorry you are not allowed to remove a book from this shelf: %(sname)s", sname=shelf.name),
category="error") category="error")
return redirect(url_for('web.index')) return redirect(url_for('web.index'))
@ -284,8 +286,16 @@ def show_shelf(shelf_type, shelf_id):
books_in_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id)\ books_in_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id)\
.order_by(ub.BookShelf.order.asc()).all() .order_by(ub.BookShelf.order.asc()).all()
books_list = [ b.book_id for b in books_in_shelf] for book in books_in_shelf:
result = db.session.query(db.Books).filter(db.Books.id.in_(books_list)).filter(common_filters()).all() cur_book = db.session.query(db.Books).filter(db.Books.id == book.book_id).filter(common_filters()).first()
if cur_book:
result.append(cur_book)
else:
cur_book = db.session.query(db.Books).filter(db.Books.id == book.book_id).first()
if not cur_book:
log.info('Not existing book %s in %s deleted', book.book_id, shelf)
ub.session.query(ub.BookShelf).filter(ub.BookShelf.book_id == book.book_id).delete()
ub.session.commit()
return render_title_template(page, entries=result, title=_(u"Shelf: '%(name)s'", name=shelf.name), return render_title_template(page, entries=result, title=_(u"Shelf: '%(name)s'", name=shelf.name),
shelf=shelf, page="shelf") shelf=shelf, page="shelf")
else: else:
@ -315,11 +325,22 @@ def order_shelf(shelf_id):
ub.Shelf.id == shelf_id))).first() ub.Shelf.id == shelf_id))).first()
result = list() result = list()
if shelf: if shelf:
books_in_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id) \ books_in_shelf2 = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id) \
.order_by(ub.BookShelf.order.asc()).all() .order_by(ub.BookShelf.order.asc()).all()
books_list = [ b.book_id for b in books_in_shelf] for book in books_in_shelf2:
# cover, title, series, name, all author names, cur_book = db.session.query(db.Books).filter(db.Books.id == book.book_id).filter(common_filters()).first()
result = db.session.query(db.Books).filter(db.Books.id.in_(books_list)).filter(common_filters()).all() if cur_book:
result.append({'title':cur_book.title,
'id':cur_book.id,
'author':cur_book.authors,
'series':cur_book.series,
'series_index':cur_book.series_index})
else:
cur_book = db.session.query(db.Books).filter(db.Books.id == book.book_id).first()
result.append({'title':_('Hidden Book'),
'id':cur_book.id,
'author':[],
'series':[]})
return render_title_template('shelf_order.html', entries=result, return render_title_template('shelf_order.html', entries=result,
title=_(u"Change order of Shelf: '%(name)s'", name=shelf.name), title=_(u"Change order of Shelf: '%(name)s'", name=shelf.name),
shelf=shelf, page="shelforder") shelf=shelf, page="shelforder")

@ -230,36 +230,46 @@
z-index: 200; z-index: 200;
max-width: 20em; max-width: 20em;
background-color: #FFFF99; background-color: #FFFF99;
box-shadow: 0px 2px 5px #333; box-shadow: 0px 2px 5px #888;
border-radius: 2px; border-radius: 2px;
padding: 0.6em; padding: 6px;
margin-left: 5px; margin-left: 5px;
cursor: pointer; cursor: pointer;
font: message-box; font: message-box;
font-size: 9px;
word-wrap: break-word; word-wrap: break-word;
} }
.annotationLayer .popup > * {
font-size: 9px;
}
.annotationLayer .popup h1 { .annotationLayer .popup h1 {
font-size: 1em; display: inline-block;
border-bottom: 1px solid #000000; }
margin: 0;
padding-bottom: 0.2em; .annotationLayer .popup span {
display: inline-block;
margin-left: 5px;
} }
.annotationLayer .popup p { .annotationLayer .popup p {
margin: 0; border-top: 1px solid #333;
padding-top: 0.2em; margin-top: 2px;
padding-top: 2px;
} }
.annotationLayer .highlightAnnotation, .annotationLayer .highlightAnnotation,
.annotationLayer .underlineAnnotation, .annotationLayer .underlineAnnotation,
.annotationLayer .squigglyAnnotation, .annotationLayer .squigglyAnnotation,
.annotationLayer .strikeoutAnnotation, .annotationLayer .strikeoutAnnotation,
.annotationLayer .freeTextAnnotation,
.annotationLayer .lineAnnotation svg line, .annotationLayer .lineAnnotation svg line,
.annotationLayer .squareAnnotation svg rect, .annotationLayer .squareAnnotation svg rect,
.annotationLayer .circleAnnotation svg ellipse, .annotationLayer .circleAnnotation svg ellipse,
.annotationLayer .polylineAnnotation svg polyline, .annotationLayer .polylineAnnotation svg polyline,
.annotationLayer .polygonAnnotation svg polygon, .annotationLayer .polygonAnnotation svg polygon,
.annotationLayer .caretAnnotation,
.annotationLayer .inkAnnotation svg polyline, .annotationLayer .inkAnnotation svg polyline,
.annotationLayer .stampAnnotation, .annotationLayer .stampAnnotation,
.annotationLayer .fileAttachmentAnnotation { .annotationLayer .fileAttachmentAnnotation {
@ -279,8 +289,9 @@
overflow: visible; overflow: visible;
border: 9px solid transparent; border: 9px solid transparent;
background-clip: content-box; background-clip: content-box;
-o-border-image: url(images/shadow.png) 9 9 repeat; -webkit-border-image: url(images/shadow.png) 9 9 repeat;
border-image: url(images/shadow.png) 9 9 repeat; -o-border-image: url(images/shadow.png) 9 9 repeat;
border-image: url(images/shadow.png) 9 9 repeat;
background-color: white; background-color: white;
} }
@ -543,15 +554,20 @@ select {
z-index: 100; z-index: 100;
border-top: 1px solid #333; border-top: 1px solid #333;
transition-duration: 200ms; -webkit-transition-duration: 200ms;
transition-timing-function: ease;
transition-duration: 200ms;
-webkit-transition-timing-function: ease;
transition-timing-function: ease;
} }
html[dir='ltr'] #sidebarContainer { html[dir='ltr'] #sidebarContainer {
-webkit-transition-property: left;
transition-property: left; transition-property: left;
left: -200px; left: -200px;
left: calc(-1 * var(--sidebar-width)); left: calc(-1 * var(--sidebar-width));
} }
html[dir='rtl'] #sidebarContainer { html[dir='rtl'] #sidebarContainer {
-webkit-transition-property: right;
transition-property: right; transition-property: right;
right: -200px; right: -200px;
right: calc(-1 * var(--sidebar-width)); right: calc(-1 * var(--sidebar-width));
@ -563,7 +579,8 @@ html[dir='rtl'] #sidebarContainer {
#outerContainer.sidebarResizing #sidebarContainer { #outerContainer.sidebarResizing #sidebarContainer {
/* Improve responsiveness and avoid visual glitches when the sidebar is resized. */ /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */
transition-duration: 0s; -webkit-transition-duration: 0s;
transition-duration: 0s;
/* Prevent e.g. the thumbnails being selected when the sidebar is resized. */ /* Prevent e.g. the thumbnails being selected when the sidebar is resized. */
-webkit-user-select: none; -webkit-user-select: none;
-moz-user-select: none; -moz-user-select: none;
@ -620,8 +637,10 @@ html[dir='rtl'] #sidebarContent {
outline: none; outline: none;
} }
#viewerContainer:not(.pdfPresentationMode) { #viewerContainer:not(.pdfPresentationMode) {
transition-duration: 200ms; -webkit-transition-duration: 200ms;
transition-timing-function: ease; transition-duration: 200ms;
-webkit-transition-timing-function: ease;
transition-timing-function: ease;
} }
html[dir='ltr'] #viewerContainer { html[dir='ltr'] #viewerContainer {
box-shadow: inset 1px 0 0 hsla(0,0%,100%,.05); box-shadow: inset 1px 0 0 hsla(0,0%,100%,.05);
@ -632,15 +651,18 @@ html[dir='rtl'] #viewerContainer {
#outerContainer.sidebarResizing #viewerContainer { #outerContainer.sidebarResizing #viewerContainer {
/* Improve responsiveness and avoid visual glitches when the sidebar is resized. */ /* Improve responsiveness and avoid visual glitches when the sidebar is resized. */
transition-duration: 0s; -webkit-transition-duration: 0s;
transition-duration: 0s;
} }
html[dir='ltr'] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) { html[dir='ltr'] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) {
-webkit-transition-property: left;
transition-property: left; transition-property: left;
left: 200px; left: 200px;
left: var(--sidebar-width); left: var(--sidebar-width);
} }
html[dir='rtl'] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) { html[dir='rtl'] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentationMode) {
-webkit-transition-property: right;
transition-property: right; transition-property: right;
right: 200px; right: 200px;
right: var(--sidebar-width); right: var(--sidebar-width);
@ -662,6 +684,8 @@ html[dir='rtl'] #outerContainer.sidebarOpen #viewerContainer:not(.pdfPresentatio
width: 100%; width: 100%;
height: 32px; height: 32px;
background-color: #424242; /* fallback */ background-color: #424242; /* fallback */
background-image: url(images/texture.png),
-webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,30%,.99)), to(hsla(0,0%,25%,.95)));
background-image: url(images/texture.png), background-image: url(images/texture.png),
linear-gradient(hsla(0,0%,30%,.99), hsla(0,0%,25%,.95)); linear-gradient(hsla(0,0%,30%,.99), hsla(0,0%,25%,.95));
} }
@ -697,6 +721,8 @@ html[dir='rtl'] #sidebarResizer {
position: relative; position: relative;
height: 32px; height: 32px;
background-color: #474747; /* fallback */ background-color: #474747; /* fallback */
background-image: url(images/texture.png),
-webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,32%,.99)), to(hsla(0,0%,27%,.95)));
background-image: url(images/texture.png), background-image: url(images/texture.png),
linear-gradient(hsla(0,0%,32%,.99), hsla(0,0%,27%,.95)); linear-gradient(hsla(0,0%,32%,.99), hsla(0,0%,27%,.95));
} }
@ -733,6 +759,7 @@ html[dir='rtl'] #toolbarContainer, .findbar, .secondaryToolbar {
height: 100%; height: 100%;
background-color: #ddd; background-color: #ddd;
overflow: hidden; overflow: hidden;
-webkit-transition: width 200ms;
transition: width 200ms; transition: width 200ms;
} }
@ -748,6 +775,7 @@ html[dir='rtl'] #toolbarContainer, .findbar, .secondaryToolbar {
#loadingBar .progress.indeterminate { #loadingBar .progress.indeterminate {
background-color: #999; background-color: #999;
-webkit-transition: none;
transition: none; transition: none;
} }
@ -815,6 +843,9 @@ html[dir='rtl'] .findbar {
#findInput::-webkit-input-placeholder { #findInput::-webkit-input-placeholder {
color: hsl(0, 0%, 75%); color: hsl(0, 0%, 75%);
} }
#findInput::-moz-placeholder {
font-style: italic;
}
#findInput:-ms-input-placeholder { #findInput:-ms-input-placeholder {
font-style: italic; font-style: italic;
} }
@ -1006,6 +1037,7 @@ html[dir='rtl'] .splitToolbarButton > .toolbarButton {
.splitToolbarButton.toggled > .toolbarButton, .splitToolbarButton.toggled > .toolbarButton,
.toolbarButton.textButton { .toolbarButton.textButton {
background-color: hsla(0,0%,0%,.12); background-color: hsla(0,0%,0%,.12);
background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0)));
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box; background-clip: padding-box;
border: 1px solid hsla(0,0%,0%,.35); border: 1px solid hsla(0,0%,0%,.35);
@ -1013,9 +1045,12 @@ html[dir='rtl'] .splitToolbarButton > .toolbarButton {
box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,
0 0 1px hsla(0,0%,100%,.15) inset, 0 0 1px hsla(0,0%,100%,.15) inset,
0 1px 0 hsla(0,0%,100%,.05); 0 1px 0 hsla(0,0%,100%,.05);
-webkit-transition-property: background-color, border-color, box-shadow;
transition-property: background-color, border-color, box-shadow; transition-property: background-color, border-color, box-shadow;
transition-duration: 150ms; -webkit-transition-duration: 150ms;
transition-timing-function: ease; transition-duration: 150ms;
-webkit-transition-timing-function: ease;
transition-timing-function: ease;
} }
.splitToolbarButton > .toolbarButton:hover, .splitToolbarButton > .toolbarButton:hover,
@ -1072,9 +1107,12 @@ html[dir='rtl'] .splitToolbarButtonSeparator {
padding: 12px 0; padding: 12px 0;
margin: 1px 0; margin: 1px 0;
box-shadow: 0 0 0 1px hsla(0,0%,100%,.03); box-shadow: 0 0 0 1px hsla(0,0%,100%,.03);
-webkit-transition-property: padding;
transition-property: padding; transition-property: padding;
transition-duration: 10ms; -webkit-transition-duration: 10ms;
transition-timing-function: ease; transition-duration: 10ms;
-webkit-transition-timing-function: ease;
transition-timing-function: ease;
} }
.toolbarButton, .toolbarButton,
@ -1094,9 +1132,12 @@ html[dir='rtl'] .splitToolbarButtonSeparator {
user-select: none; user-select: none;
/* Opera does not support user-select, use <... unselectable="on"> instead */ /* Opera does not support user-select, use <... unselectable="on"> instead */
cursor: default; cursor: default;
-webkit-transition-property: background-color, border-color, box-shadow;
transition-property: background-color, border-color, box-shadow; transition-property: background-color, border-color, box-shadow;
transition-duration: 150ms; -webkit-transition-duration: 150ms;
transition-timing-function: ease; transition-duration: 150ms;
-webkit-transition-timing-function: ease;
transition-timing-function: ease;
} }
html[dir='ltr'] .toolbarButton, html[dir='ltr'] .toolbarButton,
@ -1117,6 +1158,7 @@ html[dir='rtl'] .dropdownToolbarButton {
.secondaryToolbarButton:hover, .secondaryToolbarButton:hover,
.secondaryToolbarButton:focus { .secondaryToolbarButton:focus {
background-color: hsla(0,0%,0%,.12); background-color: hsla(0,0%,0%,.12);
background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0)));
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box; background-clip: padding-box;
border: 1px solid hsla(0,0%,0%,.35); border: 1px solid hsla(0,0%,0%,.35);
@ -1131,28 +1173,36 @@ html[dir='rtl'] .dropdownToolbarButton {
.dropdownToolbarButton:hover:active, .dropdownToolbarButton:hover:active,
.secondaryToolbarButton:hover:active { .secondaryToolbarButton:hover:active {
background-color: hsla(0,0%,0%,.2); background-color: hsla(0,0%,0%,.2);
background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0)));
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
border-color: hsla(0,0%,0%,.35) hsla(0,0%,0%,.4) hsla(0,0%,0%,.45); border-color: hsla(0,0%,0%,.35) hsla(0,0%,0%,.4) hsla(0,0%,0%,.45);
box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset, box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset,
0 0 1px hsla(0,0%,0%,.2) inset, 0 0 1px hsla(0,0%,0%,.2) inset,
0 1px 0 hsla(0,0%,100%,.05); 0 1px 0 hsla(0,0%,100%,.05);
-webkit-transition-property: background-color, border-color, box-shadow;
transition-property: background-color, border-color, box-shadow; transition-property: background-color, border-color, box-shadow;
transition-duration: 10ms; -webkit-transition-duration: 10ms;
transition-timing-function: linear; transition-duration: 10ms;
-webkit-transition-timing-function: linear;
transition-timing-function: linear;
} }
.toolbarButton.toggled, .toolbarButton.toggled,
.splitToolbarButton.toggled > .toolbarButton.toggled, .splitToolbarButton.toggled > .toolbarButton.toggled,
.secondaryToolbarButton.toggled { .secondaryToolbarButton.toggled {
background-color: hsla(0,0%,0%,.3); background-color: hsla(0,0%,0%,.3);
background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0)));
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.45) hsla(0,0%,0%,.5); border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.45) hsla(0,0%,0%,.5);
box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset, box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset,
0 0 1px hsla(0,0%,0%,.2) inset, 0 0 1px hsla(0,0%,0%,.2) inset,
0 1px 0 hsla(0,0%,100%,.05); 0 1px 0 hsla(0,0%,100%,.05);
-webkit-transition-property: background-color, border-color, box-shadow;
transition-property: background-color, border-color, box-shadow; transition-property: background-color, border-color, box-shadow;
transition-duration: 10ms; -webkit-transition-duration: 10ms;
transition-timing-function: linear; transition-duration: 10ms;
-webkit-transition-timing-function: linear;
transition-timing-function: linear;
} }
.toolbarButton.toggled:hover:active, .toolbarButton.toggled:hover:active,
@ -1493,6 +1543,7 @@ html[dir='rtl'] .verticalToolbarSeparator {
border: 1px solid transparent; border: 1px solid transparent;
border-radius: 2px; border-radius: 2px;
background-color: hsla(0,0%,100%,.09); background-color: hsla(0,0%,100%,.09);
background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0)));
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box; background-clip: padding-box;
border: 1px solid hsla(0,0%,0%,.35); border: 1px solid hsla(0,0%,0%,.35);
@ -1503,9 +1554,12 @@ html[dir='rtl'] .verticalToolbarSeparator {
font-size: 12px; font-size: 12px;
line-height: 14px; line-height: 14px;
outline-style: none; outline-style: none;
-webkit-transition-property: background-color, border-color, box-shadow;
transition-property: background-color, border-color, box-shadow; transition-property: background-color, border-color, box-shadow;
transition-duration: 150ms; -webkit-transition-duration: 150ms;
transition-timing-function: ease; transition-duration: 150ms;
-webkit-transition-timing-function: ease;
transition-timing-function: ease;
} }
.toolbarField[type=checkbox] { .toolbarField[type=checkbox] {
@ -1619,6 +1673,7 @@ a:focus > .thumbnail > .thumbnailSelectionRing > .thumbnailImage,
a:focus > .thumbnail > .thumbnailSelectionRing, a:focus > .thumbnail > .thumbnailSelectionRing,
.thumbnail:hover > .thumbnailSelectionRing { .thumbnail:hover > .thumbnailSelectionRing {
background-color: hsla(0,0%,100%,.15); background-color: hsla(0,0%,100%,.15);
background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0)));
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box; background-clip: padding-box;
box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,
@ -1634,6 +1689,7 @@ a:focus > .thumbnail > .thumbnailSelectionRing,
.thumbnail.selected > .thumbnailSelectionRing { .thumbnail.selected > .thumbnailSelectionRing {
background-color: hsla(0,0%,100%,.3); background-color: hsla(0,0%,100%,.3);
background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0)));
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box; background-clip: padding-box;
box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,
@ -1755,6 +1811,7 @@ html[dir='rtl'] .outlineItemToggler::before {
.outlineItem > a:hover, .outlineItem > a:hover,
.attachmentsItem > button:hover { .attachmentsItem > button:hover {
background-color: hsla(0,0%,100%,.02); background-color: hsla(0,0%,100%,.02);
background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0)));
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box; background-clip: padding-box;
box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,
@ -1766,6 +1823,7 @@ html[dir='rtl'] .outlineItemToggler::before {
.outlineItem.selected { .outlineItem.selected {
background-color: hsla(0,0%,100%,.08); background-color: hsla(0,0%,100%,.08);
background-image: -webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,100%,.05)), to(hsla(0,0%,100%,0)));
background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0));
background-clip: padding-box; background-clip: padding-box;
box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset,
@ -1850,6 +1908,8 @@ html[dir='rtl'] .outlineItemToggler::before {
font-size: 12px; font-size: 12px;
line-height: 14px; line-height: 14px;
background-color: #474747; /* fallback */ background-color: #474747; /* fallback */
background-image: url(images/texture.png),
-webkit-gradient(linear, left top, left bottom, from(hsla(0,0%,32%,.99)), to(hsla(0,0%,27%,.95)));
background-image: url(images/texture.png), background-image: url(images/texture.png),
linear-gradient(hsla(0,0%,32%,.99), hsla(0,0%,27%,.95)); linear-gradient(hsla(0,0%,32%,.99), hsla(0,0%,27%,.95));
box-shadow: inset 1px 0 0 hsla(0,0%,100%,.08), box-shadow: inset 1px 0 0 hsla(0,0%,100%,.08),

@ -19,7 +19,7 @@
* Google Books api document: https://developers.google.com/books/docs/v1/using * Google Books api document: https://developers.google.com/books/docs/v1/using
* Douban Books api document: https://developers.douban.com/wiki/?title=book_v2 (Chinese Only) * Douban Books api document: https://developers.douban.com/wiki/?title=book_v2 (Chinese Only)
*/ */
/* global _, i18nMsg, tinymce */ /* global _, i18nMsg, tinymce */
var dbResults = []; var dbResults = [];
var ggResults = []; var ggResults = [];
@ -55,9 +55,9 @@ $(function () {
$(".cover img").attr("src", book.cover); $(".cover img").attr("src", book.cover);
$("#cover_url").val(book.cover); $("#cover_url").val(book.cover);
$("#pubdate").val(book.publishedDate); $("#pubdate").val(book.publishedDate);
$("#publisher").val(book.publisher) $("#publisher").val(book.publisher);
if (book.series != undefined) { if (typeof book.series !== "undefined") {
$("#series").val(book.series) $("#series").val(book.series);
} }
} }
@ -72,16 +72,18 @@ $(function () {
} }
function formatDate (date) { function formatDate (date) {
var d = new Date(date), var d = new Date(date),
month = '' + (d.getMonth() + 1), month = "" + (d.getMonth() + 1),
day = '' + d.getDate(), day = "" + d.getDate(),
year = d.getFullYear(); year = d.getFullYear();
if (month.length < 2) if (month.length < 2) {
month = '0' + month; month = "0" + month;
if (day.length < 2) }
day = '0' + day; if (day.length < 2) {
day = "0" + day;
return [year, month, day].join('-'); }
return [year, month, day].join("-");
} }
if (ggDone && ggResults.length > 0) { if (ggDone && ggResults.length > 0) {
@ -116,16 +118,17 @@ $(function () {
} }
if (dbDone && dbResults.length > 0) { if (dbDone && dbResults.length > 0) {
dbResults.forEach(function(result) { dbResults.forEach(function(result) {
if (result.series){ var seriesTitle = "";
var series_title = result.series.title if (result.series) {
seriesTitle = result.series.title;
} }
var date_fomers = result.pubdate.split("-") var dateFomers = result.pubdate.split("-");
var publishedYear = parseInt(date_fomers[0]) var publishedYear = parseInt(dateFomers[0]);
var publishedMonth = parseInt(date_fomers[1]) var publishedMonth = parseInt(dateFomers[1]);
var publishedDate = new Date(publishedYear, publishedMonth-1, 1) var publishedDate = new Date(publishedYear, publishedMonth - 1, 1);
publishedDate = formatDate(publishedDate);
publishedDate = formatDate(publishedDate)
var book = { var book = {
id: result.id, id: result.id,
title: result.title, title: result.title,
@ -137,7 +140,7 @@ $(function () {
return tag.title.toLowerCase().replace(/,/g, "_"); return tag.title.toLowerCase().replace(/,/g, "_");
}), }),
rating: result.rating.average || 0, rating: result.rating.average || 0,
series: series_title || "", series: seriesTitle || "",
cover: result.image, cover: result.image,
url: "https://book.douban.com/subject/" + result.id, url: "https://book.douban.com/subject/" + result.id,
source: { source: {
@ -183,7 +186,7 @@ $(function () {
} }
function dbSearchBook (title) { function dbSearchBook (title) {
apikey="0df993c66c0c636e29ecbb5344252a4a" var apikey = "0df993c66c0c636e29ecbb5344252a4a";
$.ajax({ $.ajax({
url: douban + dbSearch + "?apikey=" + apikey + "&q=" + title + "&fields=all&count=10", url: douban + dbSearch + "?apikey=" + apikey + "&q=" + title + "&fields=all&count=10",
type: "GET", type: "GET",
@ -193,7 +196,7 @@ $(function () {
dbResults = data.books; dbResults = data.books;
}, },
error: function error() { error: function error() {
$("#meta-info").html("<p class=\"text-danger\">" + msg.search_error + "!</p>"+ $("#meta-info")[0].innerHTML) $("#meta-info").html("<p class=\"text-danger\">" + msg.search_error + "!</p>" + $("#meta-info")[0].innerHTML);
}, },
complete: function complete() { complete: function complete() {
dbDone = true; dbDone = true;

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -29,7 +29,7 @@ function sendData(path) {
var maxElements; var maxElements;
var tmp = []; var tmp = [];
elements = Sortable.utils.find(sortTrue, "div"); elements = $(".list-group-item");
maxElements = elements.length; maxElements = elements.length;
var form = document.createElement("form"); var form = document.createElement("form");

@ -226,6 +226,10 @@ invalid_file_error=ملف PDF تالف أو غير صحيح.
missing_file_error=ملف PDF غير موجود. missing_file_error=ملف PDF غير موجود.
unexpected_response_error=استجابة خادوم غير متوقعة. unexpected_response_error=استجابة خادوم غير متوقعة.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}، {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Няспраўны або пашкоджаны файл PDF.
missing_file_error=Адсутны файл PDF. missing_file_error=Адсутны файл PDF.
unexpected_response_error=Нечаканы адказ сервера. unexpected_response_error=Нечаканы адказ сервера.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Restr PDF didalvoudek pe kontronet.
missing_file_error=Restr PDF o vankout. missing_file_error=Restr PDF o vankout.
unexpected_response_error=Respont dic'hortoz a-berzh an dafariad unexpected_response_error=Respont dic'hortoz a-berzh an dafariad
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Man oke ta o yujtajinäq ri PDF yakb'äl.
missing_file_error=Man xilitäj ta ri PDF yakb'äl. missing_file_error=Man xilitäj ta ri PDF yakb'äl.
unexpected_response_error=Man oyob'en ta tz'olin rutzij ruk'u'x samaj. unexpected_response_error=Man oyob'en ta tz'olin rutzij ruk'u'x samaj.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Neplatný nebo chybný soubor PDF.
missing_file_error=Chybí soubor PDF. missing_file_error=Chybí soubor PDF.
unexpected_response_error=Neočekávaná odpověď serveru. unexpected_response_error=Neočekávaná odpověď serveru.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Ffeil PDF annilys neu llwgr.
missing_file_error=Ffeil PDF coll. missing_file_error=Ffeil PDF coll.
unexpected_response_error=Ymateb annisgwyl gan y gweinydd. unexpected_response_error=Ymateb annisgwyl gan y gweinydd.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=PDF-filen er ugyldig eller ødelagt.
missing_file_error=Manglende PDF-fil. missing_file_error=Manglende PDF-fil.
unexpected_response_error=Uventet svar fra serveren. unexpected_response_error=Uventet svar fra serveren.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Ungültige oder beschädigte PDF-Datei
missing_file_error=Fehlende PDF-Datei missing_file_error=Fehlende PDF-Datei
unexpected_response_error=Unerwartete Antwort des Servers unexpected_response_error=Unerwartete Antwort des Servers
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Μη έγκυρο ή κατεστραμμένο αρχείο
missing_file_error=Λείπει αρχείο PDF. missing_file_error=Λείπει αρχείο PDF.
unexpected_response_error=Μη αναμενόμενη απόκριση από το διακομιστή. unexpected_response_error=Μη αναμενόμενη απόκριση από το διακομιστή.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Invalid or corrupted PDF file.
missing_file_error=Missing PDF file. missing_file_error=Missing PDF file.
unexpected_response_error=Unexpected server response. unexpected_response_error=Unexpected server response.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Invalid or corrupted PDF file.
missing_file_error=Missing PDF file. missing_file_error=Missing PDF file.
unexpected_response_error=Unexpected server response. unexpected_response_error=Unexpected server response.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Invalid or corrupted PDF file.
missing_file_error=Missing PDF file. missing_file_error=Missing PDF file.
unexpected_response_error=Unexpected server response. unexpected_response_error=Unexpected server response.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Nevalida aŭ difektita PDF dosiero.
missing_file_error=Mankas dosiero PDF. missing_file_error=Mankas dosiero PDF.
unexpected_response_error=Neatendita respondo de servilo. unexpected_response_error=Neatendita respondo de servilo.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Archivo PDF no válido o cocrrupto.
missing_file_error=Archivo PDF faltante. missing_file_error=Archivo PDF faltante.
unexpected_response_error=Respuesta del servidor inesperada. unexpected_response_error=Respuesta del servidor inesperada.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Archivo PDF inválido o corrupto.
missing_file_error=Falta el archivo PDF. missing_file_error=Falta el archivo PDF.
unexpected_response_error=Respuesta del servidor inesperada. unexpected_response_error=Respuesta del servidor inesperada.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Fichero PDF no válido o corrupto.
missing_file_error=No hay fichero PDF. missing_file_error=No hay fichero PDF.
unexpected_response_error=Respuesta inesperada del servidor. unexpected_response_error=Respuesta inesperada del servidor.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Vigane või rikutud PDF-fail.
missing_file_error=PDF-fail puudub. missing_file_error=PDF-fail puudub.
unexpected_response_error=Ootamatu vastus serverilt. unexpected_response_error=Ootamatu vastus serverilt.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}} {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=PDF fitxategi baliogabe edo hondatua.
missing_file_error=PDF fitxategia falta da. missing_file_error=PDF fitxategia falta da.
unexpected_response_error=Espero gabeko zerbitzariaren erantzuna. unexpected_response_error=Espero gabeko zerbitzariaren erantzuna.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Virheellinen tai vioittunut PDF-tiedosto.
missing_file_error=Puuttuva PDF-tiedosto. missing_file_error=Puuttuva PDF-tiedosto.
unexpected_response_error=Odottamaton vastaus palvelimelta. unexpected_response_error=Odottamaton vastaus palvelimelta.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Fichier PDF invalide ou corrompu.
missing_file_error=Fichier PDF manquant. missing_file_error=Fichier PDF manquant.
unexpected_response_error=Réponse inattendue du serveur. unexpected_response_error=Réponse inattendue du serveur.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}} à {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Ynfalide of korruptearre PDF-bestân.
missing_file_error=PDF-bestân ûntbrekt. missing_file_error=PDF-bestân ûntbrekt.
unexpected_response_error=Unferwacht serverantwurd. unexpected_response_error=Unferwacht serverantwurd.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=PDF marandurenda ndoikóiva térã ivaipyréva.
missing_file_error=Ndaipóri PDF marandurenda missing_file_error=Ndaipóri PDF marandurenda
unexpected_response_error=Mohendahavusu mbohovái ñeha'arõ'ỹva. unexpected_response_error=Mohendahavusu mbohovái ñeha'arõ'ỹva.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -173,6 +173,7 @@ find_reached_bottom=הגיע לסוף הדף, ממשיך מלמעלה
# "{{current}}" and "{{total}}" will be replaced by a number representing the # "{{current}}" and "{{total}}" will be replaced by a number representing the
# index of the currently active find result, respectively a number representing # index of the currently active find result, respectively a number representing
# the total number of matches in the document. # the total number of matches in the document.
find_match_count={[ plural(total) ]}
find_match_count[one]=תוצאה {{current}} מתוך {{total}} find_match_count[one]=תוצאה {{current}} מתוך {{total}}
find_match_count[two]={{current}} מתוך {{total}} תוצאות find_match_count[two]={{current}} מתוך {{total}} תוצאות
find_match_count[few]={{current}} מתוך {{total}} תוצאות find_match_count[few]={{current}} מתוך {{total}} תוצאות
@ -181,13 +182,14 @@ find_match_count[other]={{current}} מתוך {{total}} תוצאות
# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
# [zero|one|two|few|many|other], with [other] as the default value. # [zero|one|two|few|many|other], with [other] as the default value.
# "{{limit}}" will be replaced by a numerical value. # "{{limit}}" will be replaced by a numerical value.
find_match_count_limit={[ plural(limit) ]}
find_match_count_limit[zero]=יותר מ־{{limit}} תוצאות find_match_count_limit[zero]=יותר מ־{{limit}} תוצאות
find_match_count_limit[one]=יותר מתוצאה אחת find_match_count_limit[one]=יותר מתוצאה אחת
find_match_count_limit[two]=יותר מ־{{limit}} תוצאות find_match_count_limit[two]=יותר מ־{{limit}} תוצאות
find_match_count_limit[few]=יותר מ־{{limit}} תוצאות find_match_count_limit[few]=יותר מ־{{limit}} תוצאות
find_match_count_limit[many]=יותר מ־{{limit}} תוצאות find_match_count_limit[many]=יותר מ־{{limit}} תוצאות
find_match_count_limit[other]=יותר מ־{{limit}} תוצאות find_match_count_limit[other]=יותר מ־{{limit}} תוצאות
find_not_found=ביטוי לא נמצא find_not_found=הביטוי לא נמצא
# Error panel labels # Error panel labels
error_more_info=מידע נוסף error_more_info=מידע נוסף
@ -224,6 +226,10 @@ invalid_file_error=קובץ PDF פגום או לא תקין.
missing_file_error=קובץ PDF חסר. missing_file_error=קובץ PDF חסר.
unexpected_response_error=תגובת שרת לא צפויה. unexpected_response_error=תגובת שרת לא צפויה.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -208,6 +208,10 @@ invalid_file_error=अमान्य या भ्रष्ट PDF फ़ाइ
missing_file_error=\u0020अनुपस्थित PDF फ़ाइल. missing_file_error=\u0020अनुपस्थित PDF फ़ाइल.
unexpected_response_error=अप्रत्याशित सर्वर प्रतिक्रिया. unexpected_response_error=अप्रत्याशित सर्वर प्रतिक्रिया.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -65,7 +65,19 @@ cursor_text_select_tool_label=Alat za označavanje teksta
cursor_hand_tool.title=Omogući ručni alat cursor_hand_tool.title=Omogući ručni alat
cursor_hand_tool_label=Ručni alat cursor_hand_tool_label=Ručni alat
scroll_vertical.title=Koristi okomito pomicanje
scroll_vertical_label=Okomito pomicanje
scroll_horizontal.title=Koristi vodoravno pomicanje
scroll_horizontal_label=Vodoravno pomicanje
scroll_wrapped.title=Koristi omotano pomicanje
scroll_wrapped_label=Omotano pomicanje
spread_none.title=Ne pridružuj razmake stranica
spread_none_label=Bez razmaka
spread_odd.title=Pridruži razmake stranica počinjući od neparnih stranica
spread_odd_label=Neparni razmaci
spread_even.title=Pridruži razmake stranica počinjući od parnih stranica
spread_even_label=Parni razmaci
# Document properties dialog box # Document properties dialog box
document_properties.title=Svojstva dokumenta... document_properties.title=Svojstva dokumenta...
@ -91,8 +103,15 @@ document_properties_creator=Stvaratelj:
document_properties_producer=PDF stvaratelj: document_properties_producer=PDF stvaratelj:
document_properties_version=PDF inačica: document_properties_version=PDF inačica:
document_properties_page_count=Broj stranica: document_properties_page_count=Broj stranica:
document_properties_page_size=Dimenzije stranice:
document_properties_page_size_unit_inches=in
document_properties_page_size_unit_millimeters=mm
document_properties_page_size_orientation_portrait=portret
document_properties_page_size_orientation_landscape=pejzaž
document_properties_page_size_name_a3=A3 document_properties_page_size_name_a3=A3
document_properties_page_size_name_a4=A4 document_properties_page_size_name_a4=A4
document_properties_page_size_name_letter=Pismo
document_properties_page_size_name_legal=Pravno
# LOCALIZATION NOTE (document_properties_page_size_dimension_string): # LOCALIZATION NOTE (document_properties_page_size_dimension_string):
# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by # "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement and orientation, of the (current) page. # the size, respectively their unit of measurement and orientation, of the (current) page.
@ -103,6 +122,7 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}}
document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})
# LOCALIZATION NOTE (document_properties_linearized): The linearization status of # LOCALIZATION NOTE (document_properties_linearized): The linearization status of
# the document; usually called "Fast Web View" in English locales of Adobe software. # the document; usually called "Fast Web View" in English locales of Adobe software.
document_properties_linearized=Brzi web pregled:
document_properties_linearized_yes=Da document_properties_linearized_yes=Da
document_properties_linearized_no=Ne document_properties_linearized_no=Ne
document_properties_close=Zatvori document_properties_close=Zatvori
@ -145,6 +165,7 @@ find_next.title=Pronađi iduće javljanje ovog izraza
find_next_label=Sljedeće find_next_label=Sljedeće
find_highlight=Istankni sve find_highlight=Istankni sve
find_match_case_label=Slučaj podudaranja find_match_case_label=Slučaj podudaranja
find_entire_word_label=Cijele riječi
find_reached_top=Dosegnut vrh dokumenta, nastavak od dna find_reached_top=Dosegnut vrh dokumenta, nastavak od dna
find_reached_bottom=Dosegnut vrh dokumenta, nastavak od vrha find_reached_bottom=Dosegnut vrh dokumenta, nastavak od vrha
# LOCALIZATION NOTE (find_match_count): The supported plural forms are # LOCALIZATION NOTE (find_match_count): The supported plural forms are
@ -152,9 +173,22 @@ find_reached_bottom=Dosegnut vrh dokumenta, nastavak od vrha
# "{{current}}" and "{{total}}" will be replaced by a number representing the # "{{current}}" and "{{total}}" will be replaced by a number representing the
# index of the currently active find result, respectively a number representing # index of the currently active find result, respectively a number representing
# the total number of matches in the document. # the total number of matches in the document.
find_match_count={[ plural(total) ]}
find_match_count[one]={{current}} od {{total}} se podudara
find_match_count[two]={{current}} od {{total}} se podudara
find_match_count[few]={{current}} od {{total}} se podudara
find_match_count[many]={{current}} od {{total}} se podudara
find_match_count[other]={{current}} od {{total}} se podudara
# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
# [zero|one|two|few|many|other], with [other] as the default value. # [zero|one|two|few|many|other], with [other] as the default value.
# "{{limit}}" will be replaced by a numerical value. # "{{limit}}" will be replaced by a numerical value.
find_match_count_limit={[ plural(limit) ]}
find_match_count_limit[zero]=Više od {{limit}} podudaranja
find_match_count_limit[one]=Više od {{limit}} podudaranja
find_match_count_limit[two]=Više od {{limit}} podudaranja
find_match_count_limit[few]=Više od {{limit}} podudaranja
find_match_count_limit[many]=Više od {{limit}} podudaranja
find_match_count_limit[other]=Više od {{limit}} podudaranja
find_not_found=Izraz nije pronađen find_not_found=Izraz nije pronađen
# Error panel labels # Error panel labels
@ -192,6 +226,10 @@ invalid_file_error=Kriva ili oštećena PDF datoteka.
missing_file_error=Nedostaje PDF datoteka. missing_file_error=Nedostaje PDF datoteka.
unexpected_response_error=Neočekivani odgovor poslužitelja. unexpected_response_error=Neočekivani odgovor poslužitelja.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Njepłaćiwa abo wobškodźena PDF-dataja.
missing_file_error=Falowaca PDF-dataja. missing_file_error=Falowaca PDF-dataja.
unexpected_response_error=Njewočakowana serwerowa wotmołwa. unexpected_response_error=Njewočakowana serwerowa wotmołwa.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Érvénytelen vagy sérült PDF fájl.
missing_file_error=Hiányzó PDF fájl. missing_file_error=Hiányzó PDF fájl.
unexpected_response_error=Váratlan kiszolgálóválasz. unexpected_response_error=Váratlan kiszolgálóválasz.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=File PDF corrumpite o non valide.
missing_file_error=File PDF mancante. missing_file_error=File PDF mancante.
unexpected_response_error=Responsa del servitor inexpectate. unexpected_response_error=Responsa del servitor inexpectate.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Berkas PDF tidak valid atau rusak.
missing_file_error=Berkas PDF tidak ada. missing_file_error=Berkas PDF tidak ada.
unexpected_response_error=Balasan server yang tidak diharapkan. unexpected_response_error=Balasan server yang tidak diharapkan.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -65,7 +65,17 @@ cursor_text_select_tool_label=Textavalsáhald
cursor_hand_tool.title=Virkja handarverkfæri cursor_hand_tool.title=Virkja handarverkfæri
cursor_hand_tool_label=Handarverkfæri cursor_hand_tool_label=Handarverkfæri
scroll_vertical.title=Nota lóðrétt skrun
scroll_vertical_label=Lóðrétt skrun
scroll_horizontal.title=Nota lárétt skrun
scroll_horizontal_label=Lárétt skrun
spread_none.title=Ekki taka þátt í dreifingu síðna
spread_none_label=Engin dreifing
spread_odd.title=Taka þátt í dreifingu síðna með oddatölum
spread_odd_label=Oddatöludreifing
spread_even.title=Taktu þátt í dreifingu síðna með jöfnuntölum
spread_even_label=Jafnatöludreifing
# Document properties dialog box # Document properties dialog box
document_properties.title=Eiginleikar skjals… document_properties.title=Eiginleikar skjals…
@ -161,10 +171,21 @@ find_reached_bottom=Náði enda skjals, held áfram efst
# index of the currently active find result, respectively a number representing # index of the currently active find result, respectively a number representing
# the total number of matches in the document. # the total number of matches in the document.
find_match_count={[ plural(total) ]} find_match_count={[ plural(total) ]}
find_match_count[one]={{current}} af {{total}} niðurstöðu
find_match_count[two]={{current}} af {{total}} niðurstöðum
find_match_count[few]={{current}} af {{total}} niðurstöðum
find_match_count[many]={{current}} af {{total}} niðurstöðum
find_match_count[other]={{current}} af {{total}} niðurstöðum
# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
# [zero|one|two|few|many|other], with [other] as the default value. # [zero|one|two|few|many|other], with [other] as the default value.
# "{{limit}}" will be replaced by a numerical value. # "{{limit}}" will be replaced by a numerical value.
find_match_count_limit={[ plural(limit) ]} find_match_count_limit={[ plural(limit) ]}
find_match_count_limit[zero]=Fleiri en {{limit}} niðurstöður
find_match_count_limit[one]=Fleiri en {{limit}} niðurstaða
find_match_count_limit[two]=Fleiri en {{limit}} niðurstöður
find_match_count_limit[few]=Fleiri en {{limit}} niðurstöður
find_match_count_limit[many]=Fleiri en {{limit}} niðurstöður
find_match_count_limit[other]=Fleiri en {{limit}} niðurstöður
find_not_found=Fann ekki orðið find_not_found=Fann ekki orðið
# Error panel labels # Error panel labels

@ -146,6 +146,7 @@ loading_error = Si è verificato un errore durante il caricamento del PDF.
invalid_file_error = File PDF non valido o danneggiato. invalid_file_error = File PDF non valido o danneggiato.
missing_file_error = File PDF non disponibile. missing_file_error = File PDF non disponibile.
unexpected_response_error = Risposta imprevista del server unexpected_response_error = Risposta imprevista del server
annotation_date_string = {{date}}, {{time}}
text_annotation_type.alt = [Annotazione: {{type}}] text_annotation_type.alt = [Annotazione: {{type}}]
password_label = Inserire la password per aprire questo file PDF. password_label = Inserire la password per aprire questo file PDF.
password_invalid = Password non corretta. Riprovare. password_invalid = Password non corretta. Riprovare.

@ -226,6 +226,10 @@ invalid_file_error=無効または破損した PDF ファイル。
missing_file_error=PDF ファイルが見つかりません。 missing_file_error=PDF ファイルが見つかりません。
unexpected_response_error=サーバーから予期せぬ応答がありました。 unexpected_response_error=サーバーから予期せぬ応答がありました。
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -100,8 +100,8 @@ document_properties_modification_date=ჩასწორების თარ
# will be replaced by the creation/modification date, and time, of the PDF file. # will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}} document_properties_date_string={{date}}, {{time}}
document_properties_creator=გამომშვები: document_properties_creator=გამომშვები:
document_properties_producer=PDF გამომშვები: document_properties_producer=PDF-გამომშვები:
document_properties_version=PDF ვერსია: document_properties_version=PDF-ვერსია:
document_properties_page_count=გვერდების რაოდენობა: document_properties_page_count=გვერდების რაოდენობა:
document_properties_page_size=გვერდის ზომა: document_properties_page_size=გვერდის ზომა:
document_properties_page_size_unit_inches=დუიმი document_properties_page_size_unit_inches=დუიმი
@ -122,7 +122,7 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}}
document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})
# LOCALIZATION NOTE (document_properties_linearized): The linearization status of # LOCALIZATION NOTE (document_properties_linearized): The linearization status of
# the document; usually called "Fast Web View" in English locales of Adobe software. # the document; usually called "Fast Web View" in English locales of Adobe software.
document_properties_linearized=Fast Web View: document_properties_linearized=სწრაფი შეთვალიერება:
document_properties_linearized_yes=დიახ document_properties_linearized_yes=დიახ
document_properties_linearized_no=არა document_properties_linearized_no=არა
document_properties_close=დახურვა document_properties_close=დახურვა
@ -154,7 +154,7 @@ findbar_label=ძიება
thumb_page_title=გვერდი {{page}} thumb_page_title=გვერდი {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number. # number.
thumb_page_canvas=გვერდის ესკიზი {{page}} thumb_page_canvas=გვერდის შეთვალიერება {{page}}
# Find panel button title and messages # Find panel button title and messages
find_input.title=ძიება find_input.title=ძიება
@ -221,22 +221,26 @@ page_scale_percent={{scale}}%
# Loading indicator messages # Loading indicator messages
loading_error_indicator=შეცდომა loading_error_indicator=შეცდომა
loading_error=შეცდომა, PDF ფაილის ჩატვირთვისას. loading_error=შეცდომა, PDF-ფაილის ჩატვირთვისას.
invalid_file_error=არამართებული ან დაზიანებული PDF ფაილი. invalid_file_error=არამართებული ან დაზიანებული PDF-ფაილი.
missing_file_error=ნაკლული PDF ფაილი. missing_file_error=ნაკლული PDF-ფაილი.
unexpected_response_error=სერვერის მოულოდნელი პასუხი. unexpected_response_error=სერვერის მოულოდნელი პასუხი.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note" # Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} შენიშვნა] text_annotation_type.alt=[{{type}} შენიშვნა]
password_label=შეიყვანეთ პაროლი PDF ფაილის გასახსნელად. password_label=შეიყვანეთ პაროლი PDF-ფაილის გასახსნელად.
password_invalid=არასწორი პაროლი. გთხოვთ, სცადოთ ხელახლა. password_invalid=არასწორი პაროლი. გთხოვთ, სცადოთ ხელახლა.
password_ok=კარგი password_ok=კარგი
password_cancel=გაუქმება password_cancel=გაუქმება
printing_not_supported=გაფრთხილება: ამობეჭდვა ამ ბრაუზერში არაა სრულად მხარდაჭერილი. printing_not_supported=გაფრთხილება: ამობეჭდვა ამ ბრაუზერში არაა სრულად მხარდაჭერილი.
printing_not_ready=გაფრთხილება: PDF სრულად ჩატვირთული არაა, ამობეჭდვის დასაწყებად. printing_not_ready=გაფრთხილება: PDF სრულად ჩატვირთული არაა, ამობეჭდვის დასაწყებად.
web_fonts_disabled=ვებშრიფტები გამორთულია: ჩაშენებული PDF შრიფტების გამოყენება ვერ ხერხდება. web_fonts_disabled=ვებშრიფტები გამორთულია: ჩაშენებული PDF-შრიფტების გამოყენება ვერ ხერხდება.
document_colors_not_allowed=PDF დოკუმენტებს არ აქვს საკუთარი ფერების გამოყენების ნებართვა: ბრაუზერში გამორთულია “გვერდებისთვის საკუთარი ფერების გამოყენების უფლება”. document_colors_not_allowed=PDF-დოკუმენტებს არ აქვს საკუთარი ფერების გამოყენების ნებართვა: ბრაუზერში გამორთულია “გვერდებისთვის საკუთარი ფერების გამოყენების უფლება”.

@ -226,6 +226,10 @@ invalid_file_error=Afaylu PDF arameɣtu neɣ yexṣeṛ.
missing_file_error=Ulac afaylu PDF. missing_file_error=Ulac afaylu PDF.
unexpected_response_error=Aqeddac yerra-d yir tiririt ur nettwaṛǧi ara. unexpected_response_error=Aqeddac yerra-d yir tiririt ur nettwaṛǧi ara.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Зақымдалған немесе қате PDF файл.
missing_file_error=PDF файлы жоқ. missing_file_error=PDF файлы жоқ.
unexpected_response_error=Сервердің күтпеген жауабы. unexpected_response_error=Сервердің күтпеген жауабы.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -26,23 +26,23 @@ of_pages=전체 {{pagesCount}}
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}" # LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page, # will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document. # respectively a number representing the total number of pages in the document.
page_of_pages=({{pagesCount}} 중 {{pageNumber}}) page_of_pages=({{pageNumber}} / {{pagesCount}})
zoom_out.title=축소 zoom_out.title=축소
zoom_out_label=축소 zoom_out_label=축소
zoom_in.title=확대 zoom_in.title=확대
zoom_in_label=확대 zoom_in_label=확대
zoom.title=크기 zoom.title=확대/축소
presentation_mode.title=발표 모드로 전환 presentation_mode.title=프레젠테이션 모드로 전환
presentation_mode_label=발표 모드 presentation_mode_label=프레젠테이션 모드
open_file.title=파일 열기 open_file.title=파일 열기
open_file_label=열기 open_file_label=열기
print.title=인쇄 print.title=인쇄
print_label=인쇄 print_label=인쇄
download.title=다운로드 download.title=다운로드
download_label=다운로드 download_label=다운로드
bookmark.title=지금 보이는 그대로 (복사하거나 새 창에 열기) bookmark.title=현재 뷰 (복사하거나 새 창에 열기)
bookmark_label=지금 보이는 그대로 bookmark_label=현재 뷰
# Secondary toolbar and context menu # Secondary toolbar and context menu
tools.title=도구 tools.title=도구
@ -83,7 +83,7 @@ spread_even_label=짝수 펼쳐짐
document_properties.title=문서 속성… document_properties.title=문서 속성…
document_properties_label=문서 속성… document_properties_label=문서 속성…
document_properties_file_name=파일 이름: document_properties_file_name=파일 이름:
document_properties_file_size=파일 사이즈: document_properties_file_size=파일 크기:
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
# will be replaced by the PDF file size in kilobytes, respectively in bytes. # will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}}바이트) document_properties_kb={{size_kb}} KB ({{size_b}}바이트)
@ -91,18 +91,18 @@ document_properties_kb={{size_kb}} KB ({{size_b}}바이트)
# will be replaced by the PDF file size in megabytes, respectively in bytes. # will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}}바이트) document_properties_mb={{size_mb}} MB ({{size_b}}바이트)
document_properties_title=제목: document_properties_title=제목:
document_properties_author=자: document_properties_author=작성자:
document_properties_subject=주제: document_properties_subject=주제:
document_properties_keywords=키워드: document_properties_keywords=키워드:
document_properties_creation_date=생성일: document_properties_creation_date=작성 날짜:
document_properties_modification_date=수정: document_properties_modification_date=수정 날짜:
# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
# will be replaced by the creation/modification date, and time, of the PDF file. # will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}} document_properties_date_string={{date}}, {{time}}
document_properties_creator=생성자: document_properties_creator=작성 프로그램:
document_properties_producer=PDF 생성기: document_properties_producer=PDF 변환 소프트웨어:
document_properties_version=PDF 버전: document_properties_version=PDF 버전:
document_properties_page_count=페이지: document_properties_page_count=페이지:
document_properties_page_size=페이지 크기: document_properties_page_size=페이지 크기:
document_properties_page_size_unit_inches=in document_properties_page_size_unit_inches=in
document_properties_page_size_unit_millimeters=mm document_properties_page_size_unit_millimeters=mm
@ -127,7 +127,7 @@ document_properties_linearized_yes=예
document_properties_linearized_no=아니오 document_properties_linearized_no=아니오
document_properties_close=닫기 document_properties_close=닫기
print_progress_message=문서 출력 준비중… print_progress_message=인쇄 문서 준비중…
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
# a numerical per cent value. # a numerical per cent value.
print_progress_percent={{progress}}% print_progress_percent={{progress}}%
@ -151,10 +151,10 @@ findbar_label=검색
# Thumbnails panel item (tooltip and alt text for images) # Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number. # number.
thumb_page_title={{page}} thumb_page_title={{page}} 페이지
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number. # number.
thumb_page_canvas={{page}} 미리보기 thumb_page_canvas={{page}} 페이지 미리보기
# Find panel button title and messages # Find panel button title and messages
find_input.title=찾기 find_input.title=찾기
@ -164,7 +164,7 @@ find_previous_label=이전
find_next.title=지정 문자열에 일치하는 다음 부분을 검색 find_next.title=지정 문자열에 일치하는 다음 부분을 검색
find_next_label=다음 find_next_label=다음
find_highlight=모두 강조 표시 find_highlight=모두 강조 표시
find_match_case_label=문자/소문자 구별 find_match_case_label=/소문자 구분
find_entire_word_label=전체 단어 find_entire_word_label=전체 단어
find_reached_top=문서 처음까지 검색하고 끝으로 돌아와 검색했습니다. find_reached_top=문서 처음까지 검색하고 끝으로 돌아와 검색했습니다.
find_reached_bottom=문서 끝까지 검색하고 앞으로 돌아와 검색했습니다. find_reached_bottom=문서 끝까지 검색하고 앞으로 돌아와 검색했습니다.
@ -208,12 +208,12 @@ error_stack=스택: {{stack}}
error_file=파일: {{file}} error_file=파일: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=줄 번호: {{line}} error_line=줄 번호: {{line}}
rendering_error=페이지를 렌더링하다 오류가 났습니다. rendering_error=페이지를 렌더링하는 중 오류가 발생했습니다.
# Predefined zoom values # Predefined zoom values
page_scale_width=페이지 너비에 맞춤 page_scale_width=페이지 너비에 맞춤
page_scale_fit=페이지에 맞춤 page_scale_fit=페이지에 맞춤
page_scale_auto=알아서 맞춤 page_scale_auto=자동 맞춤
page_scale_actual=실제 크기에 맞춤 page_scale_actual=실제 크기에 맞춤
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value. # numerical scale value.
@ -221,22 +221,26 @@ page_scale_percent={{scale}}%
# Loading indicator messages # Loading indicator messages
loading_error_indicator=오류 loading_error_indicator=오류
loading_error=PDF를 읽는 중 오류가 생겼습니다. loading_error=PDF를 로드하는 중 오류가 발생했습니다.
invalid_file_error=유효하지 않거나 파손된 PDF 파일 invalid_file_error=유효하지 않거나 파손된 PDF 파일
missing_file_error=PDF 파일이 없습니다. missing_file_error=PDF 파일이 없습니다.
unexpected_response_error=알 수 없는 서버 응답입니다. unexpected_response_error=예상치 못한 서버 응답입니다.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}} {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note" # Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} 주석] text_annotation_type.alt=[{{type}} 주석]
password_label=이 PDF 파일을 열 수 있는 호를 입력하십시오. password_label=이 PDF 파일을 열 수 있는 비밀번호를 입력하십시오.
password_invalid=잘못된 호입니다. 다시 시도해 주십시오. password_invalid=잘못된 비밀번호입니다. 다시 시도해 주십시오.
password_ok=확인 password_ok=확인
password_cancel=취소 password_cancel=취소
printing_not_supported=경고: 이 브라우저는 인쇄를 완전히 지원하지 않습니다. printing_not_supported=경고: 이 브라우저는 인쇄를 완전히 지원하지 않습니다.
printing_not_ready=경고: 이 PDF를 인쇄를 할 수 있을 정도로 읽어들이지 못했습니다. printing_not_ready=경고: 이 PDF를 인쇄를 할 수 있을 정도로 읽어들이지 못했습니다.
web_fonts_disabled=웹 폰트가 꺼져있음: 내장된 PDF 글꼴을 쓸 수 없습니다. web_fonts_disabled=웹 폰트가 비활성화됨: 내장된 PDF 글꼴을 사용할 수 없습니다.
document_colors_not_allowed=PDF 문서의 색상을 쓰지 못하게 되어 있음: '웹 페이지 자체 색상 사용 허용'이 브라우저에서 꺼져 있습니다. document_colors_not_allowed=PDF 문서의 자체 색상 허용 안됨: “페이지 자체 색상 허용”이 브라우저에서 비활성화 되어 있습니다.

@ -45,8 +45,8 @@ bookmark.title=Vixon corente (còpia ò arvi inte 'n neuvo barcon)
bookmark_label=Vixon corente bookmark_label=Vixon corente
# Secondary toolbar and context menu # Secondary toolbar and context menu
tools.title=Strumenti tools.title=Atressi
tools_label=Strumenti tools_label=Atressi
first_page.title=Vanni a-a primma pagina first_page.title=Vanni a-a primma pagina
first_page.label=Vanni a-a primma pagina first_page.label=Vanni a-a primma pagina
first_page_label=Vanni a-a primma pagina first_page_label=Vanni a-a primma pagina
@ -82,8 +82,8 @@ spread_even_label=Difuxon pari
# Document properties dialog box # Document properties dialog box
document_properties.title=Propietæ do documento… document_properties.title=Propietæ do documento…
document_properties_label=Propietæ do documento… document_properties_label=Propietæ do documento…
document_properties_file_name=Nomme file: document_properties_file_name=Nomme schedaio:
document_properties_file_size=Dimenscion file: document_properties_file_size=Dimenscion schedaio:
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
# will be replaced by the PDF file size in kilobytes, respectively in bytes. # will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} kB ({{size_b}} byte) document_properties_kb={{size_kb}} kB ({{size_b}} byte)
@ -205,7 +205,7 @@ error_message=Mesaggio: {{message}}
# trace. # trace.
error_stack=Stack: {{stack}} error_stack=Stack: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=File: {{file}} error_file=Schedaio: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Linia: {{line}} error_line=Linia: {{line}}
rendering_error=Gh'é stæto 'n'erô itno rendering da pagina. rendering_error=Gh'é stæto 'n'erô itno rendering da pagina.
@ -222,8 +222,8 @@ page_scale_percent={{scale}}%
# Loading indicator messages # Loading indicator messages
loading_error_indicator=Erô loading_error_indicator=Erô
loading_error=S'é verificou 'n'erô itno caregamento do PDF. loading_error=S'é verificou 'n'erô itno caregamento do PDF.
invalid_file_error=O file PDF o l'é no valido ò aroinou. invalid_file_error=O schedaio PDF o l'é no valido ò aroinou.
missing_file_error=O file PDF o no gh'é. missing_file_error=O schedaio PDF o no gh'é.
unexpected_response_error=Risposta inprevista do-u server unexpected_response_error=Risposta inprevista do-u server
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
@ -231,7 +231,7 @@ unexpected_response_error=Risposta inprevista do-u server
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note" # Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[Anotaçion: {{type}}] text_annotation_type.alt=[Anotaçion: {{type}}]
password_label=Dimme a paròlla segreta pe arvî sto file PDF. password_label=Dimme a paròlla segreta pe arvî sto schedaio PDF.
password_invalid=Paròlla segreta sbalia. Preuva torna. password_invalid=Paròlla segreta sbalia. Preuva torna.
password_ok=Va ben password_ok=Va ben
password_cancel=Anulla password_cancel=Anulla

@ -226,6 +226,10 @@ invalid_file_error=Tai nėra PDF failas arba jis yra sugadintas.
missing_file_error=PDF failas nerastas. missing_file_error=PDF failas nerastas.
unexpected_response_error=Netikėtas serverio atsakas. unexpected_response_error=Netikėtas serverio atsakas.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -65,6 +65,10 @@ cursor_text_select_tool_label=मजकूर निवड साधन
cursor_hand_tool.title=हात साधन कार्यान्वित करा cursor_hand_tool.title=हात साधन कार्यान्वित करा
cursor_hand_tool_label=हस्त साधन cursor_hand_tool_label=हस्त साधन
scroll_vertical.title=अनुलंब स्क्रोलिंग वापरा
scroll_vertical_label=अनुलंब स्क्रोलिंग
scroll_horizontal.title=क्षैतिज स्क्रोलिंग वापरा
scroll_horizontal_label=क्षैतिज स्क्रोलिंग
# Document properties dialog box # Document properties dialog box
@ -95,6 +99,7 @@ document_properties_page_size=पृष्ठ आकार:
document_properties_page_size_unit_inches=इंच document_properties_page_size_unit_inches=इंच
document_properties_page_size_unit_millimeters=मीमी document_properties_page_size_unit_millimeters=मीमी
document_properties_page_size_orientation_portrait=उभी मांडणी document_properties_page_size_orientation_portrait=उभी मांडणी
document_properties_page_size_orientation_landscape=आडवे
document_properties_page_size_name_a3=A3 document_properties_page_size_name_a3=A3
document_properties_page_size_name_a4=A4 document_properties_page_size_name_a4=A4
document_properties_page_size_name_letter=Letter document_properties_page_size_name_letter=Letter
@ -109,6 +114,7 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}}
document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}}) document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, {{orientation}})
# LOCALIZATION NOTE (document_properties_linearized): The linearization status of # LOCALIZATION NOTE (document_properties_linearized): The linearization status of
# the document; usually called "Fast Web View" in English locales of Adobe software. # the document; usually called "Fast Web View" in English locales of Adobe software.
document_properties_linearized=जलद वेब दृष्य:
document_properties_linearized_yes=हो document_properties_linearized_yes=हो
document_properties_linearized_no=नाही document_properties_linearized_no=नाही
document_properties_close=बंद करा document_properties_close=बंद करा
@ -151,8 +157,23 @@ find_next.title=वाकप्रयोगची पुढील घटना
find_next_label=पुढील find_next_label=पुढील
find_highlight=सर्व ठळक करा find_highlight=सर्व ठळक करा
find_match_case_label=आकार जुळवा find_match_case_label=आकार जुळवा
find_entire_word_label=संपूर्ण शब्द
find_reached_top=दस्तऐवजाच्या शीर्षकास पोहचले, तळपासून पुढे find_reached_top=दस्तऐवजाच्या शीर्षकास पोहचले, तळपासून पुढे
find_reached_bottom=दस्तऐवजाच्या तळाला पोहचले, शीर्षकापासून पुढे find_reached_bottom=दस्तऐवजाच्या तळाला पोहचले, शीर्षकापासून पुढे
# LOCALIZATION NOTE (find_match_count): The supported plural forms are
# [one|two|few|many|other], with [other] as the default value.
# "{{current}}" and "{{total}}" will be replaced by a number representing the
# index of the currently active find result, respectively a number representing
# the total number of matches in the document.
find_match_count={[ plural(total) ]}
# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
# [zero|one|two|few|many|other], with [other] as the default value.
# "{{limit}}" will be replaced by a numerical value.
find_match_count_limit[zero]={{limit}} पेक्षा अधिक जुळण्या
find_match_count_limit[two]={{limit}} पेक्षा अधिक जुळण्या
find_match_count_limit[few]={{limit}} पेक्षा अधिक जुळण्या
find_match_count_limit[many]={{limit}} पेक्षा अधिक जुळण्या
find_match_count_limit[other]={{limit}} पेक्षा अधिक जुळण्या
find_not_found=वाकप्रयोग आढळले नाही find_not_found=वाकप्रयोग आढळले नाही
# Error panel labels # Error panel labels

@ -226,6 +226,10 @@ invalid_file_error=Ugyldig eller skadet PDF-fil.
missing_file_error=Manglende PDF-fil. missing_file_error=Manglende PDF-fil.
unexpected_response_error=Uventet serverrespons. unexpected_response_error=Uventet serverrespons.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Ongeldig of beschadigd PDF-bestand.
missing_file_error=PDF-bestand ontbreekt. missing_file_error=PDF-bestand ontbreekt.
unexpected_response_error=Onverwacht serverantwoord. unexpected_response_error=Onverwacht serverantwoord.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Ugyldig eller korrupt PDF-fil.
missing_file_error=Manglande PDF-fil. missing_file_error=Manglande PDF-fil.
unexpected_response_error=Uventa tenarrespons. unexpected_response_error=Uventa tenarrespons.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}} {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -168,10 +168,21 @@ find_reached_bottom=ਦਸਤਾਵੇਜ਼ ਦੇ ਅੰਤ ਉੱਤੇ ਆ ਗ
# index of the currently active find result, respectively a number representing # index of the currently active find result, respectively a number representing
# the total number of matches in the document. # the total number of matches in the document.
find_match_count={[ plural(total) ]} find_match_count={[ plural(total) ]}
find_match_count[one]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ
find_match_count[two]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ
find_match_count[few]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ
find_match_count[many]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ
find_match_count[other]={{total}} ਵਿੱਚੋਂ {{current}} ਮੇਲ
# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
# [zero|one|two|few|many|other], with [other] as the default value. # [zero|one|two|few|many|other], with [other] as the default value.
# "{{limit}}" will be replaced by a numerical value. # "{{limit}}" will be replaced by a numerical value.
find_match_count_limit={[ plural(limit) ]} find_match_count_limit={[ plural(limit) ]}
find_match_count_limit[zero]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ
find_match_count_limit[one]={{limit}} ਮੇਲ ਤੋਂ ਵੱਧ
find_match_count_limit[two]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ
find_match_count_limit[few]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ
find_match_count_limit[many]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ
find_match_count_limit[other]={{limit}} ਮੇਲਾਂ ਤੋਂ ਵੱਧ
find_not_found=ਵਾਕ ਨਹੀਂ ਲੱਭਿਆ find_not_found=ਵਾਕ ਨਹੀਂ ਲੱਭਿਆ
# Error panel labels # Error panel labels

@ -12,13 +12,20 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Poprzednia strona previous.title=Poprzednia strona
previous_label=Poprzednia previous_label=Poprzednia
next.title=Następna strona next.title=Następna strona
next_label=Następna next_label=Następna
page.title==Strona: # LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
page.title=Strona
# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
# representing the total number of pages in the document.
of_pages=z {{pagesCount}} of_pages=z {{pagesCount}}
# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
# will be replaced by a number representing the currently visible page,
# respectively a number representing the total number of pages in the document.
page_of_pages=({{pageNumber}} z {{pagesCount}}) page_of_pages=({{pageNumber}} z {{pagesCount}})
zoom_out.title=Pomniejszenie zoom_out.title=Pomniejszenie
@ -37,6 +44,7 @@ download_label=Pobierz
bookmark.title=Bieżąca pozycja (skopiuj lub otwórz jako odnośnik w nowym oknie) bookmark.title=Bieżąca pozycja (skopiuj lub otwórz jako odnośnik w nowym oknie)
bookmark_label=Bieżąca pozycja bookmark_label=Bieżąca pozycja
# Secondary toolbar and context menu
tools.title=Narzędzia tools.title=Narzędzia
tools_label=Narzędzia tools_label=Narzędzia
first_page.title=Przechodzenie do pierwszej strony first_page.title=Przechodzenie do pierwszej strony
@ -59,30 +67,37 @@ cursor_hand_tool_label=Narzędzie rączka
scroll_vertical.title=Przewijaj dokument w pionie scroll_vertical.title=Przewijaj dokument w pionie
scroll_vertical_label=Przewijanie pionowe scroll_vertical_label=Przewijanie pionowe
scroll_horizontal_label=Przewijanie poziome
scroll_horizontal.title=Przewijaj dokument w poziomie scroll_horizontal.title=Przewijaj dokument w poziomie
scroll_wrapped_label=Widok dwóch stron scroll_horizontal_label=Przewijanie poziome
scroll_wrapped.title=Strony dokumentu wyświetlaj i przewijaj w kolumnach scroll_wrapped.title=Strony dokumentu wyświetlaj i przewijaj w kolumnach
scroll_wrapped_label=Widok dwóch stron
spread_none_label=Brak kolumn
spread_none.title=Nie ustawiaj stron obok siebie spread_none.title=Nie ustawiaj stron obok siebie
spread_odd_label=Nieparzyste po lewej spread_none_label=Brak kolumn
spread_odd.title=Strony nieparzyste ustawiaj na lewo od parzystych spread_odd.title=Strony nieparzyste ustawiaj na lewo od parzystych
spread_even_label=Parzyste po lewej spread_odd_label=Nieparzyste po lewej
spread_even.title=Strony parzyste ustawiaj na lewo od nieparzystych spread_even.title=Strony parzyste ustawiaj na lewo od nieparzystych
spread_even_label=Parzyste po lewej
# Document properties dialog box
document_properties.title=Właściwości dokumentu… document_properties.title=Właściwości dokumentu…
document_properties_label=Właściwości dokumentu… document_properties_label=Właściwości dokumentu…
document_properties_file_name=Nazwa pliku: document_properties_file_name=Nazwa pliku:
document_properties_file_size=Rozmiar pliku: document_properties_file_size=Rozmiar pliku:
document_properties_kb={{size_kb}} KB ({{size_b}} b) # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
document_properties_mb={{size_mb}} MB ({{size_b}} b) # will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} B)
# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} B)
document_properties_title=Tytuł: document_properties_title=Tytuł:
document_properties_author=Autor: document_properties_author=Autor:
document_properties_subject=Temat: document_properties_subject=Temat:
document_properties_keywords=Słowa kluczowe: document_properties_keywords=Słowa kluczowe:
document_properties_creation_date=Data utworzenia: document_properties_creation_date=Data utworzenia:
document_properties_modification_date=Data modyfikacji: document_properties_modification_date=Data modyfikacji:
# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}} document_properties_date_string={{date}}, {{time}}
document_properties_creator=Utworzony przez: document_properties_creator=Utworzony przez:
document_properties_producer=PDF wyprodukowany przez: document_properties_producer=PDF wyprodukowany przez:
@ -97,17 +112,30 @@ document_properties_page_size_name_a3=A3
document_properties_page_size_name_a4=A4 document_properties_page_size_name_a4=A4
document_properties_page_size_name_letter=US Letter document_properties_page_size_name_letter=US Letter
document_properties_page_size_name_legal=US Legal document_properties_page_size_name_legal=US Legal
document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} (orientacja {{orientation}}) # LOCALIZATION NOTE (document_properties_page_size_dimension_string):
document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, orientacja {{orientation}}) # "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement and orientation, of the (current) page.
document_properties_page_size_dimension_string={{width}}×{{height}} {{unit}} (orientacja {{orientation}})
# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):
# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement, name, and orientation, of the (current) page.
document_properties_page_size_dimension_name_string={{width}}×{{height}} {{unit}} ({{name}}, orientacja {{orientation}})
# LOCALIZATION NOTE (document_properties_linearized): The linearization status of
# the document; usually called "Fast Web View" in English locales of Adobe software.
document_properties_linearized=Szybki podgląd w Internecie: document_properties_linearized=Szybki podgląd w Internecie:
document_properties_linearized_yes=tak document_properties_linearized_yes=tak
document_properties_linearized_no=nie document_properties_linearized_no=nie
document_properties_close=Zamknij document_properties_close=Zamknij
print_progress_message=Przygotowywanie dokumentu do druku… print_progress_message=Przygotowywanie dokumentu do druku…
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
# a numerical per cent value.
print_progress_percent={{progress}}% print_progress_percent={{progress}}%
print_progress_close=Anuluj print_progress_close=Anuluj
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Przełączanie panelu bocznego toggle_sidebar.title=Przełączanie panelu bocznego
toggle_sidebar_notification.title=Przełączanie panelu bocznego (dokument zawiera konspekt/załączniki) toggle_sidebar_notification.title=Przełączanie panelu bocznego (dokument zawiera konspekt/załączniki)
toggle_sidebar_label=Przełącz panel boczny toggle_sidebar_label=Przełącz panel boczny
@ -120,26 +148,40 @@ thumbs_label=Miniaturki
findbar.title=Znajdź w dokumencie findbar.title=Znajdź w dokumencie
findbar_label=Znajdź findbar_label=Znajdź
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=Strona {{page}} thumb_page_title=Strona {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=Miniaturka strony {{page}} thumb_page_canvas=Miniaturka strony {{page}}
# Find panel button title and messages
find_input.title=Wyszukiwanie find_input.title=Wyszukiwanie
find_input.placeholder=Szukaj w dokumencie… find_input.placeholder=Znajdź w dokumencie…
find_previous.title=Znajdź poprzednie wystąpienie tekstu find_previous.title=Znajdź poprzednie wystąpienie tekstu
find_previous_label=Poprzednie find_previous_label=Poprzednie
find_next.title=Znajdź następne wystąpienie tekstu find_next.title=Znajdź następne wystąpienie tekstu
find_next_label=Następne find_next_label=Następne
find_highlight=Podświetl wszystkie find_highlight=Wyróżnianie wszystkich
find_match_case_label=Rozróżnianie wielkości liter find_match_case_label=Rozróżnianie wielkości liter
find_entire_word_label=Całe słowa find_entire_word_label=Całe słowa
find_reached_top=Początek dokumentu. Wyszukiwanie od końca. find_reached_top=Początek dokumentu. Wyszukiwanie od końca.
find_reached_bottom=Koniec dokumentu. Wyszukiwanie od początku. find_reached_bottom=Koniec dokumentu. Wyszukiwanie od początku.
# LOCALIZATION NOTE (find_match_count): The supported plural forms are
# [one|two|few|many|other], with [other] as the default value.
# "{{current}}" and "{{total}}" will be replaced by a number representing the
# index of the currently active find result, respectively a number representing
# the total number of matches in the document.
find_match_count={[ plural(total) ]} find_match_count={[ plural(total) ]}
find_match_count[one]=Pierwsze z {{total}} trafień find_match_count[one]=Pierwsze z {{total}} trafień
find_match_count[two]=Drugie z {{total}} trafień find_match_count[two]=Drugie z {{total}} trafień
find_match_count[few]={{current}}. z {{total}} trafień find_match_count[few]={{current}}. z {{total}} trafień
find_match_count[many]={{current}}. z {{total}} trafień find_match_count[many]={{current}}. z {{total}} trafień
find_match_count[other]={{current}}. z {{total}} trafień find_match_count[other]={{current}}. z {{total}} trafień
# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
# [zero|one|two|few|many|other], with [other] as the default value.
# "{{limit}}" will be replaced by a numerical value.
find_match_count_limit={[ plural(limit) ]} find_match_count_limit={[ plural(limit) ]}
find_match_count_limit[zero]=Brak trafień. find_match_count_limit[zero]=Brak trafień.
find_match_count_limit[one]=Więcej niż jedno trafienie. find_match_count_limit[one]=Więcej niż jedno trafienie.
@ -149,28 +191,49 @@ find_match_count_limit[many]=Więcej niż {{limit}} trafień.
find_match_count_limit[other]=Więcej niż {{limit}} trafień. find_match_count_limit[other]=Więcej niż {{limit}} trafień.
find_not_found=Nie znaleziono tekstu find_not_found=Nie znaleziono tekstu
# Error panel labels
error_more_info=Więcej informacji error_more_info=Więcej informacji
error_less_info=Mniej informacji error_less_info=Mniej informacji
error_close=Zamknij error_close=Zamknij
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (kompilacja: {{build}}) error_version_info=PDF.js v{{version}} (kompilacja: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Wiadomość: {{message}} error_message=Wiadomość: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Stos: {{stack}} error_stack=Stos: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Plik: {{file}} error_file=Plik: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Wiersz: {{line}} error_line=Wiersz: {{line}}
rendering_error=Podczas renderowania strony wystąpił błąd. rendering_error=Podczas renderowania strony wystąpił błąd.
# Predefined zoom values
page_scale_width=Szerokość strony page_scale_width=Szerokość strony
page_scale_fit=Dopasowanie strony page_scale_fit=Dopasowanie strony
page_scale_auto=Skala automatyczna page_scale_auto=Skala automatyczna
page_scale_actual=Rozmiar rzeczywisty page_scale_actual=Rozmiar rzeczywisty
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
page_scale_percent={{scale}}% page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=Błąd loading_error_indicator=Błąd
loading_error=Podczas wczytywania dokumentu PDF wystąpił błąd. loading_error=Podczas wczytywania dokumentu PDF wystąpił błąd.
invalid_file_error=Nieprawidłowy lub uszkodzony plik PDF. invalid_file_error=Nieprawidłowy lub uszkodzony plik PDF.
missing_file_error=Brak pliku PDF. missing_file_error=Brak pliku PDF.
unexpected_response_error=Nieoczekiwana odpowiedź serwera. unexpected_response_error=Nieoczekiwana odpowiedź serwera.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[Adnotacja: {{type}}] text_annotation_type.alt=[Adnotacja: {{type}}]
password_label=Wprowadź hasło, aby otworzyć ten dokument PDF. password_label=Wprowadź hasło, aby otworzyć ten dokument PDF.
password_invalid=Nieprawidłowe hasło. Proszę spróbować ponownie. password_invalid=Nieprawidłowe hasło. Proszę spróbować ponownie.

@ -226,6 +226,10 @@ invalid_file_error=Arquivo PDF corrompido ou inválido.
missing_file_error=Arquivo PDF ausente. missing_file_error=Arquivo PDF ausente.
unexpected_response_error=Resposta inesperada do servidor. unexpected_response_error=Resposta inesperada do servidor.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).
@ -238,5 +242,5 @@ password_cancel=Cancelar
printing_not_supported=Aviso: a impressão não é totalmente suportada neste navegador. printing_not_supported=Aviso: a impressão não é totalmente suportada neste navegador.
printing_not_ready=Aviso: o PDF não está totalmente carregado para impressão. printing_not_ready=Aviso: o PDF não está totalmente carregado para impressão.
web_fonts_disabled=As fontes web estão desabilitadas: não foi possível usar fontes incorporadas do PDF. web_fonts_disabled=As fontes web estão desativadas: não foi possível usar fontes incorporadas do PDF.
document_colors_not_allowed=Os documentos em PDF não estão autorizados a usar suas próprias cores: “Permitir que as páginas escolham suas próprias cores” está desabilitado no navegador. document_colors_not_allowed=Documentos PDF não estão autorizados a usar as próprias cores: a opção “Permitir que as páginas escolham suas próprias cores” está desativada no navegador.

@ -140,7 +140,7 @@ toggle_sidebar.title=Alternar barra lateral
toggle_sidebar_notification.title=Alternar barra lateral (documento contém contorno/anexos) toggle_sidebar_notification.title=Alternar barra lateral (documento contém contorno/anexos)
toggle_sidebar_label=Alternar barra lateral toggle_sidebar_label=Alternar barra lateral
document_outline.title=Mostrar esquema do documento (duplo clique para expandir/colapsar todos os itens) document_outline.title=Mostrar esquema do documento (duplo clique para expandir/colapsar todos os itens)
document_outline_label=Estrutura do documento document_outline_label=Esquema do documento
attachments.title=Mostrar anexos attachments.title=Mostrar anexos
attachments_label=Anexos attachments_label=Anexos
thumbs.title=Mostrar miniaturas thumbs.title=Mostrar miniaturas
@ -226,6 +226,10 @@ invalid_file_error=Ficheiro PDF inválido ou danificado.
missing_file_error=Ficheiro PDF inexistente. missing_file_error=Ficheiro PDF inexistente.
unexpected_response_error=Resposta inesperada do servidor. unexpected_response_error=Resposta inesperada do servidor.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -83,7 +83,7 @@ spread_even_label=Broșare pagini pare
document_properties.title=Proprietățile documentului… document_properties.title=Proprietățile documentului…
document_properties_label=Proprietățile documentului… document_properties_label=Proprietățile documentului…
document_properties_file_name=Numele fișierului: document_properties_file_name=Numele fișierului:
document_properties_file_size=Dimensiunea fișierului: document_properties_file_size=Mărimea fișierului:
# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
# will be replaced by the PDF file size in kilobytes, respectively in bytes. # will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} byți) document_properties_kb={{size_kb}} KB ({{size_b}} byți)
@ -103,7 +103,7 @@ document_properties_creator=Autor:
document_properties_producer=Producător PDF: document_properties_producer=Producător PDF:
document_properties_version=Versiune PDF: document_properties_version=Versiune PDF:
document_properties_page_count=Număr de pagini: document_properties_page_count=Număr de pagini:
document_properties_page_size=Dimensiunea paginii: document_properties_page_size=Mărimea paginii:
document_properties_page_size_unit_inches=in document_properties_page_size_unit_inches=in
document_properties_page_size_unit_millimeters=mm document_properties_page_size_unit_millimeters=mm
document_properties_page_size_orientation_portrait=portret document_properties_page_size_orientation_portrait=portret
@ -214,7 +214,7 @@ rendering_error=A intervenit o eroare la randarea paginii.
page_scale_width=Lățimea paginii page_scale_width=Lățimea paginii
page_scale_fit=Potrivire la pagină page_scale_fit=Potrivire la pagină
page_scale_auto=Zoom automat page_scale_auto=Zoom automat
page_scale_actual=Dimensiune reală page_scale_actual=Mărime reală
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value. # numerical scale value.
page_scale_percent={{scale}}% page_scale_percent={{scale}}%
@ -226,6 +226,10 @@ invalid_file_error=Fișier PDF nevalid sau corupt.
missing_file_error=Fișier PDF lipsă. missing_file_error=Fișier PDF lipsă.
unexpected_response_error=Răspuns neașteptat de la server. unexpected_response_error=Răspuns neașteptat de la server.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Некорректный или повреждённый PDF-
missing_file_error=PDF-файл отсутствует. missing_file_error=PDF-файл отсутствует.
unexpected_response_error=Неожиданный ответ сервера. unexpected_response_error=Неожиданный ответ сервера.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -58,6 +58,9 @@ page_rotate_ccw.title=වාමාවර්තව භ්‍රමණය
page_rotate_ccw.label=වාමාවර්තව භ්‍රමණය page_rotate_ccw.label=වාමාවර්තව භ්‍රමණය
page_rotate_ccw_label=වාමාවර්තව භ්‍රමණය page_rotate_ccw_label=වාමාවර්තව භ්‍රමණය
cursor_hand_tool_label=අත් මෙවලම
# Document properties dialog box # Document properties dialog box
document_properties.title=ලේඛන වත්කම්... document_properties.title=ලේඛන වත්කම්...
@ -83,11 +86,32 @@ document_properties_creator=නිර්මාපක:
document_properties_producer=PDF නිශ්පාදක: document_properties_producer=PDF නිශ්පාදක:
document_properties_version=PDF නිකුතුව: document_properties_version=PDF නිකුතුව:
document_properties_page_count=පිටු ගණන: document_properties_page_count=පිටු ගණන:
document_properties_page_size=පිටුවේ විශාලත්වය:
document_properties_page_size_unit_inches=අඟල්
document_properties_page_size_unit_millimeters=මිමි
document_properties_page_size_orientation_portrait=සිරස්
document_properties_page_size_orientation_landscape=තිරස්
document_properties_page_size_name_a3=A3
document_properties_page_size_name_a4=A4
# LOCALIZATION NOTE (document_properties_page_size_dimension_string):
# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement and orientation, of the (current) page.
document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}} ({{orientation}})
# LOCALIZATION NOTE (document_properties_page_size_dimension_name_string):
# "{{width}}", "{{height}}", {{unit}}, {{name}}, and {{orientation}} will be replaced by
# the size, respectively their unit of measurement, name, and orientation, of the (current) page.
document_properties_page_size_dimension_name_string={{width}}×{{height}}{{unit}}{{name}}{{orientation}}
# LOCALIZATION NOTE (document_properties_linearized): The linearization status of
# the document; usually called "Fast Web View" in English locales of Adobe software.
document_properties_linearized=වේගවත් ජාල දසුන:
document_properties_linearized_yes=ඔව්
document_properties_linearized_no=නැහැ
document_properties_close=වසන්න document_properties_close=වසන්න
print_progress_message=ලේඛනය මුද්‍රණය සඳහා සූදානම් කරමින්… print_progress_message=ලේඛනය මුද්‍රණය සඳහා සූදානම් කරමින්…
# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
# a numerical per cent value. # a numerical per cent value.
print_progress_percent={{progress}}%
print_progress_close=අවලංගු කරන්න print_progress_close=අවලංගු කරන්න
# Tooltips and alt text for side panel toolbar buttons # Tooltips and alt text for side panel toolbar buttons
@ -95,6 +119,7 @@ print_progress_close=අවලංගු කරන්න
# tooltips) # tooltips)
toggle_sidebar.title=පැති තීරුවට මාරුවන්න toggle_sidebar.title=පැති තීරුවට මාරුවන්න
toggle_sidebar_label=පැති තීරුවට මාරුවන්න toggle_sidebar_label=පැති තීරුවට මාරුවන්න
document_outline_label=ලේඛනයේ පිට මායිම
attachments.title=ඇමිණුම් පෙන්වන්න attachments.title=ඇමිණුම් පෙන්වන්න
attachments_label=ඇමිණුම් attachments_label=ඇමිණුම්
thumbs.title=සිඟිති රූ පෙන්වන්න thumbs.title=සිඟිති රූ පෙන්වන්න
@ -111,14 +136,25 @@ thumb_page_title=පිටුව {{page}}
thumb_page_canvas=පිටුවෙ සිඟිත රූව {{page}} thumb_page_canvas=පිටුවෙ සිඟිත රූව {{page}}
# Find panel button title and messages # Find panel button title and messages
find_input.title=සොයන්න
find_previous.title=මේ වාක්‍ය ඛණ්ඩය මීට පෙර යෙදුණු ස්ථානය සොයන්න find_previous.title=මේ වාක්‍ය ඛණ්ඩය මීට පෙර යෙදුණු ස්ථානය සොයන්න
find_previous_label=පෙර: find_previous_label=පෙර:
find_next.title=මේ වාක්‍ය ඛණ්ඩය මීළඟට යෙදෙන ස්ථානය සොයන්න find_next.title=මේ වාක්‍ය ඛණ්ඩය මීළඟට යෙදෙන ස්ථානය සොයන්න
find_next_label=මීළඟ find_next_label=මීළඟ
find_highlight=සියල්ල උද්දීපනය find_highlight=සියල්ල උද්දීපනය
find_match_case_label=අකුරු ගළපන්න find_match_case_label=අකුරු ගළපන්න
find_entire_word_label=සම්පූර්ණ වචන
find_reached_top=පිටුවේ ඉහළ කෙළවරට ලගාවිය, පහළ සිට ඉදිරියට යමින් find_reached_top=පිටුවේ ඉහළ කෙළවරට ලගාවිය, පහළ සිට ඉදිරියට යමින්
find_reached_bottom=පිටුවේ පහළ කෙළවරට ලගාවිය, ඉහළ සිට ඉදිරියට යමින් find_reached_bottom=පිටුවේ පහළ කෙළවරට ලගාවිය, ඉහළ සිට ඉදිරියට යමින්
# LOCALIZATION NOTE (find_match_count): The supported plural forms are
# [one|two|few|many|other], with [other] as the default value.
# "{{current}}" and "{{total}}" will be replaced by a number representing the
# index of the currently active find result, respectively a number representing
# the total number of matches in the document.
# LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
# [zero|one|two|few|many|other], with [other] as the default value.
# "{{limit}}" will be replaced by a numerical value.
find_match_count_limit[zero]=ගැලපුම් {{limit}} ට වඩා
find_not_found=ඔබ සෙව් වචන හමු නොවීය find_not_found=ඔබ සෙව් වචන හමු නොවීය
# Error panel labels # Error panel labels

@ -226,6 +226,10 @@ invalid_file_error=Neplatný alebo poškodený súbor PDF.
missing_file_error=Chýbajúci súbor PDF. missing_file_error=Chýbajúci súbor PDF.
unexpected_response_error=Neočakávaná odpoveď zo servera. unexpected_response_error=Neočakávaná odpoveď zo servera.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -53,12 +53,12 @@ first_page_label=Pojdi na prvo stran
last_page.title=Pojdi na zadnjo stran last_page.title=Pojdi na zadnjo stran
last_page.label=Pojdi na zadnjo stran last_page.label=Pojdi na zadnjo stran
last_page_label=Pojdi na zadnjo stran last_page_label=Pojdi na zadnjo stran
page_rotate_cw.title=Zavrti v smeri urninega kazalca page_rotate_cw.title=Zavrti v smeri urnega kazalca
page_rotate_cw.label=Zavrti v smeri urninega kazalca page_rotate_cw.label=Zavrti v smeri urnega kazalca
page_rotate_cw_label=Zavrti v smeri urninega kazalca page_rotate_cw_label=Zavrti v smeri urnega kazalca
page_rotate_ccw.title=Zavrti v nasprotni smeri urninega kazalca page_rotate_ccw.title=Zavrti v nasprotni smeri urnega kazalca
page_rotate_ccw.label=Zavrti v nasprotni smeri urninega kazalca page_rotate_ccw.label=Zavrti v nasprotni smeri urnega kazalca
page_rotate_ccw_label=Zavrti v nasprotni smeri urninega kazalca page_rotate_ccw_label=Zavrti v nasprotni smeri urnega kazalca
cursor_text_select_tool.title=Omogoči orodje za izbor besedila cursor_text_select_tool.title=Omogoči orodje za izbor besedila
cursor_text_select_tool_label=Orodje za izbor besedila cursor_text_select_tool_label=Orodje za izbor besedila
@ -226,6 +226,10 @@ invalid_file_error=Neveljavna ali pokvarjena datoteka PDF.
missing_file_error=Ni datoteke PDF. missing_file_error=Ni datoteke PDF.
unexpected_response_error=Nepričakovan odgovor strežnika. unexpected_response_error=Nepričakovan odgovor strežnika.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -219,6 +219,10 @@ invalid_file_error=Kartelë PDF e pavlefshme ose e dëmtuar.
missing_file_error=Kartelë PDF që mungon. missing_file_error=Kartelë PDF që mungon.
unexpected_response_error=Përgjigje shërbyesi e papritur. unexpected_response_error=Përgjigje shërbyesi e papritur.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Ogiltig eller korrupt PDF-fil.
missing_file_error=Saknad PDF-fil. missing_file_error=Saknad PDF-fil.
unexpected_response_error=Oväntat svar från servern. unexpected_response_error=Oväntat svar från servern.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}} {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -202,6 +202,10 @@ invalid_file_error=చెల్లని లేదా పాడైన PDF ఫై
missing_file_error=దొరకని PDF ఫైలు. missing_file_error=దొరకని PDF ఫైలు.
unexpected_response_error=అనుకోని సర్వర్ స్పందన. unexpected_response_error=అనుకోని సర్వర్ స్పందన.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=ไฟล์ PDF ไม่ถูกต้องหรือ
missing_file_error=ไฟล์ PDF หายไป missing_file_error=ไฟล์ PDF หายไป
unexpected_response_error=การตอบสนองของเซิร์ฟเวอร์ที่ไม่คาดคิด unexpected_response_error=การตอบสนองของเซิร์ฟเวอร์ที่ไม่คาดคิด
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -137,10 +137,10 @@ print_progress_close=İptal
# (the _label strings are alt text for the buttons, the .title strings are # (the _label strings are alt text for the buttons, the .title strings are
# tooltips) # tooltips)
toggle_sidebar.title=Kenar çubuğunu aç/kapat toggle_sidebar.title=Kenar çubuğunu aç/kapat
toggle_sidebar_notification.title=Kenar çubuğunu aç/kapat (Belge anahat/ekler içeriyor) toggle_sidebar_notification.title=Kenar çubuğunu aç/kapat (Belge ana hat/ekler içeriyor)
toggle_sidebar_label=Kenar çubuğunu aç/kapat toggle_sidebar_label=Kenar çubuğunu aç/kapat
document_outline.title=Belge şemasını göster (Tüm öğeleri genişletmek/daraltmak için çift tıklayın) document_outline.title=Belge ana hatlarını göster (Tüm öğeleri genişletmek/daraltmak için çift tıklayın)
document_outline_label=Belge şeması document_outline_label=Belge ana hatları
attachments.title=Ekleri göster attachments.title=Ekleri göster
attachments_label=Ekler attachments_label=Ekler
thumbs.title=Küçük resimleri göster thumbs.title=Küçük resimleri göster
@ -226,6 +226,10 @@ invalid_file_error=Geçersiz veya bozulmuş PDF dosyası.
missing_file_error=PDF dosyası eksik. missing_file_error=PDF dosyası eksik.
unexpected_response_error=Beklenmeyen sunucu yanıtı. unexpected_response_error=Beklenmeyen sunucu yanıtı.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=Недійсний або пошкоджений PDF-файл
missing_file_error=Відсутній PDF-файл. missing_file_error=Відсутній PDF-файл.
unexpected_response_error=Неочікувана відповідь сервера. unexpected_response_error=Неочікувана відповідь сервера.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -93,6 +93,7 @@ document_properties_page_size_unit_millimeters=mm
document_properties_page_size_orientation_portrait=عمودی انداز document_properties_page_size_orientation_portrait=عمودی انداز
document_properties_page_size_name_a3=A3 document_properties_page_size_name_a3=A3
document_properties_page_size_name_a4=A4 document_properties_page_size_name_a4=A4
document_properties_page_size_name_letter=خط
document_properties_page_size_name_legal=قانونی document_properties_page_size_name_legal=قانونی
# LOCALIZATION NOTE (document_properties_page_size_dimension_string): # LOCALIZATION NOTE (document_properties_page_size_dimension_string):
# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by # "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
@ -191,6 +192,9 @@ invalid_file_error=ناجائز یا خراب PDF مسل
missing_file_error=PDF مسل غائب ہے۔ missing_file_error=PDF مسل غائب ہے۔
unexpected_response_error=غیرمتوقع پیش کار جواب unexpected_response_error=غیرمتوقع پیش کار جواب
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -13,7 +13,7 @@
# limitations under the License. # limitations under the License.
# Main toolbar buttons (tooltips and alt text for images) # Main toolbar buttons (tooltips and alt text for images)
previous.title=Trang Trước previous.title=Trang trước
previous_label=Trước previous_label=Trước
next.title=Trang Sau next.title=Trang Sau
next_label=Tiếp next_label=Tiếp
@ -69,7 +69,15 @@ scroll_vertical.title=Sử dụng cuộn dọc
scroll_vertical_label=Cuộn dọc scroll_vertical_label=Cuộn dọc
scroll_horizontal.title=Sử dụng cuộn ngang scroll_horizontal.title=Sử dụng cuộn ngang
scroll_horizontal_label=Cuộn ngang scroll_horizontal_label=Cuộn ngang
scroll_wrapped.title=Sử dụng cuộn ngắt dòng
scroll_wrapped_label=Cuộn ngắt dòng
spread_none.title=Không nối rộng trang
spread_none_label=Không có phân cách
spread_odd.title=Nối trang bài bắt đầu với các trang được đánh số lẻ
spread_odd_label=Phân cách theo số lẻ
spread_even.title=Nối trang bài bắt đầu với các trang được đánh số chẵn
spread_even_label=Phân cách theo số chẵn
# Document properties dialog box # Document properties dialog box
document_properties.title=Thuộc tính của tài liệu… document_properties.title=Thuộc tính của tài liệu…
@ -102,6 +110,7 @@ document_properties_page_size_orientation_portrait=khổ dọc
document_properties_page_size_orientation_landscape=khổ ngang document_properties_page_size_orientation_landscape=khổ ngang
document_properties_page_size_name_a3=A3 document_properties_page_size_name_a3=A3
document_properties_page_size_name_a4=A4 document_properties_page_size_name_a4=A4
document_properties_page_size_name_letter=Thư
document_properties_page_size_name_legal=Pháp lý document_properties_page_size_name_legal=Pháp lý
# LOCALIZATION NOTE (document_properties_page_size_dimension_string): # LOCALIZATION NOTE (document_properties_page_size_dimension_string):
# "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by # "{{width}}", "{{height}}", {{unit}}, and {{orientation}} will be replaced by
@ -217,6 +226,10 @@ invalid_file_error=Tập tin PDF hỏng hoặc không hợp lệ.
missing_file_error=Thiếu tập tin PDF. missing_file_error=Thiếu tập tin PDF.
unexpected_response_error=Máy chủ có phản hồi lạ. unexpected_response_error=Máy chủ có phản hồi lạ.
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}, {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -226,6 +226,10 @@ invalid_file_error=无效或损坏的 PDF 文件。
missing_file_error=缺少 PDF 文件。 missing_file_error=缺少 PDF 文件。
unexpected_response_error=意外的服务器响应。 unexpected_response_error=意外的服务器响应。
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}}{{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).
@ -237,6 +241,6 @@ password_ok=确定
password_cancel=取消 password_cancel=取消
printing_not_supported=警告:此浏览器尚未完整支持打印功能。 printing_not_supported=警告:此浏览器尚未完整支持打印功能。
printing_not_ready=警告:该 PDF 未完全载入以供打印。 printing_not_ready=警告:此 PDF 未完成载入,无法打印。
web_fonts_disabled=Web 字体已被禁用:无法使用嵌入的 PDF 字体。 web_fonts_disabled=Web 字体已被禁用:无法使用嵌入的 PDF 字体。
document_colors_not_allowed=PDF 文档无法使用自己的颜色:浏览器中“允许页面选择自己的颜色”的选项未被勾选。 document_colors_not_allowed=PDF 文档无法使用自己的颜色:浏览器中“允许页面选择自己的颜色”的选项未被勾选。

@ -226,6 +226,10 @@ invalid_file_error=無效或毀損的 PDF 檔案。
missing_file_error=找不到 PDF 檔案。 missing_file_error=找不到 PDF 檔案。
unexpected_response_error=伺服器回應未預期的內容。 unexpected_response_error=伺服器回應未預期的內容。
# LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
# replaced by the modification date, and time, of the annotation.
annotation_date_string={{date}} {{time}}
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in # "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 Annotation types). # the PDF spec (32000-1:2008 Table 169 Annotation types).

@ -8,7 +8,7 @@
{{_('api_endpoint=')}}{{kobo_auth_url}}</a> {{_('api_endpoint=')}}{{kobo_auth_url}}</a>
</p> </p>
<p> <p>
{{_('Please note that every visit to this current page invalidates any previously generated Authentication url for this user.')}}</a>. {{_('Please note that every visit to this current page invalidates any previously generated Authentication url for this user.')}}</a>
</p> </p>
</div> </div>
{% endblock %} {% endblock %}

@ -44,7 +44,7 @@
<label for="query" class="sr-only">{{_('Search')}}</label> <label for="query" class="sr-only">{{_('Search')}}</label>
<input type="text" class="form-control" id="query" name="query" placeholder="{{_('Search')}}"> <input type="text" class="form-control" id="query" name="query" placeholder="{{_('Search')}}">
<span class="input-group-btn"> <span class="input-group-btn">
<button type="submit" class="btn btn-default">{{_('Go!')}}</button> <button type="submit" id="query_submit" class="btn btn-default">{{_('Go!')}}</button>
</span> </span>
</div> </div>
</form> </form>
@ -52,7 +52,7 @@
<div class="navbar-collapse collapse"> <div class="navbar-collapse collapse">
{% if g.user.is_authenticated or g.allow_anonymous %} {% if g.user.is_authenticated or g.allow_anonymous %}
<ul class="nav navbar-nav "> <ul class="nav navbar-nav ">
<li><a href="{{url_for('web.advanced_search')}}"><span class="glyphicon glyphicon-search"></span><span class="hidden-sm">{{_('Advanced Search')}}</span></a></li> <li><a href="{{url_for('web.advanced_search')}}" id="advanced_search"><span class="glyphicon glyphicon-search"></span><span class="hidden-sm">{{_('Advanced Search')}}</span></a></li>
</ul> </ul>
{% endif %} {% endif %}
<ul class="nav navbar-nav navbar-right" id="main-nav"> <ul class="nav navbar-nav navbar-right" id="main-nav">

@ -3,10 +3,10 @@
<div class="modal-dialog modal-lg" role="document"> <div class="modal-dialog modal-lg" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h4 class="modal-title hidden" id="h1">{{_('Select allowed/restricted Tags')}}</h4> <h4 class="modal-title hidden" id="h1">{{_('Select allowed/denied Tags')}}</h4>
<h4 class="modal-title hidden" id="h2">{{_('Select allowed/restricted Custom Column values')}}</h4> <h4 class="modal-title hidden" id="h2">{{_('Select allowed/denied Custom Column values')}}</h4>
<h4 class="modal-title hidden" id="h3">{{_('Select allowed/restricted Tags of user')}}</h4> <h4 class="modal-title hidden" id="h3">{{_('Select allowed/denied Tags of user')}}</h4>
<h4 class="modal-title hidden" id="h4">{{_('Select allowed/restricted Custom Column values of user')}}</h4> <h4 class="modal-title hidden" id="h4">{{_('Select allowed/denied Custom Column values of user')}}</h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<table class="table table-no-bordered" id="restrict-elements-table" data-id-field="id" data-show-header="false" data-editable-mode="inline"> <table class="table table-no-bordered" id="restrict-elements-table" data-id-field="id" data-show-header="false" data-editable-mode="inline">
@ -21,7 +21,7 @@
</table> </table>
<form id="add_restriction" action="" method="POST"> <form id="add_restriction" action="" method="POST">
<div class="form-group required"> <div class="form-group required">
<label for="add_element">{{_('Add Tag')}}</label> <label for="add_element">{{_('Add View Restriction')}}</label>
<input type="text" class="form-control" name="add_element" id="add_element" > <input type="text" class="form-control" name="add_element" id="add_element" >
</div> </div>
<div class="form-group required"> <div class="form-group required">
@ -31,7 +31,7 @@
</form> </form>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{_('Close')}}</button> <button type="button" id="restrict_close" class="btn btn-default" data-dismiss="modal">{{_('Close')}}</button>
</div> </div>
</div> </div>
</div> </div>

@ -31,20 +31,21 @@ See https://github.com/adobe-type-tools/cmap-resources
<link rel="stylesheet" href="{{ url_for('static', filename='css/libs/viewer.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='css/libs/viewer.css') }}">
<script src="{{ url_for('static', filename='js/libs/compatibility.js') }}"></script> <!--script src="{{ url_for('static', filename='js/libs/compatibility.js') }}"></script-->
<!-- This snippet is used in production (included from viewer.html) --> <!-- This snippet is used in production (included from viewer.html) -->
<script src="{{ url_for('static', filename='js/libs/pdf.js') }}"></script> <link rel="resource" type="application/l10n" href="{{ url_for('static', filename='locale/locale.properties') }}">
<script src="{{ url_for('static', filename='js/libs/pdf.js') }}"></script>
<script type="text/javascript"> <script type="text/javascript">
window.addEventListener('load', function() { window.addEventListener('load', function() {
PDFViewerApplicationOptions.set('sidebarViewOnLoad', 0); PDFViewerApplicationOptions.set('sidebarViewOnLoad', 0);
PDFViewerApplicationOptions.set('imageResourcesPath', "{{ url_for('static', filename='css/images/') }}"); PDFViewerApplicationOptions.set('imageResourcesPath', "{{ url_for('static', filename='css/images/') }}");
PDFViewerApplicationOptions.set('workerSrc', "{{ url_for('static', filename='js/libs/pdf.worker.js') }}"); PDFViewerApplicationOptions.set('workerSrc', "{{ url_for('static', filename='js/libs/pdf.worker.js') }}");
PDFViewerApplication.open("{{ url_for('web.serve_book', book_id=pdffile, book_format='pdf') }}"); PDFViewerApplicationOptions.set('defaultUrl',"{{ url_for('web.serve_book', book_id=pdffile, book_format='pdf') }}")
}); });
</script> </script>
<link rel="resource" type="application/l10n" href="{{ url_for('static', filename='locale/locale.properties') }}">
<script src="{{ url_for('static', filename='js/libs/viewer.js') }}"></script> <script src="{{ url_for('static', filename='js/libs/viewer.js') }}"></script>
</head> </head>
@ -52,7 +53,7 @@ See https://github.com/adobe-type-tools/cmap-resources
<body tabindex="1" class="loadingInProgress"> <body tabindex="1" class="loadingInProgress">
<div id="outerContainer"> <div id="outerContainer">
<div id="sidebarContainer" class=""> <div id="sidebarContainer">
<div id="toolbarSidebar"> <div id="toolbarSidebar">
<div class="splitToolbarButton toggled"> <div class="splitToolbarButton toggled">
<button id="viewThumbnail" class="toolbarButton toggled" title="Show Thumbnails" tabindex="2" data-l10n-id="thumbs"> <button id="viewThumbnail" class="toolbarButton toggled" title="Show Thumbnails" tabindex="2" data-l10n-id="thumbs">
@ -118,13 +119,14 @@ See https://github.com/adobe-type-tools/cmap-resources
<button id="secondaryOpenFile" class="secondaryToolbarButton openFile visibleLargeView" title="Open File" tabindex="52" data-l10n-id="open_file"> <button id="secondaryOpenFile" class="secondaryToolbarButton openFile visibleLargeView" title="Open File" tabindex="52" data-l10n-id="open_file">
<span data-l10n-id="open_file_label">Open</span> <span data-l10n-id="open_file_label">Open</span>
</button> </button>
{% if g.user.role_download() %}
<button id="secondaryPrint" class="secondaryToolbarButton print visibleMediumView" title="Print" tabindex="53" data-l10n-id="print"> <button id="secondaryPrint" class="secondaryToolbarButton print visibleMediumView" title="Print" tabindex="53" data-l10n-id="print">
<span data-l10n-id="print_label">Print</span> <span data-l10n-id="print_label">Print</span>
</button> </button>
<button id="secondaryDownload" class="secondaryToolbarButton download visibleMediumView" title="Download" tabindex="54" data-l10n-id="download" {% if not g.user.role_download() %} style="display:none;" {% endif %}> <button id="secondaryDownload" class="secondaryToolbarButton download visibleMediumView" title="Download" tabindex="54" data-l10n-id="download">
<span data-l10n-id="download_label">Download</span> <span data-l10n-id="download_label">Download</span>
</button> </button>
{% endif %}
<a href="#" id="secondaryViewBookmark" class="secondaryToolbarButton bookmark visibleSmallView" title="Current view (copy or open in new window)" tabindex="55" data-l10n-id="bookmark"> <a href="#" id="secondaryViewBookmark" class="secondaryToolbarButton bookmark visibleSmallView" title="Current view (copy or open in new window)" tabindex="55" data-l10n-id="bookmark">
<span data-l10n-id="bookmark_label">Current View</span> <span data-l10n-id="bookmark_label">Current View</span>
</a> </a>
@ -219,15 +221,14 @@ See https://github.com/adobe-type-tools/cmap-resources
<button id="openFile" class="toolbarButton openFile hiddenLargeView" title="Open File" tabindex="32" data-l10n-id="open_file"> <button id="openFile" class="toolbarButton openFile hiddenLargeView" title="Open File" tabindex="32" data-l10n-id="open_file">
<span data-l10n-id="open_file_label">Open</span> <span data-l10n-id="open_file_label">Open</span>
</button> </button>
{% if g.user.role_download() %}
<button id="print" class="toolbarButton print hiddenMediumView" title="Print" tabindex="33" data-l10n-id="print"> <button id="print" class="toolbarButton print hiddenMediumView" title="Print" tabindex="33" data-l10n-id="print">
<span data-l10n-id="print_label">Print</span> <span data-l10n-id="print_label">Print</span>
</button> </button>
<button id="download" class="toolbarButton download hiddenMediumView" title="Download" tabindex="34" data-l10n-id="download">
<button id="download" class="toolbarButton download hiddenMediumView" title="Download" tabindex="34" data-l10n-id="download" {% if not g.user.role_download() %} style="display:none;" {% endif %}>
<span data-l10n-id="download_label">Download</span> <span data-l10n-id="download_label">Download</span>
</button> </button>
{% endif %}
<a href="#" id="viewBookmark" class="toolbarButton bookmark hiddenSmallView" title="Current view (copy or open in new window)" tabindex="35" data-l10n-id="bookmark"> <a href="#" id="viewBookmark" class="toolbarButton bookmark hiddenSmallView" title="Current view (copy or open in new window)" tabindex="35" data-l10n-id="bookmark">
<span data-l10n-id="bookmark_label">Current View</span> <span data-l10n-id="bookmark_label">Current View</span>
</a> </a>

@ -167,7 +167,7 @@
{% endfor %} {% endfor %}
{% endif %} {% endif %}
<button type="submit" class="btn btn-default">{{_('Submit')}}</button> <button type="submit" id="adv_submit" class="btn btn-default">{{_('Submit')}}</button>
</form> </form>
</div> </div>
{% endblock %} {% endblock %}

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

@ -58,7 +58,7 @@
{% endfor %} {% endfor %}
</div> </div>
{% endif %} {% endif %}
{% if feature_support['kobo'] and not new_user %} {% if kobo_support and not new_user %}
<label>{{ _('Kobo Sync Token')}}</label> <label>{{ _('Kobo Sync Token')}}</label>
<div class="form-group col"> <div class="form-group col">
<a class="btn btn-default" id="config_create_kobo_token" data-toggle="modal" data-target="#modal_kobo_token" data-remote="false" href="{{ url_for('kobo_auth.generate_auth_token', user_id=content.id) }}">{{_('Create/View')}}</a> <a class="btn btn-default" id="config_create_kobo_token" data-toggle="modal" data-target="#modal_kobo_token" data-remote="false" href="{{ url_for('kobo_auth.generate_auth_token', user_id=content.id) }}">{{_('Create/View')}}</a>
@ -79,7 +79,7 @@
<input type="checkbox" name="Show_detail_random" id="Show_detail_random" {% if content.show_detail_random() %}checked{% endif %}> <input type="checkbox" name="Show_detail_random" id="Show_detail_random" {% if content.show_detail_random() %}checked{% endif %}>
<label for="Show_detail_random">{{_('Show random books in detail view')}}</label> <label for="Show_detail_random">{{_('Show random books in detail view')}}</label>
</div> </div>
{% if ( g.user and g.user.role_admin() ) %} {% if ( g.user and g.user.role_admin() and not new_user ) %}
<a href="#" id="get_user_tags" class="btn btn-default" data-toggle="modal" data-target="#restrictModal">{{_('Add allowed/denied Tags')}}</a> <a href="#" id="get_user_tags" class="btn btn-default" data-toggle="modal" data-target="#restrictModal">{{_('Add allowed/denied Tags')}}</a>
<a href="#" id="get_user_column_values" class="btn btn-default" data-toggle="modal" data-target="#restrictModal">{{_('Add allowed/denied custom column values')}}</a> <a href="#" id="get_user_column_values" class="btn btn-default" data-toggle="modal" data-target="#restrictModal">{{_('Add allowed/denied custom column values')}}</a>
{% endif %} {% endif %}

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2020-01-20 20:31+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2020-01-08 11:37+0000\n" "PO-Revision-Date: 2020-01-08 11:37+0000\n"
"Last-Translator: Lukas Heroudek <lukas.heroudek@gmail.com>\n" "Last-Translator: Lukas Heroudek <lukas.heroudek@gmail.com>\n"
"Language: cs_CZ\n" "Language: cs_CZ\n"
@ -79,7 +79,7 @@ msgstr "Byl nalezen existující účet pro tuto e-mailovou adresu nebo přezdí
#: cps/admin.py:489 #: cps/admin.py:489
#, python-format #, python-format
msgid "User '%(user)s' created" msgid "User '%(user)s' created"
msgstr "Uživatel %(user)s vytvořen" msgstr "Uživatel '%(user)s' vytvořen"
#: cps/admin.py:509 #: cps/admin.py:509
msgid "Edit e-mail server settings" msgid "Edit e-mail server settings"
@ -147,55 +147,55 @@ msgstr "Neznámá chyba. Opakujte prosím později."
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "Nejprve nakonfigurujte nastavení pošty SMTP..." msgstr "Nejprve nakonfigurujte nastavení pošty SMTP..."
#: cps/admin.py:674 #: cps/admin.py:675
msgid "Logfile viewer" msgid "Logfile viewer"
msgstr "Prohlížeč log souborů" msgstr "Prohlížeč log souborů"
#: cps/admin.py:710 #: cps/admin.py:714
msgid "Requesting update package" msgid "Requesting update package"
msgstr "Požadování balíčku aktualizace" msgstr "Požadování balíčku aktualizace"
#: cps/admin.py:711 #: cps/admin.py:715
msgid "Downloading update package" msgid "Downloading update package"
msgstr "Stahování balíčku aktualizace" msgstr "Stahování balíčku aktualizace"
#: cps/admin.py:712 #: cps/admin.py:716
msgid "Unzipping update package" msgid "Unzipping update package"
msgstr "Rozbalování balíčku aktualizace" msgstr "Rozbalování balíčku aktualizace"
#: cps/admin.py:713 #: cps/admin.py:717
msgid "Replacing files" msgid "Replacing files"
msgstr "Nahrazování souborů" msgstr "Nahrazování souborů"
#: cps/admin.py:714 #: cps/admin.py:718
msgid "Database connections are closed" msgid "Database connections are closed"
msgstr "Databázová připojení jsou uzavřena" msgstr "Databázová připojení jsou uzavřena"
#: cps/admin.py:715 #: cps/admin.py:719
msgid "Stopping server" msgid "Stopping server"
msgstr "Zastavuji server" msgstr "Zastavuji server"
#: cps/admin.py:716 #: cps/admin.py:720
msgid "Update finished, please press okay and reload page" msgid "Update finished, please press okay and reload page"
msgstr "Aktualizace dokončena, klepněte na tlačítko OK a znovu načtěte stránku" msgstr "Aktualizace dokončena, klepněte na tlačítko OK a znovu načtěte stránku"
#: cps/admin.py:717 cps/admin.py:718 cps/admin.py:719 cps/admin.py:720 #: cps/admin.py:721 cps/admin.py:722 cps/admin.py:723 cps/admin.py:724
msgid "Update failed:" msgid "Update failed:"
msgstr "Aktualizace selhala:" msgstr "Aktualizace selhala:"
#: cps/admin.py:717 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459 #: cps/admin.py:721 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459
msgid "HTTP Error" msgid "HTTP Error"
msgstr "HTTP chyba" msgstr "HTTP chyba"
#: cps/admin.py:718 cps/updater.py:274 cps/updater.py:461 #: cps/admin.py:722 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "Chyba připojení" msgstr "Chyba připojení"
#: cps/admin.py:719 cps/updater.py:276 cps/updater.py:463 #: cps/admin.py:723 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
msgstr "Vypršel časový limit při navazování spojení" msgstr "Vypršel časový limit při navazování spojení"
#: cps/admin.py:720 cps/updater.py:278 cps/updater.py:465 #: cps/admin.py:724 cps/updater.py:278 cps/updater.py:465
msgid "General error" msgid "General error"
msgstr "Všeobecná chyba" msgstr "Všeobecná chyba"
@ -205,7 +205,7 @@ msgstr "není nakonfigurováno"
#: cps/editbooks.py:214 cps/editbooks.py:396 #: cps/editbooks.py:214 cps/editbooks.py:396
msgid "Error opening eBook. File does not exist or file is not accessible" msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "Chyba otevírání eKnihy. Soubor neexistuje nebo není přístupný" msgstr "Chyba otevírání eknihy. Soubor neexistuje nebo není přístupný"
#: cps/editbooks.py:242 #: cps/editbooks.py:242
msgid "edit metadata" msgid "edit metadata"
@ -214,11 +214,11 @@ msgstr "upravit metadata"
#: cps/editbooks.py:321 cps/editbooks.py:569 #: cps/editbooks.py:321 cps/editbooks.py:569
#, python-format #, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "Soubor s příponou %(ext)s nelze odeslat na tento server" msgstr "Soubor s příponou '%(ext)s' nelze odeslat na tento server"
#: cps/editbooks.py:325 cps/editbooks.py:573 #: cps/editbooks.py:325 cps/editbooks.py:573
msgid "File to be uploaded must have an extension" msgid "File to be uploaded must have an extension"
msgstr "Soubor, který má být odeslán, musí mít příponu" msgstr "Soubor, který má být odeslán musí mít příponu"
#: cps/editbooks.py:337 cps/editbooks.py:607 #: cps/editbooks.py:337 cps/editbooks.py:607
#, python-format #, python-format
@ -296,7 +296,7 @@ msgstr "Při převodu této knihy došlo k chybě: %(res)s"
#: cps/gdrive.py:62 #: cps/gdrive.py:62
msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again"
msgstr "Google Drive nastavení nebylo dokončeno, zkuste znovu deaktivovat a aktivovat Google Drive" msgstr "Google Drive nastavení nebylo dokončeno, zkuste znovu deaktivovat a aktivovat Google Drive"
#: cps/gdrive.py:104 #: cps/gdrive.py:104
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"
@ -366,17 +366,17 @@ msgstr "Požadovaný soubor nelze přečíst. Možná nesprávná oprávnění?"
#: cps/helper.py:322 #: cps/helper.py:322
#, python-format #, python-format
msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
msgstr "Přejmenování názvu z: %(src)s na %(dest)s' selhalo chybou: %(error)s" msgstr "Přejmenování názvu z: '%(src)s' na '%(dest)s' selhalo chybou: %(error)s"
#: cps/helper.py:332 #: cps/helper.py:332
#, python-format #, 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 "Přejmenovat autora z: %(src)s na %(dest)s selhalo chybou: %(error)s" msgstr "Přejmenovat autora z: '%(src)s' na '%(dest)s' selhalo chybou: %(error)s"
#: cps/helper.py:346 #: cps/helper.py:346
#, python-format #, python-format
msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s"
msgstr "Přejmenování souboru v cestě %(src)s na %(dest)s selhalo chybou: %(error)s" msgstr "Přejmenování souboru v cestě '%(src)s' na '%(dest)s' selhalo chybou: %(error)s"
#: cps/helper.py:372 cps/helper.py:382 cps/helper.py:390 #: cps/helper.py:372 cps/helper.py:382 cps/helper.py:390
#, python-format #, python-format
@ -528,7 +528,7 @@ msgstr "Lituji, nejste oprávněni odebrat knihu z této police: %(sname)s"
#: cps/shelf.py:207 cps/shelf.py:231 #: cps/shelf.py:207 cps/shelf.py:231
#, python-format #, python-format
msgid "A shelf with the name '%(title)s' already exists." msgid "A shelf with the name '%(title)s' already exists."
msgstr "Police s názvem %(title)s již existuje." msgstr "Police s názvem '%(title)s' již existuje."
#: cps/shelf.py:212 #: cps/shelf.py:212
#, python-format #, python-format
@ -555,7 +555,7 @@ msgstr "Upravit polici"
#: cps/shelf.py:289 #: cps/shelf.py:289
#, python-format #, python-format
msgid "Shelf: '%(name)s'" msgid "Shelf: '%(name)s'"
msgstr "Police: %(name)s" msgstr "Police: '%(name)s'"
#: cps/shelf.py:292 #: cps/shelf.py:292
msgid "Error opening shelf. Shelf does not exist or is not accessible" msgid "Error opening shelf. Shelf does not exist or is not accessible"
@ -564,7 +564,7 @@ msgstr "Chyba otevírání police. Police neexistuje nebo není přístupná"
#: cps/shelf.py:323 #: cps/shelf.py:323
#, python-format #, python-format
msgid "Change order of Shelf: '%(name)s'" msgid "Change order of Shelf: '%(name)s'"
msgstr "Změnit pořadí Police: %(name)s" msgstr "Změnit pořadí Police: '%(name)s'"
#: cps/ub.py:57 #: cps/ub.py:57
msgid "Recently Added" msgid "Recently Added"
@ -858,7 +858,7 @@ msgstr "Nelze aktivovat ověření LDAP"
#: cps/web.py:1151 cps/web.py:1278 #: cps/web.py:1151 cps/web.py:1278
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "nyní jste přihlášeni jako: %(nickname)s" msgstr "nyní jste přihlášeni jako: '%(nickname)s'"
#: cps/web.py:1156 #: cps/web.py:1156
msgid "Could not login. LDAP server down, please contact your administrator" msgid "Could not login. LDAP server down, please contact your administrator"
@ -1153,7 +1153,7 @@ msgstr "Převést formát knihy:"
#: cps/templates/book_edit.html:30 #: cps/templates/book_edit.html:30
msgid "Convert from:" msgid "Convert from:"
msgstr "Převest z:" msgstr "Převést z:"
#: cps/templates/book_edit.html:32 cps/templates/book_edit.html:39 #: cps/templates/book_edit.html:32 cps/templates/book_edit.html:39
msgid "select an option" msgid "select an option"
@ -1165,7 +1165,7 @@ msgstr "Převést do:"
#: cps/templates/book_edit.html:46 #: cps/templates/book_edit.html:46
msgid "Convert book" msgid "Convert book"
msgstr "Převest knihu" msgstr "Převést knihu"
#: cps/templates/book_edit.html:55 cps/templates/search_form.html:6 #: cps/templates/book_edit.html:55 cps/templates/search_form.html:6
msgid "Book Title" msgid "Book Title"
@ -1341,7 +1341,7 @@ msgstr "Server port"
#: cps/templates/config_edit.html:91 #: cps/templates/config_edit.html:91
msgid "SSL certfile location (leave it empty for non-SSL Servers)" msgid "SSL certfile location (leave it empty for non-SSL Servers)"
msgstr "Umístění certifikátu SSL (ponechejte prázdné u serverů jiných než SSL)" msgstr "Umístění certifikátu SSL (ponechte prázdné pro servery jiné než SSL)"
#: cps/templates/config_edit.html:95 #: cps/templates/config_edit.html:95
msgid "SSL Keyfile location (leave it empty for non-SSL Servers)" msgid "SSL Keyfile location (leave it empty for non-SSL Servers)"
@ -1405,7 +1405,7 @@ msgstr "Povolit veřejnou registraci"
#: cps/templates/config_edit.html:170 #: cps/templates/config_edit.html:170
msgid "Enable remote login (\"magic link\")" msgid "Enable remote login (\"magic link\")"
msgstr "Povolit vzdálené přihlášení (\\“magic link\\”)" msgstr "Povolit vzdálené přihlášení (\\\"magic link\\\")"
#: cps/templates/config_edit.html:175 #: cps/templates/config_edit.html:175
msgid "Use Goodreads" msgid "Use Goodreads"
@ -1495,12 +1495,12 @@ msgstr "Obtain %(provider)s OAuth Credential"
#: cps/templates/config_edit.html:263 #: cps/templates/config_edit.html:263
#, python-format #, python-format
msgid "%(provider)s OAuth Client Id" msgid "%(provider)s OAuth Client Id"
msgstr "%(provider)s OAuth Client Id" msgstr "%(provider)s OAuth Klient Id"
#: cps/templates/config_edit.html:267 #: cps/templates/config_edit.html:267
#, python-format #, python-format
msgid "%(provider)s OAuth Client Secret" msgid "%(provider)s OAuth Client Secret"
msgstr "%(provider)s OAuth Client Secret" msgstr "%(provider)s OAuth Klient Tajemství"
#: cps/templates/config_edit.html:276 #: cps/templates/config_edit.html:276
msgid "Allow Reverse Proxy Authentication" msgid "Allow Reverse Proxy Authentication"
@ -1532,7 +1532,7 @@ msgstr "Nastavení převaděče eknih"
#: cps/templates/config_edit.html:312 #: cps/templates/config_edit.html:312
msgid "Path to convertertool" msgid "Path to convertertool"
msgstr "Cesta k převáděči" msgstr "Cesta k převaděči"
#: cps/templates/config_edit.html:318 #: cps/templates/config_edit.html:318
msgid "Location of Unrar binary" msgid "Location of Unrar binary"
@ -1577,7 +1577,7 @@ msgstr "Regulární výraz pro ignorování sloupců"
#: cps/templates/config_view_edit.html:46 #: cps/templates/config_view_edit.html:46
msgid "Link read/unread status to Calibre column" msgid "Link read/unread status to Calibre column"
msgstr "Propojit stav čtení/nepřečtení do sloupce Calibre" msgstr "Propojit stav čtení/nepřečtení do sloupce Calibre"
#: cps/templates/config_view_edit.html:55 #: cps/templates/config_view_edit.html:55
msgid "Regular expression for title sorting" msgid "Regular expression for title sorting"
@ -1625,7 +1625,7 @@ msgstr "Povolit úpravy veřejných polic"
#: cps/templates/config_view_edit.html:119 #: cps/templates/config_view_edit.html:119
msgid "Default visibilities for new users" msgid "Default visibilities for new users"
msgstr "Výchozí viditelnosti pro nové uživatele" msgstr "Výchozí zobrazení pro nové uživatele"
#: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:76 #: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:76
msgid "Show random books in detail view" msgid "Show random books in detail view"
@ -2337,7 +2337,7 @@ msgstr "Nedávná stahování"
#~ msgstr "Prohlížeč PDF.js" #~ msgstr "Prohlížeč PDF.js"
#~ msgid "Preparing document for printing..." #~ msgid "Preparing document for printing..."
#~ msgstr "Příprava dokumentu pro tisk" #~ msgstr "Příprava dokumentu pro tisk..."
#~ msgid "Using your another device, visit" #~ msgid "Using your another device, visit"
#~ msgstr "Pomocí jiného zařízení navštivte" #~ msgstr "Pomocí jiného zařízení navštivte"
@ -3315,7 +3315,7 @@ msgstr "Nedávná stahování"
#~ msgstr "Selkup" #~ msgstr "Selkup"
#~ msgid "Irish; Old (to 900)" #~ msgid "Irish; Old (to 900)"
#~ msgstr "Irlandese antico (fino al 900)" #~ msgstr "Irlandese antico (fino al 900)"
#~ msgid "Shan" #~ msgid "Shan"
#~ msgstr "Shan" #~ msgstr "Shan"

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2020-01-18 12:54+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2020-01-18 12:52+0100\n" "PO-Revision-Date: 2020-01-18 12:52+0100\n"
"Last-Translator: Ozzie Isaacs\n" "Last-Translator: Ozzie Isaacs\n"
"Language: de\n" "Language: de\n"
@ -148,55 +148,55 @@ msgstr "Es ist ein unbekannter Fehler aufgetreten. Bitte später erneut versuche
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "Bitte zuerst die SMTP-Einstellung konfigurieren ..." msgstr "Bitte zuerst die SMTP-Einstellung konfigurieren ..."
#: cps/admin.py:674 #: cps/admin.py:675
msgid "Logfile viewer" msgid "Logfile viewer"
msgstr "Logdatei Anzeige" msgstr "Logdatei Anzeige"
#: cps/admin.py:710 #: cps/admin.py:714
msgid "Requesting update package" msgid "Requesting update package"
msgstr "Frage Update an" msgstr "Frage Update an"
#: cps/admin.py:711 #: cps/admin.py:715
msgid "Downloading update package" msgid "Downloading update package"
msgstr "Lade Update herunter" msgstr "Lade Update herunter"
#: cps/admin.py:712 #: cps/admin.py:716
msgid "Unzipping update package" msgid "Unzipping update package"
msgstr "Entpacke Update" msgstr "Entpacke Update"
#: cps/admin.py:713 #: cps/admin.py:717
msgid "Replacing files" msgid "Replacing files"
msgstr "Ersetze Dateien" msgstr "Ersetze Dateien"
#: cps/admin.py:714 #: cps/admin.py:718
msgid "Database connections are closed" msgid "Database connections are closed"
msgstr "Schließe Datenbankverbindungen" msgstr "Schließe Datenbankverbindungen"
#: cps/admin.py:715 #: cps/admin.py:719
msgid "Stopping server" msgid "Stopping server"
msgstr "Stoppe Server" msgstr "Stoppe Server"
#: cps/admin.py:716 #: cps/admin.py:720
msgid "Update finished, please press okay and reload page" msgid "Update finished, please press okay and reload page"
msgstr "Update abgeschlossen, bitte okay drücken und Seite neu laden" msgstr "Update abgeschlossen, bitte okay drücken und Seite neu laden"
#: cps/admin.py:717 cps/admin.py:718 cps/admin.py:719 cps/admin.py:720 #: cps/admin.py:721 cps/admin.py:722 cps/admin.py:723 cps/admin.py:724
msgid "Update failed:" msgid "Update failed:"
msgstr "Update fehlgeschlagen:" msgstr "Update fehlgeschlagen:"
#: cps/admin.py:717 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459 #: cps/admin.py:721 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459
msgid "HTTP Error" msgid "HTTP Error"
msgstr "HTTP Fehler" msgstr "HTTP Fehler"
#: cps/admin.py:718 cps/updater.py:274 cps/updater.py:461 #: cps/admin.py:722 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "Verbindungsfehler" msgstr "Verbindungsfehler"
#: cps/admin.py:719 cps/updater.py:276 cps/updater.py:463 #: cps/admin.py:723 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
msgstr "Timeout beim Verbindungsaufbau" msgstr "Timeout beim Verbindungsaufbau"
#: cps/admin.py:720 cps/updater.py:278 cps/updater.py:465 #: cps/admin.py:724 cps/updater.py:278 cps/updater.py:465
msgid "General error" msgid "General error"
msgstr "Allgemeiner Fehler" msgstr "Allgemeiner Fehler"

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2020-01-12 13:57+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2019-07-26 11:44+0100\n" "PO-Revision-Date: 2019-07-26 11:44+0100\n"
"Last-Translator: minakmostoles <xxx@xxx.com>\n" "Last-Translator: minakmostoles <xxx@xxx.com>\n"
"Language: es\n" "Language: es\n"
@ -62,7 +62,7 @@ msgstr "Configuración de Calibre-Web actualizada"
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "Configuración básica" msgstr "Configuración básica"
#: cps/admin.py:465 cps/web.py:1093 #: cps/admin.py:465 cps/web.py:1090
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "¡Por favor completar todos los campos!" msgstr "¡Por favor completar todos los campos!"
@ -71,7 +71,7 @@ msgstr "¡Por favor completar todos los campos!"
msgid "Add new user" msgid "Add new user"
msgstr "Agregar un nuevo usuario" msgstr "Agregar un nuevo usuario"
#: cps/admin.py:476 cps/web.py:1318 #: cps/admin.py:476 cps/web.py:1315
msgid "E-mail is not from valid domain" msgid "E-mail is not from valid domain"
msgstr "El correo electrónico no tiene un nombre de dominio válido" msgstr "El correo electrónico no tiene un nombre de dominio válido"
@ -115,16 +115,16 @@ msgstr "Usuario '%(nick)s' borrado"
msgid "No admin user remaining, can't delete user" msgid "No admin user remaining, can't delete user"
msgstr "No queda ningún usuario administrador, no se puede eliminar usuario" msgstr "No queda ningún usuario administrador, no se puede eliminar usuario"
#: cps/admin.py:612 cps/web.py:1359 #: cps/admin.py:612 cps/web.py:1356
msgid "Found an existing account for this e-mail address." msgid "Found an existing account for this e-mail address."
msgstr "Encontrada una cuenta existente para esa dirección de correo electrónico." msgstr "Encontrada una cuenta existente para esa dirección de correo electrónico."
#: cps/admin.py:616 cps/admin.py:630 cps/admin.py:644 cps/web.py:1334 #: cps/admin.py:616 cps/admin.py:630 cps/admin.py:644 cps/web.py:1331
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "Editar Usuario %(nick)s" msgstr "Editar Usuario %(nick)s"
#: cps/admin.py:622 cps/web.py:1327 #: cps/admin.py:622 cps/web.py:1324
msgid "This username is already taken" msgid "This username is already taken"
msgstr "" msgstr ""
@ -142,63 +142,63 @@ msgstr "Ocurrió un error inesperado."
msgid "Password for user %(user)s reset" msgid "Password for user %(user)s reset"
msgstr "Contraseña para el usuario %(user)s reinicializada" msgstr "Contraseña para el usuario %(user)s reinicializada"
#: cps/admin.py:660 cps/web.py:1118 cps/web.py:1174 #: cps/admin.py:660 cps/web.py:1115 cps/web.py:1171
msgid "An unknown error occurred. Please try again later." msgid "An unknown error occurred. Please try again later."
msgstr "Ha ocurrido un error desconocido. Por favor vuelva a intentarlo más tarde." msgstr "Ha ocurrido un error desconocido. Por favor vuelva a intentarlo más tarde."
#: cps/admin.py:663 cps/web.py:1062 #: cps/admin.py:663 cps/web.py:1059
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "Configura primero los parámetros del servidor SMTP..." msgstr "Configura primero los parámetros del servidor SMTP..."
#: cps/admin.py:674 #: cps/admin.py:675
msgid "Logfile viewer" msgid "Logfile viewer"
msgstr "Visor del fichero de log" msgstr "Visor del fichero de log"
#: cps/admin.py:710 #: cps/admin.py:714
msgid "Requesting update package" msgid "Requesting update package"
msgstr "Solicitando paquete de actualización" msgstr "Solicitando paquete de actualización"
#: cps/admin.py:711 #: cps/admin.py:715
msgid "Downloading update package" msgid "Downloading update package"
msgstr "Descargando paquete de actualización" msgstr "Descargando paquete de actualización"
#: cps/admin.py:712 #: cps/admin.py:716
msgid "Unzipping update package" msgid "Unzipping update package"
msgstr "Descomprimiendo paquete de actualización" msgstr "Descomprimiendo paquete de actualización"
#: cps/admin.py:713 #: cps/admin.py:717
msgid "Replacing files" msgid "Replacing files"
msgstr "Remplazando ficheros" msgstr "Remplazando ficheros"
#: cps/admin.py:714 #: cps/admin.py:718
msgid "Database connections are closed" msgid "Database connections are closed"
msgstr "Los conexiones de base datos están cerradas" msgstr "Los conexiones de base datos están cerradas"
#: cps/admin.py:715 #: cps/admin.py:719
msgid "Stopping server" msgid "Stopping server"
msgstr "Parando servidor" msgstr "Parando servidor"
#: cps/admin.py:716 #: cps/admin.py:720
msgid "Update finished, please press okay and reload page" msgid "Update finished, please press okay and reload page"
msgstr "Actualización finalizada. Por favor, pulse OK y recargue la página" msgstr "Actualización finalizada. Por favor, pulse OK y recargue la página"
#: cps/admin.py:717 cps/admin.py:718 cps/admin.py:719 cps/admin.py:720 #: cps/admin.py:721 cps/admin.py:722 cps/admin.py:723 cps/admin.py:724
msgid "Update failed:" msgid "Update failed:"
msgstr "Fallo al actualizar" msgstr "Fallo al actualizar"
#: cps/admin.py:717 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459 #: cps/admin.py:721 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459
msgid "HTTP Error" msgid "HTTP Error"
msgstr "Error HTTP" msgstr "Error HTTP"
#: cps/admin.py:718 cps/updater.py:274 cps/updater.py:461 #: cps/admin.py:722 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "Error de conexión" msgstr "Error de conexión"
#: cps/admin.py:719 cps/updater.py:276 cps/updater.py:463 #: cps/admin.py:723 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
msgstr "Tiempo agotado mientras se trataba de establecer la conexión" msgstr "Tiempo agotado mientras se trataba de establecer la conexión"
#: cps/admin.py:720 cps/updater.py:278 cps/updater.py:465 #: cps/admin.py:724 cps/updater.py:278 cps/updater.py:465
msgid "General error" msgid "General error"
msgstr "Error general" msgstr "Error general"
@ -594,7 +594,7 @@ msgid "Show best rated books"
msgstr "Mostrar libros mejor valorados" msgstr "Mostrar libros mejor valorados"
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67 #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
#: cps/web.py:1011 #: cps/web.py:1009
msgid "Read Books" msgid "Read Books"
msgstr "Libros leídos" msgstr "Libros leídos"
@ -603,7 +603,7 @@ msgid "Show read and unread"
msgstr "Mostrar leídos y no leídos" msgstr "Mostrar leídos y no leídos"
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71 #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
#: cps/web.py:1015 #: cps/web.py:1013
msgid "Unread Books" msgid "Unread Books"
msgstr "Libros no leídos" msgstr "Libros no leídos"
@ -725,7 +725,7 @@ msgstr "Libros"
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "Libros populares (los más descargados)" msgstr "Libros populares (los más descargados)"
#: cps/web.py:586 cps/web.py:1382 cps/web.py:1478 #: cps/web.py:586 cps/web.py:1379 cps/web.py:1475
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Error al abrir eBook. El archivo no existe o no es accesible:" msgstr "Error al abrir eBook. El archivo no existe o no es accesible:"
@ -793,128 +793,128 @@ msgid "Tasks"
msgstr "Tareas" msgstr "Tareas"
#: cps/templates/feed.xml:33 cps/templates/layout.html:44 #: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45 cps/web.py:829 cps/web.py:831 #: cps/templates/layout.html:45 cps/web.py:827 cps/web.py:829
msgid "Search" msgid "Search"
msgstr "Buscar" msgstr "Buscar"
#: cps/web.py:881 #: cps/web.py:879
msgid "Published after " msgid "Published after "
msgstr "Publicado después de" msgstr "Publicado después de"
#: cps/web.py:888 #: cps/web.py:886
msgid "Published before " msgid "Published before "
msgstr "Publicado antes de" msgstr "Publicado antes de"
#: cps/web.py:902 #: cps/web.py:900
#, python-format #, python-format
msgid "Rating <= %(rating)s" msgid "Rating <= %(rating)s"
msgstr "Calificación <= %(rating)s" msgstr "Calificación <= %(rating)s"
#: cps/web.py:904 #: cps/web.py:902
#, python-format #, python-format
msgid "Rating >= %(rating)s" msgid "Rating >= %(rating)s"
msgstr "Calificación >= %(rating)s" msgstr "Calificación >= %(rating)s"
#: cps/web.py:970 cps/web.py:982 #: cps/web.py:968 cps/web.py:980
msgid "search" msgid "search"
msgstr "búsqueda" msgstr "búsqueda"
#: cps/web.py:1067 #: cps/web.py:1064
#, python-format #, python-format
msgid "Book successfully queued for sending to %(kindlemail)s" msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Libro puesto en la cola de envío a %(kindlemail)s" msgstr "Libro puesto en la cola de envío a %(kindlemail)s"
#: cps/web.py:1071 #: cps/web.py:1068
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "Ha sucedido un error en el envío del libro: %(res)s" msgstr "Ha sucedido un error en el envío del libro: %(res)s"
#: cps/web.py:1073 #: cps/web.py:1070
msgid "Please configure your kindle e-mail address first..." msgid "Please configure your kindle e-mail address first..."
msgstr "Por favor configure primero la dirección de correo de su kindle..." msgstr "Por favor configure primero la dirección de correo de su kindle..."
#: cps/web.py:1087 #: cps/web.py:1084
msgid "E-Mail server is not configured, please contact your administrator!" msgid "E-Mail server is not configured, please contact your administrator!"
msgstr "" msgstr ""
#: cps/web.py:1088 cps/web.py:1094 cps/web.py:1119 cps/web.py:1123 #: cps/web.py:1085 cps/web.py:1091 cps/web.py:1116 cps/web.py:1120
#: cps/web.py:1128 cps/web.py:1132 #: cps/web.py:1125 cps/web.py:1129
msgid "register" msgid "register"
msgstr "registrarse" msgstr "registrarse"
#: cps/web.py:1121 #: cps/web.py:1118
msgid "Your e-mail is not allowed to register" msgid "Your e-mail is not allowed to register"
msgstr "Su correo electrónico no está permitido para registrarse" msgstr "Su correo electrónico no está permitido para registrarse"
#: cps/web.py:1124 #: cps/web.py:1121
msgid "Confirmation e-mail was send to your e-mail account." msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Se ha enviado un correo electrónico de verificación a su cuenta de correo electrónico." msgstr "Se ha enviado un correo electrónico de verificación a su cuenta de correo electrónico."
#: cps/web.py:1127 #: cps/web.py:1124
msgid "This username or e-mail address is already in use." msgid "This username or e-mail address is already in use."
msgstr "Este nombre de usuario o correo electrónico ya están en uso." msgstr "Este nombre de usuario o correo electrónico ya están en uso."
#: cps/web.py:1144 #: cps/web.py:1141
msgid "Cannot activate LDAP authentication" msgid "Cannot activate LDAP authentication"
msgstr "No se puede activar la autenticación LDAP" msgstr "No se puede activar la autenticación LDAP"
#: cps/web.py:1154 cps/web.py:1281 #: cps/web.py:1151 cps/web.py:1278
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "Sesión iniciada como : '%(nickname)s'" msgstr "Sesión iniciada como : '%(nickname)s'"
#: cps/web.py:1159 #: cps/web.py:1156
msgid "Could not login. LDAP server down, please contact your administrator" msgid "Could not login. LDAP server down, please contact your administrator"
msgstr "No pude entrar a la cuenta. El servidor LDAP está inactivo, por favor contacte a su administrador" msgstr "No pude entrar a la cuenta. El servidor LDAP está inactivo, por favor contacte a su administrador"
#: cps/web.py:1163 cps/web.py:1186 #: cps/web.py:1160 cps/web.py:1183
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "Usuario o contraseña inválido" msgstr "Usuario o contraseña inválido"
#: cps/web.py:1170 #: cps/web.py:1167
msgid "New Password was send to your email address" msgid "New Password was send to your email address"
msgstr "" msgstr ""
#: cps/web.py:1176 #: cps/web.py:1173
msgid "Please enter valid username to reset password" msgid "Please enter valid username to reset password"
msgstr "" msgstr ""
#: cps/web.py:1182 #: cps/web.py:1179
#, python-format #, python-format
msgid "You are now logged in as: '%(nickname)s'" msgid "You are now logged in as: '%(nickname)s'"
msgstr "Ahora estás conectado como: '%(nickname)s'" msgstr "Ahora estás conectado como: '%(nickname)s'"
#: cps/web.py:1189 cps/web.py:1213 #: cps/web.py:1186 cps/web.py:1210
msgid "login" msgid "login"
msgstr "Iniciar sesión" msgstr "Iniciar sesión"
#: cps/web.py:1225 cps/web.py:1259 #: cps/web.py:1222 cps/web.py:1256
msgid "Token not found" msgid "Token not found"
msgstr "Token no encontrado" msgstr "Token no encontrado"
#: cps/web.py:1234 cps/web.py:1267 #: cps/web.py:1231 cps/web.py:1264
msgid "Token has expired" msgid "Token has expired"
msgstr "El token ha expirado" msgstr "El token ha expirado"
#: cps/web.py:1243 #: cps/web.py:1240
msgid "Success! Please return to your device" msgid "Success! Please return to your device"
msgstr "¡Correcto! Por favor regrese a su dispositivo" msgstr "¡Correcto! Por favor regrese a su dispositivo"
#: cps/web.py:1320 cps/web.py:1363 cps/web.py:1369 #: cps/web.py:1317 cps/web.py:1360 cps/web.py:1366
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "Perfil de %(name)s" msgstr "Perfil de %(name)s"
#: cps/web.py:1365 #: cps/web.py:1362
msgid "Profile updated" msgid "Profile updated"
msgstr "Perfil actualizado" msgstr "Perfil actualizado"
#: cps/web.py:1394 cps/web.py:1397 cps/web.py:1400 cps/web.py:1407 #: cps/web.py:1391 cps/web.py:1394 cps/web.py:1397 cps/web.py:1404
#: cps/web.py:1412 #: cps/web.py:1409
msgid "Read a Book" msgid "Read a Book"
msgstr "Leer un libro" msgstr "Leer un libro"
#: cps/web.py:1423 #: cps/web.py:1420
msgid "Error opening eBook. File does not exist or file is not accessible." msgid "Error opening eBook. File does not exist or file is not accessible."
msgstr "Error al abrir el eBook. El archivo no existe o el archivo no es accesible." msgstr "Error al abrir el eBook. El archivo no existe o el archivo no es accesible."
@ -1101,7 +1101,7 @@ msgstr "Ok"
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:92 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:92
#: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/layout.html:28 cps/templates/shelf.html:73
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
#: cps/templates/user_edit.html:131 #: cps/templates/user_edit.html:133
msgid "Back" msgid "Back"
msgstr "Regresar" msgstr "Regresar"
@ -1214,7 +1214,7 @@ msgstr "Fecha de publicación"
msgid "Publisher" msgid "Publisher"
msgstr "Editor" msgstr "Editor"
#: cps/templates/book_edit.html:103 cps/templates/user_edit.html:30 #: cps/templates/book_edit.html:103 cps/templates/user_edit.html:31
msgid "Language" msgid "Language"
msgstr "Idioma" msgstr "Idioma"
@ -1241,7 +1241,7 @@ msgstr "Obtener metadatos"
#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329 #: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329
#: cps/templates/config_view_edit.html:146 cps/templates/login.html:20 #: cps/templates/config_view_edit.html:146 cps/templates/login.html:20
#: cps/templates/search_form.html:170 cps/templates/shelf_edit.html:17 #: cps/templates/search_form.html:170 cps/templates/shelf_edit.html:17
#: cps/templates/user_edit.html:129 #: cps/templates/user_edit.html:131
msgid "Submit" msgid "Submit"
msgstr "Enviar" msgstr "Enviar"
@ -1594,35 +1594,35 @@ msgstr "Etiquetas para contenido para adultos"
msgid "Default settings for new users" msgid "Default settings for new users"
msgstr "Ajustes por defecto para nuevos usuarios" msgstr "Ajustes por defecto para nuevos usuarios"
#: cps/templates/config_view_edit.html:81 cps/templates/user_edit.html:82 #: cps/templates/config_view_edit.html:81 cps/templates/user_edit.html:84
msgid "Admin user" msgid "Admin user"
msgstr "Usuario administrador" msgstr "Usuario administrador"
#: cps/templates/config_view_edit.html:85 cps/templates/user_edit.html:91 #: cps/templates/config_view_edit.html:85 cps/templates/user_edit.html:93
msgid "Allow Downloads" msgid "Allow Downloads"
msgstr "Permitir descargas" msgstr "Permitir descargas"
#: cps/templates/config_view_edit.html:89 cps/templates/user_edit.html:95 #: cps/templates/config_view_edit.html:89 cps/templates/user_edit.html:97
msgid "Allow book viewer" msgid "Allow book viewer"
msgstr "Permitir visor de libros" msgstr "Permitir visor de libros"
#: cps/templates/config_view_edit.html:93 cps/templates/user_edit.html:99 #: cps/templates/config_view_edit.html:93 cps/templates/user_edit.html:101
msgid "Allow Uploads" msgid "Allow Uploads"
msgstr "Permitir subidas de archivos" msgstr "Permitir subidas de archivos"
#: cps/templates/config_view_edit.html:97 cps/templates/user_edit.html:103 #: cps/templates/config_view_edit.html:97 cps/templates/user_edit.html:105
msgid "Allow Edit" msgid "Allow Edit"
msgstr "Permitir editar" msgstr "Permitir editar"
#: cps/templates/config_view_edit.html:101 cps/templates/user_edit.html:107 #: cps/templates/config_view_edit.html:101 cps/templates/user_edit.html:109
msgid "Allow Delete books" msgid "Allow Delete books"
msgstr "Permitir eliminar libros" msgstr "Permitir eliminar libros"
#: cps/templates/config_view_edit.html:105 cps/templates/user_edit.html:112 #: cps/templates/config_view_edit.html:105 cps/templates/user_edit.html:114
msgid "Allow Changing Password" msgid "Allow Changing Password"
msgstr "Permitir cambiar la contraseña" msgstr "Permitir cambiar la contraseña"
#: cps/templates/config_view_edit.html:109 cps/templates/user_edit.html:116 #: cps/templates/config_view_edit.html:109 cps/templates/user_edit.html:118
msgid "Allow Editing Public Shelfs" msgid "Allow Editing Public Shelfs"
msgstr "Permitir editar estantes públicos" msgstr "Permitir editar estantes públicos"
@ -1630,11 +1630,11 @@ msgstr "Permitir editar estantes públicos"
msgid "Default visibilities for new users" msgid "Default visibilities for new users"
msgstr "Visibilidad predeterminada para nuevos usuarios" msgstr "Visibilidad predeterminada para nuevos usuarios"
#: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:74 #: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:76
msgid "Show random books in detail view" msgid "Show random books in detail view"
msgstr "Mostrar libros aleatorios con vista detallada" msgstr "Mostrar libros aleatorios con vista detallada"
#: cps/templates/config_view_edit.html:139 cps/templates/user_edit.html:87 #: cps/templates/config_view_edit.html:139 cps/templates/user_edit.html:89
msgid "Show mature content" msgid "Show mature content"
msgstr "Mostrar contenido para adulto" msgstr "Mostrar contenido para adulto"
@ -1913,13 +1913,21 @@ msgstr ""
msgid "Log in with magic link" msgid "Log in with magic link"
msgstr "Iniciar sesión con \"magic link\"" msgstr "Iniciar sesión con \"magic link\""
#: cps/templates/logviewer.html:5 #: cps/templates/logviewer.html:6
msgid "Show Calibre-Web log" msgid "Show Calibre-Web log: "
msgstr "Mostrar registro de Calibre-Web" msgstr ""
#: cps/templates/logviewer.html:8 #: cps/templates/logviewer.html:8
msgid "Show access log" msgid "Calibre-Web log: "
msgstr "Mostrar registro de acceso" msgstr ""
#: cps/templates/logviewer.html:8
msgid "Stream output, can't be displayed"
msgstr ""
#: cps/templates/logviewer.html:12
msgid "Show access log: "
msgstr ""
#: cps/templates/osd.xml:5 #: cps/templates/osd.xml:5
msgid "Calibre-Web ebook catalog" msgid "Calibre-Web ebook catalog"
@ -2213,31 +2221,31 @@ msgstr "Resetear contraseña de usuario"
msgid "Kindle E-Mail" msgid "Kindle E-Mail"
msgstr "Correo del Kindle" msgstr "Correo del Kindle"
#: cps/templates/user_edit.html:39 #: cps/templates/user_edit.html:41
msgid "Show books with language" msgid "Show books with language"
msgstr "Mostrar libros con idioma" msgstr "Mostrar libros con idioma"
#: cps/templates/user_edit.html:41 #: cps/templates/user_edit.html:43
msgid "Show all" msgid "Show all"
msgstr "Mostrar todo" msgstr "Mostrar todo"
#: cps/templates/user_edit.html:51 #: cps/templates/user_edit.html:53
msgid "OAuth Settings" msgid "OAuth Settings"
msgstr "Ajustes OAuth" msgstr "Ajustes OAuth"
#: cps/templates/user_edit.html:53 #: cps/templates/user_edit.html:55
msgid "Link" msgid "Link"
msgstr "Vincular" msgstr "Vincular"
#: cps/templates/user_edit.html:55 #: cps/templates/user_edit.html:57
msgid "Unlink" msgid "Unlink"
msgstr "Desvincular" msgstr "Desvincular"
#: cps/templates/user_edit.html:123 #: cps/templates/user_edit.html:125
msgid "Delete this user" msgid "Delete this user"
msgstr "Borrar este usuario" msgstr "Borrar este usuario"
#: cps/templates/user_edit.html:138 #: cps/templates/user_edit.html:140
msgid "Recent Downloads" msgid "Recent Downloads"
msgstr "Descargas recientes" msgstr "Descargas recientes"
@ -2487,3 +2495,9 @@ msgstr "Descargas recientes"
#~ msgid "New Books" #~ msgid "New Books"
#~ msgstr "Libros nuevos" #~ msgstr "Libros nuevos"
#~ msgid "Show Calibre-Web log"
#~ msgstr "Mostrar registro de Calibre-Web"
#~ msgid "Show access log"
#~ msgstr "Mostrar registro de acceso"

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2020-01-12 13:57+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2020-01-12 13:56+0100\n" "PO-Revision-Date: 2020-01-12 13:56+0100\n"
"Last-Translator: Samuli Valavuo <svalavuo@gmail.com>\n" "Last-Translator: Samuli Valavuo <svalavuo@gmail.com>\n"
"Language: fi\n" "Language: fi\n"
@ -60,7 +60,7 @@ msgstr "Calibre-Web asetukset päivitetty"
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "Perusasetukset" msgstr "Perusasetukset"
#: cps/admin.py:465 cps/web.py:1093 #: cps/admin.py:465 cps/web.py:1090
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "Ole hyvä ja täytä kaikki kentät!" msgstr "Ole hyvä ja täytä kaikki kentät!"
@ -69,7 +69,7 @@ msgstr "Ole hyvä ja täytä kaikki kentät!"
msgid "Add new user" msgid "Add new user"
msgstr "Lisää uusi käyttäjä" msgstr "Lisää uusi käyttäjä"
#: cps/admin.py:476 cps/web.py:1318 #: cps/admin.py:476 cps/web.py:1315
msgid "E-mail is not from valid domain" msgid "E-mail is not from valid domain"
msgstr "Sähköpostiosoite ei ole toimivasta domainista" msgstr "Sähköpostiosoite ei ole toimivasta domainista"
@ -113,16 +113,16 @@ msgstr "Käyttäjä '%(nick)s' poistettu"
msgid "No admin user remaining, can't delete user" msgid "No admin user remaining, can't delete user"
msgstr "Pääkäyttäjiä ei jää jäljelle, käyttäjää ei voi poistaa" msgstr "Pääkäyttäjiä ei jää jäljelle, käyttäjää ei voi poistaa"
#: cps/admin.py:612 cps/web.py:1359 #: cps/admin.py:612 cps/web.py:1356
msgid "Found an existing account for this e-mail address." msgid "Found an existing account for this e-mail address."
msgstr "Tälle sähköpostiosoitteelle läytyi jo käyttäjätunnus." msgstr "Tälle sähköpostiosoitteelle läytyi jo käyttäjätunnus."
#: cps/admin.py:616 cps/admin.py:630 cps/admin.py:644 cps/web.py:1334 #: cps/admin.py:616 cps/admin.py:630 cps/admin.py:644 cps/web.py:1331
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "Muokkaa käyttäjää %(nick)s" msgstr "Muokkaa käyttäjää %(nick)s"
#: cps/admin.py:622 cps/web.py:1327 #: cps/admin.py:622 cps/web.py:1324
msgid "This username is already taken" msgid "This username is already taken"
msgstr "" msgstr ""
@ -140,63 +140,63 @@ msgstr "Tapahtui tuntematon virhe."
msgid "Password for user %(user)s reset" msgid "Password for user %(user)s reset"
msgstr "Käyttäjän %(user)s salasana palautettu" msgstr "Käyttäjän %(user)s salasana palautettu"
#: cps/admin.py:660 cps/web.py:1118 cps/web.py:1174 #: cps/admin.py:660 cps/web.py:1115 cps/web.py:1171
msgid "An unknown error occurred. Please try again later." msgid "An unknown error occurred. Please try again later."
msgstr "Tapahtui tuntematon virhe. Yritä myöhemmin uudelleen." msgstr "Tapahtui tuntematon virhe. Yritä myöhemmin uudelleen."
#: cps/admin.py:663 cps/web.py:1062 #: cps/admin.py:663 cps/web.py:1059
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "Ole hyvä ja aseta SMTP postiasetukset ensin..." msgstr "Ole hyvä ja aseta SMTP postiasetukset ensin..."
#: cps/admin.py:674 #: cps/admin.py:675
msgid "Logfile viewer" msgid "Logfile viewer"
msgstr "Lokitiedoston katselin" msgstr "Lokitiedoston katselin"
#: cps/admin.py:710 #: cps/admin.py:714
msgid "Requesting update package" msgid "Requesting update package"
msgstr "Haetaan päivitystiedostoa" msgstr "Haetaan päivitystiedostoa"
#: cps/admin.py:711 #: cps/admin.py:715
msgid "Downloading update package" msgid "Downloading update package"
msgstr "Ladataan päivitystiedostoa" msgstr "Ladataan päivitystiedostoa"
#: cps/admin.py:712 #: cps/admin.py:716
msgid "Unzipping update package" msgid "Unzipping update package"
msgstr "Puretaan päivitystiedostoa" msgstr "Puretaan päivitystiedostoa"
#: cps/admin.py:713 #: cps/admin.py:717
msgid "Replacing files" msgid "Replacing files"
msgstr "Korvataan tiedostoja" msgstr "Korvataan tiedostoja"
#: cps/admin.py:714 #: cps/admin.py:718
msgid "Database connections are closed" msgid "Database connections are closed"
msgstr "Tietokantayhteydet on katkaistu" msgstr "Tietokantayhteydet on katkaistu"
#: cps/admin.py:715 #: cps/admin.py:719
msgid "Stopping server" msgid "Stopping server"
msgstr "Sammutetaan palvelin" msgstr "Sammutetaan palvelin"
#: cps/admin.py:716 #: cps/admin.py:720
msgid "Update finished, please press okay and reload page" msgid "Update finished, please press okay and reload page"
msgstr "Päivitys valmistui, ole hyvä ja paina OK ja lataa sivu uudelleen" msgstr "Päivitys valmistui, ole hyvä ja paina OK ja lataa sivu uudelleen"
#: cps/admin.py:717 cps/admin.py:718 cps/admin.py:719 cps/admin.py:720 #: cps/admin.py:721 cps/admin.py:722 cps/admin.py:723 cps/admin.py:724
msgid "Update failed:" msgid "Update failed:"
msgstr "Päivitys epäonnistui:" msgstr "Päivitys epäonnistui:"
#: cps/admin.py:717 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459 #: cps/admin.py:721 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459
msgid "HTTP Error" msgid "HTTP Error"
msgstr "HTTP virhe" msgstr "HTTP virhe"
#: cps/admin.py:718 cps/updater.py:274 cps/updater.py:461 #: cps/admin.py:722 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "Yhteysvirhe" msgstr "Yhteysvirhe"
#: cps/admin.py:719 cps/updater.py:276 cps/updater.py:463 #: cps/admin.py:723 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
msgstr "Aikakatkaisu yhteyttä luotaessa" msgstr "Aikakatkaisu yhteyttä luotaessa"
#: cps/admin.py:720 cps/updater.py:278 cps/updater.py:465 #: cps/admin.py:724 cps/updater.py:278 cps/updater.py:465
msgid "General error" msgid "General error"
msgstr "Yleinen virhe" msgstr "Yleinen virhe"
@ -592,7 +592,7 @@ msgid "Show best rated books"
msgstr "Näytä parhaiten arvioidut kirjat" msgstr "Näytä parhaiten arvioidut kirjat"
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67 #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
#: cps/web.py:1011 #: cps/web.py:1009
msgid "Read Books" msgid "Read Books"
msgstr "Luetut kirjat" msgstr "Luetut kirjat"
@ -601,7 +601,7 @@ msgid "Show read and unread"
msgstr "Näytä luetut ja lukemattomat" msgstr "Näytä luetut ja lukemattomat"
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71 #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
#: cps/web.py:1015 #: cps/web.py:1013
msgid "Unread Books" msgid "Unread Books"
msgstr "Lukemattomat kirjat" msgstr "Lukemattomat kirjat"
@ -723,7 +723,7 @@ msgstr "Kirjat"
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "Kuumat kirjat (ladatuimmat)" msgstr "Kuumat kirjat (ladatuimmat)"
#: cps/web.py:586 cps/web.py:1382 cps/web.py:1478 #: cps/web.py:586 cps/web.py:1379 cps/web.py:1475
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Virhe eKirjan avaamisessa. Tiedostoa ei ole tai se ei ole saatavilla:" msgstr "Virhe eKirjan avaamisessa. Tiedostoa ei ole tai se ei ole saatavilla:"
@ -791,128 +791,128 @@ msgid "Tasks"
msgstr "Tehtävät" msgstr "Tehtävät"
#: cps/templates/feed.xml:33 cps/templates/layout.html:44 #: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45 cps/web.py:829 cps/web.py:831 #: cps/templates/layout.html:45 cps/web.py:827 cps/web.py:829
msgid "Search" msgid "Search"
msgstr "Hae" msgstr "Hae"
#: cps/web.py:881 #: cps/web.py:879
msgid "Published after " msgid "Published after "
msgstr "Julkaistu alkaen " msgstr "Julkaistu alkaen "
#: cps/web.py:888 #: cps/web.py:886
msgid "Published before " msgid "Published before "
msgstr "Julkaisut ennen " msgstr "Julkaisut ennen "
#: cps/web.py:902 #: cps/web.py:900
#, python-format #, python-format
msgid "Rating <= %(rating)s" msgid "Rating <= %(rating)s"
msgstr "Arvostelu <= %(rating)s" msgstr "Arvostelu <= %(rating)s"
#: cps/web.py:904 #: cps/web.py:902
#, python-format #, python-format
msgid "Rating >= %(rating)s" msgid "Rating >= %(rating)s"
msgstr "Arvostelu >= %(rating)s" msgstr "Arvostelu >= %(rating)s"
#: cps/web.py:970 cps/web.py:982 #: cps/web.py:968 cps/web.py:980
msgid "search" msgid "search"
msgstr "hae" msgstr "hae"
#: cps/web.py:1067 #: cps/web.py:1064
#, python-format #, python-format
msgid "Book successfully queued for sending to %(kindlemail)s" msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Kirja lisätty onnistuneeksi lähetettäväksi osoitteeseen %(kindlemail)s" msgstr "Kirja lisätty onnistuneeksi lähetettäväksi osoitteeseen %(kindlemail)s"
#: cps/web.py:1071 #: cps/web.py:1068
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "Kirjan: %(res)s lähettämisessa tapahtui virhe" msgstr "Kirjan: %(res)s lähettämisessa tapahtui virhe"
#: cps/web.py:1073 #: cps/web.py:1070
msgid "Please configure your kindle e-mail address first..." msgid "Please configure your kindle e-mail address first..."
msgstr "Ole hyvä ja aseta Kindle sähköpostiosoite ensin..." msgstr "Ole hyvä ja aseta Kindle sähköpostiosoite ensin..."
#: cps/web.py:1087 #: cps/web.py:1084
msgid "E-Mail server is not configured, please contact your administrator!" msgid "E-Mail server is not configured, please contact your administrator!"
msgstr "" msgstr ""
#: cps/web.py:1088 cps/web.py:1094 cps/web.py:1119 cps/web.py:1123 #: cps/web.py:1085 cps/web.py:1091 cps/web.py:1116 cps/web.py:1120
#: cps/web.py:1128 cps/web.py:1132 #: cps/web.py:1125 cps/web.py:1129
msgid "register" msgid "register"
msgstr "rekisteröidy" msgstr "rekisteröidy"
#: cps/web.py:1121 #: cps/web.py:1118
msgid "Your e-mail is not allowed to register" msgid "Your e-mail is not allowed to register"
msgstr "Sähköpostiosoitteellasi ei ole sallittua rekisteröityä" msgstr "Sähköpostiosoitteellasi ei ole sallittua rekisteröityä"
#: cps/web.py:1124 #: cps/web.py:1121
msgid "Confirmation e-mail was send to your e-mail account." msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Vahvistusviesti on lähetetty sähköpostiosoitteeseesi." msgstr "Vahvistusviesti on lähetetty sähköpostiosoitteeseesi."
#: cps/web.py:1127 #: cps/web.py:1124
msgid "This username or e-mail address is already in use." msgid "This username or e-mail address is already in use."
msgstr "Käyttäjätunnus tai sähköpostiosoite on jo käytössä." msgstr "Käyttäjätunnus tai sähköpostiosoite on jo käytössä."
#: cps/web.py:1144 #: cps/web.py:1141
msgid "Cannot activate LDAP authentication" msgid "Cannot activate LDAP authentication"
msgstr "LDAP autnetikoinnin aktivointi ei onnistu" msgstr "LDAP autnetikoinnin aktivointi ei onnistu"
#: cps/web.py:1154 cps/web.py:1281 #: cps/web.py:1151 cps/web.py:1278
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "olet nyt kirjautunut tunnuksella: \"%(nickname)s\"" msgstr "olet nyt kirjautunut tunnuksella: \"%(nickname)s\""
#: cps/web.py:1159 #: cps/web.py:1156
msgid "Could not login. LDAP server down, please contact your administrator" msgid "Could not login. LDAP server down, please contact your administrator"
msgstr "Kirjautuminen epäonnistui. LDAP palvelin alhaalla, ot yhteyttä ylläpitoon" msgstr "Kirjautuminen epäonnistui. LDAP palvelin alhaalla, ot yhteyttä ylläpitoon"
#: cps/web.py:1163 cps/web.py:1186 #: cps/web.py:1160 cps/web.py:1183
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "Väärä käyttäjätunnus tai salasana" msgstr "Väärä käyttäjätunnus tai salasana"
#: cps/web.py:1170 #: cps/web.py:1167
msgid "New Password was send to your email address" msgid "New Password was send to your email address"
msgstr "" msgstr ""
#: cps/web.py:1176 #: cps/web.py:1173
msgid "Please enter valid username to reset password" msgid "Please enter valid username to reset password"
msgstr "" msgstr ""
#: cps/web.py:1182 #: cps/web.py:1179
#, python-format #, python-format
msgid "You are now logged in as: '%(nickname)s'" msgid "You are now logged in as: '%(nickname)s'"
msgstr "olet kirjautunut tunnuksella: '%(nickname)s'" msgstr "olet kirjautunut tunnuksella: '%(nickname)s'"
#: cps/web.py:1189 cps/web.py:1213 #: cps/web.py:1186 cps/web.py:1210
msgid "login" msgid "login"
msgstr "kirjaudu" msgstr "kirjaudu"
#: cps/web.py:1225 cps/web.py:1259 #: cps/web.py:1222 cps/web.py:1256
msgid "Token not found" msgid "Token not found"
msgstr "Valtuutusta ei löytynyt" msgstr "Valtuutusta ei löytynyt"
#: cps/web.py:1234 cps/web.py:1267 #: cps/web.py:1231 cps/web.py:1264
msgid "Token has expired" msgid "Token has expired"
msgstr "Valtuutus vanhentunut" msgstr "Valtuutus vanhentunut"
#: cps/web.py:1243 #: cps/web.py:1240
msgid "Success! Please return to your device" msgid "Success! Please return to your device"
msgstr "Onnistui! Ole hyvä ja palaa laitteellesi" msgstr "Onnistui! Ole hyvä ja palaa laitteellesi"
#: cps/web.py:1320 cps/web.py:1363 cps/web.py:1369 #: cps/web.py:1317 cps/web.py:1360 cps/web.py:1366
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "%(name)sn profiili" msgstr "%(name)sn profiili"
#: cps/web.py:1365 #: cps/web.py:1362
msgid "Profile updated" msgid "Profile updated"
msgstr "Profiili päivitetty" msgstr "Profiili päivitetty"
#: cps/web.py:1394 cps/web.py:1397 cps/web.py:1400 cps/web.py:1407 #: cps/web.py:1391 cps/web.py:1394 cps/web.py:1397 cps/web.py:1404
#: cps/web.py:1412 #: cps/web.py:1409
msgid "Read a Book" msgid "Read a Book"
msgstr "Lue kirja" msgstr "Lue kirja"
#: cps/web.py:1423 #: cps/web.py:1420
msgid "Error opening eBook. File does not exist or file is not accessible." msgid "Error opening eBook. File does not exist or file is not accessible."
msgstr "Virhe kirjan avaamisessa. Tiedostoa ei ole tai se ei ole saatavilla." msgstr "Virhe kirjan avaamisessa. Tiedostoa ei ole tai se ei ole saatavilla."
@ -1099,7 +1099,7 @@ msgstr "Ok"
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:92 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:92
#: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/layout.html:28 cps/templates/shelf.html:73
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
#: cps/templates/user_edit.html:131 #: cps/templates/user_edit.html:133
msgid "Back" msgid "Back"
msgstr "Palaa" msgstr "Palaa"
@ -1212,7 +1212,7 @@ msgstr "Julkaisupäivä"
msgid "Publisher" msgid "Publisher"
msgstr "Julkaisija" msgstr "Julkaisija"
#: cps/templates/book_edit.html:103 cps/templates/user_edit.html:30 #: cps/templates/book_edit.html:103 cps/templates/user_edit.html:31
msgid "Language" msgid "Language"
msgstr "Kieli" msgstr "Kieli"
@ -1239,7 +1239,7 @@ msgstr "Hae metadata"
#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329 #: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329
#: cps/templates/config_view_edit.html:146 cps/templates/login.html:20 #: cps/templates/config_view_edit.html:146 cps/templates/login.html:20
#: cps/templates/search_form.html:170 cps/templates/shelf_edit.html:17 #: cps/templates/search_form.html:170 cps/templates/shelf_edit.html:17
#: cps/templates/user_edit.html:129 #: cps/templates/user_edit.html:131
msgid "Submit" msgid "Submit"
msgstr "Lähetä" msgstr "Lähetä"
@ -1592,35 +1592,35 @@ msgstr "Aikusimateriaalin merkinnät"
msgid "Default settings for new users" msgid "Default settings for new users"
msgstr "Uuden käyttäjän oletusasetukset" msgstr "Uuden käyttäjän oletusasetukset"
#: cps/templates/config_view_edit.html:81 cps/templates/user_edit.html:82 #: cps/templates/config_view_edit.html:81 cps/templates/user_edit.html:84
msgid "Admin user" msgid "Admin user"
msgstr "Pääkäyttäjä" msgstr "Pääkäyttäjä"
#: cps/templates/config_view_edit.html:85 cps/templates/user_edit.html:91 #: cps/templates/config_view_edit.html:85 cps/templates/user_edit.html:93
msgid "Allow Downloads" msgid "Allow Downloads"
msgstr "Salli kirjojen lataukset" msgstr "Salli kirjojen lataukset"
#: cps/templates/config_view_edit.html:89 cps/templates/user_edit.html:95 #: cps/templates/config_view_edit.html:89 cps/templates/user_edit.html:97
msgid "Allow book viewer" msgid "Allow book viewer"
msgstr "Salli kirjojen luku" msgstr "Salli kirjojen luku"
#: cps/templates/config_view_edit.html:93 cps/templates/user_edit.html:99 #: cps/templates/config_view_edit.html:93 cps/templates/user_edit.html:101
msgid "Allow Uploads" msgid "Allow Uploads"
msgstr "Salli lisäykset" msgstr "Salli lisäykset"
#: cps/templates/config_view_edit.html:97 cps/templates/user_edit.html:103 #: cps/templates/config_view_edit.html:97 cps/templates/user_edit.html:105
msgid "Allow Edit" msgid "Allow Edit"
msgstr "Salli muutokset" msgstr "Salli muutokset"
#: cps/templates/config_view_edit.html:101 cps/templates/user_edit.html:107 #: cps/templates/config_view_edit.html:101 cps/templates/user_edit.html:109
msgid "Allow Delete books" msgid "Allow Delete books"
msgstr "Salli kirjojen poisto" msgstr "Salli kirjojen poisto"
#: cps/templates/config_view_edit.html:105 cps/templates/user_edit.html:112 #: cps/templates/config_view_edit.html:105 cps/templates/user_edit.html:114
msgid "Allow Changing Password" msgid "Allow Changing Password"
msgstr "Salli sananan vaihto" msgstr "Salli sananan vaihto"
#: cps/templates/config_view_edit.html:109 cps/templates/user_edit.html:116 #: cps/templates/config_view_edit.html:109 cps/templates/user_edit.html:118
msgid "Allow Editing Public Shelfs" msgid "Allow Editing Public Shelfs"
msgstr "Salli julkisten hyllyjen editointi" msgstr "Salli julkisten hyllyjen editointi"
@ -1628,11 +1628,11 @@ msgstr "Salli julkisten hyllyjen editointi"
msgid "Default visibilities for new users" msgid "Default visibilities for new users"
msgstr "Oletusnäkymä uusille käyttäjille" msgstr "Oletusnäkymä uusille käyttäjille"
#: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:74 #: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:76
msgid "Show random books in detail view" msgid "Show random books in detail view"
msgstr "Näytä satunnaisia kirjoja näkymässä" msgstr "Näytä satunnaisia kirjoja näkymässä"
#: cps/templates/config_view_edit.html:139 cps/templates/user_edit.html:87 #: cps/templates/config_view_edit.html:139 cps/templates/user_edit.html:89
msgid "Show mature content" msgid "Show mature content"
msgstr "Näytä aikuismateriaali" msgstr "Näytä aikuismateriaali"
@ -1911,13 +1911,21 @@ msgstr ""
msgid "Log in with magic link" msgid "Log in with magic link"
msgstr "Kirjadu käyttäen magic link" msgstr "Kirjadu käyttäen magic link"
#: cps/templates/logviewer.html:5 #: cps/templates/logviewer.html:6
msgid "Show Calibre-Web log" msgid "Show Calibre-Web log: "
msgstr "Näytä Calibre-Web loki" msgstr ""
#: cps/templates/logviewer.html:8 #: cps/templates/logviewer.html:8
msgid "Show access log" msgid "Calibre-Web log: "
msgstr "Näytä pääsyloki" msgstr ""
#: cps/templates/logviewer.html:8
msgid "Stream output, can't be displayed"
msgstr ""
#: cps/templates/logviewer.html:12
msgid "Show access log: "
msgstr ""
#: cps/templates/osd.xml:5 #: cps/templates/osd.xml:5
msgid "Calibre-Web ebook catalog" msgid "Calibre-Web ebook catalog"
@ -2211,31 +2219,31 @@ msgstr "Nollaa käyttäjän salasana"
msgid "Kindle E-Mail" msgid "Kindle E-Mail"
msgstr "Kindle sähköposti" msgstr "Kindle sähköposti"
#: cps/templates/user_edit.html:39 #: cps/templates/user_edit.html:41
msgid "Show books with language" msgid "Show books with language"
msgstr "Näytä kirjat kielellä" msgstr "Näytä kirjat kielellä"
#: cps/templates/user_edit.html:41 #: cps/templates/user_edit.html:43
msgid "Show all" msgid "Show all"
msgstr "Näytä kaikki" msgstr "Näytä kaikki"
#: cps/templates/user_edit.html:51 #: cps/templates/user_edit.html:53
msgid "OAuth Settings" msgid "OAuth Settings"
msgstr "OAuth asetukset" msgstr "OAuth asetukset"
#: cps/templates/user_edit.html:53 #: cps/templates/user_edit.html:55
msgid "Link" msgid "Link"
msgstr "Linkitä" msgstr "Linkitä"
#: cps/templates/user_edit.html:55 #: cps/templates/user_edit.html:57
msgid "Unlink" msgid "Unlink"
msgstr "Poista linkitys" msgstr "Poista linkitys"
#: cps/templates/user_edit.html:123 #: cps/templates/user_edit.html:125
msgid "Delete this user" msgid "Delete this user"
msgstr "Poista tämä käyttäjä" msgstr "Poista tämä käyttäjä"
#: cps/templates/user_edit.html:138 #: cps/templates/user_edit.html:140
msgid "Recent Downloads" msgid "Recent Downloads"
msgstr "Viimeisimmät lataukset" msgstr "Viimeisimmät lataukset"
@ -3493,3 +3501,9 @@ msgstr "Viimeisimmät lataukset"
#~ msgid "Zaza" #~ msgid "Zaza"
#~ msgstr "" #~ msgstr ""
#~ msgid "Show Calibre-Web log"
#~ msgstr "Näytä Calibre-Web loki"
#~ msgid "Show access log"
#~ msgstr "Näytä pääsyloki"

@ -20,7 +20,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-01-12 13:57+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2019-08-21 15:20+0100\n" "PO-Revision-Date: 2019-08-21 15:20+0100\n"
"Last-Translator: Nicolas Roudninski <nicoroud@gmail.com>\n" "Last-Translator: Nicolas Roudninski <nicoroud@gmail.com>\n"
"Language: fr\n" "Language: fr\n"
@ -73,7 +73,7 @@ msgstr "Configuration de Calibre-Web mise à jour"
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "Configuration principale" msgstr "Configuration principale"
#: cps/admin.py:465 cps/web.py:1093 #: cps/admin.py:465 cps/web.py:1090
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "SVP, complétez tous les champs !" msgstr "SVP, complétez tous les champs !"
@ -82,7 +82,7 @@ msgstr "SVP, complétez tous les champs !"
msgid "Add new user" msgid "Add new user"
msgstr "Ajouter un nouvel utilisateur" msgstr "Ajouter un nouvel utilisateur"
#: cps/admin.py:476 cps/web.py:1318 #: cps/admin.py:476 cps/web.py:1315
msgid "E-mail is not from valid domain" msgid "E-mail is not from valid domain"
msgstr "Cette adresse de courriel nappartient pas à un domaine valide" msgstr "Cette adresse de courriel nappartient pas à un domaine valide"
@ -126,16 +126,16 @@ msgstr "Utilisateur '%(nick)s' supprimé"
msgid "No admin user remaining, can't delete user" msgid "No admin user remaining, can't delete user"
msgstr "Aucun utilisateur admin restant, impossible de supprimer lutilisateur" msgstr "Aucun utilisateur admin restant, impossible de supprimer lutilisateur"
#: cps/admin.py:612 cps/web.py:1359 #: cps/admin.py:612 cps/web.py:1356
msgid "Found an existing account for this e-mail address." msgid "Found an existing account for this e-mail address."
msgstr "Un compte existant a été trouvé pour cette adresse de courriel." msgstr "Un compte existant a été trouvé pour cette adresse de courriel."
#: cps/admin.py:616 cps/admin.py:630 cps/admin.py:644 cps/web.py:1334 #: cps/admin.py:616 cps/admin.py:630 cps/admin.py:644 cps/web.py:1331
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "Éditer l'utilisateur %(nick)s" msgstr "Éditer l'utilisateur %(nick)s"
#: cps/admin.py:622 cps/web.py:1327 #: cps/admin.py:622 cps/web.py:1324
msgid "This username is already taken" msgid "This username is already taken"
msgstr "" msgstr ""
@ -153,63 +153,63 @@ msgstr "Oups ! Une erreur inconnue a eu lieu."
msgid "Password for user %(user)s reset" msgid "Password for user %(user)s reset"
msgstr "Le mot de passe de lutilisateur %(user)s a été réinitialisé" msgstr "Le mot de passe de lutilisateur %(user)s a été réinitialisé"
#: cps/admin.py:660 cps/web.py:1118 cps/web.py:1174 #: cps/admin.py:660 cps/web.py:1115 cps/web.py:1171
msgid "An unknown error occurred. Please try again later." msgid "An unknown error occurred. Please try again later."
msgstr "Une erreur inconnue est survenue. Veuillez réessayer plus tard." msgstr "Une erreur inconnue est survenue. Veuillez réessayer plus tard."
#: cps/admin.py:663 cps/web.py:1062 #: cps/admin.py:663 cps/web.py:1059
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "Veuillez configurer les paramètres SMTP au préalable…" msgstr "Veuillez configurer les paramètres SMTP au préalable…"
#: cps/admin.py:674 #: cps/admin.py:675
msgid "Logfile viewer" msgid "Logfile viewer"
msgstr "Visualiseur de fichier journal" msgstr "Visualiseur de fichier journal"
#: cps/admin.py:710 #: cps/admin.py:714
msgid "Requesting update package" msgid "Requesting update package"
msgstr "Demander une mise à jour" msgstr "Demander une mise à jour"
#: cps/admin.py:711 #: cps/admin.py:715
msgid "Downloading update package" msgid "Downloading update package"
msgstr "Téléchargement la mise à jour" msgstr "Téléchargement la mise à jour"
#: cps/admin.py:712 #: cps/admin.py:716
msgid "Unzipping update package" msgid "Unzipping update package"
msgstr "Décompression de la mise à jour" msgstr "Décompression de la mise à jour"
#: cps/admin.py:713 #: cps/admin.py:717
msgid "Replacing files" msgid "Replacing files"
msgstr "Remplacement des fichiers" msgstr "Remplacement des fichiers"
#: cps/admin.py:714 #: cps/admin.py:718
msgid "Database connections are closed" msgid "Database connections are closed"
msgstr "Connexion à la base de donnée fermée" msgstr "Connexion à la base de donnée fermée"
#: cps/admin.py:715 #: cps/admin.py:719
msgid "Stopping server" msgid "Stopping server"
msgstr "Arrêt du serveur" msgstr "Arrêt du serveur"
#: cps/admin.py:716 #: cps/admin.py:720
msgid "Update finished, please press okay and reload page" msgid "Update finished, please press okay and reload page"
msgstr "Mise à jour terminée, merci dappuyer sur okay et de rafraîchir la page" msgstr "Mise à jour terminée, merci dappuyer sur okay et de rafraîchir la page"
#: cps/admin.py:717 cps/admin.py:718 cps/admin.py:719 cps/admin.py:720 #: cps/admin.py:721 cps/admin.py:722 cps/admin.py:723 cps/admin.py:724
msgid "Update failed:" msgid "Update failed:"
msgstr "La mise à jour a échoué :" msgstr "La mise à jour a échoué :"
#: cps/admin.py:717 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459 #: cps/admin.py:721 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459
msgid "HTTP Error" msgid "HTTP Error"
msgstr "Erreur HTTP" msgstr "Erreur HTTP"
#: cps/admin.py:718 cps/updater.py:274 cps/updater.py:461 #: cps/admin.py:722 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "Erreur de connexion" msgstr "Erreur de connexion"
#: cps/admin.py:719 cps/updater.py:276 cps/updater.py:463 #: cps/admin.py:723 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
msgstr "Délai d'attente dépassé lors de l'établissement de connexion" msgstr "Délai d'attente dépassé lors de l'établissement de connexion"
#: cps/admin.py:720 cps/updater.py:278 cps/updater.py:465 #: cps/admin.py:724 cps/updater.py:278 cps/updater.py:465
msgid "General error" msgid "General error"
msgstr "Erreur générale" msgstr "Erreur générale"
@ -605,7 +605,7 @@ msgid "Show best rated books"
msgstr "Montrer les livres les mieux notés" msgstr "Montrer les livres les mieux notés"
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67 #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
#: cps/web.py:1011 #: cps/web.py:1009
msgid "Read Books" msgid "Read Books"
msgstr "Livres lus" msgstr "Livres lus"
@ -614,7 +614,7 @@ msgid "Show read and unread"
msgstr "Montrer lu et non-lu" msgstr "Montrer lu et non-lu"
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71 #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
#: cps/web.py:1015 #: cps/web.py:1013
msgid "Unread Books" msgid "Unread Books"
msgstr "Livres non-lus" msgstr "Livres non-lus"
@ -736,7 +736,7 @@ msgstr "Livres"
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "Livres populaires (les plus téléchargés)" msgstr "Livres populaires (les plus téléchargés)"
#: cps/web.py:586 cps/web.py:1382 cps/web.py:1478 #: cps/web.py:586 cps/web.py:1379 cps/web.py:1475
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Erreur d'ouverture du livre numérique. Le fichier n'existe pas ou n'est pas accessible :" msgstr "Erreur d'ouverture du livre numérique. Le fichier n'existe pas ou n'est pas accessible :"
@ -804,128 +804,128 @@ msgid "Tasks"
msgstr "Tâches" msgstr "Tâches"
#: cps/templates/feed.xml:33 cps/templates/layout.html:44 #: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45 cps/web.py:829 cps/web.py:831 #: cps/templates/layout.html:45 cps/web.py:827 cps/web.py:829
msgid "Search" msgid "Search"
msgstr "Chercher" msgstr "Chercher"
#: cps/web.py:881 #: cps/web.py:879
msgid "Published after " msgid "Published after "
msgstr "Publié après le " msgstr "Publié après le "
#: cps/web.py:888 #: cps/web.py:886
msgid "Published before " msgid "Published before "
msgstr "Publié avant le " msgstr "Publié avant le "
#: cps/web.py:902 #: cps/web.py:900
#, python-format #, python-format
msgid "Rating <= %(rating)s" msgid "Rating <= %(rating)s"
msgstr "Évaluation <= %(rating)s" msgstr "Évaluation <= %(rating)s"
#: cps/web.py:904 #: cps/web.py:902
#, python-format #, python-format
msgid "Rating >= %(rating)s" msgid "Rating >= %(rating)s"
msgstr "Évaluation >= %(rating)s" msgstr "Évaluation >= %(rating)s"
#: cps/web.py:970 cps/web.py:982 #: cps/web.py:968 cps/web.py:980
msgid "search" msgid "search"
msgstr "recherche" msgstr "recherche"
#: cps/web.py:1067 #: cps/web.py:1064
#, python-format #, python-format
msgid "Book successfully queued for sending to %(kindlemail)s" msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Le livre a été mis en file de traitement avec succès pour un envois vers %(kindlemail)s" msgstr "Le livre a été mis en file de traitement avec succès pour un envois vers %(kindlemail)s"
#: cps/web.py:1071 #: cps/web.py:1068
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "Il y a eu une erreur en envoyant ce livre : %(res)s" msgstr "Il y a eu une erreur en envoyant ce livre : %(res)s"
#: cps/web.py:1073 #: cps/web.py:1070
msgid "Please configure your kindle e-mail address first..." msgid "Please configure your kindle e-mail address first..."
msgstr "Veuillez configurer votre adresse de courriel Kindle en premier lieu…" msgstr "Veuillez configurer votre adresse de courriel Kindle en premier lieu…"
#: cps/web.py:1087 #: cps/web.py:1084
msgid "E-Mail server is not configured, please contact your administrator!" msgid "E-Mail server is not configured, please contact your administrator!"
msgstr "" msgstr ""
#: cps/web.py:1088 cps/web.py:1094 cps/web.py:1119 cps/web.py:1123 #: cps/web.py:1085 cps/web.py:1091 cps/web.py:1116 cps/web.py:1120
#: cps/web.py:1128 cps/web.py:1132 #: cps/web.py:1125 cps/web.py:1129
msgid "register" msgid "register"
msgstr "senregistrer" msgstr "senregistrer"
#: cps/web.py:1121 #: cps/web.py:1118
msgid "Your e-mail is not allowed to register" msgid "Your e-mail is not allowed to register"
msgstr "Votre adresse de courriel nest pas autorisé pour une inscription" msgstr "Votre adresse de courriel nest pas autorisé pour une inscription"
#: cps/web.py:1124 #: cps/web.py:1121
msgid "Confirmation e-mail was send to your e-mail account." msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Le courriel de confirmation a été envoyé à votre adresse." msgstr "Le courriel de confirmation a été envoyé à votre adresse."
#: cps/web.py:1127 #: cps/web.py:1124
msgid "This username or e-mail address is already in use." msgid "This username or e-mail address is already in use."
msgstr "Ce nom dutilisateur ou cette adresse de courriel sont déjà utilisés." msgstr "Ce nom dutilisateur ou cette adresse de courriel sont déjà utilisés."
#: cps/web.py:1144 #: cps/web.py:1141
msgid "Cannot activate LDAP authentication" msgid "Cannot activate LDAP authentication"
msgstr "Impossible dactiver lauthentification LDAP" msgstr "Impossible dactiver lauthentification LDAP"
#: cps/web.py:1154 cps/web.py:1281 #: cps/web.py:1151 cps/web.py:1278
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "vous êtes maintenant connecté sous : '%(nickname)s'" msgstr "vous êtes maintenant connecté sous : '%(nickname)s'"
#: cps/web.py:1159 #: cps/web.py:1156
msgid "Could not login. LDAP server down, please contact your administrator" msgid "Could not login. LDAP server down, please contact your administrator"
msgstr "Impossible de se connecter. Serveur LDAP hors service, veuillez contacter votre administrateur" msgstr "Impossible de se connecter. Serveur LDAP hors service, veuillez contacter votre administrateur"
#: cps/web.py:1163 cps/web.py:1186 #: cps/web.py:1160 cps/web.py:1183
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "Mauvais nom d'utilisateur ou mot de passe" msgstr "Mauvais nom d'utilisateur ou mot de passe"
#: cps/web.py:1170 #: cps/web.py:1167
msgid "New Password was send to your email address" msgid "New Password was send to your email address"
msgstr "" msgstr ""
#: cps/web.py:1176 #: cps/web.py:1173
msgid "Please enter valid username to reset password" msgid "Please enter valid username to reset password"
msgstr "" msgstr ""
#: cps/web.py:1182 #: cps/web.py:1179
#, python-format #, python-format
msgid "You are now logged in as: '%(nickname)s'" msgid "You are now logged in as: '%(nickname)s'"
msgstr "Vous êtes maintenant connecté en tant que : %(nickname)s" msgstr "Vous êtes maintenant connecté en tant que : %(nickname)s"
#: cps/web.py:1189 cps/web.py:1213 #: cps/web.py:1186 cps/web.py:1210
msgid "login" msgid "login"
msgstr "connexion" msgstr "connexion"
#: cps/web.py:1225 cps/web.py:1259 #: cps/web.py:1222 cps/web.py:1256
msgid "Token not found" msgid "Token not found"
msgstr "Jeton non trouvé" msgstr "Jeton non trouvé"
#: cps/web.py:1234 cps/web.py:1267 #: cps/web.py:1231 cps/web.py:1264
msgid "Token has expired" msgid "Token has expired"
msgstr "Jeton expiré" msgstr "Jeton expiré"
#: cps/web.py:1243 #: cps/web.py:1240
msgid "Success! Please return to your device" msgid "Success! Please return to your device"
msgstr "Réussite! Merci de vous tourner vers votre appareil" msgstr "Réussite! Merci de vous tourner vers votre appareil"
#: cps/web.py:1320 cps/web.py:1363 cps/web.py:1369 #: cps/web.py:1317 cps/web.py:1360 cps/web.py:1366
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "Profil de %(name)s" msgstr "Profil de %(name)s"
#: cps/web.py:1365 #: cps/web.py:1362
msgid "Profile updated" msgid "Profile updated"
msgstr "Profil mis à jour" msgstr "Profil mis à jour"
#: cps/web.py:1394 cps/web.py:1397 cps/web.py:1400 cps/web.py:1407 #: cps/web.py:1391 cps/web.py:1394 cps/web.py:1397 cps/web.py:1404
#: cps/web.py:1412 #: cps/web.py:1409
msgid "Read a Book" msgid "Read a Book"
msgstr "Lire un livre" msgstr "Lire un livre"
#: cps/web.py:1423 #: cps/web.py:1420
msgid "Error opening eBook. File does not exist or file is not accessible." msgid "Error opening eBook. File does not exist or file is not accessible."
msgstr "Erreur lors de louverture dun eBook. Le fichier nexiste pas ou le fichier nest pas accessible." msgstr "Erreur lors de louverture dun eBook. Le fichier nexiste pas ou le fichier nest pas accessible."
@ -1112,7 +1112,7 @@ msgstr "Oui"
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:92 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:92
#: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/layout.html:28 cps/templates/shelf.html:73
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
#: cps/templates/user_edit.html:131 #: cps/templates/user_edit.html:133
msgid "Back" msgid "Back"
msgstr "Retour" msgstr "Retour"
@ -1225,7 +1225,7 @@ msgstr "Date de publication"
msgid "Publisher" msgid "Publisher"
msgstr "Editeur" msgstr "Editeur"
#: cps/templates/book_edit.html:103 cps/templates/user_edit.html:30 #: cps/templates/book_edit.html:103 cps/templates/user_edit.html:31
msgid "Language" msgid "Language"
msgstr "Langue" msgstr "Langue"
@ -1252,7 +1252,7 @@ msgstr "Obtenir les métadonnées"
#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329 #: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329
#: cps/templates/config_view_edit.html:146 cps/templates/login.html:20 #: cps/templates/config_view_edit.html:146 cps/templates/login.html:20
#: cps/templates/search_form.html:170 cps/templates/shelf_edit.html:17 #: cps/templates/search_form.html:170 cps/templates/shelf_edit.html:17
#: cps/templates/user_edit.html:129 #: cps/templates/user_edit.html:131
msgid "Submit" msgid "Submit"
msgstr "Soumettre" msgstr "Soumettre"
@ -1605,35 +1605,35 @@ msgstr "Mots clés pour contenue pour adulte"
msgid "Default settings for new users" msgid "Default settings for new users"
msgstr "Réglages par défaut pour les nouveaux utilisateurs" msgstr "Réglages par défaut pour les nouveaux utilisateurs"
#: cps/templates/config_view_edit.html:81 cps/templates/user_edit.html:82 #: cps/templates/config_view_edit.html:81 cps/templates/user_edit.html:84
msgid "Admin user" msgid "Admin user"
msgstr "Utilisateur admin" msgstr "Utilisateur admin"
#: cps/templates/config_view_edit.html:85 cps/templates/user_edit.html:91 #: cps/templates/config_view_edit.html:85 cps/templates/user_edit.html:93
msgid "Allow Downloads" msgid "Allow Downloads"
msgstr "Permettre les téléchargements" msgstr "Permettre les téléchargements"
#: cps/templates/config_view_edit.html:89 cps/templates/user_edit.html:95 #: cps/templates/config_view_edit.html:89 cps/templates/user_edit.html:97
msgid "Allow book viewer" msgid "Allow book viewer"
msgstr "Autoriser le visionneur de livres" msgstr "Autoriser le visionneur de livres"
#: cps/templates/config_view_edit.html:93 cps/templates/user_edit.html:99 #: cps/templates/config_view_edit.html:93 cps/templates/user_edit.html:101
msgid "Allow Uploads" msgid "Allow Uploads"
msgstr "Permettre le téléversement de fichiers" msgstr "Permettre le téléversement de fichiers"
#: cps/templates/config_view_edit.html:97 cps/templates/user_edit.html:103 #: cps/templates/config_view_edit.html:97 cps/templates/user_edit.html:105
msgid "Allow Edit" msgid "Allow Edit"
msgstr "Permettre l'édition" msgstr "Permettre l'édition"
#: cps/templates/config_view_edit.html:101 cps/templates/user_edit.html:107 #: cps/templates/config_view_edit.html:101 cps/templates/user_edit.html:109
msgid "Allow Delete books" msgid "Allow Delete books"
msgstr "Autoriser la suppression des livres" msgstr "Autoriser la suppression des livres"
#: cps/templates/config_view_edit.html:105 cps/templates/user_edit.html:112 #: cps/templates/config_view_edit.html:105 cps/templates/user_edit.html:114
msgid "Allow Changing Password" msgid "Allow Changing Password"
msgstr "Permettre le changement de mot de passe" msgstr "Permettre le changement de mot de passe"
#: cps/templates/config_view_edit.html:109 cps/templates/user_edit.html:116 #: cps/templates/config_view_edit.html:109 cps/templates/user_edit.html:118
msgid "Allow Editing Public Shelfs" msgid "Allow Editing Public Shelfs"
msgstr "Autoriser la modification détagères publiques" msgstr "Autoriser la modification détagères publiques"
@ -1641,11 +1641,11 @@ msgstr "Autoriser la modification détagères publiques"
msgid "Default visibilities for new users" msgid "Default visibilities for new users"
msgstr "Mode de visualisation par défaut pour les nouveaux utilisateurs" msgstr "Mode de visualisation par défaut pour les nouveaux utilisateurs"
#: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:74 #: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:76
msgid "Show random books in detail view" msgid "Show random books in detail view"
msgstr "Montrer aléatoirement des livres dans la vue détaillée" msgstr "Montrer aléatoirement des livres dans la vue détaillée"
#: cps/templates/config_view_edit.html:139 cps/templates/user_edit.html:87 #: cps/templates/config_view_edit.html:139 cps/templates/user_edit.html:89
msgid "Show mature content" msgid "Show mature content"
msgstr "Montrer le contenu pour adulte" msgstr "Montrer le contenu pour adulte"
@ -1924,13 +1924,21 @@ msgstr ""
msgid "Log in with magic link" msgid "Log in with magic link"
msgstr "Se connecter avec le (\"magic link\")" msgstr "Se connecter avec le (\"magic link\")"
#: cps/templates/logviewer.html:5 #: cps/templates/logviewer.html:6
msgid "Show Calibre-Web log" msgid "Show Calibre-Web log: "
msgstr "Afficher le journal Calibre-Web" msgstr ""
#: cps/templates/logviewer.html:8 #: cps/templates/logviewer.html:8
msgid "Show access log" msgid "Calibre-Web log: "
msgstr "Afficher le journal des accès" msgstr ""
#: cps/templates/logviewer.html:8
msgid "Stream output, can't be displayed"
msgstr ""
#: cps/templates/logviewer.html:12
msgid "Show access log: "
msgstr ""
#: cps/templates/osd.xml:5 #: cps/templates/osd.xml:5
msgid "Calibre-Web ebook catalog" msgid "Calibre-Web ebook catalog"
@ -2224,31 +2232,31 @@ msgstr "Réinitialiser le mot de passe de lutilisateur"
msgid "Kindle E-Mail" msgid "Kindle E-Mail"
msgstr "Adresse de courriel Kindle" msgstr "Adresse de courriel Kindle"
#: cps/templates/user_edit.html:39 #: cps/templates/user_edit.html:41
msgid "Show books with language" msgid "Show books with language"
msgstr "Montrer les livres dans la langue" msgstr "Montrer les livres dans la langue"
#: cps/templates/user_edit.html:41 #: cps/templates/user_edit.html:43
msgid "Show all" msgid "Show all"
msgstr "Montrer tout" msgstr "Montrer tout"
#: cps/templates/user_edit.html:51 #: cps/templates/user_edit.html:53
msgid "OAuth Settings" msgid "OAuth Settings"
msgstr "Réglages OAuth" msgstr "Réglages OAuth"
#: cps/templates/user_edit.html:53 #: cps/templates/user_edit.html:55
msgid "Link" msgid "Link"
msgstr "Relier" msgstr "Relier"
#: cps/templates/user_edit.html:55 #: cps/templates/user_edit.html:57
msgid "Unlink" msgid "Unlink"
msgstr "Dissocier" msgstr "Dissocier"
#: cps/templates/user_edit.html:123 #: cps/templates/user_edit.html:125
msgid "Delete this user" msgid "Delete this user"
msgstr "Supprimer cet utilisateur" msgstr "Supprimer cet utilisateur"
#: cps/templates/user_edit.html:138 #: cps/templates/user_edit.html:140
msgid "Recent Downloads" msgid "Recent Downloads"
msgstr "Téléchargement récent" msgstr "Téléchargement récent"
@ -2267,3 +2275,9 @@ msgstr "Téléchargement récent"
#~ msgid "New Books" #~ msgid "New Books"
#~ msgstr "Nouveaux livres" #~ msgstr "Nouveaux livres"
#~ msgid "Show Calibre-Web log"
#~ msgstr "Afficher le journal Calibre-Web"
#~ msgid "Show access log"
#~ msgstr "Afficher le journal des accès"

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-01-12 13:57+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2019-04-06 23:36+0200\n" "PO-Revision-Date: 2019-04-06 23:36+0200\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language: hu\n" "Language: hu\n"
@ -60,7 +60,7 @@ msgstr "A Calibre-Web konfigurációja frissítve."
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "Alapvető beállítások" msgstr "Alapvető beállítások"
#: cps/admin.py:465 cps/web.py:1093 #: cps/admin.py:465 cps/web.py:1090
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "Az összes mezőt ki kell tölteni!" msgstr "Az összes mezőt ki kell tölteni!"
@ -69,7 +69,7 @@ msgstr "Az összes mezőt ki kell tölteni!"
msgid "Add new user" msgid "Add new user"
msgstr "Új felhasználó hozzáadása" msgstr "Új felhasználó hozzáadása"
#: cps/admin.py:476 cps/web.py:1318 #: cps/admin.py:476 cps/web.py:1315
msgid "E-mail is not from valid domain" msgid "E-mail is not from valid domain"
msgstr "Az e-mail tartománya nem érvényes." msgstr "Az e-mail tartománya nem érvényes."
@ -113,16 +113,16 @@ msgstr "A felhasználó törölve: %(nick)s"
msgid "No admin user remaining, can't delete user" msgid "No admin user remaining, can't delete user"
msgstr "" msgstr ""
#: cps/admin.py:612 cps/web.py:1359 #: cps/admin.py:612 cps/web.py:1356
msgid "Found an existing account for this e-mail address." msgid "Found an existing account for this e-mail address."
msgstr "Már létezik felhasználó ehhez az e-mail címhez." msgstr "Már létezik felhasználó ehhez az e-mail címhez."
#: cps/admin.py:616 cps/admin.py:630 cps/admin.py:644 cps/web.py:1334 #: cps/admin.py:616 cps/admin.py:630 cps/admin.py:644 cps/web.py:1331
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr " A felhasználó szerkesztése: %(nick)s" msgstr " A felhasználó szerkesztése: %(nick)s"
#: cps/admin.py:622 cps/web.py:1327 #: cps/admin.py:622 cps/web.py:1324
msgid "This username is already taken" msgid "This username is already taken"
msgstr "" msgstr ""
@ -140,63 +140,63 @@ msgstr "Ismeretlen hiba történt."
msgid "Password for user %(user)s reset" msgid "Password for user %(user)s reset"
msgstr "A(z) %(user)s felhasználó jelszavának alaphelyzetbe állítása" msgstr "A(z) %(user)s felhasználó jelszavának alaphelyzetbe állítása"
#: cps/admin.py:660 cps/web.py:1118 cps/web.py:1174 #: cps/admin.py:660 cps/web.py:1115 cps/web.py:1171
msgid "An unknown error occurred. Please try again later." msgid "An unknown error occurred. Please try again later."
msgstr "Ismeretlen hiba történt. Próbáld újra később!" msgstr "Ismeretlen hiba történt. Próbáld újra később!"
#: cps/admin.py:663 cps/web.py:1062 #: cps/admin.py:663 cps/web.py:1059
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "Először be kell állítani az SMTP levelező beállításokat..." msgstr "Először be kell állítani az SMTP levelező beállításokat..."
#: cps/admin.py:674 #: cps/admin.py:675
msgid "Logfile viewer" msgid "Logfile viewer"
msgstr "" msgstr ""
#: cps/admin.py:710 #: cps/admin.py:714
msgid "Requesting update package" msgid "Requesting update package"
msgstr "Frissítési csomag kérése" msgstr "Frissítési csomag kérése"
#: cps/admin.py:711 #: cps/admin.py:715
msgid "Downloading update package" msgid "Downloading update package"
msgstr "Frissítési csomag letöltése" msgstr "Frissítési csomag letöltése"
#: cps/admin.py:712 #: cps/admin.py:716
msgid "Unzipping update package" msgid "Unzipping update package"
msgstr "Frissítési csomag kitömörítése" msgstr "Frissítési csomag kitömörítése"
#: cps/admin.py:713 #: cps/admin.py:717
msgid "Replacing files" msgid "Replacing files"
msgstr "Fájlok cserélése" msgstr "Fájlok cserélése"
#: cps/admin.py:714 #: cps/admin.py:718
msgid "Database connections are closed" msgid "Database connections are closed"
msgstr "Adatbázis kapcsolatok lezárva" msgstr "Adatbázis kapcsolatok lezárva"
#: cps/admin.py:715 #: cps/admin.py:719
msgid "Stopping server" msgid "Stopping server"
msgstr "Szerver leállítása" msgstr "Szerver leállítása"
#: cps/admin.py:716 #: cps/admin.py:720
msgid "Update finished, please press okay and reload page" msgid "Update finished, please press okay and reload page"
msgstr "A frissítés települt, kattints az OK-ra és újra tölt az oldal" msgstr "A frissítés települt, kattints az OK-ra és újra tölt az oldal"
#: cps/admin.py:717 cps/admin.py:718 cps/admin.py:719 cps/admin.py:720 #: cps/admin.py:721 cps/admin.py:722 cps/admin.py:723 cps/admin.py:724
msgid "Update failed:" msgid "Update failed:"
msgstr "A frissítés nem sikerült:" msgstr "A frissítés nem sikerült:"
#: cps/admin.py:717 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459 #: cps/admin.py:721 cps/updater.py:272 cps/updater.py:457 cps/updater.py:459
msgid "HTTP Error" msgid "HTTP Error"
msgstr "HTTP hiba" msgstr "HTTP hiba"
#: cps/admin.py:718 cps/updater.py:274 cps/updater.py:461 #: cps/admin.py:722 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "Kapcsolódási hiba" msgstr "Kapcsolódási hiba"
#: cps/admin.py:719 cps/updater.py:276 cps/updater.py:463 #: cps/admin.py:723 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
msgstr "Időtúllépés a kapcsolódás során" msgstr "Időtúllépés a kapcsolódás során"
#: cps/admin.py:720 cps/updater.py:278 cps/updater.py:465 #: cps/admin.py:724 cps/updater.py:278 cps/updater.py:465
msgid "General error" msgid "General error"
msgstr "Általános hiba" msgstr "Általános hiba"
@ -592,7 +592,7 @@ msgid "Show best rated books"
msgstr "Legjobbra értékelt könyvek mutatása" msgstr "Legjobbra értékelt könyvek mutatása"
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67 #: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
#: cps/web.py:1011 #: cps/web.py:1009
msgid "Read Books" msgid "Read Books"
msgstr "Olvasott könyvek" msgstr "Olvasott könyvek"
@ -601,7 +601,7 @@ msgid "Show read and unread"
msgstr "Mutassa az olvasva/olvasatlan állapotot" msgstr "Mutassa az olvasva/olvasatlan állapotot"
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71 #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
#: cps/web.py:1015 #: cps/web.py:1013
msgid "Unread Books" msgid "Unread Books"
msgstr "Olvasatlan könyvek" msgstr "Olvasatlan könyvek"
@ -723,7 +723,7 @@ msgstr ""
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "Kelendő könyvek (legtöbbet letöltöttek)" msgstr "Kelendő könyvek (legtöbbet letöltöttek)"
#: cps/web.py:586 cps/web.py:1382 cps/web.py:1478 #: cps/web.py:586 cps/web.py:1379 cps/web.py:1475
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Hiba történt az e-könyv megnyitásakor. A fájl nem létezik vagy nem érhető el:" msgstr "Hiba történt az e-könyv megnyitásakor. A fájl nem létezik vagy nem érhető el:"
@ -791,128 +791,128 @@ msgid "Tasks"
msgstr "Feladatok" msgstr "Feladatok"
#: cps/templates/feed.xml:33 cps/templates/layout.html:44 #: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: cps/templates/layout.html:45 cps/web.py:829 cps/web.py:831 #: cps/templates/layout.html:45 cps/web.py:827 cps/web.py:829
msgid "Search" msgid "Search"
msgstr "Keresés" msgstr "Keresés"
#: cps/web.py:881 #: cps/web.py:879
msgid "Published after " msgid "Published after "
msgstr "Kiadva ezután: " msgstr "Kiadva ezután: "
#: cps/web.py:888 #: cps/web.py:886
msgid "Published before " msgid "Published before "
msgstr "Kiadva ezelőtt: " msgstr "Kiadva ezelőtt: "
#: cps/web.py:902 #: cps/web.py:900
#, python-format #, python-format
msgid "Rating <= %(rating)s" msgid "Rating <= %(rating)s"
msgstr "Értékelés <= %(rating)s" msgstr "Értékelés <= %(rating)s"
#: cps/web.py:904 #: cps/web.py:902
#, python-format #, python-format
msgid "Rating >= %(rating)s" msgid "Rating >= %(rating)s"
msgstr "Értékelés <= %(rating)s" msgstr "Értékelés <= %(rating)s"
#: cps/web.py:970 cps/web.py:982 #: cps/web.py:968 cps/web.py:980
msgid "search" msgid "search"
msgstr "keresés" msgstr "keresés"
#: cps/web.py:1067 #: cps/web.py:1064
#, python-format #, python-format
msgid "Book successfully queued for sending to %(kindlemail)s" msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "A könyv sikeresen küldésre lett jelölve a következő címre: %(kindlemail)s" msgstr "A könyv sikeresen küldésre lett jelölve a következő címre: %(kindlemail)s"
#: cps/web.py:1071 #: cps/web.py:1068
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "Hiba történt a könyv küldésekor: %(res)s" msgstr "Hiba történt a könyv küldésekor: %(res)s"
#: cps/web.py:1073 #: cps/web.py:1070
msgid "Please configure your kindle e-mail address first..." msgid "Please configure your kindle e-mail address first..."
msgstr "Először be kell állítani a kindle e-mail címet..." msgstr "Először be kell állítani a kindle e-mail címet..."
#: cps/web.py:1087 #: cps/web.py:1084
msgid "E-Mail server is not configured, please contact your administrator!" msgid "E-Mail server is not configured, please contact your administrator!"
msgstr "" msgstr ""
#: cps/web.py:1088 cps/web.py:1094 cps/web.py:1119 cps/web.py:1123 #: cps/web.py:1085 cps/web.py:1091 cps/web.py:1116 cps/web.py:1120
#: cps/web.py:1128 cps/web.py:1132 #: cps/web.py:1125 cps/web.py:1129
msgid "register" msgid "register"
msgstr "regisztrálás" msgstr "regisztrálás"
#: cps/web.py:1121 #: cps/web.py:1118
msgid "Your e-mail is not allowed to register" msgid "Your e-mail is not allowed to register"
msgstr "Nem engedélyezett a megadott e-mail cím bejegyzése" msgstr "Nem engedélyezett a megadott e-mail cím bejegyzése"
#: cps/web.py:1124 #: cps/web.py:1121
msgid "Confirmation e-mail was send to your e-mail account." msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Jóváhagyó levél elküldve az email címedre." msgstr "Jóváhagyó levél elküldve az email címedre."
#: cps/web.py:1127 #: cps/web.py:1124
msgid "This username or e-mail address is already in use." msgid "This username or e-mail address is already in use."
msgstr "Ez a felhasználónév vagy e-mail cím már használatban van." msgstr "Ez a felhasználónév vagy e-mail cím már használatban van."
#: cps/web.py:1144 #: cps/web.py:1141
msgid "Cannot activate LDAP authentication" msgid "Cannot activate LDAP authentication"
msgstr "" msgstr ""
#: cps/web.py:1154 cps/web.py:1281 #: cps/web.py:1151 cps/web.py:1278
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "Be vagy jelentkezve mint: %(nickname)s" msgstr "Be vagy jelentkezve mint: %(nickname)s"
#: cps/web.py:1159 #: cps/web.py:1156
msgid "Could not login. LDAP server down, please contact your administrator" msgid "Could not login. LDAP server down, please contact your administrator"
msgstr "" msgstr ""
#: cps/web.py:1163 cps/web.py:1186 #: cps/web.py:1160 cps/web.py:1183
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "Rossz felhasználó név vagy jelszó!" msgstr "Rossz felhasználó név vagy jelszó!"
#: cps/web.py:1170 #: cps/web.py:1167
msgid "New Password was send to your email address" msgid "New Password was send to your email address"
msgstr "" msgstr ""
#: cps/web.py:1176 #: cps/web.py:1173
msgid "Please enter valid username to reset password" msgid "Please enter valid username to reset password"
msgstr "" msgstr ""
#: cps/web.py:1182 #: cps/web.py:1179
#, python-format #, python-format
msgid "You are now logged in as: '%(nickname)s'" msgid "You are now logged in as: '%(nickname)s'"
msgstr "" msgstr ""
#: cps/web.py:1189 cps/web.py:1213 #: cps/web.py:1186 cps/web.py:1210
msgid "login" msgid "login"
msgstr "belépés" msgstr "belépés"
#: cps/web.py:1225 cps/web.py:1259 #: cps/web.py:1222 cps/web.py:1256
msgid "Token not found" msgid "Token not found"
msgstr "A token nem található." msgstr "A token nem található."
#: cps/web.py:1234 cps/web.py:1267 #: cps/web.py:1231 cps/web.py:1264
msgid "Token has expired" msgid "Token has expired"
msgstr "A token érvényessége lejárt." msgstr "A token érvényessége lejárt."
#: cps/web.py:1243 #: cps/web.py:1240
msgid "Success! Please return to your device" msgid "Success! Please return to your device"
msgstr "Sikerült! Újra használható az eszköz." msgstr "Sikerült! Újra használható az eszköz."
#: cps/web.py:1320 cps/web.py:1363 cps/web.py:1369 #: cps/web.py:1317 cps/web.py:1360 cps/web.py:1366
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "%(name)s profilja" msgstr "%(name)s profilja"
#: cps/web.py:1365 #: cps/web.py:1362
msgid "Profile updated" msgid "Profile updated"
msgstr "A profil frissítve." msgstr "A profil frissítve."
#: cps/web.py:1394 cps/web.py:1397 cps/web.py:1400 cps/web.py:1407 #: cps/web.py:1391 cps/web.py:1394 cps/web.py:1397 cps/web.py:1404
#: cps/web.py:1412 #: cps/web.py:1409
msgid "Read a Book" msgid "Read a Book"
msgstr "Egy olvasott könyv" msgstr "Egy olvasott könyv"
#: cps/web.py:1423 #: cps/web.py:1420
msgid "Error opening eBook. File does not exist or file is not accessible." msgid "Error opening eBook. File does not exist or file is not accessible."
msgstr "" msgstr ""
@ -1099,7 +1099,7 @@ msgstr "OK"
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:92 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:92
#: cps/templates/layout.html:28 cps/templates/shelf.html:73 #: cps/templates/layout.html:28 cps/templates/shelf.html:73
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
#: cps/templates/user_edit.html:131 #: cps/templates/user_edit.html:133
msgid "Back" msgid "Back"
msgstr "Vissza" msgstr "Vissza"
@ -1212,7 +1212,7 @@ msgstr "Kiadás éve"
msgid "Publisher" msgid "Publisher"
msgstr "Kiadó" msgstr "Kiadó"
#: cps/templates/book_edit.html:103 cps/templates/user_edit.html:30 #: cps/templates/book_edit.html:103 cps/templates/user_edit.html:31
msgid "Language" msgid "Language"
msgstr "Nyelv" msgstr "Nyelv"
@ -1239,7 +1239,7 @@ msgstr "Metaadatok beszerzése"
#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329 #: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329
#: cps/templates/config_view_edit.html:146 cps/templates/login.html:20 #: cps/templates/config_view_edit.html:146 cps/templates/login.html:20
#: cps/templates/search_form.html:170 cps/templates/shelf_edit.html:17 #: cps/templates/search_form.html:170 cps/templates/shelf_edit.html:17
#: cps/templates/user_edit.html:129 #: cps/templates/user_edit.html:131
msgid "Submit" msgid "Submit"
msgstr "Küldés" msgstr "Küldés"
@ -1592,35 +1592,35 @@ msgstr "Felnőtt tartalom címkéi"
msgid "Default settings for new users" msgid "Default settings for new users"
msgstr "Új felhasználók alapértelmezett beállításai" msgstr "Új felhasználók alapértelmezett beállításai"
#: cps/templates/config_view_edit.html:81 cps/templates/user_edit.html:82 #: cps/templates/config_view_edit.html:81 cps/templates/user_edit.html:84
msgid "Admin user" msgid "Admin user"
msgstr "Rendszergazda felhasználó" msgstr "Rendszergazda felhasználó"
#: cps/templates/config_view_edit.html:85 cps/templates/user_edit.html:91 #: cps/templates/config_view_edit.html:85 cps/templates/user_edit.html:93
msgid "Allow Downloads" msgid "Allow Downloads"
msgstr "Letöltés engedélyezése" msgstr "Letöltés engedélyezése"
#: cps/templates/config_view_edit.html:89 cps/templates/user_edit.html:95 #: cps/templates/config_view_edit.html:89 cps/templates/user_edit.html:97
msgid "Allow book viewer" msgid "Allow book viewer"
msgstr "" msgstr ""
#: cps/templates/config_view_edit.html:93 cps/templates/user_edit.html:99 #: cps/templates/config_view_edit.html:93 cps/templates/user_edit.html:101
msgid "Allow Uploads" msgid "Allow Uploads"
msgstr "Feltöltés engedélyezése" msgstr "Feltöltés engedélyezése"
#: cps/templates/config_view_edit.html:97 cps/templates/user_edit.html:103 #: cps/templates/config_view_edit.html:97 cps/templates/user_edit.html:105
msgid "Allow Edit" msgid "Allow Edit"
msgstr "Szerkesztés engedélyezése" msgstr "Szerkesztés engedélyezése"
#: cps/templates/config_view_edit.html:101 cps/templates/user_edit.html:107 #: cps/templates/config_view_edit.html:101 cps/templates/user_edit.html:109
msgid "Allow Delete books" msgid "Allow Delete books"
msgstr "Könyv törlés engedélyezése" msgstr "Könyv törlés engedélyezése"
#: cps/templates/config_view_edit.html:105 cps/templates/user_edit.html:112 #: cps/templates/config_view_edit.html:105 cps/templates/user_edit.html:114
msgid "Allow Changing Password" msgid "Allow Changing Password"
msgstr "Jelszó változtatásának engedélyezése" msgstr "Jelszó változtatásának engedélyezése"
#: cps/templates/config_view_edit.html:109 cps/templates/user_edit.html:116 #: cps/templates/config_view_edit.html:109 cps/templates/user_edit.html:118
msgid "Allow Editing Public Shelfs" msgid "Allow Editing Public Shelfs"
msgstr "Nyilvános polcok szerkesztésének engedélyezése" msgstr "Nyilvános polcok szerkesztésének engedélyezése"
@ -1628,11 +1628,11 @@ msgstr "Nyilvános polcok szerkesztésének engedélyezése"
msgid "Default visibilities for new users" msgid "Default visibilities for new users"
msgstr "Új felhasználók alapértelmezett látható elemei" msgstr "Új felhasználók alapértelmezett látható elemei"
#: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:74 #: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:76
msgid "Show random books in detail view" msgid "Show random books in detail view"
msgstr "Mutasson könyveket találomra a részletes nézetben" msgstr "Mutasson könyveket találomra a részletes nézetben"
#: cps/templates/config_view_edit.html:139 cps/templates/user_edit.html:87 #: cps/templates/config_view_edit.html:139 cps/templates/user_edit.html:89
msgid "Show mature content" msgid "Show mature content"
msgstr "Mutassa a felnőtt tartalmat" msgstr "Mutassa a felnőtt tartalmat"
@ -1911,12 +1911,20 @@ msgstr ""
msgid "Log in with magic link" msgid "Log in with magic link"
msgstr "Belépés varázshivatkozással" msgstr "Belépés varázshivatkozással"
#: cps/templates/logviewer.html:5 #: cps/templates/logviewer.html:6
msgid "Show Calibre-Web log" msgid "Show Calibre-Web log: "
msgstr "" msgstr ""
#: cps/templates/logviewer.html:8 #: cps/templates/logviewer.html:8
msgid "Show access log" msgid "Calibre-Web log: "
msgstr ""
#: cps/templates/logviewer.html:8
msgid "Stream output, can't be displayed"
msgstr ""
#: cps/templates/logviewer.html:12
msgid "Show access log: "
msgstr "" msgstr ""
#: cps/templates/osd.xml:5 #: cps/templates/osd.xml:5
@ -2211,31 +2219,31 @@ msgstr "Felhasználó jelszavának alaphelyzetbe állítása"
msgid "Kindle E-Mail" msgid "Kindle E-Mail"
msgstr "Kindle e-mail" msgstr "Kindle e-mail"
#: cps/templates/user_edit.html:39 #: cps/templates/user_edit.html:41
msgid "Show books with language" msgid "Show books with language"
msgstr "Mutasd a könyveket a következő nyelvvel" msgstr "Mutasd a könyveket a következő nyelvvel"
#: cps/templates/user_edit.html:41 #: cps/templates/user_edit.html:43
msgid "Show all" msgid "Show all"
msgstr "Mindent mutass" msgstr "Mindent mutass"
#: cps/templates/user_edit.html:51 #: cps/templates/user_edit.html:53
msgid "OAuth Settings" msgid "OAuth Settings"
msgstr "" msgstr ""
#: cps/templates/user_edit.html:53 #: cps/templates/user_edit.html:55
msgid "Link" msgid "Link"
msgstr "" msgstr ""
#: cps/templates/user_edit.html:55 #: cps/templates/user_edit.html:57
msgid "Unlink" msgid "Unlink"
msgstr "" msgstr ""
#: cps/templates/user_edit.html:123 #: cps/templates/user_edit.html:125
msgid "Delete this user" msgid "Delete this user"
msgstr "A felhasználó törlése" msgstr "A felhasználó törlése"
#: cps/templates/user_edit.html:138 #: cps/templates/user_edit.html:140
msgid "Recent Downloads" msgid "Recent Downloads"
msgstr "Utolsó letöltések" msgstr "Utolsó letöltések"
@ -3463,3 +3471,9 @@ msgstr "Utolsó letöltések"
#~ msgid "New Books" #~ msgid "New Books"
#~ msgstr "Új könyvek" #~ msgstr "Új könyvek"
#~ msgid "Show Calibre-Web log"
#~ msgstr ""
#~ msgid "Show access log"
#~ msgstr ""

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save