From 5d34fd7fec0468812cbee91bca46987cc6d01166 Mon Sep 17 00:00:00 2001 From: bodybybuddha Date: Mon, 1 Oct 2018 14:19:29 -0400 Subject: [PATCH 001/135] Send to Kindle button precheck added Based on existing book formats and which converter (if any) determine if button can be seen. --- cps/helper.py | 59 +++++++++++++++++++++++++++++++++++++++ cps/templates/detail.html | 2 +- cps/web.py | 7 +++-- 3 files changed, 65 insertions(+), 3 deletions(-) diff --git a/cps/helper.py b/cps/helper.py index 722a6245..5aaeb988 100755 --- a/cps/helper.py +++ b/cps/helper.py @@ -108,6 +108,65 @@ def send_registration_mail(e_mail, user_name, default_password, resend=False): e_mail, user_name, _(u"Registration e-mail for user: %(name)s", name=user_name),text) return +def chk_send_to_kindle(book_id): + ''' + Used to determine if we can show the Send to Kindle button. + Specifically checks the existing book formats and the conversion options available. + + mobi = true + epub && kindlegen or ebookconvert = true + all valid 'book' format && ebookconvert = true + all other combinations = false + ''' + book = db.session.query(db.Books).filter(db.Books.id == book_id).first() + data = db.session.query(db.Data).filter(db.Data.book == book.id).all() + if data: + bookformats = get_formats_from_book(data) + + if ub.config.config_ebookconverter == 0: + # no converter - only allow for mobi and pdf formats + if 'MOBI' in bookformats or 'PDF' in bookformats: + return True + else: + return False + else: + if ub.config.config_ebookconverter == 1: + # the converter is kindlegen - only allow epub + if 'EPUB' in bookformats: + return True + else: + return False + + if ub.config.config_ebookconverter == 2: + # the converter is ebook-convert - allow for any allowable 'book' format + formatcount = 0 + for bookformat in bookformats: + if bookformat.lower() in web.EXTENSIONS_CONVERT: + formatcount += 1 + + if formatcount > 0: + return True + else: + return False + else: + return False + + return False + else: + app.logger.error(u'Cannot find book entry %d', book_id) + return False + +def get_formats_from_book(data): + ''' + data s/b the data member of db.entry + returns a list of formats + ''' + formatlist=[] + for entry in data: + formatlist.append(entry.format.upper()) + + return formatlist + # Files are processed in the following order/priority: # 1: If Mobi file is exisiting, it's directly send to kindle email, diff --git a/cps/templates/detail.html b/cps/templates/detail.html index 420b98a6..0269ad38 100644 --- a/cps/templates/detail.html +++ b/cps/templates/detail.html @@ -40,7 +40,7 @@ {% endif %} {% endif %} - {% if g.user.kindle_mail and g.user.is_authenticated %} + {% if g.user.kindle_mail and g.user.is_authenticated and flg_kindle%} {{_('Send to Kindle')}} {% endif %} {% if entry.data|length %} diff --git a/cps/web.py b/cps/web.py index 2d1e5f3f..3673e0aa 100644 --- a/cps/web.py +++ b/cps/web.py @@ -1586,9 +1586,11 @@ def show_book(book_id): entries.tags = sort(entries.tags, key = lambda tag: tag.name) + flg_send_to_kindle = helper.chk_send_to_kindle(book_id) + return render_title_template('detail.html', entry=entries, cc=cc, is_xhr=request.is_xhr, title=entries.title, books_shelfs=book_in_shelfs, - have_read=have_read, page="book") + have_read=have_read, flg_kindle=flg_send_to_kindle, page="book") else: flash(_(u"Error opening eBook. File does not exist or file is not accessible:"), category="error") return redirect(url_for("index")) @@ -3846,8 +3848,9 @@ def upload(): return render_title_template('book_edit.html', book=book, authors=author_names, cc=cc, title=_(u"edit metadata"), page="upload") book_in_shelfs = [] + flg_send_to_kindle = helper.chk_send_to_kindle(book_id) return render_title_template('detail.html', entry=book, cc=cc, - title=book.title, books_shelfs=book_in_shelfs, page="upload") + title=book.title, books_shelfs=book_in_shelfs, flg_kindle=flg_send_to_kindle, page="upload") return redirect(url_for("index")) From 1144d97bc15425d99f68be47979af912dd969956 Mon Sep 17 00:00:00 2001 From: bodybybuddha Date: Mon, 1 Oct 2018 15:34:16 -0400 Subject: [PATCH 002/135] Fixed updating new book format to be all caps in database This keeps us inline with calibre's behavior. --- cps/worker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cps/worker.py b/cps/worker.py index 02ca742f..21914a3d 100644 --- a/cps/worker.py +++ b/cps/worker.py @@ -320,7 +320,7 @@ class WorkerThread(threading.Thread): cur_book = web.db.session.query(web.db.Books).filter(web.db.Books.id == bookid).first() if os.path.isfile(file_path + format_new_ext): new_format = web.db.Data(name=cur_book.data[0].name, - book_format=self.queue[self.current]['settings']['new_book_format'], + book_format=self.queue[self.current]['settings']['new_book_format'].upper(), book=bookid, uncompressed_size=os.path.getsize(file_path + format_new_ext)) cur_book.data.append(new_format) web.db.session.commit() From 46b2c9919a0fa0c4bf4857f11d7771978e01163b Mon Sep 17 00:00:00 2001 From: bodybybuddha Date: Mon, 1 Oct 2018 15:35:51 -0400 Subject: [PATCH 003/135] Fix for #295 Allow for azw and azw3 files to be "sent" to kindle - these books are actually converted to mobi first --- cps/helper.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cps/helper.py b/cps/helper.py index 5aaeb988..aafb696f 100755 --- a/cps/helper.py +++ b/cps/helper.py @@ -185,6 +185,10 @@ def send_mail(book_id, kindle_mail, calibrepath, user_id): formats["epub"] = entry.name + ".epub" if entry.format == "PDF": formats["pdf"] = entry.name + ".pdf" + if entry.format == "AZW": + formats["azw"] = entry.name + ".azw" + if entry.format == "AZW3": + formats["azw3"] = entry.name + ".azw3" if len(formats) == 0: return _(u"Could not find any formats suitable for sending by e-mail") @@ -194,6 +198,12 @@ def send_mail(book_id, kindle_mail, calibrepath, user_id): elif 'epub' in formats: # returns None if sucess, otherwise errormessage return convert_book_format(book_id, calibrepath, u'epub', u'mobi', user_id, kindle_mail) + elif 'azw3' in formats: + # returns None if sucess, otherwise errormessage + return convert_book_format(book_id, calibrepath, u'azw3', u'mobi', user_id, kindle_mail) + elif 'azw' in formats: + # returns None if sucess, otherwise errormessage + return convert_book_format(book_id, calibrepath, u'azw', u'mobi', user_id, kindle_mail) elif 'pdf' in formats: result = formats['pdf'] # worker.get_attachment() else: From d8107fb50ffbecb90b3afa54148fbb43c02c09cc Mon Sep 17 00:00:00 2001 From: bodybybuddha Date: Tue, 2 Oct 2018 10:22:01 -0400 Subject: [PATCH 004/135] Addressed Codacy trailing space items ... again --- cps/helper.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cps/helper.py b/cps/helper.py index aafb696f..e621679f 100755 --- a/cps/helper.py +++ b/cps/helper.py @@ -142,16 +142,16 @@ def chk_send_to_kindle(book_id): formatcount = 0 for bookformat in bookformats: if bookformat.lower() in web.EXTENSIONS_CONVERT: - formatcount += 1 + formatcount += 1 - if formatcount > 0: + if formatcount > 0: return True else: return False else: return False - return False + return False else: app.logger.error(u'Cannot find book entry %d', book_id) return False From af216e3697cd45e92e3be0753137e08c86cb373f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Santos?= Date: Fri, 16 Nov 2018 23:32:21 +0000 Subject: [PATCH 005/135] Verify if certfile and keyfile are paths to actual files This allow to try to not use ssl if the key file path or the certificate file are broken. The files might be missing because the user intentionally removed them but didn't update the settings first. In that situation, this change won't make the app crash, the warning is logged and that way the user has the chance to update the settings. --- cps/server.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/cps/server.py b/cps/server.py index 59f20109..45718f0d 100644 --- a/cps/server.py +++ b/cps/server.py @@ -32,9 +32,14 @@ class server: def start_gevent(self): try: ssl_args = dict() - if web.ub.config.get_config_certfile() and web.ub.config.get_config_keyfile(): - ssl_args = {"certfile": web.ub.config.get_config_certfile(), - "keyfile": web.ub.config.get_config_keyfile()} + certfile_path = web.ub.config.get_config_certfile() + keyfile_path = web.ub.config.get_config_keyfile() + if certfile_path and keyfile_path: + if os.path.isfile(certfile_path) and os.path.isfile(keyfile_path): + ssl_args = {"certfile": certfile_path, + "keyfile": keyfile_path} + else: + web.app.logger.info('The specified paths for the ssl certificate file and/or key file seem to be broken. Ignoring ssl. Cert path: %s | Key path: %s' % (certfile_path, keyfile_path)) if os.name == 'nt': self.wsgiserver= WSGIServer(('0.0.0.0', web.ub.config.config_port), web.app, spawn=Pool(), **ssl_args) else: @@ -61,9 +66,14 @@ class server: else: try: web.app.logger.info('Starting Tornado server') - if web.ub.config.get_config_certfile() and web.ub.config.get_config_keyfile(): - ssl={"certfile": web.ub.config.get_config_certfile(), - "keyfile": web.ub.config.get_config_keyfile()} + certfile_path = web.ub.config.get_config_certfile() + keyfile_path = web.ub.config.get_config_keyfile() + if certfile_path and keyfile_path: + if os.path.isfile(certfile_path) and os.path.isfile(keyfile_path): + ssl_args = {"certfile": certfile_path, + "keyfile": keyfile_path} + else: + web.app.logger.info('The specified paths for the ssl certificate file and/or key file seem to be broken. Ignoring ssl. Cert path: %s | Key path: %s' % (certfile_path, keyfile_path)) else: ssl=None # Max Buffersize set to 200MB From c6a5ac7f25b3961e8f4d4cd42ee010cea7fe926e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Santos?= Date: Sat, 17 Nov 2018 00:28:34 +0000 Subject: [PATCH 006/135] Fix wrong variable usage --- cps/server.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cps/server.py b/cps/server.py index 45718f0d..c3dd3f28 100644 --- a/cps/server.py +++ b/cps/server.py @@ -70,8 +70,8 @@ class server: keyfile_path = web.ub.config.get_config_keyfile() if certfile_path and keyfile_path: if os.path.isfile(certfile_path) and os.path.isfile(keyfile_path): - ssl_args = {"certfile": certfile_path, - "keyfile": keyfile_path} + ssl = {"certfile": certfile_path, + "keyfile": keyfile_path} else: web.app.logger.info('The specified paths for the ssl certificate file and/or key file seem to be broken. Ignoring ssl. Cert path: %s | Key path: %s' % (certfile_path, keyfile_path)) else: From c574b779fb1bdfca1190dd445c06f8a680b36ec1 Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Sat, 17 Nov 2018 16:41:47 +0100 Subject: [PATCH 007/135] Added swedish translation --- cps/translations/iso639.pickle | 3289 ++++++++++++++----- cps/translations/sv/LC_MESSAGES/messages.mo | Bin 0 -> 46498 bytes cps/translations/sv/LC_MESSAGES/messages.po | 1948 +++++++++++ messages.pot | 326 +- readme.md | 2 +- 5 files changed, 4596 insertions(+), 969 deletions(-) create mode 100644 cps/translations/sv/LC_MESSAGES/messages.mo create mode 100644 cps/translations/sv/LC_MESSAGES/messages.po diff --git a/cps/translations/iso639.pickle b/cps/translations/iso639.pickle index a9b73843..7c954465 100644 --- a/cps/translations/iso639.pickle +++ b/cps/translations/iso639.pickle @@ -15077,7 +15077,7 @@ p7543 ssS'es' p7544 g1679 -sS'ja' +sS'sv' p7545 (dp7546 Vroh @@ -15086,19 +15086,19 @@ VRomansh p7548 sVsco p7549 -V\u30b9\u30b3\u30c3\u30c8\u30e9\u30f3\u30c9\u8a9e +VLgskotska p7550 sVscn p7551 -V\u30b7\u30c1\u30ea\u30a2\u8a9e +VSicilianska p7552 sVrom p7553 -V\u30ed\u30de\u30cb\u8a9e +VRomani p7554 sVron p7555 -V\u30eb\u30fc\u30de\u30cb\u30a2\u8a9e +VRumnska p7556 sVoss p7557 @@ -15106,75 +15106,75 @@ VOssetian p7558 sVale p7559 -V\u30a2\u30ec\u30a6\u30c8\u8a9e +VAleutiska p7560 sVmni p7561 -V\u30de\u30cb\u30d7\u30eb\u8a9e +VManipuri p7562 sVnwc p7563 -VNewari; Old +VNewari; gammal p7564 sVosa p7565 -V\u30aa\u30fc\u30bb\u30fc\u30b8\u8a9e +VOsage p7566 sValt p7567 -VAltai; Southern +VAltaiska; sdra p7568 sVmnc p7569 -V\u6e80\u5dde\u8a9e +VManchu p7570 sVmwr p7571 -V\u30de\u30eb\u30ef\u30ea\u8a9e +VMarwari p7572 sVven p7573 -V\u30d9\u30f3\u30c0\u8a9e +VVenda p7574 sVuga p7575 -V\u30a6\u30ac\u30ea\u30c3\u30c8\u8a9e +VUgaritiska p7576 sVmwl p7577 -V\u30df\u30e9\u30f3\u30c9\u8a9e +VMirandese p7578 sVfas p7579 -V\u30da\u30eb\u30b7\u30a2\u8a9e +VPersiska p7580 sVfat p7581 -V\u30d5\u30a1\u30f3\u30c6\u30a3\u30fc\u8a9e +VFanti p7582 sVfan p7583 -VFang (Equatorial Guinea) +VFang (Ekvatorialguinea) p7584 sVfao p7585 -V\u30d5\u30a7\u30ed\u30fc\u8a9e +VFriska p7586 sVdin p7587 -V\u30c7\u30a3\u30f3\u30ab\u8a9e +VDinka p7588 sVhye p7589 -V\u30a2\u30eb\u30e1\u30cb\u30a2\u8a9e +VArmeniska p7590 sVbla p7591 -V\u30d6\u30e9\u30c3\u30af\u30d5\u30c3\u30c8\u8a9e +VSiksika (svartfotindianernas sprk) p7592 sVsrd p7593 -V\u30b5\u30eb\u30c7\u30fc\u30cb\u30e3\u8a9e +VSardiska p7594 sVcar p7595 @@ -15182,51 +15182,51 @@ VCarib; Galibi p7596 sVdiv p7597 -VDhivehi +VDivehi p7598 sVtel p7599 -V\u30c6\u30eb\u30b0\u8a9e +VTelugu (Indien) p7600 sVtem p7601 -V\u30c6\u30e0\u30cd\u8a9e +VTemne p7602 sVnbl p7603 -V\u30cc\u30c7\u30d9\u30ec\u8a9e; \u5357 +VNdebele; syd p7604 sVter p7605 -V\u30c6\u30ec\u30fc\u30ce\u8a9e +VTereno p7606 sVtet p7607 -V\u30c6\u30c8\u30a5\u30f3\u8a9e +VTetum p7608 sVsun p7609 -V\u30b9\u30f3\u30c0\u8a9e +VSundanesiska p7610 sVkut p7611 -V\u30af\u30c6\u30ca\u30a4\u8a9e +VKutenai p7612 sVsuk p7613 -V\u30b9\u30af\u30de\u8a9e +VSukuma p7614 sVkur p7615 -V\u30af\u30eb\u30c9\u8a9e +VKurdiska p7616 sVkum p7617 -V\u30af\u30df\u30c3\u30af\u8a9e +VKumyk p7618 sVsus p7619 -V\u30b9\u30b9\u8a9e +VSusu p7620 sVnew p7621 @@ -15234,11 +15234,11 @@ VBhasa; Nepal p7622 sVkua p7623 -V\u30af\u30a2\u30cb\u30e3\u30de\u8a9e +VOvambo (kuanyama) p7624 sVsux p7625 -V\u30b7\u30e5\u30e1\u30fc\u30eb\u8a9e +VSumeriska p7626 sVmen p7627 @@ -15246,131 +15246,131 @@ VMende (Sierra Leone) p7628 sVlez p7629 -V\u30ec\u30ba\u30ae\u8a9e +VLezginska p7630 sVgla p7631 -VGaelic; Scottish +VGaeliska; skotska p7632 sVbos p7633 -V\u30dc\u30b9\u30cb\u30a2\u8a9e +VBosniska p7634 sVgle p7635 -V\u30a2\u30a4\u30eb\u30e9\u30f3\u30c9\u8a9e +VIriska p7636 sVeka p7637 -V\u30a8\u30ab\u30b8\u30e5\u30af\u8a9e +VEkajuk p7638 sVglg p7639 -VGalician +VGaliciska p7640 sVakk p7641 -V\u30a2\u30c3\u30ab\u30c9\u8a9e +VAkkadiska p7642 sVaka p7643 -V\u30a2\u30ab\u30f3\u8a9e +VAkan (Ghana, Elfenbenskusten) p7644 sVbod p7645 -V\u30c1\u30d9\u30c3\u30c8\u8a9e +VTibetanska p7646 sVglv p7647 -V\u30de\u30f3\u5cf6\u8a9e +VManx p7648 sVjrb p7649 -V\u30e6\u30c0\u30e4\u30fb\u30a2\u30e9\u30d3\u30a2\u8a9e +VJudearabiska p7650 sVvie p7651 -V\u30d9\u30c8\u30ca\u30e0\u8a9e +VVietnamesiska p7652 sVipk p7653 -V\u30a4\u30cc\u30d4\u30a2\u30af\u8a9e +VInupiaq p7654 sVuzb p7655 -V\u30a6\u30ba\u30d9\u30af\u8a9e +VUzbekiska p7656 sVsga p7657 -V\u30a2\u30a4\u30eb\u30e9\u30f3\u30c9\u8a9e; \u53e4 (-900) +VIriska; gammal (-900) p7658 sVbre p7659 -V\u30d6\u30eb\u30c8\u30f3\u8a9e +VBretonska p7660 sVbra p7661 -V\u30d6\u30e9\u30b8\u8a9e +VBraj p7662 sVaym p7663 -V\u30a2\u30a4\u30de\u30e9\u8a9e +VAymara (Bolivien) p7664 sVcha p7665 -V\u30c1\u30e3\u30e2\u30ed\u8a9e +VChamorro p7666 sVchb p7667 -V\u30c1\u30d6\u30c1\u30e3\u8a9e +VChibcha p7668 sVche p7669 -V\u30c1\u30a7\u30c1\u30a7\u30f3\u8a9e +VTjetjenska p7670 sVchg p7671 -V\u30c1\u30e3\u30ac\u30bf\u30a4\u8a9e +VChagatai p7672 sVchk p7673 -V\u30c1\u30e5\u30fc\u30af\u8a9e +VChuukese p7674 sVchm p7675 -VMari (Russia) +VMari (Ryssland) p7676 sVchn p7677 -V\u30c1\u30cc\u30fc\u30af\u6df7\u6210\u8a9e +VChinook p7678 sVcho p7679 -V\u30c1\u30e7\u30af\u30c8\u30fc\u8a9e +VChoctaw p7680 sVchp p7681 -V\u30c1\u30da\u30ef\u30a4\u30a2\u30f3\u8a9e +VChopi p7682 sVchr p7683 -V\u30c1\u30a7\u30ed\u30ad\u30fc\u8a9e +VCherokesiska p7684 sVchu p7685 -VSlavonic; Old +VSlavonic; antik p7686 sVchv p7687 -V\u30c1\u30e5\u30f4\u30a1\u30b7\u30e5\u8a9e +VTjuvasjiska p7688 sVchy p7689 -V\u30b7\u30e3\u30a4\u30a2\u30f3\u8a9e +VCheyenne p7690 sVmsa p7691 -VMalay (macrolanguage) +VMalajiska (makrosprk) p7692 sViii p7693 @@ -15378,43 +15378,43 @@ VYi; Sichuan p7694 sVndo p7695 -V\u30f3\u30c9\u30f3\u30ac\u8a9e +VNdonga p7696 sVibo p7697 -V\u30a4\u30dc\u8a9e +VIbo (Igbo) p7698 sViba p7699 -V\u30a4\u30d0\u30f3\u8a9e +VIban p7700 sVxho p7701 -V\u30db\u30b5\u8a9e +VXhosa (Sydafrika) p7702 sVdeu p7703 -V\u30c9\u30a4\u30c4\u8a9e +VTyska p7704 sVcat p7705 -V\u30ab\u30bf\u30ed\u30cb\u30a2\u8a9e +VKatalanska (Katalonien) p7706 sVdel p7707 -V\u30c7\u30e9\u30a6\u30a7\u30a2\u8a9e +VDelaware p7708 sVden p7709 -V\u30b9\u30ec\u30fc\u30d6\u8a9e (\u30a2\u30b5\u30d1\u30b9\u30ab\u30f3\u8a9e) +VSlave p7710 sVcad p7711 -V\u30ab\u30c9\u30fc\u8a9e +VCaddo p7712 sVtat p7713 -V\u30bf\u30bf\u30fc\u30eb\u8a9e +VTatariska ( Ryssland, Ukraina, Turkiet, Kina, Finland, Centralasien) p7714 sVsrn p7715 @@ -15422,47 +15422,47 @@ VSranan Tongo p7716 sVraj p7717 -V\u30e9\u30fc\u30b8\u30e3\u30b9\u30bf\u30fc\u30cb\u30fc\u8a9e +VRajasthani p7718 sVtam p7719 -V\u30bf\u30df\u30eb\u8a9e +VTamil (Indien, Sri Lanka, Singapore) p7720 sVspa p7721 -V\u30b9\u30da\u30a4\u30f3\u8a9e +VSpanska p7722 sVtah p7723 -V\u30bf\u30d2\u30c1\u8a9e +VTahitiska p7724 sVafh p7725 -V\u30a2\u30d5\u30ea\u30d2\u30ea +VAfrihili (konstgjort sprk) p7726 sVeng p7727 -V\u82f1\u8a9e +VEngelska p7728 sVenm p7729 -V\u82f1\u8a9e; \u4e2d\u4e16 (1100-1500) +VMedelengelska (1100-1500) p7730 sVcsb p7731 -V\u30ab\u30b7\u30e5\u30d3\u30a2\u30f3\u8a9e +VKasjubianska p7732 sVnyn p7733 -V\u30cb\u30e3\u30f3\u30b3\u30fc\u30eb\u8a9e +VNyankole p7734 sVnyo p7735 -V\u30cb\u30e7\u30ed\u8a9e +VNyoro p7736 sVsid p7737 -V\u30b7\u30c0\u30e2\u8a9e +VSidami p7738 sVnya p7739 @@ -15470,55 +15470,55 @@ VNyanja p7740 sVsin p7741 -V\u30b7\u30f3\u30cf\u30e9\u6587\u5b57 +VSinhala p7742 sVafr p7743 -V\u30a2\u30d5\u30ea\u30ab\u30fc\u30f3\u30b9\u8a9e +VAfrikaans p7744 sVlam p7745 -V\u30e9\u30f3\u30d0\u8a9e +VLamba p7746 sVsnd p7747 -V\u30b7\u30f3\u30c7\u30a3\u30fc\u8a9e +VSindhi p7748 sVmar p7749 -V\u30de\u30e9\u30fc\u30c6\u30a3\u30fc\u8a9e +VMarathi (Indien) p7750 sVlah p7751 -V\u30e9\u30d5\u30f3\u30c0\u30fc\u8a9e +VLahnda p7752 sVnym p7753 -V\u30e0\u30a8\u30b8\u8a9e +VNyamwezi p7754 sVsna p7755 -V\u30b7\u30e7\u30ca\u8a9e +VShona (Zimbabwe) p7756 sVlad p7757 -V\u30e9\u30b8\u30ce\u8a9e +VSpanjolska (ladino) p7758 sVsnk p7759 -V\u30bd\u30cb\u30f3\u30b1\u8a9e +VSoninke p7760 sVmad p7761 -V\u30de\u30c9\u30a5\u30e9\u8a9e +VMadurese p7762 sVmag p7763 -V\u30de\u30ac\u30d2\u8a9e +VMagahi p7764 sVmai p7765 -V\u30de\u30a4\u30c1\u30ea\u8a9e +VMaithili p7766 sVmah p7767 @@ -15526,47 +15526,47 @@ VMarshallese p7768 sVlav p7769 -V\u30e9\u30c8\u30f4\u30a3\u30a2\u8a9e +VLettiska p7770 sVmal p7771 -V\u30de\u30e9\u30e4\u30fc\u30e9\u30e0\u8a9e +VMalayalam (Indien) p7772 sVman p7773 -V\u30de\u30f3\u30c7\u30a3\u30f3\u30b4\u8a9e +VMande p7774 sVegy p7775 -V\u30a8\u30b8\u30d7\u30c8\u8a9e (\u53e4\u4ee3) +VEgyptiska; gammal p7776 sVzen p7777 -V\u30bc\u30ca\u30ac\u8a9e +VZenaga p7778 sVkbd p7779 -V\u30ab\u30d0\u30eb\u30c0\u8a9e +VKabardinska (sttjerkessiska) p7780 sVita p7781 -V\u30a4\u30bf\u30ea\u30a2\u8a9e +VItalienska p7782 sVvai p7783 -V\u30f4\u30a1\u30a4\u8a9e +VVai p7784 sVtsn p7785 -V\u30c4\u30ef\u30ca\u8a9e +VSetswana/Tswand (Botswana, Sydafrika, Zimbabwe, Namibia) p7786 sVtso p7787 -V\u30c4\u30a9\u30f3\u30ac\u8a9e +VTsonga p7788 sVtsi p7789 -V\u30c1\u30e0\u30b7\u30e5\u8a9e +VTsimshian p7790 sVbyn p7791 @@ -15574,151 +15574,151 @@ VBilin p7792 sVfij p7793 -V\u30d5\u30a3\u30b8\u30fc\u8a9e +VFijianska p7794 sVfin p7795 -V\u30d5\u30a3\u30f3\u8a9e +VFinska p7796 sVeus p7797 -V\u30d0\u30b9\u30af\u8a9e +VBaskiska p7798 sVnon p7799 -V\u30b9\u30ab\u30f3\u30b8\u30ca\u30d3\u30a2\u8a9e; \u53e4\u671f +VNordiska; gammal p7800 sVceb p7801 -V\u30bb\u30d6\u30a2\u30ce\u8a9e +VCebuanska p7802 sVdan p7803 -V\u30c7\u30f3\u30de\u30fc\u30af\u8a9e +VDanska p7804 sVnog p7805 -V\u30ce\u30ac\u30a4\u8a9e +VNogaiska p7806 sVnob p7807 -VNorwegian Bokml +VNorskt bokml p7808 sVdak p7809 -V\u30c0\u30b3\u30bf\u8a9e +VDakota p7810 sVces p7811 -V\u30c1\u30a7\u30b3\u8a9e +VTjeckiska p7812 sVdar p7813 -V\u30c0\u30eb\u30ac\u30f3\u8a9e +VDargwa p7814 sVnor p7815 -V\u30ce\u30eb\u30a6\u30a7\u30fc\u8a9e +VNorska p7816 sVkpe p7817 -V\u30af\u30da\u30ec\u8a9e +VKpelle p7818 sVguj p7819 -V\u30b0\u30b8\u30e3\u30e9\u30fc\u30c6\u30a3\u30fc\u8a9e +VGujarati (Indien) p7820 sVmdf p7821 -V\u30e2\u30af\u30b7\u30e3\u8a9e +VMoksha p7822 sVmas p7823 -V\u30de\u30b5\u30a4\u8a9e +VMassajiska p7824 sVlao p7825 -V\u30e9\u30aa\u8a9e +VLaotiska (Laos) p7826 sVmdr p7827 -V\u30de\u30f3\u30c0\u30eb\u8a9e +VMandar p7828 sVgon p7829 -V\u30b4\u30fc\u30f3\u30c7\u30a3\u30fc\u8a9e +VGondi p7830 sVgoh p7831 -VGerman; Old High (ca. 750-1050) +VTyska; gammal hg (ca. 750-1050) p7832 sVsms p7833 -VSami; Skolt +VSamiska; Skolt p7834 sVsmo p7835 -V\u30b5\u30e2\u30a2\u8a9e +VSamoanska p7836 sVsmn p7837 -VSami; Inari +VSamiska; Inari p7838 sVsmj p7839 -V\u30eb\u30ec\u30fb\u30b5\u30fc\u30df\u8a9e +VSamiska; Lule p7840 sVgot p7841 -V\u30b4\u30fc\u30c8\u8a9e +VGotiska p7842 sVsme p7843 -VSami; Northern +VSamiska; norra p7844 sVdsb p7845 -VSorbian; Lower +VSorbian; nedre p7846 sVsma p7847 -VSami; Southern +VSamiska,; sdra p7848 sVgor p7849 -V\u30b4\u30ed\u30f3\u30bf\u30ed\u8a9e +VGorontalo p7850 sVast p7851 -VAsturian +VAsturiska p7852 sVorm p7853 -V\u30aa\u30ed\u30e2\u8a9e +VOromo ( Etiopien, Kenya) p7854 sVque p7855 -V\u30ad\u30c1\u30e5\u30ef\u8a9e +VQuechua p7856 sVori p7857 -V\u30aa\u30ea\u30e4\u30fc\u8a9e +VOriya p7858 sVcrh p7859 -VTurkish; Crimean +VTurkiska Krim p7860 sVasm p7861 -V\u30a2\u30c3\u30b5\u30e0\u8a9e +VAssamesiska p7862 sVpus p7863 -V\u30d7\u30b7\u30e5\u30c8\u30a5\u30fc\u8a9e +VPashto p7864 sVdgr p7865 -V\u30c9\u30af\u30ea\u30d6\u8a9e +VDogrib p7866 sVltz p7867 @@ -15726,27 +15726,27 @@ VLuxembourgish p7868 sVgez p7869 -V\u30b2\u30fc\u30ba\u8a9e +VGeez; fornetiopiska p7870 sVisl p7871 -V\u30a2\u30a4\u30b9\u30e9\u30f3\u30c9\u8a9e +VIslndska p7872 sVlat p7873 -V\u30e9\u30c6\u30f3\u8a9e +VLatin p7874 sVmak p7875 -V\u30de\u30ab\u30c3\u30b5\u30eb\u8a9e +VMakasar p7876 sVzap p7877 -V\u30b6\u30dd\u30c6\u30c3\u30af\u8a9e +VZapotek p7878 sVyid p7879 -V\u30a4\u30c7\u30a3\u30c3\u30b7\u30e5\u8a9e +VJiddisch p7880 sVkok p7881 @@ -15754,19 +15754,19 @@ VKonkani (macrolanguage) p7882 sVkom p7883 -V\u30b3\u30df\u8a9e +VKomi p7884 sVkon p7885 -V\u30b3\u30f3\u30b4\u8a9e +VKongo p7886 sVukr p7887 -V\u30a6\u30af\u30e9\u30a4\u30ca\u8a9e +VUkrainska p7888 sVton p7889 -V\u30c8\u30f3\u30ac\u8a9e (\u30c8\u30f3\u30ac\u8af8\u5cf6) +VTonga (Tongaarna) p7890 sVzxx p7891 @@ -15774,43 +15774,43 @@ VNo linguistic content p7892 sVkos p7893 -V\u30b3\u30b9\u30e9\u30a8\u8a9e +VKusaie p7894 sVkor p7895 -V\u671d\u9bae\u8a9e +VKoreanska p7896 sVtog p7897 -V\u30c8\u30f3\u30ac\u8a9e (\u30cb\u30a2\u30b5) +VTonga (Nyasa) p7898 sVhun p7899 -V\u30cf\u30f3\u30ac\u30ea\u30fc\u8a9e +VUngerska p7900 sVhup p7901 -V\u30a2\u30bf\u30d1\u30b9\u30ab\u8a9e +VHupa p7902 sVcym p7903 -V\u30a6\u30a7\u30fc\u30eb\u30ba\u8a9e +VKymriska p7904 sVudm p7905 -V\u30a6\u30c9\u30e0\u30eb\u30c8\u8a9e +VUdmurt p7906 sVbej p7907 -V\u30d9\u30b8\u30e3\u8a9e +VBeyja p7908 sVben p7909 -V\u30d9\u30f3\u30ac\u30eb\u8a9e +VBengaliska p7910 sVbel p7911 -V\u767d\u30ed\u30b7\u30a2\u8a9e +VVitryska p7912 sVbem p7913 @@ -15818,59 +15818,59 @@ VBemba (Zambia) p7914 sVaar p7915 -V\u30a2\u30d5\u30a1\u30eb\u8a9e +VAfar p7916 sVnzi p7917 -V\u30f3\u30bc\u30de\u8a9e +VNzima p7918 sVsah p7919 -V\u30e4\u30af\u30fc\u30c8\u8a9e +VJakutiska p7920 sVsan p7921 -V\u68b5\u8a9e +VSanskrit p7922 sVsam p7923 -VAramaic; Samaritan +VArameiska; samariska p7924 sVpro p7925 -V\u30d7\u30ed\u30f4\u30a1\u30f3\u30b9\u8a9e; \u53e4\u671f (-1500) +VProvensalska; gammal (-1500) p7926 sVsag p7927 -V\u30b5\u30f3\u30b4\u8a9e +VSango p7928 sVsad p7929 -V\u30b5\u30f3\u30c0\u30a6\u30a7\u8a9e +VSandawe p7930 sVanp p7931 -V\u30a2\u30f3\u30ae\u30ab\u8a9e +VAngika p7932 sVrap p7933 -V\u30e9\u30d1\u30cc\u30fc\u30a4\u8a9e +VRapanui p7934 sVsas p7935 -V\u30b5\u30b5\u30af\u8a9e +VSasak p7936 sVnqo p7937 -V\u30f3\u30b3\u6587\u5b57 +VN'Ko p7938 sVsat p7939 -V\u30b5\u30f3\u30bf\u30fc\u30ea\u30fc\u8a9e +VSantali p7940 sVmin p7941 -V\u30df\u30ca\u30f3\u30ab\u30d0\u30a6\u8a9e +VMinangkabau p7942 sVlim p7943 @@ -15878,35 +15878,35 @@ VLimburgan p7944 sVlin p7945 -V\u30ea\u30f3\u30ac\u30e9\u8a9e +VLingala (Kongo-Kinshasa, Kongo-Brazzaville) p7946 sVlit p7947 -V\u30ea\u30c8\u30a2\u30cb\u30a2\u8a9e +VLitauiska p7948 sVefi p7949 -V\u30a8\u30d5\u30a3\u30af\u8a9e +VEfik p7950 sVmis p7951 -VUncoded languages +VOkodade sprk p7952 sVkac p7953 -V\u30ab\u30c1\u30f3\u8a9e +VKachin p7954 sVkab p7955 -V\u30ab\u30d3\u30eb\u8a9e +VKabyliska p7956 sVkaa p7957 -V\u30ab\u30e9\u30fb\u30ab\u30eb\u30d1\u30af\u8a9e +VKarakalpakiska p7958 sVkan p7959 -V\u30ab\u30f3\u30ca\u30c0\u8a9e +VKannada (Indien) p7960 sVkam p7961 @@ -15914,39 +15914,39 @@ VKamba (Kenya) p7962 sVkal p7963 -VKalaallisut +VGrnlndska (Kalaallisut) p7964 sVkas p7965 -V\u30ab\u30b7\u30df\u30fc\u30ea\u30fc\u8a9e +VKashmiri p7966 sVkaw p7967 -V\u30ab\u30a6\u30a3\u8a9e +VKiwi; fornjavanska p7968 sVkau p7969 -V\u30ab\u30cc\u30ea\u8a9e +VKanuri p7970 sVkat p7971 -V\u30b0\u30eb\u30b8\u30a2\u8a9e +VGeorgiska p7972 sVkaz p7973 -V\u30ab\u30b6\u30fc\u30d5\u8a9e +VKazakiska (Kazakstan) p7974 sVtyv p7975 -V\u30c4\u30d0\u30cb\u30a2\u8a9e +VTuvinska p7976 sVawa p7977 -V\u30a2\u30ef\u30c7\u30a3\u8a9e +VAwadhi p7978 sVurd p7979 -V\u30a6\u30eb\u30c9\u30a5\u30fc\u8a9e +VUrdu (Pakistan, Indien) p7980 sVdoi p7981 @@ -15954,27 +15954,27 @@ VDogri (macrolanguage) p7982 sVtpi p7983 -V\u30c8\u30c3\u30af\u30fb\u30d4\u30b8\u30f3 +VTok Pisin p7984 sVmri p7985 -V\u30de\u30aa\u30ea\u8a9e +VMaoriska p7986 sVabk p7987 -V\u30a2\u30d6\u30cf\u30b8\u30a2\u8a9e +VAbchaziska p7988 sVtkl p7989 -V\u30c8\u30b1\u30e9\u30a6\u8a9e +VTokelau p7990 sVnld p7991 -V\u30aa\u30e9\u30f3\u30c0\u8a9e +VNederlndska p7992 sVoji p7993 -V\u30aa\u30b8\u30d6\u30ef\u8a9e +VOdjibwa (chippewa) p7994 sVoci p7995 @@ -15982,15 +15982,15 @@ VOccitan (post 1500) p7996 sVwol p7997 -V\u30a6\u30a9\u30ed\u30d5\u8a9e +VWolof (Senegal, Gambia, Mauretanien) p7998 sVjav p7999 -V\u30b8\u30e3\u30ef\u8a9e +VJavanesiska p8000 sVhrv p8001 -V\u30af\u30ed\u30a2\u30c1\u30a2\u8a9e +VKroatiska p8002 sVzza p8003 @@ -15998,95 +15998,95 @@ VZaza p8004 sVmga p8005 -V\u30a2\u30a4\u30eb\u30e9\u30f3\u30c9\u8a9e; \u4e2d\u4e16 (900-1200) +Virlndsk; medel (900-1200) p8006 sVhit p8007 -V\u30d2\u30c3\u30bf\u30a4\u30c8\u8a9e +VHettitiska sprk p8008 sVdyu p8009 -V\u30c7\u30e5\u30e9\u8a9e +VDyula p8010 sVssw p8011 -V\u30b7\u30b9\u30ef\u30c6\u30a3\u8a9e +VSwazi p8012 sVmul p8013 -V\u591a\u8a00\u8a9e +VFlera sprk p8014 sVhil p8015 -V\u30d2\u30ea\u30b8\u30e3\u30ce\u30f3\u8a9e +VHiligaynon p8016 sVhin p8017 -V\u30d2\u30f3\u30c7\u30a3\u30fc\u8a9e +VHindi p8018 sVbas p8019 -VBasa (Cameroon) +VBasa (Kamerun) p8020 sVgba p8021 -VGbaya (Central African Republic) +VGbaya (Centralafrikanska republiken) p8022 sVwln p8023 -V\u30ef\u30ed\u30f3\u8a9e +VVallonska p8024 sVnep p8025 -V\u30cd\u30d1\u30fc\u30eb\u8a9e +VNepalesiska p8026 sVcre p8027 -V\u30af\u30ea\u30fc\u8a9e +VCree p8028 sVban p8029 -V\u30d0\u30ea\u8a9e +VBalinesiska p8030 sVbal p8031 -V\u30d0\u30eb\u30fc\u30c1\u30fc\u8a9e +VBaluchi p8032 sVbam p8033 -V\u30d0\u30f3\u30d0\u30e9\u8a9e +VBambara (Vstafrika) p8034 sVbak p8035 -V\u30d0\u30b7\u30ad\u30fc\u30eb\u8a9e +VBasjkiriska p8036 sVshn p8037 -V\u30b7\u30e3\u30f3\u8a9e +VShan p8038 sVarp p8039 -V\u30a2\u30e9\u30d1\u30db\u30fc\u8a9e +VArapaho p8040 sVarw p8041 -V\u30a2\u30e9\u30ef\u30af\u8a9e +VArawakiska p8042 sVara p8043 -V\u30a2\u30e9\u30d3\u30a2\u8a9e +VArabiska p8044 sVarc p8045 -VAramaic; Official (700-300 BCE) +VArameiska; officiell (700-300 f.Kr.) p8046 sVarg p8047 -V\u30a2\u30e9\u30b4\u30f3\u8a9e +VAragonska p8048 sVsel p8049 -V\u30bb\u30ea\u30af\u30d7\u8a9e +VSelkup p8050 sVarn p8051 @@ -16094,43 +16094,43 @@ VMapudungun p8052 sVlus p8053 -V\u30eb\u30b7\u30e3\u30a4\u8a9e +VMizo (lushai) p8054 sVmus p8055 -V\u30af\u30ea\u30fc\u30af\u8a9e +VMuskogee p8056 sVlua p8057 -V\u30eb\u30d0\u30fb\u30eb\u30eb\u30a2\u8a9e +VLuba-Lulua p8058 sVlub p8059 -V\u30eb\u30d0\u8a9e +VLuba-Katanga p8060 sVlug p8061 -V\u30ac\u30f3\u30c0\u8a9e +VLuganda/Ganda (Uganda) p8062 sVlui p8063 -V\u30eb\u30a4\u30bb\u30cb\u30e7\u8a9e +VLuiseno p8064 sVlun p8065 -V\u30e9\u30f3\u30c0\u8a9e +VLunda p8066 sVluo p8067 -V\u30eb\u30aa\u8a9e (\u30b1\u30cb\u30a2\u3068\u30bf\u30f3\u30b6\u30cb\u30a2) +VLuo (Kenya och Tanzania) p8068 sViku p8069 -V\u30a4\u30cc\u30af\u30c1\u30bf\u30c3\u30c8\u8a9e +VInuktitut p8070 sVtur p8071 -V\u30c8\u30eb\u30b3\u8a9e +VTurkiska p8072 sVzbl p8073 @@ -16138,27 +16138,27 @@ VBlissymbols p8074 sVtuk p8075 -V\u30c8\u30a5\u30eb\u30af\u30e1\u30f3\u8a9e +VTurkmeniska p8076 sVtum p8077 -V\u30bf\u30f3\u30d6\u30ab\u8a9e +VTumbuka p8078 sVcop p8079 -V\u30b3\u30d7\u30c8\u8a9e +VKoptiska p8080 sVcos p8081 -V\u30b3\u30eb\u30b7\u30ab\u8a9e +VKorsikanska p8082 sVcor p8083 -V\u30b3\u30fc\u30f3\u30a6\u30a9\u30fc\u30eb\u8a9e +VKorniska p8084 sVilo p8085 -V\u30a4\u30ed\u30ab\u30ce\u8a9e +VIloko p8086 sVgwi p8087 @@ -16166,11 +16166,11 @@ VGwich\u02bcin p8088 sVund p8089 -V\u8a00\u8a9e\u540d\u4e0d\u660e +VOdefinierat p8090 sVtli p8091 -V\u30c8\u30ea\u30f3\u30ae\u30c3\u30c8\u8a9e +VTlingit p8092 sVtlh p8093 @@ -16178,67 +16178,67 @@ VKlingon p8094 sVpor p8095 -V\u30dd\u30eb\u30c8\u30ac\u30eb\u8a9e +VPortugisiska p8096 sVpon p8097 -V\u30dd\u30ca\u30da\u8a9e +VPonape p8098 sVpol p8099 -V\u30dd\u30fc\u30e9\u30f3\u30c9\u8a9e +VPolska p8100 sVang p8101 -VEnglish; Old (ca. 450-1100) +VEngelska; gammal (ca. 450-1100) p8102 sVtgk p8103 -V\u30bf\u30b8\u30af\u8a9e +VTadzjikiska (Tadzjikistan) p8104 sVtgl p8105 -V\u30bf\u30ac\u30ed\u30b0\u8a9e +VTagalog (Filippinerna) p8106 sVfra p8107 -V\u30d5\u30e9\u30f3\u30b9\u8a9e +VFranska p8108 sVdum p8109 -VDutch; Middle (ca. 1050-1350) +VHollnska; medeltida (ca. 1050-1350) p8110 sVswa p8111 -VSwahili (macrolanguage) +VSwahili p8112 sVdua p8113 -V\u30c9\u30a5\u30a2\u30e9\u8a9e +VDuala p8114 sVfro p8115 -VFrench; Old (842-ca. 1400) +VFranska; gammal (842-ca. 1400) p8116 sVyap p8117 -V\u30e4\u30c3\u30d7\u8a9e +VYap p8118 sVfrm p8119 -VFrench; Middle (ca. 1400-1600) +VFranska; medel (ca. 1400-1600) p8120 sVfrs p8121 -VFrisian; Eastern +VFrisian; stra p8122 sVfrr p8123 -VFrisian; Northern +VFrisian; norra p8124 sVyao p8125 -V\u30e4\u30aa\u8a9e +VYao p8126 sVxal p8127 @@ -16246,39 +16246,39 @@ VKalmyk p8128 sVfry p8129 -VFrisian; Western +VFrisian; vstra p8130 sVgay p8131 -V\u30ac\u30e8\u8a9e +VGayo p8132 sVota p8133 -V\u30c8\u30eb\u30b3\u8a9e; \u30aa\u30b9\u30de\u30f3 (1500-1928) +VOttomanska (1500-1928) p8134 sVhmn p8135 -V\u30d5\u30e2\u30f3\u30b0\u8a9e +VHmong p8136 sVhmo p8137 -V\u30d2\u30ea\u30e2\u30c8\u30a5\u8a9e +VHiri Motu p8138 sVgaa p8139 -V\u30ac\u8a9e +VGa p8140 sVfur p8141 -V\u30d5\u30ea\u30a6\u30ea\u8a9e +VFriuliska p8142 sVmlg p8143 -V\u30de\u30e9\u30ac\u30b7\u8a9e +VMadagaskiska p8144 sVslv p8145 -V\u30b9\u30ed\u30f4\u30a7\u30cb\u30a2\u8a9e +VSlovenska p8146 sVain p8147 @@ -16290,123 +16290,123 @@ VFilipino p8150 sVmlt p8151 -V\u30de\u30eb\u30bf\u8a9e +VMaltesiska (Malta) p8152 sVslk p8153 -V\u30b9\u30ed\u30f4\u30a1\u30ad\u30a2\u8a9e +VSlovakiska p8154 sVrar p8155 -VMaori; Cook Islands +VMaoriska; Cookarna p8156 sVful p8157 -V\u30d5\u30e9\u8a9e +VFulani p8158 sVjpn p8159 -V\u65e5\u672c\u8a9e +VJapanska p8160 sVvol p8161 -V\u30dc\u30e9\u30d4\u30e5\u30fc\u30af\u8a9e +VVolapk p8162 sVvot p8163 -V\u30f4\u30a9\u30fc\u30c8\u8a9e +VVotiska p8164 sVind p8165 -V\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u8a9e +VIndonesiska p8166 sVave p8167 -V\u30a2\u30f4\u30a7\u30b9\u30bf\u8a9e +VAvestiska p8168 sVjpr p8169 -V\u30e6\u30c0\u30e4\u30fb\u30da\u30eb\u30b7\u30a2\u8a9e +VJudepersiska p8170 sVava p8171 -V\u30a2\u30f4\u30a1\u30eb\u8a9e +VAvariska p8172 sVpap p8173 -V\u30d1\u30d4\u30a2\u30e1\u30f3\u30c8 +VPapiamento p8174 sVewo p8175 -V\u30a8\u30a6\u30a9\u30f3\u30c9\u8a9e +VEwondo p8176 sVpau p8177 -V\u30d1\u30e9\u30aa\u8a9e +VPalauan p8178 sVewe p8179 -V\u30a8\u30a6\u30a7\u8a9e +VEwe p8180 sVpag p8181 -V\u30d1\u30f3\u30ac\u30b7\u30ca\u30fc\u30f3\u8a9e +VPangasinan p8182 sVpal p8183 -V\u30d1\u30fc\u30e9\u30f4\u30a3\u30fc\u8a9e +VPahlavi (medelpersiska) p8184 sVpam p8185 -V\u30d1\u30f3\u30d1\u30f3\u30ac\u8a9e +VPampanga (Filippinerna) p8186 sVpan p8187 -VPanjabi +VPunjabi (Indien) p8188 sVsyc p8189 -VSyriac; Classical +VSyriac; klassisk p8190 sVphn p8191 -V\u30d5\u30a7\u30cb\u30ad\u30a2\u8a9e +VFeniciska p8192 sVkir p8193 -V\u30ad\u30eb\u30ae\u30b9\u8a9e +VKirgisiska p8194 sVnia p8195 -V\u30cb\u30a2\u30b9\u8a9e +VNias p8196 sVkik p8197 -V\u30ad\u30af\u30e6\u8a9e +VKikuyu (Kenya) p8198 sVsyr p8199 -V\u30b7\u30ea\u30a2\u8a9e +VSyriska p8200 sVkin p8201 -V\u30ad\u30f3\u30e4\u30eb\u30ef\u30f3\u30c0\u8a9e +VKinyarwanda (Rwanda) p8202 sVniu p8203 -V\u30cb\u30a6\u30fc\u30a8\u30a4\u8a9e +VNiuean p8204 sVgsw p8205 -VGerman; Swiss +VTyska; Schweizisk p8206 sVepo p8207 -V\u30a8\u30b9\u30da\u30e9\u30f3\u30c8 +VEsperanto p8208 sVjbo p8209 -V\u30ed\u30b8\u30d0\u30f3\u8a9e +VLojban p8210 sVmic p8211 @@ -16414,31 +16414,31 @@ VMi'kmaq p8212 sVtha p8213 -V\u30bf\u30a4\u8a9e +VThailndska p8214 sVhai p8215 -V\u30cf\u30a4\u30c0\u8a9e +VHaida p8216 sVgmh p8217 -VGerman; Middle High (ca. 1050-1500) +VTyska; medelhg (ca. 1050-1500) p8218 sVell p8219 -V\u30ae\u30ea\u30b7\u30a2\u8a9e; \u73fe\u4ee3 (1453-) +VGrekiska; modern (1453-) p8220 sVady p8221 -VAdyghe +VAdygeiska p8222 sVelx p8223 -V\u30a8\u30e9\u30e0\u8a9e +VElamitiska p8224 sVada p8225 -V\u30a2\u30c0\u30f3\u30b0\u30e1\u8a9e +VAdangme p8226 sVnav p8227 @@ -16446,207 +16446,207 @@ VNavajo p8228 sVhat p8229 -VCreole; Haitian +VKreolsprk; haitisk kreol p8230 sVhau p8231 -V\u30cf\u30a6\u30b5\u8a9e +VHaussa p8232 sVhaw p8233 -V\u30cf\u30ef\u30a4\u8a9e +VHawaiiska p8234 sVbin p8235 -V\u30d3\u30cb\u8a9e +VEdo (bini) p8236 sVamh p8237 -V\u30a2\u30e0\u30cf\u30e9\u8a9e +VAmhariska (Etiopien) p8238 sVbik p8239 -V\u30d3\u30b3\u30eb\u8a9e +VBikol p8240 sVmos p8241 -V\u30e2\u30c3\u30b7\u30fc\u8a9e +VMossi p8242 sVmoh p8243 -V\u30e2\u30fc\u30db\u30fc\u30af\u8a9e +VMohawk p8244 sVmon p8245 -V\u8499\u53e4\u8a9e +VMongoliska p8246 sVbho p8247 -V\u30dc\u30fc\u30b8\u30d7\u30ea\u30fc\u8a9e +VBhojpuri p8248 sVbis p8249 -V\u30d3\u30b9\u30e9\u30de\u8a9e +VBislama p8250 sVtvl p8251 -V\u30c4\u30d0\u30eb\u8a9e +VTuvaluan p8252 sVest p8253 -V\u30a8\u30b9\u30c8\u30cb\u30a2\u8a9e +VEstniska p8254 sVkmb p8255 -V\u30ad\u30f3\u30d6\u30f3\u30c9\u30a5\u8a9e +VMbundu (kimbundu) p8256 sVpeo p8257 -VPersian; Old (ca. 600-400 B.C.) +VPersiska; antik (ca. 600-400 f.Kr.) p8258 sVumb p8259 -V\u30a2\u30f3\u30d6\u30f3\u30c9\u30a5\u8a9e +VUmbundu p8260 sVtmh p8261 -V\u30bf\u30de\u30b7\u30a7\u30af\u8a9e +VTamashek p8262 sVfon p8263 -V\u30d5\u30a9\u30f3\u8a9e +VFon p8264 sVhsb p8265 -VSorbian; Upper +VSorbiska; vre p8266 sVrun p8267 -V\u30eb\u30f3\u30c7\u30a3\u8a9e +VRundi p8268 sVrus p8269 -V\u30ed\u30b7\u30a2\u8a9e +VRyska p8270 sVrup p8271 -VRomanian; Macedo- +VRumnska; Macedo- p8272 sVpli p8273 -V\u30d1\u30fc\u30ea\u8a9e +VPali p8274 sVace p8275 -V\u30a2\u30c1\u30a7\u30fc\u8a9e +VAcehnesiska (Indonesien) p8276 sVach p8277 -V\u30a2\u30c1\u30e7\u30ea\u8a9e +VAcoli (Uganda) p8278 sVnde p8279 -V\u30de\u30bf\u30d9\u30ec\u8a9e; \u5317 +VNdebele; norra p8280 sVdzo p8281 -V\u30be\u30f3\u30ab\u8a9e +VBhutanesiska (Dzongkha) p8282 sVkru p8283 -V\u30af\u30eb\u30af\u8a9e +VKurukh p8284 sVsrr p8285 -V\u30bb\u30ec\u30fc\u30eb\u8a9e +VSerer p8286 sVido p8287 -V\u30a4\u30c9\u8a9e +VIdo p8288 sVsrp p8289 -V\u30bb\u30eb\u30d3\u30a2\u8a9e +VSerbiska p8290 sVkrl p8291 -V\u30ab\u30ec\u30ea\u30a2\u8a9e +VKarelska p8292 sVkrc p8293 -V\u30ab\u30e9\u30c1\u30e3\u30a4\u30fb\u30d0\u30eb\u30ab\u30eb\u8a9e +VKaratjaj-balkar p8294 sVnds p8295 -VGerman; Low +VTyska; lg p8296 sVzun p8297 -V\u30ba\u30cb\u8a9e +VZuni p8298 sVzul p8299 -V\u30ba\u30fc\u30eb\u30fc\u8a9e +VZulu (Sydafrika, Malawi, Moambique, Swaziland) p8300 sVtwi p8301 -V\u30c8\u30a6\u30a3\u8a9e +VTwi p8302 sVsog p8303 -V\u30bd\u30b0\u30c9\u8a9e +VSogdiska p8304 sVnso p8305 -VSotho; Northern +VNordsotho p8306 sVswe p8307 -V\u30b9\u30a6\u30a7\u30fc\u30c7\u30f3\u8a9e +VSvenska p8308 sVsom p8309 -V\u30bd\u30de\u30ea\u8a9e +VSomaliska p8310 sVsot p8311 -V\u30bd\u30c8\u8a9e; \u5357 +VSotho; sdra p8312 sVmkd p8313 -V\u30de\u30b1\u30c9\u30cb\u30a2\u8a9e +VMakedonska p8314 sVher p8315 -V\u30d8\u30ec\u30ed\u8a9e +VHerero p8316 sVlol p8317 -V\u30e2\u30f3\u30b4\u8a9e +VLolo (mongo) p8318 sVheb p8319 -V\u30d8\u30d6\u30e9\u30a4\u8a9e +VHebreiska p8320 sVloz p8321 -V\u30ed\u30b8\u8a9e +VLozi p8322 sVgil p8323 -V\u30ad\u30ea\u30d0\u30b9\u8a9e +VGilbertesiska p8324 sVwas p8325 -V\u30ef\u30b7\u30e7\u8a9e +VWasho p8326 sVwar p8327 -VWaray (Philippines) +VWaray (Filippinerna) p8328 sVbul p8329 -V\u30d6\u30eb\u30ac\u30ea\u30a2\u8a9e +VBulgariska p8330 sVwal p8331 @@ -16654,15 +16654,15 @@ VWolaytta p8332 sVbua p8333 -V\u30d6\u30ea\u30e4\u30fc\u30c8\u8a9e +VBurjatiska p8334 sVbug p8335 -V\u30d6\u30ae\u8a9e +VBuginesiska p8336 sVaze p8337 -V\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3\u8a9e +VAzerbajdzjanska p8338 sVzha p8339 @@ -16670,1586 +16670,1586 @@ VZhuang p8340 sVzho p8341 -V\u4e2d\u56fd\u8a9e +VKinesiska p8342 sVnno p8343 -V\u30cb\u30fc\u30ce\u30b7\u30e5\u30af\u30fb\u30ce\u30eb\u30a6\u30a7\u30fc\u8a9e +VNynorsk p8344 sVuig p8345 -V\u30a6\u30a4\u30b0\u30eb\u8a9e +VUighurUiguriska (Kina, Kazakstan, Pakistan, Kirgizistan, Tadzjikistan, Indien) p8346 sVmyv p8347 -V\u30a8\u30eb\u30b8\u30e3\u8a9e +VErzya p8348 sVinh p8349 -V\u30a4\u30f3\u30b0\u30fc\u30b7\u8a9e +VIngusj p8350 sVkhm p8351 -VKhmer; Central +VKhmer (Kambodja) p8352 sVkho p8353 -V\u30db\u30fc\u30bf\u30f3\u8a9e +VSakiska (khotanesiska) p8354 sVmya p8355 -V\u30d3\u30eb\u30de\u8a9e +VBurmanska p8356 sVkha p8357 -V\u30ab\u30b7\u8a9e +VKhasi p8358 sVina p8359 -V\u30a4\u30f3\u30bf\u30fc\u30ea\u30f3\u30b0\u30a2\u8a9e (\u56fd\u969b\u88dc\u52a9\u8a9e\u5354\u4f1a) +VInterlingua (International Auxiliary Language Association) p8360 sVtiv p8361 -V\u30c6\u30a3\u30d6\u8a9e +VTivi p8362 sVtir p8363 -V\u30c6\u30a3\u30b0\u30ea\u30cb\u30a2\u8a9e +VTigrinja (Etiopien, Eritrea) p8364 sVnap p8365 -V\u30ca\u30dd\u30ea\u8a9e +VNeapolitansk italienska p8366 sVgrb p8367 -V\u30b0\u30ec\u30dc\u8a9e +VGrebo p8368 sVgrc p8369 -V\u30ae\u30ea\u30b7\u30a2\u8a9e; \u53e4\u4ee3 (-1453) +VGrekiska; antik (-1453) p8370 sVnau p8371 -V\u30ca\u30a6\u30eb\u8a9e +VNauruanska p8372 sVgrn p8373 -V\u30b0\u30a2\u30e9\u30cb\u30fc\u8a9e +VGuarani p8374 sVtig p8375 -V\u30c6\u30a3\u30b0\u30ec\u8a9e +VTigre (Eritrea) p8376 sVyor p8377 -V\u30e8\u30eb\u30d0\u8a9e +VYoruba p8378 sVile p8379 -V\u30a4\u30f3\u30bf\u30fc\u30ea\u30f3\u30b0 +VInterlingue p8380 sVsqi p8381 -V\u30a2\u30eb\u30d0\u30cb\u30a2\u8a9e +VAlbanska p8382 -ssS'pl' +ssS'ja' p8383 (dp8384 Vroh p8385 -Vretoroma\u0144ski +VRomansh p8386 sVsco p8387 -Vscots +V\u30b9\u30b3\u30c3\u30c8\u30e9\u30f3\u30c9\u8a9e p8388 sVscn p8389 -Vsycylijski +V\u30b7\u30c1\u30ea\u30a2\u8a9e p8390 sVrom p8391 -Vromski +V\u30ed\u30de\u30cb\u8a9e p8392 sVron p8393 -Vrumu\u0144ski +V\u30eb\u30fc\u30de\u30cb\u30a2\u8a9e p8394 sVoss p8395 -Vosetyjski +VOssetian p8396 sVale p8397 -Valeucki +V\u30a2\u30ec\u30a6\u30c8\u8a9e p8398 sVmni p8399 -Vmanipuri +V\u30de\u30cb\u30d7\u30eb\u8a9e p8400 sVnwc p8401 -Vnewarski klasyczny +VNewari; Old p8402 sVosa p8403 -Vosage +V\u30aa\u30fc\u30bb\u30fc\u30b8\u8a9e p8404 sValt p8405 -Va\u0142tajski po\u0142udniowy +VAltai; Southern p8406 sVmnc p8407 -Vmand\u017curski +V\u6e80\u5dde\u8a9e p8408 sVmwr p8409 -Vmarwari +V\u30de\u30eb\u30ef\u30ea\u8a9e p8410 sVven p8411 -Vvenda +V\u30d9\u30f3\u30c0\u8a9e p8412 sVuga p8413 -Vugarycki +V\u30a6\u30ac\u30ea\u30c3\u30c8\u8a9e p8414 sVmwl p8415 -Vmirandyjski +V\u30df\u30e9\u30f3\u30c9\u8a9e p8416 sVfas p8417 -Vperski +V\u30da\u30eb\u30b7\u30a2\u8a9e p8418 sVfat p8419 -Vfanti +V\u30d5\u30a1\u30f3\u30c6\u30a3\u30fc\u8a9e p8420 sVfan p8421 -Vfang (Gwinea Rwnikowa) +VFang (Equatorial Guinea) p8422 sVfao p8423 -Vfarerski +V\u30d5\u30a7\u30ed\u30fc\u8a9e p8424 sVdin p8425 -Vdinka +V\u30c7\u30a3\u30f3\u30ab\u8a9e p8426 sVhye p8427 -Vormia\u0144ski +V\u30a2\u30eb\u30e1\u30cb\u30a2\u8a9e p8428 sVbla p8429 -Vsiksika +V\u30d6\u30e9\u30c3\u30af\u30d5\u30c3\u30c8\u8a9e p8430 sVsrd p8431 -Vsardy\u0144ski +V\u30b5\u30eb\u30c7\u30fc\u30cb\u30e3\u8a9e p8432 sVcar p8433 -Vkaraibski galibi +VCarib; Galibi p8434 sVdiv p8435 -Vmalediwski; divehi +VDhivehi p8436 sVtel p8437 -Vtelugu +V\u30c6\u30eb\u30b0\u8a9e p8438 sVtem p8439 -Vtemne +V\u30c6\u30e0\u30cd\u8a9e p8440 sVnbl p8441 -Vndebele po\u0142udniowy +V\u30cc\u30c7\u30d9\u30ec\u8a9e; \u5357 p8442 sVter p8443 -Vtereno +V\u30c6\u30ec\u30fc\u30ce\u8a9e p8444 sVtet p8445 -Vtetum +V\u30c6\u30c8\u30a5\u30f3\u8a9e p8446 sVsun p8447 -Vsundajski +V\u30b9\u30f3\u30c0\u8a9e p8448 sVkut p8449 -Vkutenai +V\u30af\u30c6\u30ca\u30a4\u8a9e p8450 sVsuk p8451 -Vsukuma +V\u30b9\u30af\u30de\u8a9e p8452 sVkur p8453 -Vkurdyjski +V\u30af\u30eb\u30c9\u8a9e p8454 sVkum p8455 -Vkumycki +V\u30af\u30df\u30c3\u30af\u8a9e p8456 sVsus p8457 -Vsusu +V\u30b9\u30b9\u8a9e p8458 sVnew p8459 -Vnewarski +VBhasa; Nepal p8460 sVkua p8461 -Vkwanyama +V\u30af\u30a2\u30cb\u30e3\u30de\u8a9e p8462 sVsux p8463 -Vsumeryjski +V\u30b7\u30e5\u30e1\u30fc\u30eb\u8a9e p8464 sVmen p8465 -Vmende (Sierra Leone) +VMende (Sierra Leone) p8466 sVlez p8467 -Vlezgi\u0144ski +V\u30ec\u30ba\u30ae\u8a9e p8468 sVgla p8469 -Vszkocki gaelicki +VGaelic; Scottish p8470 sVbos p8471 -Vbo\u015bniacki +V\u30dc\u30b9\u30cb\u30a2\u8a9e p8472 sVgle p8473 -Virlandzki +V\u30a2\u30a4\u30eb\u30e9\u30f3\u30c9\u8a9e p8474 sVeka p8475 -Vekajuk +V\u30a8\u30ab\u30b8\u30e5\u30af\u8a9e p8476 sVglg p8477 -Vgalicyjski +VGalician p8478 sVakk p8479 -Vakadyjski +V\u30a2\u30c3\u30ab\u30c9\u8a9e p8480 sVaka p8481 -Vakan +V\u30a2\u30ab\u30f3\u8a9e p8482 sVbod p8483 -Vtybeta\u0144ski +V\u30c1\u30d9\u30c3\u30c8\u8a9e p8484 sVglv p8485 -Vmanx +V\u30de\u30f3\u5cf6\u8a9e p8486 sVjrb p8487 -Vjudeoarabski +V\u30e6\u30c0\u30e4\u30fb\u30a2\u30e9\u30d3\u30a2\u8a9e p8488 sVvie p8489 -Vwietnamski +V\u30d9\u30c8\u30ca\u30e0\u8a9e p8490 sVipk p8491 -Vinupiaq +V\u30a4\u30cc\u30d4\u30a2\u30af\u8a9e p8492 sVuzb p8493 -Vuzbecki +V\u30a6\u30ba\u30d9\u30af\u8a9e p8494 sVsga p8495 -Vstaroirlandzki (do 900) +V\u30a2\u30a4\u30eb\u30e9\u30f3\u30c9\u8a9e; \u53e4 (-900) p8496 sVbre p8497 -Vbreto\u0144ski +V\u30d6\u30eb\u30c8\u30f3\u8a9e p8498 sVbra p8499 -Vbrad\u017a +V\u30d6\u30e9\u30b8\u8a9e p8500 sVaym p8501 -Vajmara +V\u30a2\u30a4\u30de\u30e9\u8a9e p8502 sVcha p8503 -Vczamorro +V\u30c1\u30e3\u30e2\u30ed\u8a9e p8504 sVchb p8505 -Vczibcza +V\u30c1\u30d6\u30c1\u30e3\u8a9e p8506 sVche p8507 -Vczecze\u0144ski +V\u30c1\u30a7\u30c1\u30a7\u30f3\u8a9e p8508 sVchg p8509 -Vczagatajski +V\u30c1\u30e3\u30ac\u30bf\u30a4\u8a9e p8510 sVchk p8511 -Vchuuk +V\u30c1\u30e5\u30fc\u30af\u8a9e p8512 sVchm p8513 -Vmaryjski (Rosja) +VMari (Russia) p8514 sVchn p8515 -V\u017cargon chinoocki +V\u30c1\u30cc\u30fc\u30af\u6df7\u6210\u8a9e p8516 sVcho p8517 -Vczoktaw +V\u30c1\u30e7\u30af\u30c8\u30fc\u8a9e p8518 sVchp p8519 -Vchipewyan +V\u30c1\u30da\u30ef\u30a4\u30a2\u30f3\u8a9e p8520 sVchr p8521 -Vczerokeski +V\u30c1\u30a7\u30ed\u30ad\u30fc\u8a9e p8522 sVchu p8523 -Vstaros\u0142owia\u0144ski +VSlavonic; Old p8524 sVchv p8525 -Vczuwaski +V\u30c1\u30e5\u30f4\u30a1\u30b7\u30e5\u8a9e p8526 sVchy p8527 -Vczeje\u0144ski +V\u30b7\u30e3\u30a4\u30a2\u30f3\u8a9e p8528 sVmsa p8529 -Vmalajski (makroj\u0119zyk) +VMalay (macrolanguage) p8530 sViii p8531 -Vsyczua\u0144ski +VYi; Sichuan p8532 sVndo p8533 -Vndonga +V\u30f3\u30c9\u30f3\u30ac\u8a9e p8534 sVibo p8535 -Vibo +V\u30a4\u30dc\u8a9e p8536 sViba p8537 -Vibanag +V\u30a4\u30d0\u30f3\u8a9e p8538 sVxho p8539 -Vxhosa +V\u30db\u30b5\u8a9e p8540 sVdeu p8541 -Vniemiecki +V\u30c9\u30a4\u30c4\u8a9e p8542 sVcat p8543 -Vkatalo\u0144ski +V\u30ab\u30bf\u30ed\u30cb\u30a2\u8a9e p8544 sVdel p8545 -Vdelaware +V\u30c7\u30e9\u30a6\u30a7\u30a2\u8a9e p8546 sVden p8547 -Vslavey (atapaska\u0144ski) +V\u30b9\u30ec\u30fc\u30d6\u8a9e (\u30a2\u30b5\u30d1\u30b9\u30ab\u30f3\u8a9e) p8548 sVcad p8549 -Vkaddo +V\u30ab\u30c9\u30fc\u8a9e p8550 sVtat p8551 -Vtatarski +V\u30bf\u30bf\u30fc\u30eb\u8a9e p8552 sVsrn p8553 -Vsranan tongo +VSranan Tongo p8554 sVraj p8555 -Vrad\u017aasthani +V\u30e9\u30fc\u30b8\u30e3\u30b9\u30bf\u30fc\u30cb\u30fc\u8a9e p8556 sVtam p8557 -Vtamilski +V\u30bf\u30df\u30eb\u8a9e p8558 sVspa p8559 -Vhiszpa\u0144ski +V\u30b9\u30da\u30a4\u30f3\u8a9e p8560 sVtah p8561 -Vtahita\u0144ski +V\u30bf\u30d2\u30c1\u8a9e p8562 sVafh p8563 -Vafrihili +V\u30a2\u30d5\u30ea\u30d2\u30ea p8564 sVeng p8565 -VAngielski +V\u82f1\u8a9e p8566 sVenm p8567 -Vangielski \u015bredniowieczny (1100-1500) +V\u82f1\u8a9e; \u4e2d\u4e16 (1100-1500) p8568 sVcsb p8569 -Vkaszubski +V\u30ab\u30b7\u30e5\u30d3\u30a2\u30f3\u8a9e p8570 sVnyn p8571 -Vnyankole +V\u30cb\u30e3\u30f3\u30b3\u30fc\u30eb\u8a9e p8572 sVnyo p8573 -Vnyoro +V\u30cb\u30e7\u30ed\u8a9e p8574 sVsid p8575 -Vsidamo +V\u30b7\u30c0\u30e2\u8a9e p8576 sVnya p8577 -Vnjand\u017ca +VNyanja p8578 sVsin p8579 -Vsyngaleski +V\u30b7\u30f3\u30cf\u30e9\u6587\u5b57 p8580 sVafr p8581 -Vafrykanerski +V\u30a2\u30d5\u30ea\u30ab\u30fc\u30f3\u30b9\u8a9e p8582 sVlam p8583 -Vlamba +V\u30e9\u30f3\u30d0\u8a9e p8584 sVsnd p8585 -Vsindhi +V\u30b7\u30f3\u30c7\u30a3\u30fc\u8a9e p8586 sVmar p8587 -Vmarathi +V\u30de\u30e9\u30fc\u30c6\u30a3\u30fc\u8a9e p8588 sVlah p8589 -Vlahnda +V\u30e9\u30d5\u30f3\u30c0\u30fc\u8a9e p8590 sVnym p8591 -Vnyamwezi +V\u30e0\u30a8\u30b8\u8a9e p8592 sVsna p8593 -Vshona +V\u30b7\u30e7\u30ca\u8a9e p8594 sVlad p8595 -Vladino +V\u30e9\u30b8\u30ce\u8a9e p8596 sVsnk p8597 -Vsoninke +V\u30bd\u30cb\u30f3\u30b1\u8a9e p8598 sVmad p8599 -Vmadurajski +V\u30de\u30c9\u30a5\u30e9\u8a9e p8600 sVmag p8601 -Vmagahi +V\u30de\u30ac\u30d2\u8a9e p8602 sVmai p8603 -Vmaithili +V\u30de\u30a4\u30c1\u30ea\u8a9e p8604 sVmah p8605 -Vmarshalski +VMarshallese p8606 sVlav p8607 -V\u0142otewski +V\u30e9\u30c8\u30f4\u30a3\u30a2\u8a9e p8608 sVmal p8609 -Vmalajalam +V\u30de\u30e9\u30e4\u30fc\u30e9\u30e0\u8a9e p8610 sVman p8611 -Vmandingo +V\u30de\u30f3\u30c7\u30a3\u30f3\u30b4\u8a9e p8612 sVegy p8613 -Vegipski (staro\u017cytny) +V\u30a8\u30b8\u30d7\u30c8\u8a9e (\u53e4\u4ee3) p8614 sVzen p8615 -Vzenaga +V\u30bc\u30ca\u30ac\u8a9e p8616 sVkbd p8617 -Vkabardyjski +V\u30ab\u30d0\u30eb\u30c0\u8a9e p8618 sVita p8619 -Vw\u0142oski +V\u30a4\u30bf\u30ea\u30a2\u8a9e p8620 sVvai p8621 -Vwai +V\u30f4\u30a1\u30a4\u8a9e p8622 sVtsn p8623 -Vtswana +V\u30c4\u30ef\u30ca\u8a9e p8624 sVtso p8625 -Vtsonga +V\u30c4\u30a9\u30f3\u30ac\u8a9e p8626 sVtsi p8627 -Vtsimszian +V\u30c1\u30e0\u30b7\u30e5\u8a9e p8628 sVbyn p8629 -Vblin +VBilin p8630 sVfij p8631 -Vfid\u017cyjski +V\u30d5\u30a3\u30b8\u30fc\u8a9e p8632 sVfin p8633 -Vfi\u0144ski +V\u30d5\u30a3\u30f3\u8a9e p8634 sVeus p8635 -Vbaskijski +V\u30d0\u30b9\u30af\u8a9e p8636 sVnon p8637 -Vstaronordyjski +V\u30b9\u30ab\u30f3\u30b8\u30ca\u30d3\u30a2\u8a9e; \u53e4\u671f p8638 sVceb p8639 -Vcebua\u0144ski +V\u30bb\u30d6\u30a2\u30ce\u8a9e p8640 sVdan p8641 -Vdu\u0144ski +V\u30c7\u30f3\u30de\u30fc\u30af\u8a9e p8642 sVnog p8643 -Vnogajski +V\u30ce\u30ac\u30a4\u8a9e p8644 sVnob p8645 -Vnorweski Bokml +VNorwegian Bokml p8646 sVdak p8647 -Vdakota +V\u30c0\u30b3\u30bf\u8a9e p8648 sVces p8649 -Vczeski +V\u30c1\u30a7\u30b3\u8a9e p8650 sVdar p8651 -Vdargwijski +V\u30c0\u30eb\u30ac\u30f3\u8a9e p8652 sVnor p8653 -Vnorweski +V\u30ce\u30eb\u30a6\u30a7\u30fc\u8a9e p8654 sVkpe p8655 -Vkpelle +V\u30af\u30da\u30ec\u8a9e p8656 sVguj p8657 -Vgud\u017aarati +V\u30b0\u30b8\u30e3\u30e9\u30fc\u30c6\u30a3\u30fc\u8a9e p8658 sVmdf p8659 -Vmoksza +V\u30e2\u30af\u30b7\u30e3\u8a9e p8660 sVmas p8661 -Vmasajski +V\u30de\u30b5\u30a4\u8a9e p8662 sVlao p8663 -Vlaota\u0144ski +V\u30e9\u30aa\u8a9e p8664 sVmdr p8665 -Vmandar +V\u30de\u30f3\u30c0\u30eb\u8a9e p8666 sVgon p8667 -Vgondi +V\u30b4\u30fc\u30f3\u30c7\u30a3\u30fc\u8a9e p8668 sVgoh p8669 -Vstaro-wysoko-niemiecki (ok. 750-1050) +VGerman; Old High (ca. 750-1050) p8670 sVsms p8671 -Vlapo\u0144ski skolt +VSami; Skolt p8672 sVsmo p8673 -Vsamoa\u0144ski +V\u30b5\u30e2\u30a2\u8a9e p8674 sVsmn p8675 -Vlapo\u0144ski inari +VSami; Inari p8676 sVsmj p8677 -Vlapo\u0144ski lule +V\u30eb\u30ec\u30fb\u30b5\u30fc\u30df\u8a9e p8678 sVgot p8679 -Vgocki +V\u30b4\u30fc\u30c8\u8a9e p8680 sVsme p8681 -Vp\u0142nocnolapo\u0144ski +VSami; Northern p8682 sVdsb p8683 -Vdolno\u0142u\u017cycki +VSorbian; Lower p8684 sVsma p8685 -Vpo\u0142udniowolapo\u0144ski +VSami; Southern p8686 sVgor p8687 -Vgorontalo +V\u30b4\u30ed\u30f3\u30bf\u30ed\u8a9e p8688 sVast p8689 -Vasturyjski +VAsturian p8690 sVorm p8691 -Voromo +V\u30aa\u30ed\u30e2\u8a9e p8692 sVque p8693 -Vkeczua +V\u30ad\u30c1\u30e5\u30ef\u8a9e p8694 sVori p8695 -Vorija +V\u30aa\u30ea\u30e4\u30fc\u8a9e p8696 sVcrh p8697 -Vkrymskotatarski +VTurkish; Crimean p8698 sVasm p8699 -Vasamski +V\u30a2\u30c3\u30b5\u30e0\u8a9e p8700 sVpus p8701 -Vpaszto +V\u30d7\u30b7\u30e5\u30c8\u30a5\u30fc\u8a9e p8702 sVdgr p8703 -Vdogrib +V\u30c9\u30af\u30ea\u30d6\u8a9e p8704 sVltz p8705 -Vluksemburski +VLuxembourgish p8706 sVgez p8707 -Vgyyz +V\u30b2\u30fc\u30ba\u8a9e p8708 sVisl p8709 -Vislandzki +V\u30a2\u30a4\u30b9\u30e9\u30f3\u30c9\u8a9e p8710 sVlat p8711 -V\u0142aci\u0144ski +V\u30e9\u30c6\u30f3\u8a9e p8712 sVmak p8713 -Vmakasar +V\u30de\u30ab\u30c3\u30b5\u30eb\u8a9e p8714 sVzap p8715 -Vzapotecki +V\u30b6\u30dd\u30c6\u30c3\u30af\u8a9e p8716 sVyid p8717 -Vjidysz +V\u30a4\u30c7\u30a3\u30c3\u30b7\u30e5\u8a9e p8718 sVkok p8719 -Vkonkani (makroj\u0119zyk) +VKonkani (macrolanguage) p8720 sVkom p8721 -Vkomi +V\u30b3\u30df\u8a9e p8722 sVkon p8723 -Vkongo +V\u30b3\u30f3\u30b4\u8a9e p8724 sVukr p8725 -Vukrai\u0144ski +V\u30a6\u30af\u30e9\u30a4\u30ca\u8a9e p8726 sVton p8727 -Vtonga\u0144ski (Wyspy Tonga) +V\u30c8\u30f3\u30ac\u8a9e (\u30c8\u30f3\u30ac\u8af8\u5cf6) p8728 sVzxx p8729 -Vbrak kontekstu j\u0119zykowego +VNo linguistic content p8730 sVkos p8731 -Vkosrae +V\u30b3\u30b9\u30e9\u30a8\u8a9e p8732 sVkor p8733 -Vkorea\u0144ski +V\u671d\u9bae\u8a9e p8734 sVtog p8735 -Vtonga\u0144ski (Nyasa) +V\u30c8\u30f3\u30ac\u8a9e (\u30cb\u30a2\u30b5) p8736 sVhun p8737 -Vw\u0119gierski +V\u30cf\u30f3\u30ac\u30ea\u30fc\u8a9e p8738 sVhup p8739 -Vhupa +V\u30a2\u30bf\u30d1\u30b9\u30ab\u8a9e p8740 sVcym p8741 -Vwalijski +V\u30a6\u30a7\u30fc\u30eb\u30ba\u8a9e p8742 sVudm p8743 -Vudmurcki +V\u30a6\u30c9\u30e0\u30eb\u30c8\u8a9e p8744 sVbej p8745 -Vbed\u017ca +V\u30d9\u30b8\u30e3\u8a9e p8746 sVben p8747 -Vbengalski +V\u30d9\u30f3\u30ac\u30eb\u8a9e p8748 sVbel p8749 -Vbia\u0142oruski +V\u767d\u30ed\u30b7\u30a2\u8a9e p8750 sVbem p8751 -Vbemba (Zambia) +VBemba (Zambia) p8752 sVaar p8753 -Vafarski +V\u30a2\u30d5\u30a1\u30eb\u8a9e p8754 sVnzi p8755 -Vnzema +V\u30f3\u30bc\u30de\u8a9e p8756 sVsah p8757 -Vjakucki +V\u30e4\u30af\u30fc\u30c8\u8a9e p8758 sVsan p8759 -Vsanskryt +V\u68b5\u8a9e p8760 sVsam p8761 -Vsamaryta\u0144ski aramejski +VAramaic; Samaritan p8762 sVpro p8763 -Vprowansalski \u015bredniowieczny (do 1500) +V\u30d7\u30ed\u30f4\u30a1\u30f3\u30b9\u8a9e; \u53e4\u671f (-1500) p8764 sVsag p8765 -Vsango +V\u30b5\u30f3\u30b4\u8a9e p8766 sVsad p8767 -Vsandawe +V\u30b5\u30f3\u30c0\u30a6\u30a7\u8a9e p8768 sVanp p8769 -Vangika +V\u30a2\u30f3\u30ae\u30ab\u8a9e p8770 sVrap p8771 -Vrapanui +V\u30e9\u30d1\u30cc\u30fc\u30a4\u8a9e p8772 sVsas p8773 -Vsasak +V\u30b5\u30b5\u30af\u8a9e p8774 sVnqo p8775 -Vn\u2019ko +V\u30f3\u30b3\u6587\u5b57 p8776 sVsat p8777 -Vsantali +V\u30b5\u30f3\u30bf\u30fc\u30ea\u30fc\u8a9e p8778 sVmin p8779 -Vminangkabau +V\u30df\u30ca\u30f3\u30ab\u30d0\u30a6\u8a9e p8780 sVlim p8781 -Vlimburgijski +VLimburgan p8782 sVlin p8783 -Vlingala +V\u30ea\u30f3\u30ac\u30e9\u8a9e p8784 sVlit p8785 -Vlitewski +V\u30ea\u30c8\u30a2\u30cb\u30a2\u8a9e p8786 sVefi p8787 -Vefik +V\u30a8\u30d5\u30a3\u30af\u8a9e p8788 sVmis p8789 -Vj\u0119zyki niezakodowane +VUncoded languages p8790 sVkac p8791 -Vkaczin +V\u30ab\u30c1\u30f3\u8a9e p8792 sVkab p8793 -Vkabylski +V\u30ab\u30d3\u30eb\u8a9e p8794 sVkaa p8795 -Vkaraka\u0142packi +V\u30ab\u30e9\u30fb\u30ab\u30eb\u30d1\u30af\u8a9e p8796 sVkan p8797 -Vkannada +V\u30ab\u30f3\u30ca\u30c0\u8a9e p8798 sVkam p8799 -Vkamba (Kenia) +VKamba (Kenya) p8800 sVkal p8801 -Vkalaallisut +VKalaallisut p8802 sVkas p8803 -Vkaszmirski +V\u30ab\u30b7\u30df\u30fc\u30ea\u30fc\u8a9e p8804 sVkaw p8805 -Vkawi +V\u30ab\u30a6\u30a3\u8a9e p8806 sVkau p8807 -Vkanuri +V\u30ab\u30cc\u30ea\u8a9e p8808 sVkat p8809 -Vgruzi\u0144ski +V\u30b0\u30eb\u30b8\u30a2\u8a9e p8810 sVkaz p8811 -Vkazaski +V\u30ab\u30b6\u30fc\u30d5\u8a9e p8812 sVtyv p8813 -Vtuwi\u0144ski +V\u30c4\u30d0\u30cb\u30a2\u8a9e p8814 sVawa p8815 -Vawadhi +V\u30a2\u30ef\u30c7\u30a3\u8a9e p8816 sVurd p8817 -Vurdu +V\u30a6\u30eb\u30c9\u30a5\u30fc\u8a9e p8818 sVdoi p8819 -Vdogri (makroj\u0119zyk) +VDogri (macrolanguage) p8820 sVtpi p8821 -Vtok pisin +V\u30c8\u30c3\u30af\u30fb\u30d4\u30b8\u30f3 p8822 sVmri p8823 -Vmaoryski +V\u30de\u30aa\u30ea\u8a9e p8824 sVabk p8825 -Vabchaski +V\u30a2\u30d6\u30cf\u30b8\u30a2\u8a9e p8826 sVtkl p8827 -Vtokelau +V\u30c8\u30b1\u30e9\u30a6\u8a9e p8828 sVnld p8829 -Vholenderski +V\u30aa\u30e9\u30f3\u30c0\u8a9e p8830 sVoji p8831 -Vod\u017cibwe +V\u30aa\u30b8\u30d6\u30ef\u8a9e p8832 sVoci p8833 -Vokcyta\u0144ski (po 1500) +VOccitan (post 1500) p8834 sVwol p8835 -Vwolof +V\u30a6\u30a9\u30ed\u30d5\u8a9e p8836 sVjav p8837 -Vjawajski +V\u30b8\u30e3\u30ef\u8a9e p8838 sVhrv p8839 -Vchorwacki +V\u30af\u30ed\u30a2\u30c1\u30a2\u8a9e p8840 sVzza p8841 -Vzazaki +VZaza p8842 sVmga p8843 -Virlandzki \u015bredniowieczny (900-1200) +V\u30a2\u30a4\u30eb\u30e9\u30f3\u30c9\u8a9e; \u4e2d\u4e16 (900-1200) p8844 sVhit p8845 -Vhetycki +V\u30d2\u30c3\u30bf\u30a4\u30c8\u8a9e p8846 sVdyu p8847 -Vdiula +V\u30c7\u30e5\u30e9\u8a9e p8848 sVssw p8849 -Vsuazi +V\u30b7\u30b9\u30ef\u30c6\u30a3\u8a9e p8850 sVmul p8851 -Vwiele j\u0119zykw +V\u591a\u8a00\u8a9e p8852 sVhil p8853 -Vhiligajnon +V\u30d2\u30ea\u30b8\u30e3\u30ce\u30f3\u8a9e p8854 sVhin p8855 -Vhindi +V\u30d2\u30f3\u30c7\u30a3\u30fc\u8a9e p8856 sVbas p8857 -Vbasa (Kamerun) +VBasa (Cameroon) p8858 sVgba p8859 -Vgbaya (Republika \u015arodkowoafryka\u0144ska) +VGbaya (Central African Republic) p8860 sVwln p8861 -Vwalo\u0144ski +V\u30ef\u30ed\u30f3\u8a9e p8862 sVnep p8863 -Vnepalski +V\u30cd\u30d1\u30fc\u30eb\u8a9e p8864 sVcre p8865 -Vkri +V\u30af\u30ea\u30fc\u8a9e p8866 sVban p8867 -Vbalijski +V\u30d0\u30ea\u8a9e p8868 sVbal p8869 -Vbaluczi +V\u30d0\u30eb\u30fc\u30c1\u30fc\u8a9e p8870 sVbam p8871 -Vbambara +V\u30d0\u30f3\u30d0\u30e9\u8a9e p8872 sVbak p8873 -Vbaszkirski +V\u30d0\u30b7\u30ad\u30fc\u30eb\u8a9e p8874 sVshn p8875 -Vszan +V\u30b7\u30e3\u30f3\u8a9e p8876 sVarp p8877 -Varapaho +V\u30a2\u30e9\u30d1\u30db\u30fc\u8a9e p8878 sVarw p8879 -Varawak +V\u30a2\u30e9\u30ef\u30af\u8a9e p8880 sVara p8881 -Varabski +V\u30a2\u30e9\u30d3\u30a2\u8a9e p8882 sVarc p8883 -Varamejski oficjalny (700-300 p.n.e.) +VAramaic; Official (700-300 BCE) p8884 sVarg p8885 -Varago\u0144ski +V\u30a2\u30e9\u30b4\u30f3\u8a9e p8886 sVsel p8887 -Vselkupski +V\u30bb\u30ea\u30af\u30d7\u8a9e p8888 sVarn p8889 -Varauka\u0144ski +VMapudungun p8890 sVlus p8891 -Vlushai +V\u30eb\u30b7\u30e3\u30a4\u8a9e p8892 sVmus p8893 -Vkrik +V\u30af\u30ea\u30fc\u30af\u8a9e p8894 sVlua p8895 -Vluba-lulua +V\u30eb\u30d0\u30fb\u30eb\u30eb\u30a2\u8a9e p8896 sVlub p8897 -Vluba-katanga +V\u30eb\u30d0\u8a9e p8898 sVlug p8899 -Vluganda +V\u30ac\u30f3\u30c0\u8a9e p8900 sVlui p8901 -Vluiseno +V\u30eb\u30a4\u30bb\u30cb\u30e7\u8a9e p8902 sVlun p8903 -Vlunda +V\u30e9\u30f3\u30c0\u8a9e p8904 sVluo p8905 -Vluo (Kenia i Tanzania) +V\u30eb\u30aa\u8a9e (\u30b1\u30cb\u30a2\u3068\u30bf\u30f3\u30b6\u30cb\u30a2) p8906 sViku p8907 -Vinuktitut +V\u30a4\u30cc\u30af\u30c1\u30bf\u30c3\u30c8\u8a9e p8908 sVtur p8909 -Vturecki +V\u30c8\u30eb\u30b3\u8a9e p8910 sVzbl p8911 -Vbliss +VBlissymbols p8912 sVtuk p8913 -Vturkme\u0144ski +V\u30c8\u30a5\u30eb\u30af\u30e1\u30f3\u8a9e p8914 sVtum p8915 -Vtumbuka +V\u30bf\u30f3\u30d6\u30ab\u8a9e p8916 sVcop p8917 -Vkoptyjski +V\u30b3\u30d7\u30c8\u8a9e p8918 sVcos p8919 -Vkorsyka\u0144ski +V\u30b3\u30eb\u30b7\u30ab\u8a9e p8920 sVcor p8921 -Vkornijski +V\u30b3\u30fc\u30f3\u30a6\u30a9\u30fc\u30eb\u8a9e p8922 sVilo p8923 -Vilokano +V\u30a4\u30ed\u30ab\u30ce\u8a9e p8924 sVgwi p8925 -Vgwich\u02bcin +VGwich\u02bcin p8926 sVund p8927 -Vnieokre\u015blony +V\u8a00\u8a9e\u540d\u4e0d\u660e p8928 sVtli p8929 -Vtlingit +V\u30c8\u30ea\u30f3\u30ae\u30c3\u30c8\u8a9e p8930 sVtlh p8931 -Vklingo\u0144ski +VKlingon p8932 sVpor p8933 -Vportugalski +V\u30dd\u30eb\u30c8\u30ac\u30eb\u8a9e p8934 sVpon p8935 -Vpohnpei +V\u30dd\u30ca\u30da\u8a9e p8936 sVpol p8937 -VPolski +V\u30dd\u30fc\u30e9\u30f3\u30c9\u8a9e p8938 sVang p8939 -VStaroangielski (ok. 450-1100) +VEnglish; Old (ca. 450-1100) p8940 sVtgk p8941 -Vtad\u017cycki +V\u30bf\u30b8\u30af\u8a9e p8942 sVtgl p8943 -Vtagalski +V\u30bf\u30ac\u30ed\u30b0\u8a9e p8944 sVfra p8945 -Vfrancuski +V\u30d5\u30e9\u30f3\u30b9\u8a9e p8946 sVdum p8947 -Vholenderski \u015bredniowieczny (ok. 1050-1350) +VDutch; Middle (ca. 1050-1350) p8948 sVswa p8949 -Vsuahili (makroj\u0119zyk) +VSwahili (macrolanguage) p8950 sVdua p8951 -Vduala +V\u30c9\u30a5\u30a2\u30e9\u8a9e p8952 sVfro p8953 -Vstarofrancuski (842-ok. 1400) +VFrench; Old (842-ca. 1400) p8954 sVyap p8955 -Vjapski +V\u30e4\u30c3\u30d7\u8a9e p8956 sVfrm p8957 -Vfrancuski \u015bredniowieczny (ok. 1400-1600) +VFrench; Middle (ca. 1400-1600) p8958 sVfrs p8959 -Vwschodniofryzyjski +VFrisian; Eastern p8960 sVfrr p8961 -Vp\u0142nocnofryzyjski +VFrisian; Northern p8962 sVyao p8963 -Vyao +V\u30e4\u30aa\u8a9e p8964 sVxal p8965 -Vka\u0142mucki +VKalmyk p8966 sVfry p8967 -Vzachodniofryzyjski +VFrisian; Western p8968 sVgay p8969 -Vgayo +V\u30ac\u30e8\u8a9e p8970 sVota p8971 -Vturecki otoma\u0144ski (1500-1928) +V\u30c8\u30eb\u30b3\u8a9e; \u30aa\u30b9\u30de\u30f3 (1500-1928) p8972 sVhmn p8973 -Vhmong +V\u30d5\u30e2\u30f3\u30b0\u8a9e p8974 sVhmo p8975 -Vhiri motu +V\u30d2\u30ea\u30e2\u30c8\u30a5\u8a9e p8976 sVgaa p8977 -Vga +V\u30ac\u8a9e p8978 sVfur p8979 -Vfriulski +V\u30d5\u30ea\u30a6\u30ea\u8a9e p8980 sVmlg p8981 -Vmalgaski +V\u30de\u30e9\u30ac\u30b7\u8a9e p8982 sVslv p8983 -Vs\u0142owe\u0144ski +V\u30b9\u30ed\u30f4\u30a7\u30cb\u30a2\u8a9e p8984 sVain p8985 -Vajnoski (Japonia) +VAinu (Japan) p8986 sVfil p8987 -Vpilipino +VFilipino p8988 sVmlt p8989 -Vmalta\u0144ski +V\u30de\u30eb\u30bf\u8a9e p8990 sVslk p8991 -Vs\u0142owacki +V\u30b9\u30ed\u30f4\u30a1\u30ad\u30a2\u8a9e p8992 sVrar p8993 -Vmaoryski Wysp Cooka +VMaori; Cook Islands p8994 sVful p8995 -Vfulani +V\u30d5\u30e9\u8a9e p8996 sVjpn p8997 -Vjapo\u0144ski +V\u65e5\u672c\u8a9e p8998 sVvol p8999 -Vwolapik +V\u30dc\u30e9\u30d4\u30e5\u30fc\u30af\u8a9e p9000 sVvot p9001 -Vwotycki +V\u30f4\u30a9\u30fc\u30c8\u8a9e p9002 sVind p9003 -Vindonezyjski +V\u30a4\u30f3\u30c9\u30cd\u30b7\u30a2\u8a9e p9004 sVave p9005 -Vawestyjski +V\u30a2\u30f4\u30a7\u30b9\u30bf\u8a9e p9006 sVjpr p9007 -Vjudeo-perski +V\u30e6\u30c0\u30e4\u30fb\u30da\u30eb\u30b7\u30a2\u8a9e p9008 sVava p9009 -Vawarski +V\u30a2\u30f4\u30a1\u30eb\u8a9e p9010 sVpap p9011 -Vpapiamento +V\u30d1\u30d4\u30a2\u30e1\u30f3\u30c8 p9012 sVewo p9013 -Vewondo +V\u30a8\u30a6\u30a9\u30f3\u30c9\u8a9e p9014 sVpau p9015 -Vpalau +V\u30d1\u30e9\u30aa\u8a9e p9016 sVewe p9017 -Vewe +V\u30a8\u30a6\u30a7\u8a9e p9018 sVpag p9019 -Vpangasino +V\u30d1\u30f3\u30ac\u30b7\u30ca\u30fc\u30f3\u8a9e p9020 sVpal p9021 -Vpahlawi +V\u30d1\u30fc\u30e9\u30f4\u30a3\u30fc\u8a9e p9022 sVpam p9023 -Vpampango +V\u30d1\u30f3\u30d1\u30f3\u30ac\u8a9e p9024 sVpan p9025 -Vpend\u017cabski +VPanjabi p9026 sVsyc p9027 -Vsyryjski klasyczny +VSyriac; Classical p9028 sVphn p9029 -Vfenicki +V\u30d5\u30a7\u30cb\u30ad\u30a2\u8a9e p9030 sVkir p9031 -Vkirgiski +V\u30ad\u30eb\u30ae\u30b9\u8a9e p9032 sVnia p9033 -Vnias +V\u30cb\u30a2\u30b9\u8a9e p9034 sVkik p9035 -Vkikiju +V\u30ad\u30af\u30e6\u8a9e p9036 sVsyr p9037 -Vsyryjski +V\u30b7\u30ea\u30a2\u8a9e p9038 sVkin p9039 -Vruanda +V\u30ad\u30f3\u30e4\u30eb\u30ef\u30f3\u30c0\u8a9e p9040 sVniu p9041 -Vniue +V\u30cb\u30a6\u30fc\u30a8\u30a4\u8a9e p9042 sVgsw p9043 -Vniemiecki szwajcarski +VGerman; Swiss p9044 sVepo p9045 -Vesperanto +V\u30a8\u30b9\u30da\u30e9\u30f3\u30c8 p9046 sVjbo p9047 -Vlojban +V\u30ed\u30b8\u30d0\u30f3\u8a9e p9048 sVmic p9049 -Vmicmac +VMi'kmaq p9050 sVtha p9051 -Vtajski +V\u30bf\u30a4\u8a9e p9052 sVhai p9053 -Vhaida +V\u30cf\u30a4\u30c0\u8a9e p9054 sVgmh p9055 -V\u015brednio-wysoko-niemiecki (ok. 1050-1500) +VGerman; Middle High (ca. 1050-1500) p9056 sVell p9057 -Vgrecki wsp\u0142czesny (1453-) +V\u30ae\u30ea\u30b7\u30a2\u8a9e; \u73fe\u4ee3 (1453-) p9058 sVady p9059 -Vadygejski +VAdyghe p9060 sVelx p9061 -Velamicki +V\u30a8\u30e9\u30e0\u8a9e p9062 sVada p9063 -Vadangme +V\u30a2\u30c0\u30f3\u30b0\u30e1\u8a9e p9064 sVnav p9065 -Vnavaho +VNavajo p9066 sVhat p9067 -Vkreolski haita\u0144ski +VCreole; Haitian p9068 sVhau p9069 -Vhausa +V\u30cf\u30a6\u30b5\u8a9e p9070 sVhaw p9071 -Vhawajski +V\u30cf\u30ef\u30a4\u8a9e p9072 sVbin p9073 -Vedo +V\u30d3\u30cb\u8a9e p9074 sVamh p9075 -Vamharski +V\u30a2\u30e0\u30cf\u30e9\u8a9e p9076 sVbik p9077 -Vbikol +V\u30d3\u30b3\u30eb\u8a9e p9078 sVmos p9079 -Vmossi +V\u30e2\u30c3\u30b7\u30fc\u8a9e p9080 sVmoh p9081 -Vmohawk +V\u30e2\u30fc\u30db\u30fc\u30af\u8a9e p9082 sVmon p9083 -Vmongolski +V\u8499\u53e4\u8a9e p9084 sVbho p9085 -Vbhod\u017apuri +V\u30dc\u30fc\u30b8\u30d7\u30ea\u30fc\u8a9e p9086 sVbis p9087 -Vbislama +V\u30d3\u30b9\u30e9\u30de\u8a9e p9088 sVtvl p9089 -Vtuvalu +V\u30c4\u30d0\u30eb\u8a9e p9090 sVest p9091 -Vesto\u0144ski +V\u30a8\u30b9\u30c8\u30cb\u30a2\u8a9e p9092 sVkmb p9093 -Vkimbundu +V\u30ad\u30f3\u30d6\u30f3\u30c9\u30a5\u8a9e p9094 sVpeo p9095 -Vstaroperski (ok. 600-400 p.n.e) +VPersian; Old (ca. 600-400 B.C.) p9096 sVumb p9097 -Vumbundu +V\u30a2\u30f3\u30d6\u30f3\u30c9\u30a5\u8a9e p9098 sVtmh p9099 -Vtuareski +V\u30bf\u30de\u30b7\u30a7\u30af\u8a9e p9100 sVfon p9101 -Vfon +V\u30d5\u30a9\u30f3\u8a9e p9102 sVhsb p9103 -Vgrno\u0142u\u017cycki +VSorbian; Upper p9104 sVrun p9105 -Vrundi +V\u30eb\u30f3\u30c7\u30a3\u8a9e p9106 sVrus p9107 -Vrosyjski +V\u30ed\u30b7\u30a2\u8a9e p9108 sVrup p9109 -Varumu\u0144ski +VRomanian; Macedo- p9110 sVpli p9111 -Vpali +V\u30d1\u30fc\u30ea\u8a9e p9112 sVace p9113 -Vaczineski +V\u30a2\u30c1\u30a7\u30fc\u8a9e p9114 sVach p9115 -Vaczoli +V\u30a2\u30c1\u30e7\u30ea\u8a9e p9116 sVnde p9117 -Vndebele p\u0142nocny +V\u30de\u30bf\u30d9\u30ec\u8a9e; \u5317 p9118 sVdzo p9119 -Vdzongka +V\u30be\u30f3\u30ab\u8a9e p9120 sVkru p9121 -Vkurukh +V\u30af\u30eb\u30af\u8a9e p9122 sVsrr p9123 -Vserer +V\u30bb\u30ec\u30fc\u30eb\u8a9e p9124 sVido p9125 -Vido +V\u30a4\u30c9\u8a9e p9126 sVsrp p9127 -Vserbski +V\u30bb\u30eb\u30d3\u30a2\u8a9e p9128 sVkrl p9129 -Vkarelski +V\u30ab\u30ec\u30ea\u30a2\u8a9e p9130 sVkrc p9131 -Vkaraczajsko-ba\u0142karski +V\u30ab\u30e9\u30c1\u30e3\u30a4\u30fb\u30d0\u30eb\u30ab\u30eb\u8a9e p9132 sVnds p9133 @@ -18257,174 +18257,1849 @@ VGerman; Low p9134 sVzun p9135 -Vzuni +V\u30ba\u30cb\u8a9e p9136 sVzul p9137 -Vzuluski +V\u30ba\u30fc\u30eb\u30fc\u8a9e p9138 sVtwi p9139 -Vtwi +V\u30c8\u30a6\u30a3\u8a9e p9140 sVsog p9141 -Vsogdia\u0144ski +V\u30bd\u30b0\u30c9\u8a9e p9142 sVnso p9143 -Vsotho p\u0142nocny +VSotho; Northern p9144 sVswe p9145 -Vszwedzki +V\u30b9\u30a6\u30a7\u30fc\u30c7\u30f3\u8a9e p9146 sVsom p9147 -Vsomalijski +V\u30bd\u30de\u30ea\u8a9e p9148 sVsot p9149 -Vsotho po\u0142udniowy +V\u30bd\u30c8\u8a9e; \u5357 p9150 sVmkd p9151 -Vmacedo\u0144ski +V\u30de\u30b1\u30c9\u30cb\u30a2\u8a9e p9152 sVher p9153 -Vherero +V\u30d8\u30ec\u30ed\u8a9e p9154 sVlol p9155 -Vmongo +V\u30e2\u30f3\u30b4\u8a9e p9156 sVheb p9157 -Vhebrajski +V\u30d8\u30d6\u30e9\u30a4\u8a9e p9158 sVloz p9159 -Vlozi +V\u30ed\u30b8\u8a9e p9160 sVgil p9161 -Vgilberta\u0144ski +V\u30ad\u30ea\u30d0\u30b9\u8a9e p9162 sVwas p9163 -Vwasho +V\u30ef\u30b7\u30e7\u8a9e p9164 sVwar p9165 -Vwarajski (Filipiny) +VWaray (Philippines) p9166 sVbul p9167 -Vbu\u0142garski +V\u30d6\u30eb\u30ac\u30ea\u30a2\u8a9e p9168 sVwal p9169 -Vwalamo +VWolaytta p9170 sVbua p9171 -Vburiacki +V\u30d6\u30ea\u30e4\u30fc\u30c8\u8a9e p9172 sVbug p9173 -Vbugijski +V\u30d6\u30ae\u8a9e p9174 sVaze p9175 -Vazerski +V\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3\u8a9e p9176 sVzha p9177 -Vzhuang +VZhuang p9178 sVzho p9179 -Vchi\u0144ski +V\u4e2d\u56fd\u8a9e p9180 sVnno p9181 -Vnorweski Nynorsk +V\u30cb\u30fc\u30ce\u30b7\u30e5\u30af\u30fb\u30ce\u30eb\u30a6\u30a7\u30fc\u8a9e p9182 sVuig p9183 -Vujgurski +V\u30a6\u30a4\u30b0\u30eb\u8a9e p9184 sVmyv p9185 -Verzja +V\u30a8\u30eb\u30b8\u30e3\u8a9e p9186 sVinh p9187 -Vinguski +V\u30a4\u30f3\u30b0\u30fc\u30b7\u8a9e p9188 sVkhm p9189 -V\u015brodkowokhmerski +VKhmer; Central p9190 sVkho p9191 -Vchota\u0144ski +V\u30db\u30fc\u30bf\u30f3\u8a9e p9192 sVmya p9193 -Vbirma\u0144ski +V\u30d3\u30eb\u30de\u8a9e p9194 sVkha p9195 -Vkhasi +V\u30ab\u30b7\u8a9e p9196 sVina p9197 -Vinterlingua (Mi\u0119dzynarodowe Stowarzyszenie J\u0119zyka Pomocniczego) +V\u30a4\u30f3\u30bf\u30fc\u30ea\u30f3\u30b0\u30a2\u8a9e (\u56fd\u969b\u88dc\u52a9\u8a9e\u5354\u4f1a) p9198 sVtiv p9199 -Vtiw +V\u30c6\u30a3\u30d6\u8a9e p9200 sVtir p9201 -Vtigrinia +V\u30c6\u30a3\u30b0\u30ea\u30cb\u30a2\u8a9e p9202 sVnap p9203 -Vneapolita\u0144ski +V\u30ca\u30dd\u30ea\u8a9e p9204 sVgrb p9205 -Vgrebo +V\u30b0\u30ec\u30dc\u8a9e p9206 sVgrc p9207 -Vgrecki staro\u017cytny (do 1453) +V\u30ae\u30ea\u30b7\u30a2\u8a9e; \u53e4\u4ee3 (-1453) p9208 sVnau p9209 -Vnaurua\u0144ski +V\u30ca\u30a6\u30eb\u8a9e p9210 sVgrn p9211 -Vguarani +V\u30b0\u30a2\u30e9\u30cb\u30fc\u8a9e p9212 sVtig p9213 -Vtigre +V\u30c6\u30a3\u30b0\u30ec\u8a9e p9214 sVyor p9215 -Vjoruba +V\u30e8\u30eb\u30d0\u8a9e p9216 sVile p9217 -Vinterlingue +V\u30a4\u30f3\u30bf\u30fc\u30ea\u30f3\u30b0 p9218 sVsqi p9219 -Valba\u0144ski +V\u30a2\u30eb\u30d0\u30cb\u30a2\u8a9e p9220 +ssS'pl' +p9221 +(dp9222 +Vroh +p9223 +Vretoroma\u0144ski +p9224 +sVsco +p9225 +Vscots +p9226 +sVscn +p9227 +Vsycylijski +p9228 +sVrom +p9229 +Vromski +p9230 +sVron +p9231 +Vrumu\u0144ski +p9232 +sVoss +p9233 +Vosetyjski +p9234 +sVale +p9235 +Valeucki +p9236 +sVmni +p9237 +Vmanipuri +p9238 +sVnwc +p9239 +Vnewarski klasyczny +p9240 +sVosa +p9241 +Vosage +p9242 +sValt +p9243 +Va\u0142tajski po\u0142udniowy +p9244 +sVmnc +p9245 +Vmand\u017curski +p9246 +sVmwr +p9247 +Vmarwari +p9248 +sVven +p9249 +Vvenda +p9250 +sVuga +p9251 +Vugarycki +p9252 +sVmwl +p9253 +Vmirandyjski +p9254 +sVfas +p9255 +Vperski +p9256 +sVfat +p9257 +Vfanti +p9258 +sVfan +p9259 +Vfang (Gwinea Rwnikowa) +p9260 +sVfao +p9261 +Vfarerski +p9262 +sVdin +p9263 +Vdinka +p9264 +sVhye +p9265 +Vormia\u0144ski +p9266 +sVbla +p9267 +Vsiksika +p9268 +sVsrd +p9269 +Vsardy\u0144ski +p9270 +sVcar +p9271 +Vkaraibski galibi +p9272 +sVdiv +p9273 +Vmalediwski; divehi +p9274 +sVtel +p9275 +Vtelugu +p9276 +sVtem +p9277 +Vtemne +p9278 +sVnbl +p9279 +Vndebele po\u0142udniowy +p9280 +sVter +p9281 +Vtereno +p9282 +sVtet +p9283 +Vtetum +p9284 +sVsun +p9285 +Vsundajski +p9286 +sVkut +p9287 +Vkutenai +p9288 +sVsuk +p9289 +Vsukuma +p9290 +sVkur +p9291 +Vkurdyjski +p9292 +sVkum +p9293 +Vkumycki +p9294 +sVsus +p9295 +Vsusu +p9296 +sVnew +p9297 +Vnewarski +p9298 +sVkua +p9299 +Vkwanyama +p9300 +sVsux +p9301 +Vsumeryjski +p9302 +sVmen +p9303 +Vmende (Sierra Leone) +p9304 +sVlez +p9305 +Vlezgi\u0144ski +p9306 +sVgla +p9307 +Vszkocki gaelicki +p9308 +sVbos +p9309 +Vbo\u015bniacki +p9310 +sVgle +p9311 +Virlandzki +p9312 +sVeka +p9313 +Vekajuk +p9314 +sVglg +p9315 +Vgalicyjski +p9316 +sVakk +p9317 +Vakadyjski +p9318 +sVaka +p9319 +Vakan +p9320 +sVbod +p9321 +Vtybeta\u0144ski +p9322 +sVglv +p9323 +Vmanx +p9324 +sVjrb +p9325 +Vjudeoarabski +p9326 +sVvie +p9327 +Vwietnamski +p9328 +sVipk +p9329 +Vinupiaq +p9330 +sVuzb +p9331 +Vuzbecki +p9332 +sVsga +p9333 +Vstaroirlandzki (do 900) +p9334 +sVbre +p9335 +Vbreto\u0144ski +p9336 +sVbra +p9337 +Vbrad\u017a +p9338 +sVaym +p9339 +Vajmara +p9340 +sVcha +p9341 +Vczamorro +p9342 +sVchb +p9343 +Vczibcza +p9344 +sVche +p9345 +Vczecze\u0144ski +p9346 +sVchg +p9347 +Vczagatajski +p9348 +sVchk +p9349 +Vchuuk +p9350 +sVchm +p9351 +Vmaryjski (Rosja) +p9352 +sVchn +p9353 +V\u017cargon chinoocki +p9354 +sVcho +p9355 +Vczoktaw +p9356 +sVchp +p9357 +Vchipewyan +p9358 +sVchr +p9359 +Vczerokeski +p9360 +sVchu +p9361 +Vstaros\u0142owia\u0144ski +p9362 +sVchv +p9363 +Vczuwaski +p9364 +sVchy +p9365 +Vczeje\u0144ski +p9366 +sVmsa +p9367 +Vmalajski (makroj\u0119zyk) +p9368 +sViii +p9369 +Vsyczua\u0144ski +p9370 +sVndo +p9371 +Vndonga +p9372 +sVibo +p9373 +Vibo +p9374 +sViba +p9375 +Vibanag +p9376 +sVxho +p9377 +Vxhosa +p9378 +sVdeu +p9379 +Vniemiecki +p9380 +sVcat +p9381 +Vkatalo\u0144ski +p9382 +sVdel +p9383 +Vdelaware +p9384 +sVden +p9385 +Vslavey (atapaska\u0144ski) +p9386 +sVcad +p9387 +Vkaddo +p9388 +sVtat +p9389 +Vtatarski +p9390 +sVsrn +p9391 +Vsranan tongo +p9392 +sVraj +p9393 +Vrad\u017aasthani +p9394 +sVtam +p9395 +Vtamilski +p9396 +sVspa +p9397 +Vhiszpa\u0144ski +p9398 +sVtah +p9399 +Vtahita\u0144ski +p9400 +sVafh +p9401 +Vafrihili +p9402 +sVeng +p9403 +VAngielski +p9404 +sVenm +p9405 +Vangielski \u015bredniowieczny (1100-1500) +p9406 +sVcsb +p9407 +Vkaszubski +p9408 +sVnyn +p9409 +Vnyankole +p9410 +sVnyo +p9411 +Vnyoro +p9412 +sVsid +p9413 +Vsidamo +p9414 +sVnya +p9415 +Vnjand\u017ca +p9416 +sVsin +p9417 +Vsyngaleski +p9418 +sVafr +p9419 +Vafrykanerski +p9420 +sVlam +p9421 +Vlamba +p9422 +sVsnd +p9423 +Vsindhi +p9424 +sVmar +p9425 +Vmarathi +p9426 +sVlah +p9427 +Vlahnda +p9428 +sVnym +p9429 +Vnyamwezi +p9430 +sVsna +p9431 +Vshona +p9432 +sVlad +p9433 +Vladino +p9434 +sVsnk +p9435 +Vsoninke +p9436 +sVmad +p9437 +Vmadurajski +p9438 +sVmag +p9439 +Vmagahi +p9440 +sVmai +p9441 +Vmaithili +p9442 +sVmah +p9443 +Vmarshalski +p9444 +sVlav +p9445 +V\u0142otewski +p9446 +sVmal +p9447 +Vmalajalam +p9448 +sVman +p9449 +Vmandingo +p9450 +sVegy +p9451 +Vegipski (staro\u017cytny) +p9452 +sVzen +p9453 +Vzenaga +p9454 +sVkbd +p9455 +Vkabardyjski +p9456 +sVita +p9457 +Vw\u0142oski +p9458 +sVvai +p9459 +Vwai +p9460 +sVtsn +p9461 +Vtswana +p9462 +sVtso +p9463 +Vtsonga +p9464 +sVtsi +p9465 +Vtsimszian +p9466 +sVbyn +p9467 +Vblin +p9468 +sVfij +p9469 +Vfid\u017cyjski +p9470 +sVfin +p9471 +Vfi\u0144ski +p9472 +sVeus +p9473 +Vbaskijski +p9474 +sVnon +p9475 +Vstaronordyjski +p9476 +sVceb +p9477 +Vcebua\u0144ski +p9478 +sVdan +p9479 +Vdu\u0144ski +p9480 +sVnog +p9481 +Vnogajski +p9482 +sVnob +p9483 +Vnorweski Bokml +p9484 +sVdak +p9485 +Vdakota +p9486 +sVces +p9487 +Vczeski +p9488 +sVdar +p9489 +Vdargwijski +p9490 +sVnor +p9491 +Vnorweski +p9492 +sVkpe +p9493 +Vkpelle +p9494 +sVguj +p9495 +Vgud\u017aarati +p9496 +sVmdf +p9497 +Vmoksza +p9498 +sVmas +p9499 +Vmasajski +p9500 +sVlao +p9501 +Vlaota\u0144ski +p9502 +sVmdr +p9503 +Vmandar +p9504 +sVgon +p9505 +Vgondi +p9506 +sVgoh +p9507 +Vstaro-wysoko-niemiecki (ok. 750-1050) +p9508 +sVsms +p9509 +Vlapo\u0144ski skolt +p9510 +sVsmo +p9511 +Vsamoa\u0144ski +p9512 +sVsmn +p9513 +Vlapo\u0144ski inari +p9514 +sVsmj +p9515 +Vlapo\u0144ski lule +p9516 +sVgot +p9517 +Vgocki +p9518 +sVsme +p9519 +Vp\u0142nocnolapo\u0144ski +p9520 +sVdsb +p9521 +Vdolno\u0142u\u017cycki +p9522 +sVsma +p9523 +Vpo\u0142udniowolapo\u0144ski +p9524 +sVgor +p9525 +Vgorontalo +p9526 +sVast +p9527 +Vasturyjski +p9528 +sVorm +p9529 +Voromo +p9530 +sVque +p9531 +Vkeczua +p9532 +sVori +p9533 +Vorija +p9534 +sVcrh +p9535 +Vkrymskotatarski +p9536 +sVasm +p9537 +Vasamski +p9538 +sVpus +p9539 +Vpaszto +p9540 +sVdgr +p9541 +Vdogrib +p9542 +sVltz +p9543 +Vluksemburski +p9544 +sVgez +p9545 +Vgyyz +p9546 +sVisl +p9547 +Vislandzki +p9548 +sVlat +p9549 +V\u0142aci\u0144ski +p9550 +sVmak +p9551 +Vmakasar +p9552 +sVzap +p9553 +Vzapotecki +p9554 +sVyid +p9555 +Vjidysz +p9556 +sVkok +p9557 +Vkonkani (makroj\u0119zyk) +p9558 +sVkom +p9559 +Vkomi +p9560 +sVkon +p9561 +Vkongo +p9562 +sVukr +p9563 +Vukrai\u0144ski +p9564 +sVton +p9565 +Vtonga\u0144ski (Wyspy Tonga) +p9566 +sVzxx +p9567 +Vbrak kontekstu j\u0119zykowego +p9568 +sVkos +p9569 +Vkosrae +p9570 +sVkor +p9571 +Vkorea\u0144ski +p9572 +sVtog +p9573 +Vtonga\u0144ski (Nyasa) +p9574 +sVhun +p9575 +Vw\u0119gierski +p9576 +sVhup +p9577 +Vhupa +p9578 +sVcym +p9579 +Vwalijski +p9580 +sVudm +p9581 +Vudmurcki +p9582 +sVbej +p9583 +Vbed\u017ca +p9584 +sVben +p9585 +Vbengalski +p9586 +sVbel +p9587 +Vbia\u0142oruski +p9588 +sVbem +p9589 +Vbemba (Zambia) +p9590 +sVaar +p9591 +Vafarski +p9592 +sVnzi +p9593 +Vnzema +p9594 +sVsah +p9595 +Vjakucki +p9596 +sVsan +p9597 +Vsanskryt +p9598 +sVsam +p9599 +Vsamaryta\u0144ski aramejski +p9600 +sVpro +p9601 +Vprowansalski \u015bredniowieczny (do 1500) +p9602 +sVsag +p9603 +Vsango +p9604 +sVsad +p9605 +Vsandawe +p9606 +sVanp +p9607 +Vangika +p9608 +sVrap +p9609 +Vrapanui +p9610 +sVsas +p9611 +Vsasak +p9612 +sVnqo +p9613 +Vn\u2019ko +p9614 +sVsat +p9615 +Vsantali +p9616 +sVmin +p9617 +Vminangkabau +p9618 +sVlim +p9619 +Vlimburgijski +p9620 +sVlin +p9621 +Vlingala +p9622 +sVlit +p9623 +Vlitewski +p9624 +sVefi +p9625 +Vefik +p9626 +sVmis +p9627 +Vj\u0119zyki niezakodowane +p9628 +sVkac +p9629 +Vkaczin +p9630 +sVkab +p9631 +Vkabylski +p9632 +sVkaa +p9633 +Vkaraka\u0142packi +p9634 +sVkan +p9635 +Vkannada +p9636 +sVkam +p9637 +Vkamba (Kenia) +p9638 +sVkal +p9639 +Vkalaallisut +p9640 +sVkas +p9641 +Vkaszmirski +p9642 +sVkaw +p9643 +Vkawi +p9644 +sVkau +p9645 +Vkanuri +p9646 +sVkat +p9647 +Vgruzi\u0144ski +p9648 +sVkaz +p9649 +Vkazaski +p9650 +sVtyv +p9651 +Vtuwi\u0144ski +p9652 +sVawa +p9653 +Vawadhi +p9654 +sVurd +p9655 +Vurdu +p9656 +sVdoi +p9657 +Vdogri (makroj\u0119zyk) +p9658 +sVtpi +p9659 +Vtok pisin +p9660 +sVmri +p9661 +Vmaoryski +p9662 +sVabk +p9663 +Vabchaski +p9664 +sVtkl +p9665 +Vtokelau +p9666 +sVnld +p9667 +Vholenderski +p9668 +sVoji +p9669 +Vod\u017cibwe +p9670 +sVoci +p9671 +Vokcyta\u0144ski (po 1500) +p9672 +sVwol +p9673 +Vwolof +p9674 +sVjav +p9675 +Vjawajski +p9676 +sVhrv +p9677 +Vchorwacki +p9678 +sVzza +p9679 +Vzazaki +p9680 +sVmga +p9681 +Virlandzki \u015bredniowieczny (900-1200) +p9682 +sVhit +p9683 +Vhetycki +p9684 +sVdyu +p9685 +Vdiula +p9686 +sVssw +p9687 +Vsuazi +p9688 +sVmul +p9689 +Vwiele j\u0119zykw +p9690 +sVhil +p9691 +Vhiligajnon +p9692 +sVhin +p9693 +Vhindi +p9694 +sVbas +p9695 +Vbasa (Kamerun) +p9696 +sVgba +p9697 +Vgbaya (Republika \u015arodkowoafryka\u0144ska) +p9698 +sVwln +p9699 +Vwalo\u0144ski +p9700 +sVnep +p9701 +Vnepalski +p9702 +sVcre +p9703 +Vkri +p9704 +sVban +p9705 +Vbalijski +p9706 +sVbal +p9707 +Vbaluczi +p9708 +sVbam +p9709 +Vbambara +p9710 +sVbak +p9711 +Vbaszkirski +p9712 +sVshn +p9713 +Vszan +p9714 +sVarp +p9715 +Varapaho +p9716 +sVarw +p9717 +Varawak +p9718 +sVara +p9719 +Varabski +p9720 +sVarc +p9721 +Varamejski oficjalny (700-300 p.n.e.) +p9722 +sVarg +p9723 +Varago\u0144ski +p9724 +sVsel +p9725 +Vselkupski +p9726 +sVarn +p9727 +Varauka\u0144ski +p9728 +sVlus +p9729 +Vlushai +p9730 +sVmus +p9731 +Vkrik +p9732 +sVlua +p9733 +Vluba-lulua +p9734 +sVlub +p9735 +Vluba-katanga +p9736 +sVlug +p9737 +Vluganda +p9738 +sVlui +p9739 +Vluiseno +p9740 +sVlun +p9741 +Vlunda +p9742 +sVluo +p9743 +Vluo (Kenia i Tanzania) +p9744 +sViku +p9745 +Vinuktitut +p9746 +sVtur +p9747 +Vturecki +p9748 +sVzbl +p9749 +Vbliss +p9750 +sVtuk +p9751 +Vturkme\u0144ski +p9752 +sVtum +p9753 +Vtumbuka +p9754 +sVcop +p9755 +Vkoptyjski +p9756 +sVcos +p9757 +Vkorsyka\u0144ski +p9758 +sVcor +p9759 +Vkornijski +p9760 +sVilo +p9761 +Vilokano +p9762 +sVgwi +p9763 +Vgwich\u02bcin +p9764 +sVund +p9765 +Vnieokre\u015blony +p9766 +sVtli +p9767 +Vtlingit +p9768 +sVtlh +p9769 +Vklingo\u0144ski +p9770 +sVpor +p9771 +Vportugalski +p9772 +sVpon +p9773 +Vpohnpei +p9774 +sVpol +p9775 +VPolski +p9776 +sVang +p9777 +VStaroangielski (ok. 450-1100) +p9778 +sVtgk +p9779 +Vtad\u017cycki +p9780 +sVtgl +p9781 +Vtagalski +p9782 +sVfra +p9783 +Vfrancuski +p9784 +sVdum +p9785 +Vholenderski \u015bredniowieczny (ok. 1050-1350) +p9786 +sVswa +p9787 +Vsuahili (makroj\u0119zyk) +p9788 +sVdua +p9789 +Vduala +p9790 +sVfro +p9791 +Vstarofrancuski (842-ok. 1400) +p9792 +sVyap +p9793 +Vjapski +p9794 +sVfrm +p9795 +Vfrancuski \u015bredniowieczny (ok. 1400-1600) +p9796 +sVfrs +p9797 +Vwschodniofryzyjski +p9798 +sVfrr +p9799 +Vp\u0142nocnofryzyjski +p9800 +sVyao +p9801 +Vyao +p9802 +sVxal +p9803 +Vka\u0142mucki +p9804 +sVfry +p9805 +Vzachodniofryzyjski +p9806 +sVgay +p9807 +Vgayo +p9808 +sVota +p9809 +Vturecki otoma\u0144ski (1500-1928) +p9810 +sVhmn +p9811 +Vhmong +p9812 +sVhmo +p9813 +Vhiri motu +p9814 +sVgaa +p9815 +Vga +p9816 +sVfur +p9817 +Vfriulski +p9818 +sVmlg +p9819 +Vmalgaski +p9820 +sVslv +p9821 +Vs\u0142owe\u0144ski +p9822 +sVain +p9823 +Vajnoski (Japonia) +p9824 +sVfil +p9825 +Vpilipino +p9826 +sVmlt +p9827 +Vmalta\u0144ski +p9828 +sVslk +p9829 +Vs\u0142owacki +p9830 +sVrar +p9831 +Vmaoryski Wysp Cooka +p9832 +sVful +p9833 +Vfulani +p9834 +sVjpn +p9835 +Vjapo\u0144ski +p9836 +sVvol +p9837 +Vwolapik +p9838 +sVvot +p9839 +Vwotycki +p9840 +sVind +p9841 +Vindonezyjski +p9842 +sVave +p9843 +Vawestyjski +p9844 +sVjpr +p9845 +Vjudeo-perski +p9846 +sVava +p9847 +Vawarski +p9848 +sVpap +p9849 +Vpapiamento +p9850 +sVewo +p9851 +Vewondo +p9852 +sVpau +p9853 +Vpalau +p9854 +sVewe +p9855 +Vewe +p9856 +sVpag +p9857 +Vpangasino +p9858 +sVpal +p9859 +Vpahlawi +p9860 +sVpam +p9861 +Vpampango +p9862 +sVpan +p9863 +Vpend\u017cabski +p9864 +sVsyc +p9865 +Vsyryjski klasyczny +p9866 +sVphn +p9867 +Vfenicki +p9868 +sVkir +p9869 +Vkirgiski +p9870 +sVnia +p9871 +Vnias +p9872 +sVkik +p9873 +Vkikiju +p9874 +sVsyr +p9875 +Vsyryjski +p9876 +sVkin +p9877 +Vruanda +p9878 +sVniu +p9879 +Vniue +p9880 +sVgsw +p9881 +Vniemiecki szwajcarski +p9882 +sVepo +p9883 +Vesperanto +p9884 +sVjbo +p9885 +Vlojban +p9886 +sVmic +p9887 +Vmicmac +p9888 +sVtha +p9889 +Vtajski +p9890 +sVhai +p9891 +Vhaida +p9892 +sVgmh +p9893 +V\u015brednio-wysoko-niemiecki (ok. 1050-1500) +p9894 +sVell +p9895 +Vgrecki wsp\u0142czesny (1453-) +p9896 +sVady +p9897 +Vadygejski +p9898 +sVelx +p9899 +Velamicki +p9900 +sVada +p9901 +Vadangme +p9902 +sVnav +p9903 +Vnavaho +p9904 +sVhat +p9905 +Vkreolski haita\u0144ski +p9906 +sVhau +p9907 +Vhausa +p9908 +sVhaw +p9909 +Vhawajski +p9910 +sVbin +p9911 +Vedo +p9912 +sVamh +p9913 +Vamharski +p9914 +sVbik +p9915 +Vbikol +p9916 +sVmos +p9917 +Vmossi +p9918 +sVmoh +p9919 +Vmohawk +p9920 +sVmon +p9921 +Vmongolski +p9922 +sVbho +p9923 +Vbhod\u017apuri +p9924 +sVbis +p9925 +Vbislama +p9926 +sVtvl +p9927 +Vtuvalu +p9928 +sVest +p9929 +Vesto\u0144ski +p9930 +sVkmb +p9931 +Vkimbundu +p9932 +sVpeo +p9933 +Vstaroperski (ok. 600-400 p.n.e) +p9934 +sVumb +p9935 +Vumbundu +p9936 +sVtmh +p9937 +Vtuareski +p9938 +sVfon +p9939 +Vfon +p9940 +sVhsb +p9941 +Vgrno\u0142u\u017cycki +p9942 +sVrun +p9943 +Vrundi +p9944 +sVrus +p9945 +Vrosyjski +p9946 +sVrup +p9947 +Varumu\u0144ski +p9948 +sVpli +p9949 +Vpali +p9950 +sVace +p9951 +Vaczineski +p9952 +sVach +p9953 +Vaczoli +p9954 +sVnde +p9955 +Vndebele p\u0142nocny +p9956 +sVdzo +p9957 +Vdzongka +p9958 +sVkru +p9959 +Vkurukh +p9960 +sVsrr +p9961 +Vserer +p9962 +sVido +p9963 +Vido +p9964 +sVsrp +p9965 +Vserbski +p9966 +sVkrl +p9967 +Vkarelski +p9968 +sVkrc +p9969 +Vkaraczajsko-ba\u0142karski +p9970 +sVnds +p9971 +VGerman; Low +p9972 +sVzun +p9973 +Vzuni +p9974 +sVzul +p9975 +Vzuluski +p9976 +sVtwi +p9977 +Vtwi +p9978 +sVsog +p9979 +Vsogdia\u0144ski +p9980 +sVnso +p9981 +Vsotho p\u0142nocny +p9982 +sVswe +p9983 +Vszwedzki +p9984 +sVsom +p9985 +Vsomalijski +p9986 +sVsot +p9987 +Vsotho po\u0142udniowy +p9988 +sVmkd +p9989 +Vmacedo\u0144ski +p9990 +sVher +p9991 +Vherero +p9992 +sVlol +p9993 +Vmongo +p9994 +sVheb +p9995 +Vhebrajski +p9996 +sVloz +p9997 +Vlozi +p9998 +sVgil +p9999 +Vgilberta\u0144ski +p10000 +sVwas +p10001 +Vwasho +p10002 +sVwar +p10003 +Vwarajski (Filipiny) +p10004 +sVbul +p10005 +Vbu\u0142garski +p10006 +sVwal +p10007 +Vwalamo +p10008 +sVbua +p10009 +Vburiacki +p10010 +sVbug +p10011 +Vbugijski +p10012 +sVaze +p10013 +Vazerski +p10014 +sVzha +p10015 +Vzhuang +p10016 +sVzho +p10017 +Vchi\u0144ski +p10018 +sVnno +p10019 +Vnorweski Nynorsk +p10020 +sVuig +p10021 +Vujgurski +p10022 +sVmyv +p10023 +Verzja +p10024 +sVinh +p10025 +Vinguski +p10026 +sVkhm +p10027 +V\u015brodkowokhmerski +p10028 +sVkho +p10029 +Vchota\u0144ski +p10030 +sVmya +p10031 +Vbirma\u0144ski +p10032 +sVkha +p10033 +Vkhasi +p10034 +sVina +p10035 +Vinterlingua (Mi\u0119dzynarodowe Stowarzyszenie J\u0119zyka Pomocniczego) +p10036 +sVtiv +p10037 +Vtiw +p10038 +sVtir +p10039 +Vtigrinia +p10040 +sVnap +p10041 +Vneapolita\u0144ski +p10042 +sVgrb +p10043 +Vgrebo +p10044 +sVgrc +p10045 +Vgrecki staro\u017cytny (do 1453) +p10046 +sVnau +p10047 +Vnaurua\u0144ski +p10048 +sVgrn +p10049 +Vguarani +p10050 +sVtig +p10051 +Vtigre +p10052 +sVyor +p10053 +Vjoruba +p10054 +sVile +p10055 +Vinterlingue +p10056 +sVsqi +p10057 +Valba\u0144ski +p10058 ss. \ No newline at end of file diff --git a/cps/translations/sv/LC_MESSAGES/messages.mo b/cps/translations/sv/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000000000000000000000000000000000..ea104dd6428fcad8ece5c67b531ca84c698a35e7 GIT binary patch literal 46498 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 literal 0 HcmV?d00001 diff --git a/cps/translations/sv/LC_MESSAGES/messages.po b/cps/translations/sv/LC_MESSAGES/messages.po new file mode 100644 index 00000000..14f961cd --- /dev/null +++ b/cps/translations/sv/LC_MESSAGES/messages.po @@ -0,0 +1,1948 @@ +# German translations for Calibre-Web. +# Copyright (C) 2016 Ozzie Isaacs +# This file is distributed under the same license as the Calibre-Web +# project. +# FIRST AUTHOR OzzieIsaacs, 2016. +msgid "" +msgstr "" +"Project-Id-Version: Calibre-Web\n" +"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" +"POT-Creation-Date: 2018-11-17 16:38+0100\n" +"PO-Revision-Date: 2018-11-05 11:59+0100\n" +"Last-Translator: Jonatan Nyberg \n" +"Language: sv\n" +"Language-Team: \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.6.0\n" + +#: cps/book_formats.py:129 cps/book_formats.py:130 cps/book_formats.py:134 +#: cps/book_formats.py:138 cps/converter.py:11 cps/converter.py:27 +msgid "not installed" +msgstr "inte installerad" + +#: cps/converter.py:22 cps/converter.py:38 +msgid "Excecution permissions missing" +msgstr "Utförande behörighet saknas" + +#: cps/converter.py:48 +msgid "not configured" +msgstr "" + +#: cps/helper.py:58 +#, python-format +msgid "%(format)s format not found for book id: %(book)d" +msgstr "%(format)s formatet hittades inte för bok-id: %(book)d" + +#: cps/helper.py:70 +#, python-format +msgid "%(format)s not found on Google Drive: %(fn)s" +msgstr "%(format)s hittades inte på Google Drive: %(fn)s" + +#: cps/helper.py:77 cps/helper.py:147 cps/templates/detail.html:44 +msgid "Send to Kindle" +msgstr "Skicka till Kindle" + +#: cps/helper.py:78 cps/helper.py:96 cps/helper.py:149 +msgid "This e-mail has been sent via Calibre-Web." +msgstr "Detta e-postmeddelande har skickats via Calibre-Web." + +#: cps/helper.py:89 +#, python-format +msgid "%(format)s not found: %(fn)s" +msgstr "%(format)s hittades inte: %(fn)s" + +#: cps/helper.py:94 +msgid "Calibre-Web test e-mail" +msgstr "Calibre-Web test e-post" + +#: cps/helper.py:95 +msgid "Test e-mail" +msgstr "Test e-post" + +#: cps/helper.py:111 +msgid "Get Started with Calibre-Web" +msgstr "Kom igång med Calibre-Web" + +#: cps/helper.py:112 +#, python-format +msgid "Registration e-mail for user: %(name)s" +msgstr "Registrera e-post för användare: %(name)s" + +#: cps/helper.py:135 cps/helper.py:145 +msgid "Could not find any formats suitable for sending by e-mail" +msgstr "Det gick inte att hitta några format som är lämpliga för att skicka via e-post" + +#: cps/helper.py:148 +#, python-format +msgid "E-mail: %(book)s" +msgstr "E-post: %(book)s" + +#: cps/helper.py:151 +msgid "The requested file could not be read. Maybe wrong permissions?" +msgstr "Den begärda filen kunde inte läsas. Kanske fel behörigheter?" + +#: cps/helper.py:251 +#, python-format +msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" +msgstr "Byt namn på titel från: \"%(src)s\" till \"%(dest)s\" misslyckades med fel: %(error)s" + +#: cps/helper.py:260 +#, python-format +msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" +msgstr "Byt namn på författare från: \"%(src)s\" till \"%(dest)s\" misslyckades med fel: %(error)s" + +#: cps/helper.py:282 cps/helper.py:291 +#, python-format +msgid "File %(file)s not found on Google Drive" +msgstr "Filen %(file)s hittades inte på Google Drive" + +#: cps/helper.py:309 +#, python-format +msgid "Book path %(path)s not found on Google Drive" +msgstr "Boksökvägen %(path)s hittades inte på Google Drive" + +#: cps/helper.py:570 +msgid "Error excecuting UnRar" +msgstr "Fel vid körning av UnRar" + +#: cps/helper.py:572 +msgid "Unrar binary file not found" +msgstr "Unrar binärfil hittades inte" + +#: cps/helper.py:614 +msgid "Waiting" +msgstr "Väntar" + +#: cps/helper.py:616 +msgid "Failed" +msgstr "Misslyckades" + +#: cps/helper.py:618 +msgid "Started" +msgstr "Startad" + +#: cps/helper.py:620 +msgid "Finished" +msgstr "Klar" + +#: cps/helper.py:622 +msgid "Unknown Status" +msgstr "" + +#: cps/helper.py:627 +msgid "E-mail: " +msgstr "" + +#: cps/helper.py:629 cps/helper.py:633 +msgid "Convert: " +msgstr "" + +#: cps/helper.py:631 +msgid "Upload: " +msgstr "" + +#: cps/helper.py:635 +msgid "Unknown Task: " +msgstr "" + +#: cps/web.py:1155 cps/web.py:2858 +msgid "Unknown" +msgstr "Okänd" + +#: cps/web.py:1164 cps/web.py:1195 cps/web.py:1280 +msgid "HTTP Error" +msgstr "HTTP-fel" + +#: cps/web.py:1166 cps/web.py:1197 cps/web.py:1281 +msgid "Connection error" +msgstr "Anslutningsfel" + +#: cps/web.py:1168 cps/web.py:1199 cps/web.py:1282 +msgid "Timeout while establishing connection" +msgstr "Tiden ute när du etablerade anslutning" + +#: cps/web.py:1170 cps/web.py:1201 cps/web.py:1283 +msgid "General error" +msgstr "Allmänt fel" + +#: cps/web.py:1176 +msgid "Unexpected data while reading update information" +msgstr "Oväntade data vid läsning av uppdateringsinformation" + +#: cps/web.py:1183 +msgid "No update available. You already have the latest version installed" +msgstr "Ingen uppdatering tillgänglig. Du har redan den senaste versionen installerad" + +#: cps/web.py:1208 +msgid "A new update is available. Click on the button below to update to the latest version." +msgstr "En ny uppdatering är tillgänglig. Klicka på knappen nedan för att uppdatera till den senaste versionen." + +#: cps/web.py:1258 +msgid "Could not fetch update information" +msgstr "Kunde inte hämta uppdateringsinformation" + +#: cps/web.py:1273 +msgid "Requesting update package" +msgstr "Begär uppdateringspaketet" + +#: cps/web.py:1274 +msgid "Downloading update package" +msgstr "Hämtar uppdateringspaketet" + +#: cps/web.py:1275 +msgid "Unzipping update package" +msgstr "Packar upp uppdateringspaketet" + +#: cps/web.py:1276 +msgid "Replacing files" +msgstr "" + +#: cps/web.py:1277 +msgid "Database connections are closed" +msgstr "Databasanslutningarna är stängda" + +#: cps/web.py:1278 +msgid "Stopping server" +msgstr "" + +#: cps/web.py:1279 +msgid "Update finished, please press okay and reload page" +msgstr "Uppdatering klar, tryck på okej och uppdatera sidan" + +#: cps/web.py:1280 cps/web.py:1281 cps/web.py:1282 cps/web.py:1283 +msgid "Update failed:" +msgstr "" + +#: cps/web.py:1306 +msgid "Recently Added Books" +msgstr "Nyligen tillagda böcker" + +#: cps/web.py:1316 +msgid "Newest Books" +msgstr "Nyaste böcker" + +#: cps/web.py:1328 +msgid "Oldest Books" +msgstr "Äldsta böcker" + +#: cps/web.py:1340 +msgid "Books (A-Z)" +msgstr "Böcker (A-Ö)" + +#: cps/web.py:1351 +msgid "Books (Z-A)" +msgstr "Böcker (Ö-A)" + +#: cps/web.py:1380 +msgid "Hot Books (most downloaded)" +msgstr "Heta böcker (mest hämtade)" + +#: cps/web.py:1393 +msgid "Best rated books" +msgstr "Bäst rankade böcker" + +#: cps/templates/index.xml:39 cps/web.py:1406 +msgid "Random Books" +msgstr "Slumpmässiga böcker" + +#: cps/web.py:1421 +msgid "Author list" +msgstr "Författarlista" + +#: cps/web.py:1433 cps/web.py:1524 cps/web.py:1686 cps/web.py:2229 +msgid "Error opening eBook. File does not exist or file is not accessible:" +msgstr "Fel vid öppnande av e-bok. Filen finns inte eller filen är inte tillgänglig:" + +#: cps/web.py:1461 +msgid "Publisher list" +msgstr "" + +#: cps/web.py:1475 +#, python-format +msgid "Publisher: %(name)s" +msgstr "" + +#: cps/templates/index.xml:83 cps/web.py:1507 +msgid "Series list" +msgstr "Serielista" + +#: cps/web.py:1522 +#, python-format +msgid "Series: %(serie)s" +msgstr "Serier: %(serie)s" + +#: cps/web.py:1551 +msgid "Available languages" +msgstr "Tillgängliga språk" + +#: cps/web.py:1571 +#, python-format +msgid "Language: %(name)s" +msgstr "Språk: %(name)s" + +#: cps/templates/index.xml:76 cps/web.py:1582 +msgid "Category list" +msgstr "Kategorilista" + +#: cps/web.py:1596 +#, python-format +msgid "Category: %(name)s" +msgstr "Kategori: %(name)s" + +#: cps/templates/layout.html:71 cps/web.py:1722 +msgid "Tasks" +msgstr "Uppgifter" + +#: cps/web.py:1756 +msgid "Statistics" +msgstr "Statistik" + +#: cps/web.py:1863 +msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" +msgstr "Återuppringningsdomänen är inte verifierad, följ stegen för att verifiera domänen i Google utvecklarkonsol" + +#: cps/web.py:1938 +msgid "Server restarted, please reload page" +msgstr "Server startas om, vänligen uppdatera sidan" + +#: cps/web.py:1941 +msgid "Performing shutdown of server, please close window" +msgstr "Stänger servern, vänligen stäng fönstret" + +#: cps/web.py:1960 +msgid "Update done" +msgstr "Uppdatering klar" + +#: cps/web.py:2030 +msgid "Published after " +msgstr "Publicerad efter " + +#: cps/web.py:2037 +msgid "Published before " +msgstr "Publicerad före " + +#: cps/web.py:2051 +#, python-format +msgid "Rating <= %(rating)s" +msgstr "Betyg <= %(rating)s" + +#: cps/web.py:2053 +#, python-format +msgid "Rating >= %(rating)s" +msgstr "Betyg >= %(rating)s" + +#: cps/web.py:2112 cps/web.py:2121 +msgid "search" +msgstr "sök" + +#: cps/templates/index.xml:47 cps/templates/index.xml:51 +#: cps/templates/layout.html:146 cps/web.py:2188 +msgid "Read Books" +msgstr "Lästa böcker" + +#: cps/templates/index.xml:55 cps/templates/index.xml:59 +#: cps/templates/layout.html:148 cps/web.py:2191 +msgid "Unread Books" +msgstr "Olästa böcker" + +#: cps/web.py:2239 cps/web.py:2241 cps/web.py:2243 cps/web.py:2255 +msgid "Read a Book" +msgstr "Läs en bok" + +#: cps/web.py:2314 cps/web.py:3217 +msgid "Please fill out all fields!" +msgstr "Fyll i alla fält!" + +#: cps/web.py:2315 cps/web.py:2336 cps/web.py:2340 cps/web.py:2345 +#: cps/web.py:2347 +msgid "register" +msgstr "registrera" + +#: cps/web.py:2335 cps/web.py:3433 +msgid "An unknown error occurred. Please try again later." +msgstr "Ett okänt fel uppstod. Försök igen senare." + +#: cps/web.py:2338 +msgid "Your e-mail is not allowed to register" +msgstr "Din e-post är inte tillåten att registrera" + +#: cps/web.py:2341 +msgid "Confirmation e-mail was send to your e-mail account." +msgstr "Bekräftelsemail skickades till ditt e-postkonto." + +#: cps/web.py:2344 +msgid "This username or e-mail address is already in use." +msgstr "Det här användarnamnet eller e-postadressen är redan i bruk." + +#: cps/web.py:2361 cps/web.py:2457 +#, python-format +msgid "you are now logged in as: '%(nickname)s'" +msgstr "du är nu inloggad som: \"%(nickname)s\"" + +#: cps/web.py:2366 +msgid "Wrong Username or Password" +msgstr "Fel användarnamn eller lösenord" + +#: cps/web.py:2372 cps/web.py:2393 +msgid "login" +msgstr "logga in" + +#: cps/web.py:2405 cps/web.py:2436 +msgid "Token not found" +msgstr "Token hittades inte" + +#: cps/web.py:2413 cps/web.py:2444 +msgid "Token has expired" +msgstr "Token har löpt ut" + +#: cps/web.py:2421 +msgid "Success! Please return to your device" +msgstr "Lyckades! Vänligen återvänd till din enhet" + +#: cps/web.py:2471 +msgid "Please configure the SMTP mail settings first..." +msgstr "Konfigurera SMTP-postinställningarna först..." + +#: cps/web.py:2475 +#, python-format +msgid "Book successfully queued for sending to %(kindlemail)s" +msgstr "Boken är i kö för att skicka till %(kindlemail)s" + +#: cps/web.py:2479 +#, python-format +msgid "There was an error sending this book: %(res)s" +msgstr "Det gick inte att skicka den här boken: %(res)s" + +#: cps/web.py:2481 cps/web.py:3271 +msgid "Please configure your kindle e-mail address first..." +msgstr "Konfigurera din kindle-e-postadress först..." + +#: cps/web.py:2492 cps/web.py:2544 +msgid "Invalid shelf specified" +msgstr "Ogiltig hylla specificerad" + +#: cps/web.py:2499 +#, python-format +msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" +msgstr "" + +#: cps/web.py:2507 +msgid "You are not allowed to edit public shelves" +msgstr "" + +#: cps/web.py:2516 +#, python-format +msgid "Book is already part of the shelf: %(shelfname)s" +msgstr "" + +#: cps/web.py:2530 +#, python-format +msgid "Book has been added to shelf: %(sname)s" +msgstr "Boken har lagts till i hyllan: %(sname)s" + +#: cps/web.py:2549 +#, python-format +msgid "You are not allowed to add a book to the the shelf: %(name)s" +msgstr "Du får inte lägga till en bok i hyllan: %(name)s" + +#: cps/web.py:2554 +msgid "User is not allowed to edit public shelves" +msgstr "Användaren får inte redigera publika hyllor" + +#: cps/web.py:2572 +#, python-format +msgid "Books are already part of the shelf: %(name)s" +msgstr "Böcker är redan en del av hyllan: %(name)s" + +#: cps/web.py:2586 +#, python-format +msgid "Books have been added to shelf: %(sname)s" +msgstr "Böcker har lagts till hyllan: %(sname)s" + +#: cps/web.py:2588 +#, python-format +msgid "Could not add books to shelf: %(sname)s" +msgstr "Kunde inte lägga till böcker till hyllan: %(sname)s" + +#: cps/web.py:2625 +#, python-format +msgid "Book has been removed from shelf: %(sname)s" +msgstr "Boken har tagits bort från hyllan: %(sname)s" + +#: cps/web.py:2631 +#, python-format +msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" +msgstr "Tyvärr har du inte rätt att ta bort en bok från den här hyllan: %(sname)s" + +#: cps/web.py:2651 cps/web.py:2675 +#, python-format +msgid "A shelf with the name '%(title)s' already exists." +msgstr "En hylla med namnet '%(title)s' finns redan." + +#: cps/web.py:2656 +#, python-format +msgid "Shelf %(title)s created" +msgstr "Hyllan %(title)s skapad" + +#: cps/web.py:2658 cps/web.py:2686 +msgid "There was an error" +msgstr "Det fanns ett fel" + +#: cps/web.py:2659 cps/web.py:2661 +msgid "create a shelf" +msgstr "skapa en hylla" + +#: cps/web.py:2684 +#, python-format +msgid "Shelf %(title)s changed" +msgstr "Hyllan %(title)s ändrad" + +#: cps/web.py:2687 cps/web.py:2689 +msgid "Edit a shelf" +msgstr "Redigera en hylla" + +#: cps/web.py:2710 +#, python-format +msgid "successfully deleted shelf %(name)s" +msgstr "tog bort hyllan %(name)s" + +#: cps/web.py:2737 +#, python-format +msgid "Shelf: '%(name)s'" +msgstr "Hylla: '%(name)s'" + +#: cps/web.py:2740 +msgid "Error opening shelf. Shelf does not exist or is not accessible" +msgstr "Fel vid öppning av hyllan. Hylla finns inte eller är inte tillgänglig" + +#: cps/web.py:2771 +#, python-format +msgid "Change order of Shelf: '%(name)s'" +msgstr "Ändra ordning på hyllan: '%(name)s'" + +#: cps/web.py:2800 cps/web.py:3223 +msgid "E-mail is not from valid domain" +msgstr "E-posten är inte från giltig domän" + +#: cps/web.py:2802 cps/web.py:2845 cps/web.py:2848 +#, python-format +msgid "%(name)s's profile" +msgstr "%(name)ss profil" + +#: cps/web.py:2843 +msgid "Found an existing account for this e-mail address." +msgstr "Hittade ett befintligt konto för den här e-postadressen." + +#: cps/web.py:2846 +msgid "Profile updated" +msgstr "Profilen uppdaterad" + +#: cps/web.py:2874 +msgid "Admin page" +msgstr "Administrationssida" + +#: cps/web.py:2954 cps/web.py:3128 +msgid "Calibre-Web configuration updated" +msgstr "Calibre-Web konfiguration uppdaterad" + +#: cps/templates/admin.html:100 cps/web.py:2967 +msgid "UI Configuration" +msgstr "Användargränssnitt konfiguration" + +#: cps/web.py:2985 +msgid "Import of optional Google Drive requirements missing" +msgstr "Import av valfri Google Drive krav saknas" + +#: cps/web.py:2988 +msgid "client_secrets.json is missing or not readable" +msgstr "client_secrets.json saknas eller inte kan läsas" + +#: cps/web.py:2993 cps/web.py:3020 +msgid "client_secrets.json is not configured for web application" +msgstr "client_secrets.json är inte konfigurerad för webbapplikation" + +#: cps/templates/admin.html:99 cps/web.py:3023 cps/web.py:3049 cps/web.py:3061 +#: cps/web.py:3104 cps/web.py:3119 cps/web.py:3136 cps/web.py:3143 +#: cps/web.py:3158 +msgid "Basic Configuration" +msgstr "Grundläggande konfiguration" + +#: cps/web.py:3046 +msgid "Keyfile location is not valid, please enter correct path" +msgstr "Platsen för Keyfile är inte giltig, ange rätt sökväg" + +#: cps/web.py:3058 +msgid "Certfile location is not valid, please enter correct path" +msgstr "Platsen för Certfile är inte giltig, ange rätt sökväg" + +#: cps/web.py:3101 +msgid "Logfile location is not valid, please enter correct path" +msgstr "Platsen för Logfile platsen är inte giltig, ange rätt sökväg" + +#: cps/web.py:3140 +msgid "DB location is not valid, please enter correct path" +msgstr "Platsen för DB är inte giltig, ange rätt sökväg" + +#: cps/templates/admin.html:33 cps/web.py:3219 cps/web.py:3225 cps/web.py:3241 +msgid "Add new user" +msgstr "Lägg till ny användare" + +#: cps/web.py:3231 +#, python-format +msgid "User '%(user)s' created" +msgstr "Användaren '%(user)s' skapad" + +#: cps/web.py:3235 +msgid "Found an existing account for this e-mail address or nickname." +msgstr "Hittade ett befintligt konto för den här e-postadressen eller smeknamnet." + +#: cps/web.py:3259 cps/web.py:3273 +msgid "E-mail server settings updated" +msgstr "E-postserverinställningar uppdaterade" + +#: cps/web.py:3266 +#, python-format +msgid "Test e-mail successfully send to %(kindlemail)s" +msgstr "Test-e-post skicka till %(kindlemail)s" + +#: cps/web.py:3269 +#, python-format +msgid "There was an error sending the Test e-mail: %(res)s" +msgstr "Det gick inte att skicka Testmeddelandet: %(res)s" + +#: cps/web.py:3274 +msgid "Edit e-mail server settings" +msgstr "Redigera inställningar för e-postserver" + +#: cps/web.py:3299 +#, python-format +msgid "User '%(nick)s' deleted" +msgstr "Användaren '%(nick)s' borttagen" + +#: cps/web.py:3408 +#, python-format +msgid "User '%(nick)s' updated" +msgstr "Användaren '%(nick)s' uppdaterad" + +#: cps/web.py:3411 +msgid "An unknown error occured." +msgstr "Ett okänt fel uppstod." + +#: cps/web.py:3413 +#, python-format +msgid "Edit User %(nick)s" +msgstr "Redigera användaren %(nick)s" + +#: cps/web.py:3430 +#, python-format +msgid "Password for user %(user)s reset" +msgstr "Lösenord för användaren %(user)s återställd" + +#: cps/web.py:3444 cps/web.py:3645 +msgid "Error opening eBook. File does not exist or file is not accessible" +msgstr "Det gick inte att öppna e-boken. Filen finns inte eller filen är inte tillgänglig" + +#: cps/web.py:3469 cps/web.py:3928 +msgid "edit metadata" +msgstr "redigera metadata" + +#: cps/web.py:3562 cps/web.py:3798 +#, python-format +msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" +msgstr "Filändelsen '%(ext)s' får inte laddas upp till den här servern" + +#: cps/web.py:3566 cps/web.py:3802 +msgid "File to be uploaded must have an extension" +msgstr "Filen som ska laddas upp måste ha en ändelse" + +#: cps/web.py:3578 cps/web.py:3822 +#, python-format +msgid "Failed to create path %(path)s (Permission denied)." +msgstr "Det gick inte att skapa sökväg %(path)s (behörighet nekad)." + +#: cps/web.py:3583 +#, python-format +msgid "Failed to store file %(file)s." +msgstr "Det gick inte att lagra filen %(file)s." + +#: cps/web.py:3599 +#, python-format +msgid "File format %(ext)s added to %(book)s" +msgstr "Filformatet %(ext)s lades till %(book)s" + +#: cps/web.py:3617 +#, python-format +msgid "Failed to create path for cover %(path)s (Permission denied)." +msgstr "Det gick inte att skapa sökväg för omslag %(path)s (behörighet nekad)." + +#: cps/web.py:3624 +#, python-format +msgid "Failed to store cover-file %(cover)s." +msgstr "Det gick inte att lagra omslagsfilen %(cover)s." + +#: cps/web.py:3627 +msgid "Cover-file is not a valid image file" +msgstr "Omslagsfilen är inte en giltig bildfil" + +#: cps/web.py:3657 cps/web.py:3666 cps/web.py:3670 +msgid "unknown" +msgstr "okänd" + +#: cps/web.py:3689 +msgid "Cover is not a jpg file, can't save" +msgstr "Omslag är inte en jpg-fil, kan inte spara" + +#: cps/web.py:3737 +#, python-format +msgid "%(langname)s is not a valid language" +msgstr "%(langname)s är inte ett giltigt språk" + +#: cps/web.py:3768 +msgid "Metadata successfully updated" +msgstr "" + +#: cps/web.py:3777 +msgid "Error editing book, please check logfile for details" +msgstr "Det gick inte att redigera boken, kontrollera loggfilen för mer information" + +#: cps/web.py:3827 +#, python-format +msgid "Failed to store file %(file)s (Permission denied)." +msgstr "Det gick inte att lagra filen %(file)s (behörighet nekad)." + +#: cps/web.py:3832 +#, python-format +msgid "Failed to delete file %(file)s (Permission denied)." +msgstr "Det gick inte att ta bort filen %(file)s (behörighet nekad)." + +#: cps/web.py:3914 +#, python-format +msgid "File %(file)s uploaded" +msgstr "Filen %(file)s uppladdad" + +#: cps/web.py:3944 +msgid "Source or destination format for conversion missing" +msgstr "Källa eller målformat för konvertering saknas" + +#: cps/web.py:3954 +#, python-format +msgid "Book successfully queued for converting to %(book_format)s" +msgstr "Boken är i kö för konvertering till %(book_format)s" + +#: cps/web.py:3958 +#, python-format +msgid "There was an error converting this book: %(res)s" +msgstr "Det gick inte att konvertera den här boken: %(res)s" + +#: cps/worker.py:287 +#, python-format +msgid "Ebook-converter failed: %(error)s" +msgstr "E-bokkonverteraren misslyckades: %(error)s" + +#: cps/worker.py:298 +#, python-format +msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" +msgstr "Kindlegen misslyckades med fel %(error)s. Meddelande: %(message)s" + +#: cps/templates/admin.html:6 +msgid "User list" +msgstr "Användarlista" + +#: cps/templates/admin.html:9 +msgid "Nickname" +msgstr "Smeknamn" + +#: cps/templates/admin.html:10 +msgid "E-mail" +msgstr "E-post" + +#: cps/templates/admin.html:11 +msgid "Kindle" +msgstr "Kindle" + +#: cps/templates/admin.html:12 +msgid "DLS" +msgstr "DLS" + +#: cps/templates/admin.html:13 cps/templates/layout.html:74 +msgid "Admin" +msgstr "Administratör" + +#: cps/templates/admin.html:14 cps/templates/detail.html:22 +#: cps/templates/detail.html:31 +msgid "Download" +msgstr "Hämta" + +#: cps/templates/admin.html:15 cps/templates/layout.html:64 +msgid "Upload" +msgstr "Ladda upp" + +#: cps/templates/admin.html:16 +msgid "Edit" +msgstr "Redigera" + +#: cps/templates/admin.html:39 +msgid "SMTP e-mail server settings" +msgstr "Inställningar för SMTP-e-postserver" + +#: cps/templates/admin.html:42 cps/templates/email_edit.html:11 +msgid "SMTP hostname" +msgstr "SMTP-värdnamn" + +#: cps/templates/admin.html:43 +msgid "SMTP port" +msgstr "SMTP-port" + +#: cps/templates/admin.html:44 +msgid "SSL" +msgstr "SSL" + +#: cps/templates/admin.html:45 cps/templates/email_edit.html:27 +msgid "SMTP login" +msgstr "SMTP-inloggning" + +#: cps/templates/admin.html:46 +msgid "From mail" +msgstr "Från meddelande" + +#: cps/templates/admin.html:56 +msgid "Change SMTP settings" +msgstr "Ändra SMTP-inställningar" + +#: cps/templates/admin.html:62 +msgid "Configuration" +msgstr "Konfiguration" + +#: cps/templates/admin.html:65 +msgid "Calibre DB dir" +msgstr "Calibre DB dir" + +#: cps/templates/admin.html:69 +msgid "Log level" +msgstr "Loggnivå" + +#: cps/templates/admin.html:73 +msgid "Port" +msgstr "Port" + +#: cps/templates/admin.html:79 cps/templates/config_view_edit.html:23 +msgid "Books per page" +msgstr "Böcker per sida" + +#: cps/templates/admin.html:83 +msgid "Uploading" +msgstr "Laddar upp" + +#: cps/templates/admin.html:87 +msgid "Anonymous browsing" +msgstr "Anonym surfning" + +#: cps/templates/admin.html:91 +msgid "Public registration" +msgstr "Publik registrering" + +#: cps/templates/admin.html:95 cps/templates/remote_login.html:4 +msgid "Remote login" +msgstr "Fjärrinloggning" + +#: cps/templates/admin.html:106 +msgid "Administration" +msgstr "Administration" + +#: cps/templates/admin.html:107 +msgid "Reconnect to Calibre DB" +msgstr "Anslut till Calibre DB igen" + +#: cps/templates/admin.html:108 +msgid "Restart Calibre-Web" +msgstr "Starta om Calibre-Web" + +#: cps/templates/admin.html:109 +msgid "Stop Calibre-Web" +msgstr "Stoppa Calibre-Web" + +#: cps/templates/admin.html:115 +msgid "Update" +msgstr "Uppdatera" + +#: cps/templates/admin.html:119 +msgid "Version" +msgstr "Version" + +#: cps/templates/admin.html:120 +msgid "Details" +msgstr "Detaljer" + +#: cps/templates/admin.html:126 +msgid "Current version" +msgstr "Aktuell version" + +#: cps/templates/admin.html:132 +msgid "Check for update" +msgstr "Sök efter uppdatering" + +#: cps/templates/admin.html:133 +msgid "Perform Update" +msgstr "Utför uppdatering" + +#: cps/templates/admin.html:145 +msgid "Do you really want to restart Calibre-Web?" +msgstr "Är du säker på att du vill starta om Calibre-Web?" + +#: cps/templates/admin.html:150 cps/templates/admin.html:164 +#: cps/templates/admin.html:184 cps/templates/shelf.html:63 +msgid "Ok" +msgstr "Ok" + +#: cps/templates/admin.html:151 cps/templates/admin.html:165 +#: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200 +#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:168 +#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75 +#: cps/templates/shelf.html:64 cps/templates/shelf_edit.html:19 +#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:155 +msgid "Back" +msgstr "Tillbaka" + +#: cps/templates/admin.html:163 +msgid "Do you really want to stop Calibre-Web?" +msgstr "Är du säker på att du vill stoppa Calibre-Web?" + +#: cps/templates/admin.html:175 +msgid "Updating, please do not reload page" +msgstr "Uppdaterar, vänligen uppdatera inte sidan" + +#: cps/templates/author.html:15 +msgid "via" +msgstr "via" + +#: cps/templates/author.html:23 +msgid "In Library" +msgstr "I biblioteket" + +#: cps/templates/author.html:71 +msgid "More by" +msgstr "Mer av" + +#: cps/templates/book_edit.html:16 +msgid "Delete Book" +msgstr "Ta bort boken" + +#: cps/templates/book_edit.html:19 +msgid "Delete formats:" +msgstr "Ta bort format:" + +#: cps/templates/book_edit.html:22 cps/templates/book_edit.html:199 +#: cps/templates/email_edit.html:73 cps/templates/email_edit.html:74 +msgid "Delete" +msgstr "Ta bort" + +#: cps/templates/book_edit.html:30 +msgid "Convert book format:" +msgstr "Konvertera bokformat:" + +#: cps/templates/book_edit.html:34 +msgid "Convert from:" +msgstr "Konvertera från:" + +#: cps/templates/book_edit.html:36 cps/templates/book_edit.html:43 +msgid "select an option" +msgstr "välj ett alternativ" + +#: cps/templates/book_edit.html:41 +msgid "Convert to:" +msgstr "Konvertera till:" + +#: cps/templates/book_edit.html:50 +msgid "Convert book" +msgstr "Konvertera boken" + +#: cps/templates/book_edit.html:59 cps/templates/search_form.html:6 +msgid "Book Title" +msgstr "Boktitel" + +#: cps/templates/book_edit.html:63 cps/templates/book_edit.html:259 +#: cps/templates/book_edit.html:277 cps/templates/search_form.html:10 +msgid "Author" +msgstr "Författare" + +#: cps/templates/book_edit.html:67 cps/templates/book_edit.html:264 +#: cps/templates/book_edit.html:279 cps/templates/search_form.html:106 +msgid "Description" +msgstr "Beskrivning" + +#: cps/templates/book_edit.html:71 cps/templates/search_form.html:33 +msgid "Tags" +msgstr "Taggar" + +#: cps/templates/book_edit.html:75 cps/templates/layout.html:157 +#: cps/templates/search_form.html:53 +msgid "Series" +msgstr "Serier" + +#: cps/templates/book_edit.html:79 +msgid "Series id" +msgstr "Serier-id" + +#: cps/templates/book_edit.html:83 +msgid "Rating" +msgstr "Betyg" + +#: cps/templates/book_edit.html:87 +msgid "Cover URL (jpg, cover is downloaded and stored in database, field is afterwards empty again)" +msgstr "Omslagswebbadress (jpg, omslag hämtas och lagras i databasen, fältet är efteråt tomt igen)" + +#: cps/templates/book_edit.html:91 +msgid "Upload Cover from local drive" +msgstr "Ladda upp omslag från lokal enhet" + +#: cps/templates/book_edit.html:96 cps/templates/detail.html:135 +msgid "Publishing date" +msgstr "Publiceringsdatum" + +#: cps/templates/book_edit.html:103 cps/templates/book_edit.html:261 +#: cps/templates/book_edit.html:278 cps/templates/detail.html:127 +#: cps/templates/search_form.html:14 +msgid "Publisher" +msgstr "Förlag" + +#: cps/templates/book_edit.html:107 cps/templates/user_edit.html:31 +msgid "Language" +msgstr "Språk" + +#: cps/templates/book_edit.html:117 cps/templates/search_form.html:117 +msgid "Yes" +msgstr "Ja" + +#: cps/templates/book_edit.html:118 cps/templates/search_form.html:118 +msgid "No" +msgstr "Nej" + +#: cps/templates/book_edit.html:164 +msgid "Upload format" +msgstr "Ladda upp format" + +#: cps/templates/book_edit.html:173 +msgid "view book after edit" +msgstr "visa bok efter redigering" + +#: cps/templates/book_edit.html:176 cps/templates/book_edit.html:212 +msgid "Get metadata" +msgstr "Hämta metadata" + +#: cps/templates/book_edit.html:177 cps/templates/config_edit.html:210 +#: cps/templates/config_view_edit.html:167 cps/templates/login.html:20 +#: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 +#: cps/templates/user_edit.html:153 +msgid "Submit" +msgstr "Skicka" + +#: cps/templates/book_edit.html:191 +msgid "Are you really sure?" +msgstr "Är du verkligen säker?" + +#: cps/templates/book_edit.html:194 +msgid "Book will be deleted from Calibre database" +msgstr "Boken kommer att tas bort från Calibre-databasen" + +#: cps/templates/book_edit.html:195 +msgid "and from hard disk" +msgstr "och från hårddisken" + +#: cps/templates/book_edit.html:215 +msgid "Keyword" +msgstr "Sökord" + +#: cps/templates/book_edit.html:216 +msgid " Search keyword " +msgstr " Sök sökord " + +#: cps/templates/book_edit.html:218 cps/templates/layout.html:46 +msgid "Go!" +msgstr "Kör!" + +#: cps/templates/book_edit.html:222 +msgid "Click the cover to load metadata to the form" +msgstr "Klicka på omslaget för att läsa in metadata till formuläret" + +#: cps/templates/book_edit.html:234 cps/templates/book_edit.html:274 +msgid "Loading..." +msgstr "Läser in..." + +#: cps/templates/book_edit.html:239 cps/templates/layout.html:224 +msgid "Close" +msgstr "Stäng" + +#: cps/templates/book_edit.html:266 cps/templates/book_edit.html:280 +msgid "Source" +msgstr "Källa" + +#: cps/templates/book_edit.html:275 +msgid "Search error!" +msgstr "Sökningsfel!" + +#: cps/templates/book_edit.html:276 +msgid "No Result(s) found! Please try aonther keyword." +msgstr "Inga resultat hittades! Försök med ett annat sökord." + +#: cps/templates/config_edit.html:12 +msgid "Library Configuration" +msgstr "Bibliotekets konfiguration" + +#: cps/templates/config_edit.html:19 +msgid "Location of Calibre database" +msgstr "Plats för Calibre-databasen" + +#: cps/templates/config_edit.html:24 +msgid "Use Google Drive?" +msgstr "Använda Google Drive?" + +#: cps/templates/config_edit.html:30 +msgid "Google Drive config problem" +msgstr "Google Drive-konfigurationsproblem" + +#: cps/templates/config_edit.html:36 +msgid "Authenticate Google Drive" +msgstr "Autentisera Google Drive" + +#: cps/templates/config_edit.html:40 +msgid "Please finish Google Drive setup after login" +msgstr "Vänligen avsluta Google Drive-inställning efter inloggning" + +#: cps/templates/config_edit.html:44 +msgid "Google Drive Calibre folder" +msgstr "Google Drive Calibre-mapp" + +#: cps/templates/config_edit.html:52 +msgid "Metadata Watch Channel ID" +msgstr "Metadata Titta på kanal ID" + +#: cps/templates/config_edit.html:55 +msgid "Revoke" +msgstr "Återkalla" + +#: cps/templates/config_edit.html:73 +msgid "Server Configuration" +msgstr "Serverkonfiguration" + +#: cps/templates/config_edit.html:80 +msgid "Server Port" +msgstr "Serverport" + +#: cps/templates/config_edit.html:84 +msgid "SSL certfile location (leave it empty for non-SSL Servers)" +msgstr "SSL certfile plats (lämna den tom för icke-SSL-servrar)" + +#: cps/templates/config_edit.html:88 +msgid "SSL Keyfile location (leave it empty for non-SSL Servers)" +msgstr "SSL Keyfile plats (lämna den tom för icke-SSL-servrar)" + +#: cps/templates/config_edit.html:99 +msgid "Logfile Configuration" +msgstr "Loggfil konfiguration" + +#: cps/templates/config_edit.html:106 +msgid "Log Level" +msgstr "Loggnivå" + +#: cps/templates/config_edit.html:115 +msgid "Location and name of logfile (calibre-web.log for no entry)" +msgstr "Plats och namn på loggfilen (calibre-web.log för ingen post)" + +#: cps/templates/config_edit.html:126 +msgid "Feature Configuration" +msgstr "Funktion konfiguration" + +#: cps/templates/config_edit.html:134 +msgid "Enable uploading" +msgstr "Aktivera uppladdning" + +#: cps/templates/config_edit.html:138 +msgid "Enable anonymous browsing" +msgstr "Aktivera anonym surfning" + +#: cps/templates/config_edit.html:142 +msgid "Enable public registration" +msgstr "Aktivera offentlig registrering" + +#: cps/templates/config_edit.html:146 +msgid "Enable remote login (\"magic link\")" +msgstr "Aktivera fjärrinloggning (\"magic link\")" + +#: cps/templates/config_edit.html:151 +msgid "Use" +msgstr "Använd" + +#: cps/templates/config_edit.html:152 +msgid "Obtain an API Key" +msgstr "Hämta en API-nyckel" + +#: cps/templates/config_edit.html:156 +msgid "Goodreads API Key" +msgstr "Goodreads API-nyckel" + +#: cps/templates/config_edit.html:160 +msgid "Goodreads API Secret" +msgstr "Goodreads API-hemlighet" + +#: cps/templates/config_edit.html:173 +msgid "External binaries" +msgstr "Externa binärer" + +#: cps/templates/config_edit.html:181 +msgid "No converter" +msgstr "Ingen konverterare" + +#: cps/templates/config_edit.html:183 +msgid "Use Kindlegen" +msgstr "Använd Kindlegen" + +#: cps/templates/config_edit.html:185 +msgid "Use calibre's ebook converter" +msgstr "Använd calibres e-bokkonverterare" + +#: cps/templates/config_edit.html:189 +msgid "E-Book converter settings" +msgstr "Inställningar för e-bokkonverteraren" + +#: cps/templates/config_edit.html:193 +msgid "Path to convertertool" +msgstr "Sökväg till convertertool" + +#: cps/templates/config_edit.html:199 +msgid "Location of Unrar binary" +msgstr "Plats för Unrar-binär" + +#: cps/templates/config_edit.html:215 cps/templates/layout.html:82 +#: cps/templates/login.html:4 +msgid "Login" +msgstr "Logga in" + +#: cps/templates/config_view_edit.html:12 +msgid "View Configuration" +msgstr "Visa konfiguration" + +#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:133 +#: cps/templates/layout.html:134 cps/templates/shelf_edit.html:7 +msgid "Title" +msgstr "Titel" + +#: cps/templates/config_view_edit.html:27 +msgid "No. of random books to show" +msgstr "Antal slumpmässiga böcker att visa" + +#: cps/templates/config_view_edit.html:31 +msgid "Regular expression for ignoring columns" +msgstr "Reguljärt uttryck för att ignorera kolumner" + +#: cps/templates/config_view_edit.html:35 +msgid "Link read/unread status to Calibre column" +msgstr "Länka läst/oläst status till Calibre-kolumn" + +#: cps/templates/config_view_edit.html:44 +msgid "Regular expression for title sorting" +msgstr "Reguljärt uttryck för titelsortering" + +#: cps/templates/config_view_edit.html:48 +msgid "Tags for Mature Content" +msgstr "Taggar för vuxeninnehåll" + +#: cps/templates/config_view_edit.html:62 +msgid "Default settings for new users" +msgstr "Standardinställningar för nya användare" + +#: cps/templates/config_view_edit.html:70 cps/templates/user_edit.html:110 +msgid "Admin user" +msgstr "Adminstratör användare" + +#: cps/templates/config_view_edit.html:74 cps/templates/user_edit.html:119 +msgid "Allow Downloads" +msgstr "Tillåt Hämtningar" + +#: cps/templates/config_view_edit.html:78 cps/templates/user_edit.html:123 +msgid "Allow Uploads" +msgstr "Tillåt Uppladdningar" + +#: cps/templates/config_view_edit.html:82 cps/templates/user_edit.html:127 +msgid "Allow Edit" +msgstr "Tillåt Redigera" + +#: cps/templates/config_view_edit.html:86 cps/templates/user_edit.html:131 +msgid "Allow Delete books" +msgstr "Tillåt Ta bort böcker" + +#: cps/templates/config_view_edit.html:90 cps/templates/user_edit.html:136 +msgid "Allow Changing Password" +msgstr "Tillåt Ändra lösenord" + +#: cps/templates/config_view_edit.html:94 cps/templates/user_edit.html:140 +msgid "Allow Editing Public Shelfs" +msgstr "Tillåt Redigering av offentliga hyllor" + +#: cps/templates/config_view_edit.html:104 +msgid "Default visibilities for new users" +msgstr "Standardvisibiliteter för nya användare" + +#: cps/templates/config_view_edit.html:112 cps/templates/user_edit.html:58 +msgid "Show random books" +msgstr "Visa slumpmässiga böcker" + +#: cps/templates/config_view_edit.html:116 cps/templates/user_edit.html:62 +msgid "Show recent books" +msgstr "Visa senaste böcker" + +#: cps/templates/config_view_edit.html:120 cps/templates/user_edit.html:66 +msgid "Show sorted books" +msgstr "Visa sorterade böcker" + +#: cps/templates/config_view_edit.html:124 cps/templates/user_edit.html:70 +msgid "Show hot books" +msgstr "Visa heta böcker" + +#: cps/templates/config_view_edit.html:128 cps/templates/user_edit.html:74 +msgid "Show best rated books" +msgstr "Visa böcker med bästa betyg" + +#: cps/templates/config_view_edit.html:132 cps/templates/user_edit.html:78 +msgid "Show language selection" +msgstr "Visa språkval" + +#: cps/templates/config_view_edit.html:136 cps/templates/user_edit.html:82 +msgid "Show series selection" +msgstr "Visa serieval" + +#: cps/templates/config_view_edit.html:140 cps/templates/user_edit.html:86 +msgid "Show category selection" +msgstr "Visa kategorival" + +#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:90 +msgid "Show author selection" +msgstr "Visa författarval" + +#: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:94 +msgid "Show publisher selection" +msgstr "" + +#: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:98 +msgid "Show read and unread" +msgstr "Visa lästa och olästa" + +#: cps/templates/config_view_edit.html:156 cps/templates/user_edit.html:102 +msgid "Show random books in detail view" +msgstr "Visa slumpmässiga böcker i detaljvyn" + +#: cps/templates/config_view_edit.html:160 cps/templates/user_edit.html:115 +msgid "Show mature content" +msgstr "Visa vuxeninnehåll" + +#: cps/templates/detail.html:49 +msgid "Read in browser" +msgstr "Läs i webbläsaren" + +#: cps/templates/detail.html:88 +msgid "Book" +msgstr "Bok" + +#: cps/templates/detail.html:88 +msgid "of" +msgstr "av" + +#: cps/templates/detail.html:94 +msgid "language" +msgstr "språk" + +#: cps/templates/detail.html:172 +msgid "Read" +msgstr "Läst" + +#: cps/templates/detail.html:182 +msgid "Description:" +msgstr "Beskrivning:" + +#: cps/templates/detail.html:195 cps/templates/search.html:14 +msgid "Add to shelf" +msgstr "Lägg till hyllan" + +#: cps/templates/detail.html:257 +msgid "Edit metadata" +msgstr "Redigera metadata" + +#: cps/templates/email_edit.html:15 +msgid "SMTP port (usually 25 for plain SMTP and 465 for SSL and 587 for STARTTLS)" +msgstr "SMTP-port (vanligtvis 25 för vanlig SMTP och 465 för SSL och 587 för STARTTLS)" + +#: cps/templates/email_edit.html:19 +msgid "Encryption" +msgstr "Kryptering" + +#: cps/templates/email_edit.html:21 +msgid "None" +msgstr "Ingen" + +#: cps/templates/email_edit.html:22 +msgid "STARTTLS" +msgstr "STARTTLS" + +#: cps/templates/email_edit.html:23 +msgid "SSL/TLS" +msgstr "SSL/TLS" + +#: cps/templates/email_edit.html:31 +msgid "SMTP password" +msgstr "SMTP-lösenord" + +#: cps/templates/email_edit.html:35 +msgid "From e-mail" +msgstr "Från e-post" + +#: cps/templates/email_edit.html:38 +msgid "Save settings" +msgstr "Spara inställningarna" + +#: cps/templates/email_edit.html:39 +msgid "Save settings and send Test E-Mail" +msgstr "Spara inställningarna och skicka test-e-post" + +#: cps/templates/email_edit.html:43 +msgid "Allowed domains for registering" +msgstr "Tillåtna domäner för registrering" + +#: cps/templates/email_edit.html:47 +msgid "Enter domainname" +msgstr "Ange domännamn" + +#: cps/templates/email_edit.html:55 +msgid "Add Domain" +msgstr "Lägg till domän" + +#: cps/templates/email_edit.html:58 +msgid "Add" +msgstr "Lägg till" + +#: cps/templates/email_edit.html:72 +msgid "Do you really want to delete this domain rule?" +msgstr "Är du säker på att du vill ta bort den här domänregeln?" + +#: cps/templates/feed.xml:21 cps/templates/layout.html:208 +msgid "Next" +msgstr "Nästa" + +#: cps/templates/feed.xml:33 cps/templates/index.xml:11 +#: cps/templates/layout.html:43 cps/templates/layout.html:44 +msgid "Search" +msgstr "Sök" + +#: cps/templates/http_error.html:23 +msgid "Back to home" +msgstr "" + +#: cps/templates/index.html:5 +msgid "Discover (Random Books)" +msgstr "Upptäck (slumpmässiga böcker)" + +#: cps/templates/index.xml:6 +msgid "Start" +msgstr "Starta" + +#: cps/templates/index.xml:18 cps/templates/layout.html:139 +msgid "Hot Books" +msgstr "Heta böcker" + +#: cps/templates/index.xml:22 +msgid "Popular publications from this catalog based on Downloads." +msgstr "Populära publikationer från den här katalogen baserad på hämtningar." + +#: cps/templates/index.xml:25 cps/templates/layout.html:142 +msgid "Best rated Books" +msgstr "Bäst rankade böcker" + +#: cps/templates/index.xml:29 +msgid "Popular publications from this catalog based on Rating." +msgstr "Populära publikationer från den här katalogen baserad på betyg." + +#: cps/templates/index.xml:32 +msgid "New Books" +msgstr "Nya böcker" + +#: cps/templates/index.xml:36 +msgid "The latest Books" +msgstr "De senaste böckerna" + +#: cps/templates/index.xml:43 +msgid "Show Random Books" +msgstr "Visa slumpmässiga böcker" + +#: cps/templates/index.xml:62 cps/templates/layout.html:160 +msgid "Authors" +msgstr "Författare" + +#: cps/templates/index.xml:66 +msgid "Books ordered by Author" +msgstr "Böcker ordnade efter författare" + +#: cps/templates/index.xml:69 cps/templates/layout.html:163 +msgid "Publishers" +msgstr "" + +#: cps/templates/index.xml:73 +msgid "Books ordered by publisher" +msgstr "" + +#: cps/templates/index.xml:80 +msgid "Books ordered by category" +msgstr "Böcker ordnade efter kategori" + +#: cps/templates/index.xml:87 +msgid "Books ordered by series" +msgstr "Böcker ordnade efter serier" + +#: cps/templates/index.xml:90 cps/templates/layout.html:169 +msgid "Public Shelves" +msgstr "Offentliga hyllor" + +#: cps/templates/index.xml:94 +msgid "Books organized in public shelfs, visible to everyone" +msgstr "Böcker organiserade i offentliga hyllor, synliga för alla" + +#: cps/templates/index.xml:98 cps/templates/layout.html:173 +msgid "Your Shelves" +msgstr "Dina hyllor" + +#: cps/templates/index.xml:102 +msgid "User's own shelfs, only visible to the current user himself" +msgstr "Användarens egna hyllor, endast synliga för den aktuella användaren själv" + +#: cps/templates/layout.html:33 +msgid "Toggle navigation" +msgstr "Växla navigering" + +#: cps/templates/layout.html:54 +msgid "Advanced Search" +msgstr "Avancerad sökning" + +#: cps/templates/layout.html:78 +msgid "Logout" +msgstr "Logga ut" + +#: cps/templates/layout.html:83 cps/templates/register.html:14 +msgid "Register" +msgstr "Registrera" + +#: cps/templates/layout.html:108 +msgid "Uploading..." +msgstr "Laddar upp..." + +#: cps/templates/layout.html:109 +msgid "please don't refresh the page" +msgstr "uppdatera inte sidan" + +#: cps/templates/layout.html:120 +msgid "Browse" +msgstr "Bläddra" + +#: cps/templates/layout.html:122 +msgid "Recently Added" +msgstr "Nyligen tillagda" + +#: cps/templates/layout.html:127 +msgid "Sorted Books" +msgstr "Sorterade böcker" + +#: cps/templates/layout.html:131 cps/templates/layout.html:132 +#: cps/templates/layout.html:133 cps/templates/layout.html:134 +msgid "Sort By" +msgstr "Sortera efter" + +#: cps/templates/layout.html:131 +msgid "Newest" +msgstr "Nyast" + +#: cps/templates/layout.html:132 +msgid "Oldest" +msgstr "Äldst" + +#: cps/templates/layout.html:133 +msgid "Ascending" +msgstr "Stigande" + +#: cps/templates/layout.html:134 +msgid "Descending" +msgstr "Fallande" + +#: cps/templates/layout.html:151 +msgid "Discover" +msgstr "Upptäck" + +#: cps/templates/layout.html:154 +msgid "Categories" +msgstr "Kategorier" + +#: cps/templates/layout.html:166 cps/templates/search_form.html:74 +msgid "Languages" +msgstr "Språk" + +#: cps/templates/layout.html:178 +msgid "Create a Shelf" +msgstr "Skapa en hylla" + +#: cps/templates/layout.html:179 cps/templates/stats.html:3 +msgid "About" +msgstr "Om" + +#: cps/templates/layout.html:193 +msgid "Previous" +msgstr "Föregående" + +#: cps/templates/layout.html:220 +msgid "Book Details" +msgstr "Bokdetaljer" + +#: cps/templates/login.html:8 cps/templates/login.html:9 +#: cps/templates/register.html:7 cps/templates/user_edit.html:8 +msgid "Username" +msgstr "Användarnamn" + +#: cps/templates/login.html:12 cps/templates/login.html:13 +#: cps/templates/user_edit.html:21 +msgid "Password" +msgstr "Lösenord" + +#: cps/templates/login.html:17 +msgid "Remember me" +msgstr "Kom ihåg mig" + +#: cps/templates/login.html:22 +msgid "Log in with magic link" +msgstr "Logga in med magic link" + +#: cps/templates/osd.xml:5 +msgid "Calibre-Web ebook catalog" +msgstr "Calibre-Web e-bokkatalog" + +#: cps/templates/read.html:69 cps/templates/readcbr.html:79 +#: cps/templates/readcbr.html:103 +msgid "Settings" +msgstr "Inställningar" + +#: cps/templates/read.html:72 +msgid "Reflow text when sidebars are open." +msgstr "Fyll i texten igen när sidofält är öppna." + +#: cps/templates/readcbr.html:84 +msgid "Keyboard Shortcuts" +msgstr "Kortkommandon" + +#: cps/templates/readcbr.html:87 +msgid "Previous Page" +msgstr "Föregående sida" + +#: cps/templates/readcbr.html:88 +msgid "Next Page" +msgstr "Nästa sida" + +#: cps/templates/readcbr.html:89 +msgid "Scale to Best" +msgstr "Skala till bäst" + +#: cps/templates/readcbr.html:90 +msgid "Scale to Width" +msgstr "Skala till bredd" + +#: cps/templates/readcbr.html:91 +msgid "Scale to Height" +msgstr "Skala till höjd" + +#: cps/templates/readcbr.html:92 +msgid "Scale to Native" +msgstr "Skala till ursprunglig" + +#: cps/templates/readcbr.html:93 +msgid "Rotate Right" +msgstr "Rotera åt höger" + +#: cps/templates/readcbr.html:94 +msgid "Rotate Left" +msgstr "Rotera åt vänster" + +#: cps/templates/readcbr.html:95 +msgid "Flip Image" +msgstr "Vänd bilden" + +#: cps/templates/readcbr.html:108 cps/templates/user_edit.html:39 +msgid "Theme" +msgstr "Tema" + +#: cps/templates/readcbr.html:111 +msgid "Light" +msgstr "Ljust" + +#: cps/templates/readcbr.html:112 +msgid "Dark" +msgstr "Mörkt" + +#: cps/templates/readcbr.html:117 +msgid "Scale" +msgstr "Skala" + +#: cps/templates/readcbr.html:120 +msgid "Best" +msgstr "Bäst" + +#: cps/templates/readcbr.html:121 +msgid "Width" +msgstr "Bredd" + +#: cps/templates/readcbr.html:122 +msgid "Height" +msgstr "Höjd" + +#: cps/templates/readcbr.html:123 +msgid "Native" +msgstr "Ursprunglig" + +#: cps/templates/readcbr.html:128 +msgid "Rotate" +msgstr "Rotera" + +#: cps/templates/readcbr.html:139 +msgid "Flip" +msgstr "Vänd" + +#: cps/templates/readcbr.html:142 +msgid "Horizontal" +msgstr "Horisontell" + +#: cps/templates/readcbr.html:143 +msgid "Vertical" +msgstr "Vertikal" + +#: cps/templates/readpdf.html:29 +msgid "PDF.js viewer" +msgstr "PDF.js visare" + +#: cps/templates/readtxt.html:6 +msgid "Basic txt Reader" +msgstr "Grundläggande txt-läsare" + +#: cps/templates/register.html:4 +msgid "Register a new account" +msgstr "Registrera ett nytt konto" + +#: cps/templates/register.html:8 +msgid "Choose a username" +msgstr "Välj ett användarnamn" + +#: cps/templates/register.html:11 cps/templates/user_edit.html:13 +msgid "E-mail address" +msgstr "E-postadress" + +#: cps/templates/register.html:12 +msgid "Your email address" +msgstr "Din e-postadress" + +#: cps/templates/remote_login.html:6 +msgid "Using your another device, visit" +msgstr "Använda en annan enhet, besök" + +#: cps/templates/remote_login.html:6 +msgid "and log in" +msgstr "och logga in" + +#: cps/templates/remote_login.html:9 +msgid "Once you do so, you will automatically get logged in on this device." +msgstr "När du gör det kommer du automatiskt att logga in på den här enheten." + +#: cps/templates/search.html:5 +msgid "No Results for:" +msgstr "Inga resultat för:" + +#: cps/templates/search.html:6 +msgid "Please try a different search" +msgstr "Försök en annan sökning" + +#: cps/templates/search.html:8 +msgid "Results for:" +msgstr "Resultat för:" + +#: cps/templates/search_form.html:19 +msgid "Publishing date from" +msgstr "Publiceringsdatum från" + +#: cps/templates/search_form.html:26 +msgid "Publishing date to" +msgstr "Publiceringsdatum till" + +#: cps/templates/search_form.html:43 +msgid "Exclude Tags" +msgstr "Uteslut taggar" + +#: cps/templates/search_form.html:63 +msgid "Exclude Series" +msgstr "Uteslut serier" + +#: cps/templates/search_form.html:84 +msgid "Exclude Languages" +msgstr "Uteslut språk" + +#: cps/templates/search_form.html:97 +msgid "Rating bigger than" +msgstr "Betyg större än" + +#: cps/templates/search_form.html:101 +msgid "Rating less than" +msgstr "Betyg mindre än" + +#: cps/templates/shelf.html:7 +msgid "Delete this Shelf" +msgstr "Ta bort den här hyllan" + +#: cps/templates/shelf.html:8 +msgid "Edit Shelf" +msgstr "Redigera hyllan" + +#: cps/templates/shelf.html:9 cps/templates/shelf_order.html:11 +msgid "Change order" +msgstr "Ändra ordningen" + +#: cps/templates/shelf.html:58 +msgid "Do you really want to delete the shelf?" +msgstr "Är du säker på att du vill ta bort hyllan?" + +#: cps/templates/shelf.html:61 +msgid "Shelf will be lost for everybody and forever!" +msgstr "Hylla kommer att gå förlorad för alla och för alltid!" + +#: cps/templates/shelf_edit.html:13 +msgid "should the shelf be public?" +msgstr "ska hyllan vara offentlig?" + +#: cps/templates/shelf_order.html:5 +msgid "Drag 'n drop to rearrange order" +msgstr "Drag och släpp för att ändra ordning" + +#: cps/templates/stats.html:7 +msgid "Calibre library statistics" +msgstr "Calibre-biblioteksstatistik" + +#: cps/templates/stats.html:12 +msgid "Books in this Library" +msgstr "Böcker i det här biblioteket" + +#: cps/templates/stats.html:16 +msgid "Authors in this Library" +msgstr "Författare i det här biblioteket" + +#: cps/templates/stats.html:20 +msgid "Categories in this Library" +msgstr "Kategorier i det här biblioteket" + +#: cps/templates/stats.html:24 +msgid "Series in this Library" +msgstr "Serier i detta bibliotek" + +#: cps/templates/stats.html:28 +msgid "Linked libraries" +msgstr "Länkade bibliotek" + +#: cps/templates/stats.html:32 +msgid "Program library" +msgstr "Programbibliotek" + +#: cps/templates/stats.html:33 +msgid "Installed Version" +msgstr "Installerad version" + +#: cps/templates/tasks.html:7 +msgid "Tasks list" +msgstr "Uppgiftslista" + +#: cps/templates/tasks.html:12 +msgid "User" +msgstr "Användare" + +#: cps/templates/tasks.html:14 +msgid "Task" +msgstr "Uppgift" + +#: cps/templates/tasks.html:15 +msgid "Status" +msgstr "Status" + +#: cps/templates/tasks.html:16 +msgid "Progress" +msgstr "Förlopp" + +#: cps/templates/tasks.html:17 +msgid "Runtime" +msgstr "Drifttid" + +#: cps/templates/tasks.html:18 +msgid "Starttime" +msgstr "Starttid" + +#: cps/templates/tasks.html:24 +msgid "Delete finished tasks" +msgstr "Ta bort färdiga uppgifter" + +#: cps/templates/tasks.html:25 +msgid "Hide all tasks" +msgstr "Dölj alla uppgifter" + +#: cps/templates/user_edit.html:18 +msgid "Reset user Password" +msgstr "Återställ användarlösenordet" + +#: cps/templates/user_edit.html:27 +msgid "Kindle E-Mail" +msgstr "Kindle e-post" + +#: cps/templates/user_edit.html:41 +msgid "Standard Theme" +msgstr "Standard tema" + +#: cps/templates/user_edit.html:42 +msgid "caliBlur! Dark Theme (Beta)" +msgstr "caliBlur! Mörkt tema (beta)" + +#: cps/templates/user_edit.html:47 +msgid "Show books with language" +msgstr "Visa böcker med språk" + +#: cps/templates/user_edit.html:49 +msgid "Show all" +msgstr "Visa alla" + +#: cps/templates/user_edit.html:147 +msgid "Delete this user" +msgstr "Ta bort den här användaren" + +#: cps/templates/user_edit.html:162 +msgid "Recent Downloads" +msgstr "Senaste hämtningar" + +#~ msgid "Current commit timestamp" +#~ msgstr "Aktuelles Commit Datum" + +#~ msgid "Newest commit timestamp" +#~ msgstr "Neuestes Commit Datum" + +#~ msgid "Convert: %(book)s" +#~ msgstr "Konvertera: %(book)s" + +#~ msgid "Convert to %(format)s: %(book)s" +#~ msgstr "Konvertera till %(format)s: %(book)s" + +#~ msgid "Files are replaced" +#~ msgstr "Filer ersätts" + +#~ msgid "Server is stopped" +#~ msgstr "Servern stoppas" + +#~ msgid "Convertertool %(converter)s not found" +#~ msgstr "Convertertool %(converter)s hittades inte" + +#~ msgid "Choose a password" +#~ msgstr "Välj ett lösenord" + diff --git a/messages.pot b/messages.pot index 7eb09c9a..4f7d0bcd 100644 --- a/messages.pot +++ b/messages.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-11-03 14:03+0100\n" +"POT-Creation-Date: 2018-11-17 16:38+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -44,7 +44,7 @@ msgstr "" msgid "Send to Kindle" msgstr "" -#: cps/helper.py:78 cps/helper.py:96 +#: cps/helper.py:78 cps/helper.py:96 cps/helper.py:149 msgid "This e-mail has been sent via Calibre-Web." msgstr "" @@ -79,659 +79,659 @@ msgstr "" msgid "E-mail: %(book)s" msgstr "" -#: cps/helper.py:150 +#: cps/helper.py:151 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "" -#: cps/helper.py:250 +#: cps/helper.py:251 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:259 +#: cps/helper.py:260 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:281 cps/helper.py:290 +#: cps/helper.py:282 cps/helper.py:291 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "" -#: cps/helper.py:308 +#: cps/helper.py:309 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "" -#: cps/helper.py:565 +#: cps/helper.py:570 msgid "Error excecuting UnRar" msgstr "" -#: cps/helper.py:567 +#: cps/helper.py:572 msgid "Unrar binary file not found" msgstr "" -#: cps/helper.py:609 +#: cps/helper.py:614 msgid "Waiting" msgstr "" -#: cps/helper.py:611 +#: cps/helper.py:616 msgid "Failed" msgstr "" -#: cps/helper.py:613 +#: cps/helper.py:618 msgid "Started" msgstr "" -#: cps/helper.py:615 +#: cps/helper.py:620 msgid "Finished" msgstr "" -#: cps/helper.py:617 +#: cps/helper.py:622 msgid "Unknown Status" msgstr "" -#: cps/helper.py:622 +#: cps/helper.py:627 msgid "E-mail: " msgstr "" -#: cps/helper.py:624 cps/helper.py:628 +#: cps/helper.py:629 cps/helper.py:633 msgid "Convert: " msgstr "" -#: cps/helper.py:626 +#: cps/helper.py:631 msgid "Upload: " msgstr "" -#: cps/helper.py:630 +#: cps/helper.py:635 msgid "Unknown Task: " msgstr "" -#: cps/web.py:1132 cps/web.py:2842 +#: cps/web.py:1155 cps/web.py:2858 msgid "Unknown" msgstr "" -#: cps/web.py:1141 cps/web.py:1172 cps/web.py:1257 +#: cps/web.py:1164 cps/web.py:1195 cps/web.py:1280 msgid "HTTP Error" msgstr "" -#: cps/web.py:1143 cps/web.py:1174 cps/web.py:1258 +#: cps/web.py:1166 cps/web.py:1197 cps/web.py:1281 msgid "Connection error" msgstr "" -#: cps/web.py:1145 cps/web.py:1176 cps/web.py:1259 +#: cps/web.py:1168 cps/web.py:1199 cps/web.py:1282 msgid "Timeout while establishing connection" msgstr "" -#: cps/web.py:1147 cps/web.py:1178 cps/web.py:1260 +#: cps/web.py:1170 cps/web.py:1201 cps/web.py:1283 msgid "General error" msgstr "" -#: cps/web.py:1153 +#: cps/web.py:1176 msgid "Unexpected data while reading update information" msgstr "" -#: cps/web.py:1160 +#: cps/web.py:1183 msgid "No update available. You already have the latest version installed" msgstr "" -#: cps/web.py:1185 +#: cps/web.py:1208 msgid "A new update is available. Click on the button below to update to the latest version." msgstr "" -#: cps/web.py:1235 +#: cps/web.py:1258 msgid "Could not fetch update information" msgstr "" -#: cps/web.py:1250 +#: cps/web.py:1273 msgid "Requesting update package" msgstr "" -#: cps/web.py:1251 +#: cps/web.py:1274 msgid "Downloading update package" msgstr "" -#: cps/web.py:1252 +#: cps/web.py:1275 msgid "Unzipping update package" msgstr "" -#: cps/web.py:1253 +#: cps/web.py:1276 msgid "Replacing files" msgstr "" -#: cps/web.py:1254 +#: cps/web.py:1277 msgid "Database connections are closed" msgstr "" -#: cps/web.py:1255 +#: cps/web.py:1278 msgid "Stopping server" msgstr "" -#: cps/web.py:1256 +#: cps/web.py:1279 msgid "Update finished, please press okay and reload page" msgstr "" -#: cps/web.py:1257 cps/web.py:1258 cps/web.py:1259 cps/web.py:1260 +#: cps/web.py:1280 cps/web.py:1281 cps/web.py:1282 cps/web.py:1283 msgid "Update failed:" msgstr "" -#: cps/web.py:1283 +#: cps/web.py:1306 msgid "Recently Added Books" msgstr "" -#: cps/web.py:1293 +#: cps/web.py:1316 msgid "Newest Books" msgstr "" -#: cps/web.py:1305 +#: cps/web.py:1328 msgid "Oldest Books" msgstr "" -#: cps/web.py:1317 +#: cps/web.py:1340 msgid "Books (A-Z)" msgstr "" -#: cps/web.py:1328 +#: cps/web.py:1351 msgid "Books (Z-A)" msgstr "" -#: cps/web.py:1357 +#: cps/web.py:1380 msgid "Hot Books (most downloaded)" msgstr "" -#: cps/web.py:1370 +#: cps/web.py:1393 msgid "Best rated books" msgstr "" -#: cps/templates/index.xml:39 cps/web.py:1383 +#: cps/templates/index.xml:39 cps/web.py:1406 msgid "Random Books" msgstr "" -#: cps/web.py:1398 +#: cps/web.py:1421 msgid "Author list" msgstr "" -#: cps/web.py:1410 cps/web.py:1501 cps/web.py:1663 cps/web.py:2206 +#: cps/web.py:1433 cps/web.py:1524 cps/web.py:1686 cps/web.py:2229 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "" -#: cps/web.py:1438 +#: cps/web.py:1461 msgid "Publisher list" msgstr "" -#: cps/web.py:1452 +#: cps/web.py:1475 #, python-format msgid "Publisher: %(name)s" msgstr "" -#: cps/templates/index.xml:83 cps/web.py:1484 +#: cps/templates/index.xml:83 cps/web.py:1507 msgid "Series list" msgstr "" -#: cps/web.py:1499 +#: cps/web.py:1522 #, python-format msgid "Series: %(serie)s" msgstr "" -#: cps/web.py:1528 +#: cps/web.py:1551 msgid "Available languages" msgstr "" -#: cps/web.py:1548 +#: cps/web.py:1571 #, python-format msgid "Language: %(name)s" msgstr "" -#: cps/templates/index.xml:76 cps/web.py:1559 +#: cps/templates/index.xml:76 cps/web.py:1582 msgid "Category list" msgstr "" -#: cps/web.py:1573 +#: cps/web.py:1596 #, python-format msgid "Category: %(name)s" msgstr "" -#: cps/templates/layout.html:71 cps/web.py:1699 +#: cps/templates/layout.html:71 cps/web.py:1722 msgid "Tasks" msgstr "" -#: cps/web.py:1733 +#: cps/web.py:1756 msgid "Statistics" msgstr "" -#: cps/web.py:1840 +#: cps/web.py:1863 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "" -#: cps/web.py:1915 +#: cps/web.py:1938 msgid "Server restarted, please reload page" msgstr "" -#: cps/web.py:1918 +#: cps/web.py:1941 msgid "Performing shutdown of server, please close window" msgstr "" -#: cps/web.py:1937 +#: cps/web.py:1960 msgid "Update done" msgstr "" -#: cps/web.py:2007 +#: cps/web.py:2030 msgid "Published after " msgstr "" -#: cps/web.py:2014 +#: cps/web.py:2037 msgid "Published before " msgstr "" -#: cps/web.py:2028 +#: cps/web.py:2051 #, python-format msgid "Rating <= %(rating)s" msgstr "" -#: cps/web.py:2030 +#: cps/web.py:2053 #, python-format msgid "Rating >= %(rating)s" msgstr "" -#: cps/web.py:2089 cps/web.py:2098 +#: cps/web.py:2112 cps/web.py:2121 msgid "search" msgstr "" #: cps/templates/index.xml:47 cps/templates/index.xml:51 -#: cps/templates/layout.html:146 cps/web.py:2165 +#: cps/templates/layout.html:146 cps/web.py:2188 msgid "Read Books" msgstr "" #: cps/templates/index.xml:55 cps/templates/index.xml:59 -#: cps/templates/layout.html:148 cps/web.py:2168 +#: cps/templates/layout.html:148 cps/web.py:2191 msgid "Unread Books" msgstr "" -#: cps/web.py:2216 cps/web.py:2218 cps/web.py:2220 cps/web.py:2232 +#: cps/web.py:2239 cps/web.py:2241 cps/web.py:2243 cps/web.py:2255 msgid "Read a Book" msgstr "" -#: cps/web.py:2298 cps/web.py:3201 +#: cps/web.py:2314 cps/web.py:3217 msgid "Please fill out all fields!" msgstr "" -#: cps/web.py:2299 cps/web.py:2320 cps/web.py:2324 cps/web.py:2329 -#: cps/web.py:2331 +#: cps/web.py:2315 cps/web.py:2336 cps/web.py:2340 cps/web.py:2345 +#: cps/web.py:2347 msgid "register" msgstr "" -#: cps/web.py:2319 cps/web.py:3417 +#: cps/web.py:2335 cps/web.py:3433 msgid "An unknown error occurred. Please try again later." msgstr "" -#: cps/web.py:2322 +#: cps/web.py:2338 msgid "Your e-mail is not allowed to register" msgstr "" -#: cps/web.py:2325 +#: cps/web.py:2341 msgid "Confirmation e-mail was send to your e-mail account." msgstr "" -#: cps/web.py:2328 +#: cps/web.py:2344 msgid "This username or e-mail address is already in use." msgstr "" -#: cps/web.py:2345 cps/web.py:2441 +#: cps/web.py:2361 cps/web.py:2457 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "" -#: cps/web.py:2350 +#: cps/web.py:2366 msgid "Wrong Username or Password" msgstr "" -#: cps/web.py:2356 cps/web.py:2377 +#: cps/web.py:2372 cps/web.py:2393 msgid "login" msgstr "" -#: cps/web.py:2389 cps/web.py:2420 +#: cps/web.py:2405 cps/web.py:2436 msgid "Token not found" msgstr "" -#: cps/web.py:2397 cps/web.py:2428 +#: cps/web.py:2413 cps/web.py:2444 msgid "Token has expired" msgstr "" -#: cps/web.py:2405 +#: cps/web.py:2421 msgid "Success! Please return to your device" msgstr "" -#: cps/web.py:2455 +#: cps/web.py:2471 msgid "Please configure the SMTP mail settings first..." msgstr "" -#: cps/web.py:2459 +#: cps/web.py:2475 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "" -#: cps/web.py:2463 +#: cps/web.py:2479 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "" -#: cps/web.py:2465 cps/web.py:3255 +#: cps/web.py:2481 cps/web.py:3271 msgid "Please configure your kindle e-mail address first..." msgstr "" -#: cps/web.py:2476 cps/web.py:2528 +#: cps/web.py:2492 cps/web.py:2544 msgid "Invalid shelf specified" msgstr "" -#: cps/web.py:2483 +#: cps/web.py:2499 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" msgstr "" -#: cps/web.py:2491 +#: cps/web.py:2507 msgid "You are not allowed to edit public shelves" msgstr "" -#: cps/web.py:2500 +#: cps/web.py:2516 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" msgstr "" -#: cps/web.py:2514 +#: cps/web.py:2530 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "" -#: cps/web.py:2533 +#: cps/web.py:2549 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "" -#: cps/web.py:2538 +#: cps/web.py:2554 msgid "User is not allowed to edit public shelves" msgstr "" -#: cps/web.py:2556 +#: cps/web.py:2572 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "" -#: cps/web.py:2570 +#: cps/web.py:2586 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "" -#: cps/web.py:2572 +#: cps/web.py:2588 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "" -#: cps/web.py:2609 +#: cps/web.py:2625 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "" -#: cps/web.py:2615 +#: cps/web.py:2631 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" -#: cps/web.py:2635 cps/web.py:2659 +#: cps/web.py:2651 cps/web.py:2675 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "" -#: cps/web.py:2640 +#: cps/web.py:2656 #, python-format msgid "Shelf %(title)s created" msgstr "" -#: cps/web.py:2642 cps/web.py:2670 +#: cps/web.py:2658 cps/web.py:2686 msgid "There was an error" msgstr "" -#: cps/web.py:2643 cps/web.py:2645 +#: cps/web.py:2659 cps/web.py:2661 msgid "create a shelf" msgstr "" -#: cps/web.py:2668 +#: cps/web.py:2684 #, python-format msgid "Shelf %(title)s changed" msgstr "" -#: cps/web.py:2671 cps/web.py:2673 +#: cps/web.py:2687 cps/web.py:2689 msgid "Edit a shelf" msgstr "" -#: cps/web.py:2694 +#: cps/web.py:2710 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "" -#: cps/web.py:2721 +#: cps/web.py:2737 #, python-format msgid "Shelf: '%(name)s'" msgstr "" -#: cps/web.py:2724 +#: cps/web.py:2740 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "" -#: cps/web.py:2755 +#: cps/web.py:2771 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "" -#: cps/web.py:2784 cps/web.py:3207 +#: cps/web.py:2800 cps/web.py:3223 msgid "E-mail is not from valid domain" msgstr "" -#: cps/web.py:2786 cps/web.py:2829 cps/web.py:2832 +#: cps/web.py:2802 cps/web.py:2845 cps/web.py:2848 #, python-format msgid "%(name)s's profile" msgstr "" -#: cps/web.py:2827 +#: cps/web.py:2843 msgid "Found an existing account for this e-mail address." msgstr "" -#: cps/web.py:2830 +#: cps/web.py:2846 msgid "Profile updated" msgstr "" -#: cps/web.py:2858 +#: cps/web.py:2874 msgid "Admin page" msgstr "" -#: cps/web.py:2938 cps/web.py:3112 +#: cps/web.py:2954 cps/web.py:3128 msgid "Calibre-Web configuration updated" msgstr "" -#: cps/templates/admin.html:100 cps/web.py:2951 +#: cps/templates/admin.html:100 cps/web.py:2967 msgid "UI Configuration" msgstr "" -#: cps/web.py:2969 +#: cps/web.py:2985 msgid "Import of optional Google Drive requirements missing" msgstr "" -#: cps/web.py:2972 +#: cps/web.py:2988 msgid "client_secrets.json is missing or not readable" msgstr "" -#: cps/web.py:2977 cps/web.py:3004 +#: cps/web.py:2993 cps/web.py:3020 msgid "client_secrets.json is not configured for web application" msgstr "" -#: cps/templates/admin.html:99 cps/web.py:3007 cps/web.py:3033 cps/web.py:3045 -#: cps/web.py:3088 cps/web.py:3103 cps/web.py:3120 cps/web.py:3127 -#: cps/web.py:3142 +#: cps/templates/admin.html:99 cps/web.py:3023 cps/web.py:3049 cps/web.py:3061 +#: cps/web.py:3104 cps/web.py:3119 cps/web.py:3136 cps/web.py:3143 +#: cps/web.py:3158 msgid "Basic Configuration" msgstr "" -#: cps/web.py:3030 +#: cps/web.py:3046 msgid "Keyfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:3042 +#: cps/web.py:3058 msgid "Certfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:3085 +#: cps/web.py:3101 msgid "Logfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:3124 +#: cps/web.py:3140 msgid "DB location is not valid, please enter correct path" msgstr "" -#: cps/templates/admin.html:33 cps/web.py:3203 cps/web.py:3209 cps/web.py:3225 +#: cps/templates/admin.html:33 cps/web.py:3219 cps/web.py:3225 cps/web.py:3241 msgid "Add new user" msgstr "" -#: cps/web.py:3215 +#: cps/web.py:3231 #, python-format msgid "User '%(user)s' created" msgstr "" -#: cps/web.py:3219 +#: cps/web.py:3235 msgid "Found an existing account for this e-mail address or nickname." msgstr "" -#: cps/web.py:3243 cps/web.py:3257 +#: cps/web.py:3259 cps/web.py:3273 msgid "E-mail server settings updated" msgstr "" -#: cps/web.py:3250 +#: cps/web.py:3266 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "" -#: cps/web.py:3253 +#: cps/web.py:3269 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "" -#: cps/web.py:3258 +#: cps/web.py:3274 msgid "Edit e-mail server settings" msgstr "" -#: cps/web.py:3283 +#: cps/web.py:3299 #, python-format msgid "User '%(nick)s' deleted" msgstr "" -#: cps/web.py:3392 +#: cps/web.py:3408 #, python-format msgid "User '%(nick)s' updated" msgstr "" -#: cps/web.py:3395 +#: cps/web.py:3411 msgid "An unknown error occured." msgstr "" -#: cps/web.py:3397 +#: cps/web.py:3413 #, python-format msgid "Edit User %(nick)s" msgstr "" -#: cps/web.py:3414 +#: cps/web.py:3430 #, python-format msgid "Password for user %(user)s reset" msgstr "" -#: cps/web.py:3428 cps/web.py:3629 +#: cps/web.py:3444 cps/web.py:3645 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "" -#: cps/web.py:3453 cps/web.py:3912 +#: cps/web.py:3469 cps/web.py:3928 msgid "edit metadata" msgstr "" -#: cps/web.py:3546 cps/web.py:3782 +#: cps/web.py:3562 cps/web.py:3798 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "" -#: cps/web.py:3550 cps/web.py:3786 +#: cps/web.py:3566 cps/web.py:3802 msgid "File to be uploaded must have an extension" msgstr "" -#: cps/web.py:3562 cps/web.py:3806 +#: cps/web.py:3578 cps/web.py:3822 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "" -#: cps/web.py:3567 +#: cps/web.py:3583 #, python-format msgid "Failed to store file %(file)s." msgstr "" -#: cps/web.py:3583 +#: cps/web.py:3599 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "" -#: cps/web.py:3601 +#: cps/web.py:3617 #, python-format msgid "Failed to create path for cover %(path)s (Permission denied)." msgstr "" -#: cps/web.py:3608 +#: cps/web.py:3624 #, python-format msgid "Failed to store cover-file %(cover)s." msgstr "" -#: cps/web.py:3611 +#: cps/web.py:3627 msgid "Cover-file is not a valid image file" msgstr "" -#: cps/web.py:3641 cps/web.py:3650 cps/web.py:3654 +#: cps/web.py:3657 cps/web.py:3666 cps/web.py:3670 msgid "unknown" msgstr "" -#: cps/web.py:3673 +#: cps/web.py:3689 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/web.py:3721 +#: cps/web.py:3737 #, python-format msgid "%(langname)s is not a valid language" msgstr "" -#: cps/web.py:3752 +#: cps/web.py:3768 msgid "Metadata successfully updated" msgstr "" -#: cps/web.py:3761 +#: cps/web.py:3777 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/web.py:3811 +#: cps/web.py:3827 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "" -#: cps/web.py:3816 +#: cps/web.py:3832 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "" -#: cps/web.py:3898 +#: cps/web.py:3914 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/web.py:3928 +#: cps/web.py:3944 msgid "Source or destination format for conversion missing" msgstr "" -#: cps/web.py:3938 +#: cps/web.py:3954 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "" -#: cps/web.py:3942 +#: cps/web.py:3958 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "" @@ -892,7 +892,7 @@ msgid "Do you really want to restart Calibre-Web?" msgstr "" #: cps/templates/admin.html:150 cps/templates/admin.html:164 -#: cps/templates/admin.html:184 cps/templates/shelf.html:61 +#: cps/templates/admin.html:184 cps/templates/shelf.html:63 msgid "Ok" msgstr "" @@ -900,7 +900,7 @@ msgstr "" #: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200 #: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:168 #: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75 -#: cps/templates/shelf.html:62 cps/templates/shelf_edit.html:19 +#: cps/templates/shelf.html:64 cps/templates/shelf_edit.html:19 #: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:155 msgid "Back" msgstr "" @@ -921,7 +921,7 @@ msgstr "" msgid "In Library" msgstr "" -#: cps/templates/author.html:69 +#: cps/templates/author.html:71 msgid "More by" msgstr "" @@ -1433,6 +1433,10 @@ msgstr "" msgid "Search" msgstr "" +#: cps/templates/http_error.html:23 +msgid "Back to home" +msgstr "" + #: cps/templates/index.html:5 msgid "Discover (Random Books)" msgstr "" @@ -1801,11 +1805,11 @@ msgstr "" msgid "Change order" msgstr "" -#: cps/templates/shelf.html:56 +#: cps/templates/shelf.html:58 msgid "Do you really want to delete the shelf?" msgstr "" -#: cps/templates/shelf.html:59 +#: cps/templates/shelf.html:61 msgid "Shelf will be lost for everybody and forever!" msgstr "" diff --git a/readme.md b/readme.md index 6e6332e2..4539cd4c 100755 --- a/readme.md +++ b/readme.md @@ -12,7 +12,7 @@ Calibre-Web is a web app providing a clean interface for browsing, reading and d - full graphical setup - User management with fine grained per-user permissions - Admin interface -- User Interface in dutch, english, french, german, hungarian, italian, japanese, khmer, polish, russian, simplified chinese, spanish +- User Interface in dutch, english, french, german, hungarian, italian, japanese, khmer, polish, russian, simplified chinese, spanish, swedish - OPDS feed for eBook reader apps - Filter and search by titles, authors, tags, series and language - Create custom book collection (shelves) From 2422f782de275e13686d00d7c54b33f2dcc1ac62 Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Sat, 17 Nov 2018 16:51:30 +0100 Subject: [PATCH 008/135] Fix #701 --- cps/web.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cps/web.py b/cps/web.py index a72e3afc..d8544386 100644 --- a/cps/web.py +++ b/cps/web.py @@ -591,7 +591,7 @@ def modify_database_object(input_elements, db_book_object, db_object, db_session if db_type == 'custom' and db_element.value != add_element: new_element.value = add_element # new_element = db_element - elif db_type == 'language' and db_element.lang_code != add_element: + elif db_type == 'languages' and db_element.lang_code != add_element: db_element.lang_code = add_element # new_element = db_element elif db_type == 'series' and db_element.name != add_element: From e1b6fa25e9cb80bc203245b3daac37215f2c0275 Mon Sep 17 00:00:00 2001 From: haseo Date: Mon, 19 Nov 2018 15:54:28 +0800 Subject: [PATCH 009/135] A better solution to #681 --- cps/web.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/cps/web.py b/cps/web.py index 396066d9..5541ebcf 100644 --- a/cps/web.py +++ b/cps/web.py @@ -197,12 +197,7 @@ def get_locale(): if user.nickname != 'Guest': # if the account is the guest account bypass the config lang settings return user.locale translations = [item.language for item in babel.list_translations()] + ['en'] - preferred = [x.replace('-', '_') for x in request.accept_languages.values()] - - # In the case of Simplified Chinese, Accept-Language is "zh-CN", while our translation of Simplified Chinese is "zh_Hans_CN". - # TODO: This is Not a good solution, should be improved. - if "zh_CN" in preferred: - return "zh_Hans_CN" + preferred = [str(LC.parse(x, '-')) for x in request.accept_languages.values()] return negotiate_locale(preferred, translations) From cbc9169973269c29adfd5efe5a45bc35dc3e7a18 Mon Sep 17 00:00:00 2001 From: Jony <23194385+jony0008@users.noreply.github.com> Date: Fri, 23 Nov 2018 03:01:34 +0100 Subject: [PATCH 010/135] Update messages.po --- cps/translations/sv/LC_MESSAGES/messages.po | 46 ++++++++++----------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/cps/translations/sv/LC_MESSAGES/messages.po b/cps/translations/sv/LC_MESSAGES/messages.po index 14f961cd..0544e59c 100644 --- a/cps/translations/sv/LC_MESSAGES/messages.po +++ b/cps/translations/sv/LC_MESSAGES/messages.po @@ -5,18 +5,19 @@ # FIRST AUTHOR OzzieIsaacs, 2016. msgid "" msgstr "" -"Project-Id-Version: Calibre-Web\n" +"Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "POT-Creation-Date: 2018-11-17 16:38+0100\n" -"PO-Revision-Date: 2018-11-05 11:59+0100\n" +"PO-Revision-Date: 2018-11-23 02:57+0100\n" "Last-Translator: Jonatan Nyberg \n" "Language: sv\n" "Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.6.0\n" +"X-Generator: Poedit 2.2\n" #: cps/book_formats.py:129 cps/book_formats.py:130 cps/book_formats.py:134 #: cps/book_formats.py:138 cps/converter.py:11 cps/converter.py:27 @@ -29,7 +30,7 @@ msgstr "Utförande behörighet saknas" #: cps/converter.py:48 msgid "not configured" -msgstr "" +msgstr "inte konfigurerad" #: cps/helper.py:58 #, python-format @@ -130,23 +131,23 @@ msgstr "Klar" #: cps/helper.py:622 msgid "Unknown Status" -msgstr "" +msgstr "Okänd status" #: cps/helper.py:627 msgid "E-mail: " -msgstr "" +msgstr "E-post: " #: cps/helper.py:629 cps/helper.py:633 msgid "Convert: " -msgstr "" +msgstr "Konvertera: " #: cps/helper.py:631 msgid "Upload: " -msgstr "" +msgstr "Överför: " #: cps/helper.py:635 msgid "Unknown Task: " -msgstr "" +msgstr "Okänd uppgift: " #: cps/web.py:1155 cps/web.py:2858 msgid "Unknown" @@ -198,7 +199,7 @@ msgstr "Packar upp uppdateringspaketet" #: cps/web.py:1276 msgid "Replacing files" -msgstr "" +msgstr "Ersätta filer" #: cps/web.py:1277 msgid "Database connections are closed" @@ -206,7 +207,7 @@ msgstr "Databasanslutningarna är stängda" #: cps/web.py:1278 msgid "Stopping server" -msgstr "" +msgstr "Stoppar server" #: cps/web.py:1279 msgid "Update finished, please press okay and reload page" @@ -214,7 +215,7 @@ msgstr "Uppdatering klar, tryck på okej och uppdatera sidan" #: cps/web.py:1280 cps/web.py:1281 cps/web.py:1282 cps/web.py:1283 msgid "Update failed:" -msgstr "" +msgstr "Uppdateringen misslyckades:" #: cps/web.py:1306 msgid "Recently Added Books" @@ -258,12 +259,12 @@ msgstr "Fel vid öppnande av e-bok. Filen finns inte eller filen är inte tillg #: cps/web.py:1461 msgid "Publisher list" -msgstr "" +msgstr "Lista över förlag" #: cps/web.py:1475 #, python-format msgid "Publisher: %(name)s" -msgstr "" +msgstr "Förlag: %(name)s" #: cps/templates/index.xml:83 cps/web.py:1507 msgid "Series list" @@ -427,16 +428,16 @@ msgstr "Ogiltig hylla specificerad" #: cps/web.py:2499 #, python-format msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" -msgstr "" +msgstr "Tyvärr får du inte lägga till en bok på hyllan: %(shelfname)s" #: cps/web.py:2507 msgid "You are not allowed to edit public shelves" -msgstr "" +msgstr "Du får inte redigera offentliga hyllor" #: cps/web.py:2516 #, python-format msgid "Book is already part of the shelf: %(shelfname)s" -msgstr "" +msgstr "Boken är redan en del av hyllan: %(shelfname)s" #: cps/web.py:2530 #, python-format @@ -702,7 +703,7 @@ msgstr "%(langname)s är inte ett giltigt språk" #: cps/web.py:3768 msgid "Metadata successfully updated" -msgstr "" +msgstr "Metadata uppdaterades" #: cps/web.py:3777 msgid "Error editing book, please check logfile for details" @@ -1323,7 +1324,7 @@ msgstr "Visa författarval" #: cps/templates/config_view_edit.html:148 cps/templates/user_edit.html:94 msgid "Show publisher selection" -msgstr "" +msgstr "Visa urval av förlag" #: cps/templates/config_view_edit.html:152 cps/templates/user_edit.html:98 msgid "Show read and unread" @@ -1436,7 +1437,7 @@ msgstr "Sök" #: cps/templates/http_error.html:23 msgid "Back to home" -msgstr "" +msgstr "Tillbaka till hemmet" #: cps/templates/index.html:5 msgid "Discover (Random Books)" @@ -1484,11 +1485,11 @@ msgstr "Böcker ordnade efter författare" #: cps/templates/index.xml:69 cps/templates/layout.html:163 msgid "Publishers" -msgstr "" +msgstr "Förlag" #: cps/templates/index.xml:73 msgid "Books ordered by publisher" -msgstr "" +msgstr "Böcker ordnade efter förlag" #: cps/templates/index.xml:80 msgid "Books ordered by category" @@ -1945,4 +1946,3 @@ msgstr "Senaste hämtningar" #~ msgid "Choose a password" #~ msgstr "Välj ett lösenord" - From bc0d19f33d26cbeef4a292836b8f480db77e78f2 Mon Sep 17 00:00:00 2001 From: Jony <23194385+jony0008@users.noreply.github.com> Date: Fri, 23 Nov 2018 03:03:02 +0100 Subject: [PATCH 011/135] Fix typo --- cps/translations/sv/LC_MESSAGES/messages.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cps/translations/sv/LC_MESSAGES/messages.po b/cps/translations/sv/LC_MESSAGES/messages.po index 0544e59c..c7e6c033 100644 --- a/cps/translations/sv/LC_MESSAGES/messages.po +++ b/cps/translations/sv/LC_MESSAGES/messages.po @@ -427,7 +427,7 @@ msgstr "Ogiltig hylla specificerad" #: cps/web.py:2499 #, python-format -msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s" +msgid "Sorry you are not allowed to add a book to the shelf: %(shelfname)s" msgstr "Tyvärr får du inte lägga till en bok på hyllan: %(shelfname)s" #: cps/web.py:2507 From 863b77a5d7d342ac2f587c6f8d70679c707189a6 Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Sun, 25 Nov 2018 11:25:20 +0100 Subject: [PATCH 012/135] Fix #711 Fixing for send to kindle after uploading codecleaning --- cps/helper.py | 25 +++++++-- cps/templates/detail.html | 8 ++- cps/web.py | 104 ++++++++++++++++++-------------------- 3 files changed, 73 insertions(+), 64 deletions(-) diff --git a/cps/helper.py b/cps/helper.py index 2834bad1..43fb8520 100644 --- a/cps/helper.py +++ b/cps/helper.py @@ -114,9 +114,9 @@ def send_registration_mail(e_mail, user_name, default_password, resend=False): return def check_send_to_kindle(entry): - ''' + """ returns all available book formats for sending to Kindle - ''' + """ if len(entry.data): bookformats=list() if ub.config.config_ebookconverter == 0: @@ -156,6 +156,18 @@ def check_send_to_kindle(entry): return None +# Check if a reader is existing for any of the book formats, if not, return empty list, otherwise return +# list with supported formats +def check_read_formats(entry): + EXTENSIONS_READER = {'TXT', 'PDF', 'EPUB', 'ZIP', 'CBZ', 'TAR', 'CBT', 'RAR', 'CBR'} + bookformats = list() + if len(entry.data): + for ele in iter(entry.data): + if ele.format in EXTENSIONS_READER: + bookformats.append(ele.format.lower()) + return bookformats + + # Files are processed in the following order/priority: # 1: If Mobi file is existing, it's directly send to kindle email, # 2: If Epub file is existing, it's converted and send to kindle email, @@ -336,6 +348,7 @@ def delete_book_gdrive(book, book_format): error =_(u'Book path %(path)s not found on Google Drive', path=book.path) # file not found return error + def generate_random_password(): s = "abcdefghijklmnopqrstuvwxyz01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%&*()?" passlen = 8 @@ -349,12 +362,14 @@ def update_dir_stucture(book_id, calibrepath): else: return update_dir_structure_file(book_id, calibrepath) + def delete_book(book, calibrepath, book_format): if ub.config.config_use_google_drive: return delete_book_gdrive(book, book_format) else: return delete_book_file(book, calibrepath, book_format) + def get_book_cover(cover_path): if ub.config.config_use_google_drive: try: @@ -372,6 +387,7 @@ def get_book_cover(cover_path): else: return send_from_directory(os.path.join(ub.config.config_calibre_dir, cover_path), "cover.jpg") + # saves book cover to gdrive or locally def save_cover(url, book_path): img = requests.get(url) @@ -384,7 +400,7 @@ def save_cover(url, book_path): f = open(os.path.join(tmpDir, "uploaded_cover.jpg"), "wb") f.write(img.content) f.close() - uploadFileToEbooksFolder(os.path.join(book_path, 'cover.jpg'), os.path.join(tmpDir, f.name)) + gd.uploadFileToEbooksFolder(os.path.join(book_path, 'cover.jpg'), os.path.join(tmpDir, f.name)) web.app.logger.info("Cover is saved on Google Drive") return True @@ -394,6 +410,7 @@ def save_cover(url, book_path): web.app.logger.info("Cover is saved") return True + def do_download_file(book, book_format, data, headers): if ub.config.config_use_google_drive: startTime = time.time() @@ -621,6 +638,7 @@ def get_current_version_info(): return {'hash': content[0], 'datetime': content[1]} return False + def json_serial(obj): """JSON serializer for objects not serializable by default json code""" @@ -628,6 +646,7 @@ def json_serial(obj): return obj.isoformat() raise TypeError ("Type %s not serializable" % type(obj)) + def render_task_status(tasklist): #helper function to apply localize status information in tasklist entries renderedtasklist=list() diff --git a/cps/templates/detail.html b/cps/templates/detail.html index 27d73ae2..7631ce2f 100644 --- a/cps/templates/detail.html +++ b/cps/templates/detail.html @@ -57,17 +57,15 @@ {% endif %} {% endif %} - {% if entry.data|length %} + {% if reader_list %}
diff --git a/cps/web.py b/cps/web.py index 687a792c..558479cf 100644 --- a/cps/web.py +++ b/cps/web.py @@ -56,7 +56,6 @@ import tempfile from redirect import redirect_back import time import server -# import copy from reverseproxy import ReverseProxied try: @@ -116,8 +115,6 @@ EXTENSIONS_UPLOAD = {'txt', 'pdf', 'epub', 'mobi', 'azw', 'azw3', 'cbr', 'cbz', 'fb2', 'html', 'rtf', 'odt'} EXTENSIONS_CONVERT = {'pdf', 'epub', 'mobi', 'azw3', 'docx', 'rtf', 'fb2', 'lit', 'lrf', 'txt', 'html', 'rtf', 'odt'} -# EXTENSIONS_READER = set(['txt', 'pdf', 'epub', 'zip', 'cbz', 'tar', 'cbt'] + (['rar','cbr'] if rar_support else [])) - # Main code mimetypes.init() @@ -733,7 +730,8 @@ def feed_hot(): # ub.session.query(ub.Downloads).filter(book.Downloads.book_id == ub.Downloads.book_id).delete() # ub.session.commit() numBooks = entries.__len__() - pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page, numBooks) + pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), + config.config_books_per_page, numBooks) return render_xml_template('feed.xml', entries=entries, pagination=pagination) @@ -773,7 +771,8 @@ def feed_publisherindex(): def feed_publisher(book_id): off = request.args.get("offset") or 0 entries, __, pagination = fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1), - db.Books, db.Books.publishers.any(db.Publishers.id == book_id), [db.Books.timestamp.desc()]) + db.Books, db.Books.publishers.any(db.Publishers.id == book_id), + [db.Books.timestamp.desc()]) return render_xml_template('feed.xml', entries=entries, pagination=pagination) @@ -872,7 +871,8 @@ def get_opds_download_link(book_id, book_format): file_name = book.authors[0].name + '_' + file_name file_name = helper.get_valid_filename(file_name) headers = Headers() - headers["Content-Disposition"] = "attachment; filename*=UTF-8''%s.%s" % (quote(file_name.encode('utf8')), book_format) + headers["Content-Disposition"] = "attachment; filename*=UTF-8''%s.%s" % (quote(file_name.encode('utf8')), + book_format) try: headers["Content-Type"] = mimetypes.types_map['.' + book_format] except KeyError: @@ -895,32 +895,8 @@ def get_metadata_calibre_companion(uuid): @app.route("/ajax/emailstat") @login_required def get_email_status_json(): - answer=list() - # UIanswer = list() tasks=helper.global_WorkerThread.get_taskstatus() - '''if not current_user.role_admin(): - for task in tasks: - if task['user'] == current_user.nickname: - if task['formStarttime']: - task['starttime'] = format_datetime(task['formStarttime'], format='short', locale=get_locale()) - # task['formStarttime'] = "" - else: - if 'starttime' not in task: - task['starttime'] = "" - answer.append(task) - else: - for task in tasks: - if task['formStarttime']: - task['starttime'] = format_datetime(task['formStarttime'], format='short', locale=get_locale()) - task['formStarttime'] = "" - else: - if 'starttime' not in task: - task['starttime'] = "" - answer = tasks''' - - # UIanswer = copy.deepcopy(answer) answer = helper.render_task_status(tasks) - js=json.dumps(answer, default=helper.json_serial) response = make_response(js) response.headers["Content-Type"] = "application/json; charset=utf-8" @@ -1423,7 +1399,7 @@ def author_list(): @login_required_if_no_ano def author(book_id, page): entries, __, pagination = fill_indexpage(page, db.Books, db.Books.authors.any(db.Authors.id == book_id), - [db.Series.name, db.Books.series_index],db.books_series_link, db.Series) + [db.Series.name, db.Books.series_index],db.books_series_link, db.Series) if entries is None: flash(_(u"Error opening eBook. File does not exist or file is not accessible:"), category="error") return redirect(url_for("index")) @@ -1464,8 +1440,9 @@ def publisher_list(): def publisher(book_id, page): publisher = db.session.query(db.Publishers).filter(db.Publishers.id == book_id).first() if publisher: - entries, random, pagination = fill_indexpage(page, db.Books, db.Books.publishers.any(db.Publishers.id == book_id), - (db.Series.name, db.Books.series_index), db.books_series_link, db.Series) + entries, random, pagination = fill_indexpage(page, db.Books, + db.Books.publishers.any(db.Publishers.id == book_id), + (db.Series.name, db.Books.series_index), db.books_series_link, db.Series) return render_title_template('index.html', random=random, entries=entries, pagination=pagination, title=_(u"Publisher: %(name)s", name=publisher.name), page="publisher") else: @@ -1675,10 +1652,11 @@ def show_book(book_id): entries.tags = sort(entries.tags, key = lambda tag: tag.name) kindle_list = helper.check_send_to_kindle(entries) + reader_list = helper.check_read_formats(entries) return render_title_template('detail.html', entry=entries, cc=cc, is_xhr=request.is_xhr, title=entries.title, books_shelfs=book_in_shelfs, - have_read=have_read, kindle_list=kindle_list, page="book") + have_read=have_read, kindle_list=kindle_list, reader_list=reader_list, page="book") else: flash(_(u"Error opening eBook. File does not exist or file is not accessible:"), category="error") return redirect(url_for("index")) @@ -1795,7 +1773,8 @@ def delete_book(book_id, book_format): getattr(book, cc_string).remove(del_cc) db.session.delete(del_cc) else: - modify_database_object([u''], getattr(book, cc_string), db.cc_classes[c.id], db.session, 'custom') + modify_database_object([u''], getattr(book, cc_string), db.cc_classes[c.id], + db.session, 'custom') db.session.query(db.Books).filter(db.Books.id == book_id).delete() else: db.session.query(db.Data).filter(db.Data.book == book.id).filter(db.Data.format == book_format).delete() @@ -1871,7 +1850,8 @@ def revoke_watch_gdrive(): last_watch_response = config.config_google_drive_watch_changes_response if last_watch_response: try: - gdriveutils.stopChannel(gdriveutils.Gdrive.Instance().drive, last_watch_response['id'], last_watch_response['resourceId']) + gdriveutils.stopChannel(gdriveutils.Gdrive.Instance().drive, last_watch_response['id'], + last_watch_response['resourceId']) except HttpError: pass settings = ub.session.query(ub.Settings).first() @@ -2467,7 +2447,8 @@ def send_to_kindle(book_id, book_format, convert): if settings.get("mail_server", "mail.example.com") == "mail.example.com": flash(_(u"Please configure the SMTP mail settings first..."), category="error") elif current_user.kindle_mail: - result = helper.send_mail(book_id, book_format, convert, current_user.kindle_mail, config.config_calibre_dir, current_user.nickname) + result = helper.send_mail(book_id, book_format, convert, current_user.kindle_mail, config.config_calibre_dir, + current_user.nickname) if result is None: flash(_(u"Book successfully queued for sending to %(kindlemail)s", kindlemail=current_user.kindle_mail), category="success") @@ -2625,7 +2606,8 @@ def remove_from_shelf(shelf_id, book_id): else: app.logger.info("Sorry you are not allowed to remove a book from this shelf: %s" % shelf.name) if not request.is_xhr: - flash(_(u"Sorry you are not allowed to remove a book from this shelf: %(sname)s", sname=shelf.name), category="error") + flash(_(u"Sorry you are not allowed to remove a book from this shelf: %(sname)s", sname=shelf.name), + category="error") return redirect(url_for('index')) return "Sorry you are not allowed to remove a book from this shelf: %s" % shelf.name, 403 @@ -3111,9 +3093,9 @@ def configuration_helper(origin): content.config_rarfile_location = to_save["config_rarfile_location"].strip() else: flash(check[1], category="error") - return render_title_template("config_edit.html", content=config, origin=origin, gdrive=gdriveutils.gdrive_support, - goodreads=goodreads_support, rarfile_support=rar_support, - title=_(u"Basic Configuration")) + return render_title_template("config_edit.html", content=config, origin=origin, + gdrive=gdriveutils.gdrive_support, goodreads=goodreads_support, + rarfile_support=rar_support, title=_(u"Basic Configuration")) try: if content.config_use_google_drive and is_gdrive_ready() and not os.path.exists(config.config_calibre_dir + "/metadata.db"): gdriveutils.downloadFile(None, "metadata.db", config.config_calibre_dir + "/metadata.db") @@ -3128,15 +3110,17 @@ def configuration_helper(origin): logging.getLogger("book_formats").setLevel(config.config_log_level) except Exception as e: flash(e, category="error") - return render_title_template("config_edit.html", content=config, origin=origin, gdrive=gdriveutils.gdrive_support, - gdriveError=gdriveError, goodreads=goodreads_support, rarfile_support=rar_support, + return render_title_template("config_edit.html", content=config, origin=origin, + gdrive=gdriveutils.gdrive_support, gdriveError=gdriveError, + goodreads=goodreads_support, rarfile_support=rar_support, title=_(u"Basic Configuration"), page="config") if db_change: reload(db) if not db.setup_db(): flash(_(u'DB location is not valid, please enter correct path'), category="error") - return render_title_template("config_edit.html", content=config, origin=origin, gdrive=gdriveutils.gdrive_support, - gdriveError=gdriveError, goodreads=goodreads_support, rarfile_support=rar_support, + return render_title_template("config_edit.html", content=config, origin=origin, + gdrive=gdriveutils.gdrive_support,gdriveError=gdriveError, + goodreads=goodreads_support, rarfile_support=rar_support, title=_(u"Basic Configuration"), page="config") if reboot_required: # stop Server @@ -3150,8 +3134,9 @@ def configuration_helper(origin): else: gdrivefolders=list() return render_title_template("config_edit.html", origin=origin, success=success, content=config, - show_authenticate_google_drive=not is_gdrive_ready(), gdrive=gdriveutils.gdrive_support, - gdriveError=gdriveError, gdrivefolders=gdrivefolders, rarfile_support=rar_support, + show_authenticate_google_drive=not is_gdrive_ready(), + gdrive=gdriveutils.gdrive_support, gdriveError=gdriveError, + gdrivefolders=gdrivefolders, rarfile_support=rar_support, goodreads=goodreads_support, title=_(u"Basic Configuration"), page="config") @@ -3581,7 +3566,8 @@ def upload_single_file(request, book, book_id): return redirect(url_for('show_book', book_id=book.id)) file_size = os.path.getsize(saved_filename) - is_format = db.session.query(db.Data).filter(db.Data.book == book_id).filter(db.Data.format == file_ext.upper()).first() + is_format = db.session.query(db.Data).filter(db.Data.book == book_id).\ + filter(db.Data.format == file_ext.upper()).first() # Format entry already exists, no need to update the database if is_format: @@ -3611,7 +3597,8 @@ def upload_cover(request, book): try: os.makedirs(filepath) except OSError: - flash(_(u"Failed to create path for cover %(path)s (Permission denied).", cover=filepath), category="error") + flash(_(u"Failed to create path for cover %(path)s (Permission denied).", cover=filepath), + category="error") return redirect(url_for('show_book', book_id=book.id)) try: requested_file.save(saved_filename) @@ -3826,11 +3813,13 @@ def upload(): try: os.unlink(meta.file_path) except OSError: - flash(_(u"Failed to delete file %(file)s (Permission denied).", file= meta.file_path), category="warning") + flash(_(u"Failed to delete file %(file)s (Permission denied).", file= meta.file_path), + category="warning") if meta.cover is None: has_cover = 0 - copyfile(os.path.join(config.get_main_dir, "cps/static/generic_cover.jpg"), os.path.join(filepath, "cover.jpg")) + copyfile(os.path.join(config.get_main_dir, "cps/static/generic_cover.jpg"), + os.path.join(filepath, "cover.jpg")) else: has_cover = 1 move(meta.cover, os.path.join(filepath, "cover.jpg")) @@ -3896,8 +3885,7 @@ def upload(): # save data to database, reread data db.session.commit() db.session.connection().connection.connection.create_function("title_sort", 1, db.title_sort) - book = db.session.query(db.Books) \ - .filter(db.Books.id == book_id).filter(common_filters()).first() + book = db.session.query(db.Books).filter(db.Books.id == book_id).filter(common_filters()).first() # upload book to gdrive if nesseccary and add "(bookid)" to folder name if config.config_use_google_drive: @@ -3919,14 +3907,18 @@ def upload(): for author in db_book.authors: author_names.append(author.name) if len(request.files.getlist("btn-upload")) < 2: - cc = db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all() + cc = db.session.query(db.Custom_Columns).filter(db.Custom_Columns. + datatype.notin_(db.cc_exceptions)).all() if current_user.role_edit() or current_user.role_admin(): return render_title_template('book_edit.html', book=book, authors=author_names, cc=cc, title=_(u"edit metadata"), page="upload") book_in_shelfs = [] - flg_send_to_kindle = helper.chk_send_to_kindle(book_id) + kindle_list = helper.check_send_to_kindle(book) + reader_list = helper.check_read_formats(book) + return render_title_template('detail.html', entry=book, cc=cc, - title=book.title, books_shelfs=book_in_shelfs, flg_kindle=flg_send_to_kindle, page="upload") + title=book.title, books_shelfs=book_in_shelfs, kindle_list=kindle_list, + reader_list=reader_list, page="upload") return redirect(url_for("index")) From 8c93a7afdd7b1cc45d87af7a736f77448e09810a Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Sun, 25 Nov 2018 12:48:53 +0100 Subject: [PATCH 013/135] Updated tests --- test/Calibre-Web TestSummary.html | 919 +++++++++++------------------- 1 file changed, 336 insertions(+), 583 deletions(-) diff --git a/test/Calibre-Web TestSummary.html b/test/Calibre-Web TestSummary.html index 85f133b6..e9503755 100644 --- a/test/Calibre-Web TestSummary.html +++ b/test/Calibre-Web TestSummary.html @@ -32,15 +32,15 @@
-

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

+

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

-

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

+

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

-

Duration: 0:18:04.176119

+

Duration: 0:17:51.820189

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