\n"
"Language: pl\n"
@@ -119,710 +115,750 @@ msgstr ""
msgid "Unrar binary file not found"
msgstr ""
-#: cps/web.py:1127
+#: cps/web.py:1112 cps/web.py:2778
+msgid "Unknown"
+msgstr ""
+
+#: cps/web.py:1121 cps/web.py:1152
+msgid "HTTP Error"
+msgstr ""
+
+#: cps/web.py:1123 cps/web.py:1154
+msgid "Connection error"
+msgstr ""
+
+#: cps/web.py:1125 cps/web.py:1156
+msgid "Timeout while establishing connection"
+msgstr ""
+
+#: cps/web.py:1127 cps/web.py:1158
+msgid "General error"
+msgstr ""
+
+#: cps/web.py:1133
+msgid "Unexpected data while reading update information"
+msgstr ""
+
+#: cps/web.py:1140
+msgid "No update available. You already have the latest version installed"
+msgstr ""
+
+#: cps/web.py:1165
+msgid "A new update is available. Click on the button below to update to the latest version."
+msgstr ""
+
+#: cps/web.py:1215
+msgid "Could not fetch update information"
+msgstr ""
+
+#: cps/web.py:1230
msgid "Requesting update package"
msgstr "Żądanie o pakiet aktualizacji"
-#: cps/web.py:1128
+#: cps/web.py:1231
msgid "Downloading update package"
msgstr "Pobieranie pakietu aktualizacji"
-#: cps/web.py:1129
+#: cps/web.py:1232
msgid "Unzipping update package"
msgstr "Rozpakowywanie pakietu aktualizacji"
-#: cps/web.py:1130
+#: cps/web.py:1233
msgid "Files are replaced"
msgstr "Pliki zostały zastąpione"
-#: cps/web.py:1131
+#: cps/web.py:1234
msgid "Database connections are closed"
msgstr "Połączenia z bazą danych zostały zakończone"
-#: cps/web.py:1132
+#: cps/web.py:1235
msgid "Server is stopped"
msgstr "Serwer jest zatrzymany"
-#: cps/web.py:1133
+#: cps/web.py:1236
msgid "Update finished, please press okay and reload page"
msgstr "Aktualizacja zakończona, proszę nacisnąć OK i odświeżyć stronę"
-#: cps/web.py:1153
+#: cps/web.py:1256
msgid "Recently Added Books"
msgstr ""
-#: cps/web.py:1163
+#: cps/web.py:1266
msgid "Newest Books"
msgstr ""
-#: cps/web.py:1175
+#: cps/web.py:1278
msgid "Oldest Books"
msgstr ""
-#: cps/web.py:1187
+#: cps/web.py:1290
msgid "Books (A-Z)"
msgstr ""
-#: cps/web.py:1198
+#: cps/web.py:1301
msgid "Books (Z-A)"
msgstr ""
-#: cps/web.py:1227
+#: cps/web.py:1330
msgid "Hot Books (most downloaded)"
msgstr "Najpopularniejsze książki (najczęściej pobierane)"
-#: cps/web.py:1240
+#: cps/web.py:1343
msgid "Best rated books"
msgstr "Najlepiej oceniane książki"
-#: cps/templates/index.xml:36 cps/web.py:1252
+#: cps/templates/index.xml:36 cps/web.py:1355
msgid "Random Books"
msgstr "Losowe książki"
-#: cps/web.py:1267
+#: cps/web.py:1370
msgid "Author list"
msgstr "Lista autorów"
-#: cps/web.py:1279 cps/web.py:1342 cps/web.py:1497 cps/web.py:2049
+#: cps/web.py:1382 cps/web.py:1445 cps/web.py:1600 cps/web.py:2152
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Błąd otwierania e-booka. Plik nie istnieje lub plik nie jest dostępny:"
-#: cps/templates/index.xml:73 cps/web.py:1326
+#: cps/templates/index.xml:73 cps/web.py:1429
msgid "Series list"
msgstr "Lista serii"
-#: cps/web.py:1340
+#: cps/web.py:1443
#, python-format
msgid "Series: %(serie)s"
msgstr "Seria: %(serie)s"
-#: cps/web.py:1367
+#: cps/web.py:1470
msgid "Available languages"
msgstr "Dostępne języki"
-#: cps/web.py:1384
+#: cps/web.py:1487
#, python-format
msgid "Language: %(name)s"
msgstr "Język: %(name)s"
-#: cps/templates/index.xml:66 cps/web.py:1395
+#: cps/templates/index.xml:66 cps/web.py:1498
msgid "Category list"
msgstr "Lista kategorii"
-#: cps/web.py:1409
+#: cps/web.py:1512
#, python-format
msgid "Category: %(name)s"
msgstr "Kategoria: %(name)s"
-#: cps/templates/layout.html:71 cps/web.py:1548
+#: cps/templates/layout.html:71 cps/web.py:1651
msgid "Tasks"
msgstr ""
-#: cps/web.py:1578
+#: cps/web.py:1681
msgid "Statistics"
msgstr "Statystyki"
-#: cps/web.py:1683
+#: cps/web.py:1786
msgid "Callback domain is not verified, please follow steps to verify domain in google developer console"
msgstr ""
-#: cps/web.py:1758
+#: cps/web.py:1861
msgid "Server restarted, please reload page"
msgstr "Serwer uruchomiony ponownie, proszę odświeżyć stronę"
-#: cps/web.py:1761
+#: cps/web.py:1864
msgid "Performing shutdown of server, please close window"
msgstr "Wykonano wyłączenie serwera, proszę zamknąć okno"
-#: cps/web.py:1780
+#: cps/web.py:1883
msgid "Update done"
msgstr "Aktualizacja zakończona"
-#: cps/web.py:1850
+#: cps/web.py:1953
msgid "Published after "
msgstr ""
-#: cps/web.py:1857
+#: cps/web.py:1960
msgid "Published before "
msgstr ""
-#: cps/web.py:1871
+#: cps/web.py:1974
#, python-format
msgid "Rating <= %(rating)s"
msgstr ""
-#: cps/web.py:1873
+#: cps/web.py:1976
#, python-format
msgid "Rating >= %(rating)s"
msgstr ""
-#: cps/web.py:1932 cps/web.py:1941
+#: cps/web.py:2035 cps/web.py:2044
msgid "search"
msgstr "szukaj"
#: cps/templates/index.xml:44 cps/templates/index.xml:48
-#: cps/templates/layout.html:146 cps/web.py:2008
+#: cps/templates/layout.html:146 cps/web.py:2111
msgid "Read Books"
msgstr "Przeczytane książki"
#: cps/templates/index.xml:52 cps/templates/index.xml:56
-#: cps/templates/layout.html:148 cps/web.py:2011
+#: cps/templates/layout.html:148 cps/web.py:2114
msgid "Unread Books"
msgstr "Nieprzeczytane książki"
-#: cps/web.py:2059 cps/web.py:2061 cps/web.py:2063 cps/web.py:2075
+#: cps/web.py:2162 cps/web.py:2164 cps/web.py:2166 cps/web.py:2178
msgid "Read a Book"
msgstr "Czytaj książkę"
-#: cps/web.py:2141 cps/web.py:3019
+#: cps/web.py:2244 cps/web.py:3129
msgid "Please fill out all fields!"
msgstr "Proszę wypełnić wszystkie pola!"
-#: cps/web.py:2142 cps/web.py:2163 cps/web.py:2167 cps/web.py:2172
-#: cps/web.py:2174
+#: cps/web.py:2245 cps/web.py:2266 cps/web.py:2270 cps/web.py:2275
+#: cps/web.py:2277
msgid "register"
msgstr "rejestracja"
-#: cps/web.py:2162 cps/web.py:3235
+#: cps/web.py:2265 cps/web.py:3345
msgid "An unknown error occurred. Please try again later."
msgstr ""
-#: cps/web.py:2165
+#: cps/web.py:2268
msgid "Your e-mail is not allowed to register"
msgstr ""
-#: cps/web.py:2168
+#: cps/web.py:2271
msgid "Confirmation e-mail was send to your e-mail account."
msgstr ""
-#: cps/web.py:2171
+#: cps/web.py:2274
msgid "This username or e-mail address is already in use."
msgstr ""
-#: cps/web.py:2188 cps/web.py:2284
+#: cps/web.py:2291 cps/web.py:2387
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "Zalogowałeś się jako: '%(nickname)s'"
-#: cps/web.py:2193
+#: cps/web.py:2296
msgid "Wrong Username or Password"
msgstr "Błędna nazwa użytkownika lub hasło"
-#: cps/web.py:2199 cps/web.py:2220
+#: cps/web.py:2302 cps/web.py:2323
msgid "login"
msgstr "logowanie"
-#: cps/web.py:2232 cps/web.py:2263
+#: cps/web.py:2335 cps/web.py:2366
msgid "Token not found"
msgstr ""
-#: cps/web.py:2240 cps/web.py:2271
+#: cps/web.py:2343 cps/web.py:2374
msgid "Token has expired"
msgstr ""
-#: cps/web.py:2248
+#: cps/web.py:2351
msgid "Success! Please return to your device"
msgstr ""
-#: cps/web.py:2298
+#: cps/web.py:2401
msgid "Please configure the SMTP mail settings first..."
msgstr "Proszę najpierw skonfigurować ustawienia SMTP poczty e-mail..."
-#: cps/web.py:2302
+#: cps/web.py:2405
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr ""
-#: cps/web.py:2306
+#: cps/web.py:2409
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr "Wystąpił błąd podczas wysyłania tej książki: %(res)s"
-#: cps/web.py:2308 cps/web.py:3073
+#: cps/web.py:2411 cps/web.py:3183
msgid "Please configure your kindle e-mail address first..."
msgstr ""
-#: cps/web.py:2352
+#: cps/web.py:2455
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Książka została dodana do półki: %(sname)s"
-#: cps/web.py:2363
+#: cps/web.py:2466
msgid "Invalid shelf specified"
msgstr ""
-#: cps/web.py:2368
+#: cps/web.py:2471
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr ""
-#: cps/web.py:2373
+#: cps/web.py:2476
msgid "User is not allowed to edit public shelves"
msgstr ""
-#: cps/web.py:2391
+#: cps/web.py:2494
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr ""
-#: cps/web.py:2405
+#: cps/web.py:2508
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2407
+#: cps/web.py:2510
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2444
+#: cps/web.py:2547
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Książka została usunięta z półki: %(sname)s"
-#: cps/web.py:2450
+#: cps/web.py:2553
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2470 cps/web.py:2494
+#: cps/web.py:2573 cps/web.py:2597
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr "Półka o nazwie '%(title)s' już istnieje."
-#: cps/web.py:2475
+#: cps/web.py:2578
#, python-format
msgid "Shelf %(title)s created"
msgstr "Półka %(title)s została utworzona"
-#: cps/web.py:2477 cps/web.py:2505
+#: cps/web.py:2580 cps/web.py:2608
msgid "There was an error"
msgstr "Wystąpił błąd"
-#: cps/web.py:2478 cps/web.py:2480
+#: cps/web.py:2581 cps/web.py:2583
msgid "create a shelf"
msgstr "utwórz półkę"
-#: cps/web.py:2503
+#: cps/web.py:2606
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Półka %(title)s została zmieniona"
-#: cps/web.py:2506 cps/web.py:2508
+#: cps/web.py:2609 cps/web.py:2611
msgid "Edit a shelf"
msgstr "Edytuj półkę"
-#: cps/web.py:2529
+#: cps/web.py:2632
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "pomyślnie usunięto półkę %(name)s"
-#: cps/web.py:2551
+#: cps/web.py:2659
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Półka: '%(name)s'"
-#: cps/web.py:2554
+#: cps/web.py:2662
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr ""
-#: cps/web.py:2585
+#: cps/web.py:2693
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Zmieniono kolejność półki: '%(name)s'"
-#: cps/web.py:2614 cps/web.py:3025
+#: cps/web.py:2722 cps/web.py:3135
msgid "E-mail is not from valid domain"
msgstr ""
-#: cps/web.py:2616 cps/web.py:2657 cps/web.py:2660
+#: cps/web.py:2724 cps/web.py:2765 cps/web.py:2768
#, python-format
msgid "%(name)s's profile"
msgstr "Profil użytkownika %(name)s"
-#: cps/web.py:2655
+#: cps/web.py:2763
msgid "Found an existing account for this e-mail address."
msgstr ""
-#: cps/web.py:2658
+#: cps/web.py:2766
msgid "Profile updated"
msgstr "Zaktualizowano profil"
-#: cps/web.py:2670
-msgid "Unknown"
-msgstr ""
-
-#: cps/web.py:2684
+#: cps/web.py:2794
msgid "Admin page"
msgstr "Portal administracyjny"
-#: cps/web.py:2762 cps/web.py:2935
+#: cps/web.py:2872 cps/web.py:3045
msgid "Calibre-Web configuration updated"
msgstr "Konfiguracja Calibre-Web została zaktualizowana"
-#: cps/templates/admin.html:91 cps/web.py:2775
+#: cps/templates/admin.html:100 cps/web.py:2885
msgid "UI Configuration"
msgstr ""
-#: cps/web.py:2793
+#: cps/web.py:2903
msgid "Import of optional Google Drive requirements missing"
msgstr ""
-#: cps/web.py:2796
+#: cps/web.py:2906
msgid "client_secrets.json is missing or not readable"
msgstr ""
-#: cps/web.py:2801 cps/web.py:2828
+#: cps/web.py:2911 cps/web.py:2938
msgid "client_secrets.json is not configured for web application"
msgstr ""
-#: cps/templates/admin.html:90 cps/web.py:2831 cps/web.py:2857 cps/web.py:2869
-#: cps/web.py:2911 cps/web.py:2926 cps/web.py:2943 cps/web.py:2950
-#: cps/web.py:2967
+#: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979
+#: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060
+#: cps/web.py:3077
msgid "Basic Configuration"
msgstr "Podstawowa konfiguracja"
-#: cps/web.py:2854
+#: cps/web.py:2964
msgid "Keyfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2866
+#: cps/web.py:2976
msgid "Certfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2908
+#: cps/web.py:3018
msgid "Logfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2947
+#: cps/web.py:3057
msgid "DB location is not valid, please enter correct path"
msgstr "Lokalizacja bazy danych jest nieprawidłowa, wpisz poprawną ścieżkę"
-#: cps/templates/admin.html:31 cps/web.py:3021 cps/web.py:3027 cps/web.py:3043
+#: cps/templates/admin.html:33 cps/web.py:3131 cps/web.py:3137 cps/web.py:3153
msgid "Add new user"
msgstr "Dodaj nowego użytkownika"
-#: cps/web.py:3033
+#: cps/web.py:3143
#, python-format
msgid "User '%(user)s' created"
msgstr "Użytkownik '%(user)s' został utworzony"
-#: cps/web.py:3037
+#: cps/web.py:3147
msgid "Found an existing account for this e-mail address or nickname."
msgstr ""
-#: cps/web.py:3061 cps/web.py:3075
+#: cps/web.py:3171 cps/web.py:3185
msgid "E-mail server settings updated"
msgstr ""
-#: cps/web.py:3068
+#: cps/web.py:3178
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr ""
-#: cps/web.py:3071
+#: cps/web.py:3181
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr ""
-#: cps/web.py:3076
+#: cps/web.py:3186
msgid "Edit e-mail server settings"
msgstr ""
-#: cps/web.py:3101
+#: cps/web.py:3211
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Użytkownik '%(nick)s' został usunięty"
-#: cps/web.py:3210
+#: cps/web.py:3320
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Użytkownik '%(nick)s' został zaktualizowany"
-#: cps/web.py:3213
+#: cps/web.py:3323
msgid "An unknown error occured."
msgstr "Wystąpił nieznany błąd."
-#: cps/web.py:3215
+#: cps/web.py:3325
#, python-format
msgid "Edit User %(nick)s"
msgstr "Edytuj użytkownika %(nick)s"
-#: cps/web.py:3232
+#: cps/web.py:3342
#, python-format
msgid "Password for user %(user)s reset"
msgstr ""
-#: cps/web.py:3252
+#: cps/web.py:3362
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr ""
-#: cps/web.py:3279 cps/web.py:3555 cps/web.py:3560 cps/web.py:3715
+#: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827
msgid "edit metadata"
msgstr "edytuj metadane"
-#: cps/web.py:3289 cps/web.py:3585
+#: cps/web.py:3401 cps/web.py:3697
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "Rozszerzenie pliku '%(ext)s' nie jest dozwolone do przesłania na ten serwer"
-#: cps/web.py:3293 cps/web.py:3589
+#: cps/web.py:3405 cps/web.py:3701
msgid "File to be uploaded must have an extension"
msgstr "Plik do przesłania musi mieć rozszerzenie"
-#: cps/web.py:3305 cps/web.py:3609
+#: cps/web.py:3417 cps/web.py:3721
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr "Nie udało się utworzyć łącza %(path)s (Odmowa dostępu)."
-#: cps/web.py:3310
+#: cps/web.py:3422
#, python-format
msgid "Failed to store file %(file)s."
msgstr ""
-#: cps/web.py:3326
+#: cps/web.py:3438
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr ""
-#: cps/web.py:3343
+#: cps/web.py:3455
#, python-format
msgid "Failed to create path for cover %(path)s (Permission denied)."
msgstr ""
-#: cps/web.py:3350
+#: cps/web.py:3462
#, python-format
msgid "Failed to store cover-file %(cover)s."
msgstr ""
-#: cps/web.py:3353
+#: cps/web.py:3465
msgid "Cover-file is not a valid image file"
msgstr ""
-#: cps/web.py:3370 cps/web.py:3374
+#: cps/web.py:3482 cps/web.py:3486
msgid "unknown"
msgstr ""
-#: cps/web.py:3396
+#: cps/web.py:3508
msgid "Cover is not a jpg file, can't save"
msgstr ""
-#: cps/web.py:3442
+#: cps/web.py:3554
#, python-format
msgid "%(langname)s is not a valid language"
msgstr ""
-#: cps/web.py:3564
+#: cps/web.py:3676
msgid "Error editing book, please check logfile for details"
msgstr ""
-#: cps/web.py:3614
+#: cps/web.py:3726
#, python-format
msgid "Failed to store file %(file)s (Permission denied)."
msgstr "Nie można przechowywać pliku %(file)s (Odmowa dostępu)."
-#: cps/web.py:3619
+#: cps/web.py:3731
#, python-format
msgid "Failed to delete file %(file)s (Permission denied)."
msgstr "Nie udało się usunąć pliku %(file)s (Odmowa dostępu)."
-#: cps/web.py:3701
+#: cps/web.py:3813
#, python-format
msgid "File %(file)s uploaded"
msgstr ""
-#: cps/web.py:3731
+#: cps/web.py:3843
msgid "Source or destination format for conversion missing"
msgstr ""
-#: cps/web.py:3741
+#: cps/web.py:3853
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr ""
-#: cps/web.py:3745
+#: cps/web.py:3857
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr ""
-#: cps/worker.py:215 cps/worker.py:387
+#: cps/worker.py:215 cps/worker.py:398
msgid "Started"
msgstr ""
-#: cps/worker.py:237
+#: cps/worker.py:251
#, python-format
msgid "Convertertool %(converter)s not found"
msgstr ""
-#: cps/worker.py:272
+#: cps/worker.py:287
#, python-format
msgid "Ebook-converter failed: %(error)s"
msgstr ""
-#: cps/worker.py:283
+#: cps/worker.py:298
#, python-format
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
msgstr ""
-#: cps/worker.py:317 cps/worker.py:377 cps/worker.py:438
-msgid "Finished"
-msgstr ""
-
-#: cps/worker.py:344 cps/worker.py:363
+#: cps/worker.py:355 cps/worker.py:374
msgid "Waiting"
msgstr ""
-#: cps/worker.py:351
+#: cps/worker.py:362
msgid "This e-mail has been sent via Calibre-Web."
msgstr ""
-#: cps/worker.py:472
+#: cps/worker.py:388 cps/worker.py:484
+msgid "Finished"
+msgstr ""
+
+#: cps/worker.py:476
msgid "Failed"
msgstr ""
-#: cps/templates/admin.html:4
+#: cps/templates/admin.html:6
msgid "User list"
msgstr "Lista użytkowników"
-#: cps/templates/admin.html:7
+#: cps/templates/admin.html:9
msgid "Nickname"
msgstr "Nazwa użytkownika"
-#: cps/templates/admin.html:8
+#: cps/templates/admin.html:10
msgid "E-mail"
msgstr ""
-#: cps/templates/admin.html:9
+#: cps/templates/admin.html:11
msgid "Kindle"
msgstr "Kindle"
-#: cps/templates/admin.html:10
+#: cps/templates/admin.html:12
msgid "DLS"
msgstr "DLS"
-#: cps/templates/admin.html:11 cps/templates/layout.html:74
+#: cps/templates/admin.html:13 cps/templates/layout.html:74
msgid "Admin"
msgstr "Portal administracyjny"
-#: cps/templates/admin.html:12 cps/templates/detail.html:22
+#: cps/templates/admin.html:14 cps/templates/detail.html:22
#: cps/templates/detail.html:31
msgid "Download"
msgstr "Pobierz"
-#: cps/templates/admin.html:13 cps/templates/layout.html:64
+#: cps/templates/admin.html:15 cps/templates/layout.html:64
msgid "Upload"
msgstr "Wyślij"
-#: cps/templates/admin.html:14
+#: cps/templates/admin.html:16
msgid "Edit"
msgstr "Edytuj"
-#: cps/templates/admin.html:32
+#: cps/templates/admin.html:39
msgid "SMTP e-mail server settings"
msgstr ""
-#: cps/templates/admin.html:35 cps/templates/email_edit.html:11
+#: cps/templates/admin.html:42 cps/templates/email_edit.html:11
msgid "SMTP hostname"
msgstr "Adres serwera SMTP"
-#: cps/templates/admin.html:36
+#: cps/templates/admin.html:43
msgid "SMTP port"
msgstr "Port serwera SMTP"
-#: cps/templates/admin.html:37
+#: cps/templates/admin.html:44
msgid "SSL"
msgstr "SSL"
-#: cps/templates/admin.html:38 cps/templates/email_edit.html:27
+#: cps/templates/admin.html:45 cps/templates/email_edit.html:27
msgid "SMTP login"
msgstr "Nazwa użytkownika SMTP"
-#: cps/templates/admin.html:39
+#: cps/templates/admin.html:46
msgid "From mail"
msgstr "Wyślij z adresu e-mail"
-#: cps/templates/admin.html:48
+#: cps/templates/admin.html:56
msgid "Change SMTP settings"
msgstr "Zmień ustawienia SMTP"
-#: cps/templates/admin.html:50
+#: cps/templates/admin.html:62
msgid "Configuration"
msgstr "Konfiguracja"
-#: cps/templates/admin.html:53
+#: cps/templates/admin.html:65
msgid "Calibre DB dir"
msgstr "Folder bazy danych Calibre"
-#: cps/templates/admin.html:57
+#: cps/templates/admin.html:69
msgid "Log level"
msgstr ""
-#: cps/templates/admin.html:61
+#: cps/templates/admin.html:73
msgid "Port"
msgstr "Port"
-#: cps/templates/admin.html:67 cps/templates/config_view_edit.html:23
+#: cps/templates/admin.html:79 cps/templates/config_view_edit.html:23
msgid "Books per page"
msgstr "Ilość książek na stronie"
-#: cps/templates/admin.html:71
+#: cps/templates/admin.html:83
msgid "Uploading"
msgstr "Wysyłanie"
-#: cps/templates/admin.html:75
+#: cps/templates/admin.html:87
msgid "Anonymous browsing"
msgstr ""
-#: cps/templates/admin.html:79
+#: cps/templates/admin.html:91
msgid "Public registration"
msgstr "Publiczna rejestracja"
-#: cps/templates/admin.html:83 cps/templates/remote_login.html:4
+#: cps/templates/admin.html:95 cps/templates/remote_login.html:4
msgid "Remote login"
msgstr ""
-#: cps/templates/admin.html:93
+#: cps/templates/admin.html:106
msgid "Administration"
msgstr "Zarządzanie"
-#: cps/templates/admin.html:94
-msgid "Current commit timestamp"
-msgstr "Znacznik czasowy zainstalowanej wersji"
-
-#: cps/templates/admin.html:95
-msgid "Newest commit timestamp"
-msgstr "Znacznik czasowy nowej wersji"
-
-#: cps/templates/admin.html:97
+#: cps/templates/admin.html:107
msgid "Reconnect to Calibre DB"
msgstr "Połącz ponownie z bazą danych Calibre"
-#: cps/templates/admin.html:98
+#: cps/templates/admin.html:108
msgid "Restart Calibre-Web"
msgstr "Uruchom ponownie Calibre Web"
-#: cps/templates/admin.html:99
+#: cps/templates/admin.html:109
msgid "Stop Calibre-Web"
msgstr "Zatrzymaj Calibre Web"
-#: cps/templates/admin.html:100
+#: cps/templates/admin.html:115
+msgid "Update"
+msgstr ""
+
+#: cps/templates/admin.html:119
+msgid "Version"
+msgstr ""
+
+#: cps/templates/admin.html:120
+msgid "Details"
+msgstr ""
+
+#: cps/templates/admin.html:126
+msgid "Current version"
+msgstr ""
+
+#: cps/templates/admin.html:132
msgid "Check for update"
msgstr "Sprawdź aktualizacje"
-#: cps/templates/admin.html:101
+#: cps/templates/admin.html:133
msgid "Perform Update"
msgstr "Wykonaj aktualizację"
-#: cps/templates/admin.html:110
+#: cps/templates/admin.html:145
msgid "Do you really want to restart Calibre-Web?"
msgstr "Na pewno chcesz uruchomić ponownie Calibre Web?"
-#: cps/templates/admin.html:115 cps/templates/admin.html:129
-#: cps/templates/admin.html:150 cps/templates/shelf.html:59
+#: cps/templates/admin.html:150 cps/templates/admin.html:164
+#: cps/templates/admin.html:184 cps/templates/shelf.html:59
msgid "Ok"
msgstr "OK"
-#: cps/templates/admin.html:116 cps/templates/admin.html:130
+#: cps/templates/admin.html:151 cps/templates/admin.html:165
#: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200
#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75
@@ -831,11 +867,11 @@ msgstr "OK"
msgid "Back"
msgstr "Wróć"
-#: cps/templates/admin.html:128
+#: cps/templates/admin.html:163
msgid "Do you really want to stop Calibre-Web?"
msgstr "Na pewno chcesz zatrzymać Calibre Web?"
-#: cps/templates/admin.html:141
+#: cps/templates/admin.html:175
msgid "Updating, please do not reload page"
msgstr "Aktualizowanie, proszę nie odświeżać strony"
@@ -1876,3 +1912,9 @@ msgstr "Ostatnio pobierane"
#~ msgid "File extension \"%(ext)s\" is not allowed to be uploaded to this server"
#~ msgstr "Rozszerzenie pliku \"%(ext)s\" nie jest dozwolone do przesłania na ten serwer"
+#~ msgid "Current commit timestamp"
+#~ msgstr "Znacznik czasowy zainstalowanej wersji"
+
+#~ msgid "Newest commit timestamp"
+#~ msgstr "Znacznik czasowy nowej wersji"
+
diff --git a/cps/translations/ru/LC_MESSAGES/messages.po b/cps/translations/ru/LC_MESSAGES/messages.po
index 7935838f..b6c1d418 100644
--- a/cps/translations/ru/LC_MESSAGES/messages.po
+++ b/cps/translations/ru/LC_MESSAGES/messages.po
@@ -3,18 +3,11 @@
# This file is distributed under the same license as the Calibre-Web project
# Pavel Korovin , 2017.
#
-# Translators:
-# Anton Bershanskiy , 2016
-# Александр, 2015
-# Nikolai Prokoschenko , 2004
-# Vladislav , 2015
-# Yuri Kozlov , 2004-2005
-# Сергей , 2015
msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
-"POT-Creation-Date: 2018-09-14 20:34+0200\n"
+"POT-Creation-Date: 2018-09-14 21:11+0200\n"
"PO-Revision-Date: 2017-04-30 00:47+0300\n"
"Last-Translator: Pavel Korovin \n"
"Language: ru\n"
@@ -121,528 +114,560 @@ msgstr ""
msgid "Unrar binary file not found"
msgstr ""
-#: cps/web.py:1127
+#: cps/web.py:1112 cps/web.py:2778
+msgid "Unknown"
+msgstr "Неизвестно"
+
+#: cps/web.py:1121 cps/web.py:1152
+msgid "HTTP Error"
+msgstr ""
+
+#: cps/web.py:1123 cps/web.py:1154
+msgid "Connection error"
+msgstr ""
+
+#: cps/web.py:1125 cps/web.py:1156
+msgid "Timeout while establishing connection"
+msgstr ""
+
+#: cps/web.py:1127 cps/web.py:1158
+msgid "General error"
+msgstr ""
+
+#: cps/web.py:1133
+msgid "Unexpected data while reading update information"
+msgstr ""
+
+#: cps/web.py:1140
+msgid "No update available. You already have the latest version installed"
+msgstr ""
+
+#: cps/web.py:1165
+msgid "A new update is available. Click on the button below to update to the latest version."
+msgstr ""
+
+#: cps/web.py:1215
+msgid "Could not fetch update information"
+msgstr ""
+
+#: cps/web.py:1230
msgid "Requesting update package"
msgstr "Проверка обновлений"
-#: cps/web.py:1128
+#: cps/web.py:1231
msgid "Downloading update package"
msgstr "Загрузка обновлений"
-#: cps/web.py:1129
+#: cps/web.py:1232
msgid "Unzipping update package"
msgstr "Распаковка обновлений"
-#: cps/web.py:1130
+#: cps/web.py:1233
msgid "Files are replaced"
msgstr "Файлы заменены"
-#: cps/web.py:1131
+#: cps/web.py:1234
msgid "Database connections are closed"
msgstr "Соеднинения с базой данных закрыты"
-#: cps/web.py:1132
+#: cps/web.py:1235
msgid "Server is stopped"
msgstr "Сервер остановлен"
-#: cps/web.py:1133
+#: cps/web.py:1236
msgid "Update finished, please press okay and reload page"
msgstr "Обновления установлены, нажмите okay и перезагрузите страницу"
-#: cps/web.py:1153
+#: cps/web.py:1256
msgid "Recently Added Books"
msgstr ""
-#: cps/web.py:1163
+#: cps/web.py:1266
msgid "Newest Books"
msgstr ""
-#: cps/web.py:1175
+#: cps/web.py:1278
msgid "Oldest Books"
msgstr ""
-#: cps/web.py:1187
+#: cps/web.py:1290
msgid "Books (A-Z)"
msgstr ""
-#: cps/web.py:1198
+#: cps/web.py:1301
msgid "Books (Z-A)"
msgstr ""
-#: cps/web.py:1227
+#: cps/web.py:1330
msgid "Hot Books (most downloaded)"
msgstr "Популярные книги (часто загружаемые)"
-#: cps/web.py:1240
+#: cps/web.py:1343
msgid "Best rated books"
msgstr "Книги с наивысшим рейтингом"
-#: cps/templates/index.xml:36 cps/web.py:1252
+#: cps/templates/index.xml:36 cps/web.py:1355
msgid "Random Books"
msgstr "Случайный выбор"
-#: cps/web.py:1267
+#: cps/web.py:1370
msgid "Author list"
msgstr "Авторы"
-#: cps/web.py:1279 cps/web.py:1342 cps/web.py:1497 cps/web.py:2049
+#: cps/web.py:1382 cps/web.py:1445 cps/web.py:1600 cps/web.py:2152
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Невозможно открыть книгу. Файл не существует или недоступен."
-#: cps/templates/index.xml:73 cps/web.py:1326
+#: cps/templates/index.xml:73 cps/web.py:1429
msgid "Series list"
msgstr "Серии"
-#: cps/web.py:1340
+#: cps/web.py:1443
#, python-format
msgid "Series: %(serie)s"
msgstr "Серии: %(serie)s"
-#: cps/web.py:1367
+#: cps/web.py:1470
msgid "Available languages"
msgstr "Языки"
-#: cps/web.py:1384
+#: cps/web.py:1487
#, python-format
msgid "Language: %(name)s"
msgstr "Язык: %(name)s"
-#: cps/templates/index.xml:66 cps/web.py:1395
+#: cps/templates/index.xml:66 cps/web.py:1498
msgid "Category list"
msgstr "Категории"
-#: cps/web.py:1409
+#: cps/web.py:1512
#, python-format
msgid "Category: %(name)s"
msgstr "Категория: %(name)s"
-#: cps/templates/layout.html:71 cps/web.py:1548
+#: cps/templates/layout.html:71 cps/web.py:1651
msgid "Tasks"
msgstr "Задания"
-#: cps/web.py:1578
+#: cps/web.py:1681
msgid "Statistics"
msgstr "Статистика"
-#: cps/web.py:1683
+#: cps/web.py:1786
msgid "Callback domain is not verified, please follow steps to verify domain in google developer console"
msgstr ""
-#: cps/web.py:1758
+#: cps/web.py:1861
msgid "Server restarted, please reload page"
msgstr "Сервер перезагружен, пожалуйста, перезагрузите страницу"
-#: cps/web.py:1761
+#: cps/web.py:1864
msgid "Performing shutdown of server, please close window"
msgstr "Производится остановка сервера, пожалуйста, закройте окно"
-#: cps/web.py:1780
+#: cps/web.py:1883
msgid "Update done"
msgstr "Обновление закончено"
-#: cps/web.py:1850
+#: cps/web.py:1953
msgid "Published after "
msgstr "Опубликовано до"
-#: cps/web.py:1857
+#: cps/web.py:1960
msgid "Published before "
msgstr "Опубликовано после"
-#: cps/web.py:1871
+#: cps/web.py:1974
#, python-format
msgid "Rating <= %(rating)s"
msgstr "Рейтинг <= %(rating)s"
-#: cps/web.py:1873
+#: cps/web.py:1976
#, python-format
msgid "Rating >= %(rating)s"
msgstr "Рейтинг >= %(rating)s"
-#: cps/web.py:1932 cps/web.py:1941
+#: cps/web.py:2035 cps/web.py:2044
msgid "search"
msgstr "поиск"
#: cps/templates/index.xml:44 cps/templates/index.xml:48
-#: cps/templates/layout.html:146 cps/web.py:2008
+#: cps/templates/layout.html:146 cps/web.py:2111
msgid "Read Books"
msgstr "Прочитанные"
#: cps/templates/index.xml:52 cps/templates/index.xml:56
-#: cps/templates/layout.html:148 cps/web.py:2011
+#: cps/templates/layout.html:148 cps/web.py:2114
msgid "Unread Books"
msgstr "Непрочитанные"
-#: cps/web.py:2059 cps/web.py:2061 cps/web.py:2063 cps/web.py:2075
+#: cps/web.py:2162 cps/web.py:2164 cps/web.py:2166 cps/web.py:2178
msgid "Read a Book"
msgstr "Читать книгу"
-#: cps/web.py:2141 cps/web.py:3024
+#: cps/web.py:2244 cps/web.py:3129
msgid "Please fill out all fields!"
msgstr "Пожалуйста, заполните все поля!"
-#: cps/web.py:2142 cps/web.py:2163 cps/web.py:2167 cps/web.py:2172
-#: cps/web.py:2174
+#: cps/web.py:2245 cps/web.py:2266 cps/web.py:2270 cps/web.py:2275
+#: cps/web.py:2277
msgid "register"
msgstr "зарегистрироваться"
-#: cps/web.py:2162 cps/web.py:3240
+#: cps/web.py:2265 cps/web.py:3345
msgid "An unknown error occurred. Please try again later."
msgstr "Неизвестная ошибка. Попробуйте позже."
-#: cps/web.py:2165
+#: cps/web.py:2268
msgid "Your e-mail is not allowed to register"
msgstr ""
-#: cps/web.py:2168
+#: cps/web.py:2271
msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Письмо с подтверждением отправлено вам на e-mail"
-#: cps/web.py:2171
+#: cps/web.py:2274
msgid "This username or e-mail address is already in use."
msgstr "Этот никнейм или e-mail уже используются"
-#: cps/web.py:2188 cps/web.py:2284
+#: cps/web.py:2291 cps/web.py:2387
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "Вы вошли как пользователь '%(nickname)s'"
-#: cps/web.py:2193
+#: cps/web.py:2296
msgid "Wrong Username or Password"
msgstr "Ошибка в имени пользователя или пароле"
-#: cps/web.py:2199 cps/web.py:2220
+#: cps/web.py:2302 cps/web.py:2323
msgid "login"
msgstr "войти"
-#: cps/web.py:2232 cps/web.py:2263
+#: cps/web.py:2335 cps/web.py:2366
msgid "Token not found"
msgstr "Ключ не найден"
-#: cps/web.py:2240 cps/web.py:2271
+#: cps/web.py:2343 cps/web.py:2374
msgid "Token has expired"
msgstr "Ключ просрочен"
-#: cps/web.py:2248
+#: cps/web.py:2351
msgid "Success! Please return to your device"
msgstr "Успешно! Пожалуйста, проверьте свое устройство"
-#: cps/web.py:2298
+#: cps/web.py:2401
msgid "Please configure the SMTP mail settings first..."
msgstr "Пожалуйста, сначала сконфигурируйте параметры SMTP"
-#: cps/web.py:2302
+#: cps/web.py:2405
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr ""
-#: cps/web.py:2306
+#: cps/web.py:2409
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr "Ошибка при отправке книги: %(res)s"
-#: cps/web.py:2308 cps/web.py:3078
+#: cps/web.py:2411 cps/web.py:3183
msgid "Please configure your kindle e-mail address first..."
msgstr "Пожалуйста, сначала настройте e-mail на вашем kindle"
-#: cps/web.py:2352
+#: cps/web.py:2455
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Книга добавлена на книжную полку: %(sname)s"
-#: cps/web.py:2363
+#: cps/web.py:2466
msgid "Invalid shelf specified"
msgstr ""
-#: cps/web.py:2368
+#: cps/web.py:2471
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr ""
-#: cps/web.py:2373
+#: cps/web.py:2476
msgid "User is not allowed to edit public shelves"
msgstr ""
-#: cps/web.py:2391
+#: cps/web.py:2494
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr ""
-#: cps/web.py:2405
+#: cps/web.py:2508
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2407
+#: cps/web.py:2510
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2444
+#: cps/web.py:2547
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Книга удалена с книжной полки: %(sname)s"
-#: cps/web.py:2450
+#: cps/web.py:2553
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2470 cps/web.py:2494
+#: cps/web.py:2573 cps/web.py:2597
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr "Книжкная полка с названием '%(title)s' уже существует."
-#: cps/web.py:2475
+#: cps/web.py:2578
#, python-format
msgid "Shelf %(title)s created"
msgstr "Создана книжная полка %(title)s"
-#: cps/web.py:2477 cps/web.py:2505
+#: cps/web.py:2580 cps/web.py:2608
msgid "There was an error"
msgstr "Произошла ошибка"
-#: cps/web.py:2478 cps/web.py:2480
+#: cps/web.py:2581 cps/web.py:2583
msgid "create a shelf"
msgstr "создать книжную полку"
-#: cps/web.py:2503
+#: cps/web.py:2606
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Книжная полка %(title)s изменена"
-#: cps/web.py:2506 cps/web.py:2508
+#: cps/web.py:2609 cps/web.py:2611
msgid "Edit a shelf"
msgstr "Изменить книжную полку"
-#: cps/web.py:2529
+#: cps/web.py:2632
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "Книжная полка %(name)s удалена"
-#: cps/web.py:2556
+#: cps/web.py:2659
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Книжная полка: '%(name)s'"
-#: cps/web.py:2559
+#: cps/web.py:2662
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "Ошибка открытия книжной полки. Полка не существует или недоступна"
-#: cps/web.py:2590
+#: cps/web.py:2693
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Изменить расположение книжной полки '%(name)s'"
-#: cps/web.py:2619 cps/web.py:3030
+#: cps/web.py:2722 cps/web.py:3135
msgid "E-mail is not from valid domain"
msgstr "E-mail не из существующей доменной зоны"
-#: cps/web.py:2621 cps/web.py:2662 cps/web.py:2665
+#: cps/web.py:2724 cps/web.py:2765 cps/web.py:2768
#, python-format
msgid "%(name)s's profile"
msgstr "Профиль %(name)s"
-#: cps/web.py:2660
+#: cps/web.py:2763
msgid "Found an existing account for this e-mail address."
msgstr ""
-#: cps/web.py:2663
+#: cps/web.py:2766
msgid "Profile updated"
msgstr "Профиль обновлён"
-#: cps/web.py:2675
-msgid "Unknown"
-msgstr "Неизвестно"
-
-#: cps/web.py:2689
+#: cps/web.py:2794
msgid "Admin page"
msgstr "Администрирование"
-#: cps/web.py:2767 cps/web.py:2940
+#: cps/web.py:2872 cps/web.py:3045
msgid "Calibre-Web configuration updated"
msgstr "Конфигурация Calibre-Web обновлена"
-#: cps/templates/admin.html:91 cps/web.py:2780
+#: cps/templates/admin.html:100 cps/web.py:2885
msgid "UI Configuration"
msgstr "Настройка интерфейса"
-#: cps/web.py:2798
+#: cps/web.py:2903
msgid "Import of optional Google Drive requirements missing"
msgstr ""
-#: cps/web.py:2801
+#: cps/web.py:2906
msgid "client_secrets.json is missing or not readable"
msgstr "client_secrets.json отсутствует или его невозможно прочесть"
-#: cps/web.py:2806 cps/web.py:2833
+#: cps/web.py:2911 cps/web.py:2938
msgid "client_secrets.json is not configured for web application"
msgstr ""
-#: cps/templates/admin.html:90 cps/web.py:2836 cps/web.py:2862 cps/web.py:2874
-#: cps/web.py:2916 cps/web.py:2931 cps/web.py:2948 cps/web.py:2955
-#: cps/web.py:2972
+#: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979
+#: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060
+#: cps/web.py:3077
msgid "Basic Configuration"
msgstr "Настройки сервера"
-#: cps/web.py:2859
+#: cps/web.py:2964
msgid "Keyfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2871
+#: cps/web.py:2976
msgid "Certfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2913
+#: cps/web.py:3018
msgid "Logfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2952
+#: cps/web.py:3057
msgid "DB location is not valid, please enter correct path"
msgstr "Неверный путь к фалу БД, пожалуйста, укажите правильное расположение БД"
-#: cps/templates/admin.html:31 cps/web.py:3026 cps/web.py:3032 cps/web.py:3048
+#: cps/templates/admin.html:33 cps/web.py:3131 cps/web.py:3137 cps/web.py:3153
msgid "Add new user"
msgstr "Добавить пользователя"
-#: cps/web.py:3038
+#: cps/web.py:3143
#, python-format
msgid "User '%(user)s' created"
msgstr "Пользователь '%(user)s' добавлен"
-#: cps/web.py:3042
+#: cps/web.py:3147
msgid "Found an existing account for this e-mail address or nickname."
msgstr ""
-#: cps/web.py:3066 cps/web.py:3080
+#: cps/web.py:3171 cps/web.py:3185
msgid "E-mail server settings updated"
msgstr "Настройки E-mail сервера обновлены"
-#: cps/web.py:3073
+#: cps/web.py:3178
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr ""
-#: cps/web.py:3076
+#: cps/web.py:3181
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr ""
-#: cps/web.py:3081
+#: cps/web.py:3186
msgid "Edit e-mail server settings"
msgstr "Изменить настройки e-mail сервера"
-#: cps/web.py:3106
+#: cps/web.py:3211
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Пользователь '%(nick)s' удалён"
-#: cps/web.py:3215
+#: cps/web.py:3320
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Пользователь '%(nick)s' обновлён"
-#: cps/web.py:3218
+#: cps/web.py:3323
msgid "An unknown error occured."
msgstr "Произошла неизвестная ошибка."
-#: cps/web.py:3220
+#: cps/web.py:3325
#, python-format
msgid "Edit User %(nick)s"
msgstr "Изменить пользователя %(nick)s"
-#: cps/web.py:3237
+#: cps/web.py:3342
#, python-format
msgid "Password for user %(user)s reset"
msgstr "Пароль для пользователя %(user)s сброшен"
-#: cps/web.py:3257
+#: cps/web.py:3362
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr ""
-#: cps/web.py:3285 cps/web.py:3562 cps/web.py:3567 cps/web.py:3722
+#: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827
msgid "edit metadata"
msgstr "изменить метаданные"
-#: cps/web.py:3296 cps/web.py:3592
+#: cps/web.py:3401 cps/web.py:3697
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "Запрещена загрузка файлов с расширением '%(ext)s'"
-#: cps/web.py:3300 cps/web.py:3596
+#: cps/web.py:3405 cps/web.py:3701
msgid "File to be uploaded must have an extension"
msgstr "Загружаемый файл должен иметь расширение"
-#: cps/web.py:3312 cps/web.py:3616
+#: cps/web.py:3417 cps/web.py:3721
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr "Ошибка при создании пути %(path)s (доступ запрещён)"
-#: cps/web.py:3317
+#: cps/web.py:3422
#, python-format
msgid "Failed to store file %(file)s."
msgstr ""
-#: cps/web.py:3333
+#: cps/web.py:3438
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr ""
-#: cps/web.py:3350
+#: cps/web.py:3455
#, python-format
msgid "Failed to create path for cover %(path)s (Permission denied)."
msgstr ""
-#: cps/web.py:3357
+#: cps/web.py:3462
#, python-format
msgid "Failed to store cover-file %(cover)s."
msgstr ""
-#: cps/web.py:3360
+#: cps/web.py:3465
msgid "Cover-file is not a valid image file"
msgstr "Файл обложки не соответствует изображению"
-#: cps/web.py:3377 cps/web.py:3381
+#: cps/web.py:3482 cps/web.py:3486
msgid "unknown"
msgstr "неизвестно"
-#: cps/web.py:3403
+#: cps/web.py:3508
msgid "Cover is not a jpg file, can't save"
msgstr "Обложка не jpg файл, невозможно сохранить"
-#: cps/web.py:3449
+#: cps/web.py:3554
#, python-format
msgid "%(langname)s is not a valid language"
msgstr ""
-#: cps/web.py:3571
+#: cps/web.py:3676
msgid "Error editing book, please check logfile for details"
msgstr "Ошибка редактирования книги. Пожалуйста, проверьте лог-файл для дополнительной информации"
-#: cps/web.py:3621
+#: cps/web.py:3726
#, python-format
msgid "Failed to store file %(file)s (Permission denied)."
msgstr "Ошибка записи файоа %(file)s (доступ запрещён)"
-#: cps/web.py:3626
+#: cps/web.py:3731
#, python-format
msgid "Failed to delete file %(file)s (Permission denied)."
msgstr "Ошибка удаления файла %(file)s (доступ запрещён)"
-#: cps/web.py:3708
+#: cps/web.py:3813
#, python-format
msgid "File %(file)s uploaded"
msgstr "Файл %(file)s загружен"
-#: cps/web.py:3738
+#: cps/web.py:3843
msgid "Source or destination format for conversion missing"
msgstr ""
-#: cps/web.py:3748
+#: cps/web.py:3853
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr ""
-#: cps/web.py:3752
+#: cps/web.py:3857
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr ""
@@ -682,149 +707,157 @@ msgstr "Закончено"
msgid "Failed"
msgstr "Неудачно"
-#: cps/templates/admin.html:4
+#: cps/templates/admin.html:6
msgid "User list"
msgstr "Список пользователей"
-#: cps/templates/admin.html:7
+#: cps/templates/admin.html:9
msgid "Nickname"
msgstr "Имя пользователя"
-#: cps/templates/admin.html:8
+#: cps/templates/admin.html:10
msgid "E-mail"
msgstr "Почта"
-#: cps/templates/admin.html:9
+#: cps/templates/admin.html:11
msgid "Kindle"
msgstr "Kindle"
-#: cps/templates/admin.html:10
+#: cps/templates/admin.html:12
msgid "DLS"
msgstr "DLS"
-#: cps/templates/admin.html:11 cps/templates/layout.html:74
+#: cps/templates/admin.html:13 cps/templates/layout.html:74
msgid "Admin"
msgstr "Управление"
-#: cps/templates/admin.html:12 cps/templates/detail.html:22
+#: cps/templates/admin.html:14 cps/templates/detail.html:22
#: cps/templates/detail.html:31
msgid "Download"
msgstr "Скачать"
-#: cps/templates/admin.html:13 cps/templates/layout.html:64
+#: cps/templates/admin.html:15 cps/templates/layout.html:64
msgid "Upload"
msgstr "Загрузить"
-#: cps/templates/admin.html:14
+#: cps/templates/admin.html:16
msgid "Edit"
msgstr "Редактировать"
-#: cps/templates/admin.html:32
+#: cps/templates/admin.html:39
msgid "SMTP e-mail server settings"
msgstr "Настройки SMTP-сервера"
-#: cps/templates/admin.html:35 cps/templates/email_edit.html:11
+#: cps/templates/admin.html:42 cps/templates/email_edit.html:11
msgid "SMTP hostname"
msgstr "SMTP-сервер"
-#: cps/templates/admin.html:36
+#: cps/templates/admin.html:43
msgid "SMTP port"
msgstr "SMTP-порт"
-#: cps/templates/admin.html:37
+#: cps/templates/admin.html:44
msgid "SSL"
msgstr "SSL"
-#: cps/templates/admin.html:38 cps/templates/email_edit.html:27
+#: cps/templates/admin.html:45 cps/templates/email_edit.html:27
msgid "SMTP login"
msgstr "SMTP-логин"
-#: cps/templates/admin.html:39
+#: cps/templates/admin.html:46
msgid "From mail"
msgstr "Отправитель"
-#: cps/templates/admin.html:48
+#: cps/templates/admin.html:56
msgid "Change SMTP settings"
msgstr "Изменить настройки SMTP"
-#: cps/templates/admin.html:50
+#: cps/templates/admin.html:62
msgid "Configuration"
msgstr "Настройки сервера"
-#: cps/templates/admin.html:53
+#: cps/templates/admin.html:65
msgid "Calibre DB dir"
msgstr "Папка Calibre DB"
-#: cps/templates/admin.html:57
+#: cps/templates/admin.html:69
msgid "Log level"
msgstr ""
-#: cps/templates/admin.html:61
+#: cps/templates/admin.html:73
msgid "Port"
msgstr "Порт"
-#: cps/templates/admin.html:67 cps/templates/config_view_edit.html:23
+#: cps/templates/admin.html:79 cps/templates/config_view_edit.html:23
msgid "Books per page"
msgstr "Количество книг на странице"
-#: cps/templates/admin.html:71
+#: cps/templates/admin.html:83
msgid "Uploading"
msgstr "Загрузка на сервер"
-#: cps/templates/admin.html:75
+#: cps/templates/admin.html:87
msgid "Anonymous browsing"
msgstr ""
-#: cps/templates/admin.html:79
+#: cps/templates/admin.html:91
msgid "Public registration"
msgstr "Публичная регистрация"
-#: cps/templates/admin.html:83 cps/templates/remote_login.html:4
+#: cps/templates/admin.html:95 cps/templates/remote_login.html:4
msgid "Remote login"
msgstr "Удалённый логин"
-#: cps/templates/admin.html:93
+#: cps/templates/admin.html:106
msgid "Administration"
msgstr "Управление"
-#: cps/templates/admin.html:94
-msgid "Current commit timestamp"
-msgstr ""
-
-#: cps/templates/admin.html:95
-msgid "Newest commit timestamp"
-msgstr ""
-
-#: cps/templates/admin.html:97
+#: cps/templates/admin.html:107
msgid "Reconnect to Calibre DB"
msgstr "Переподключиться к БД Calibre"
-#: cps/templates/admin.html:98
+#: cps/templates/admin.html:108
msgid "Restart Calibre-Web"
msgstr "Перезагрузить Calibre-Web"
-#: cps/templates/admin.html:99
+#: cps/templates/admin.html:109
msgid "Stop Calibre-Web"
msgstr "Остановить Calibre-Web"
-#: cps/templates/admin.html:100
+#: cps/templates/admin.html:115
+msgid "Update"
+msgstr ""
+
+#: cps/templates/admin.html:119
+msgid "Version"
+msgstr ""
+
+#: cps/templates/admin.html:120
+msgid "Details"
+msgstr ""
+
+#: cps/templates/admin.html:126
+msgid "Current version"
+msgstr ""
+
+#: cps/templates/admin.html:132
msgid "Check for update"
msgstr "Проверка обновлений"
-#: cps/templates/admin.html:101
+#: cps/templates/admin.html:133
msgid "Perform Update"
msgstr "Установить обновления"
-#: cps/templates/admin.html:110
+#: cps/templates/admin.html:145
msgid "Do you really want to restart Calibre-Web?"
msgstr "Вы действительно хотите перезагрузить Calibre-Web?"
-#: cps/templates/admin.html:115 cps/templates/admin.html:129
-#: cps/templates/admin.html:150 cps/templates/shelf.html:59
+#: cps/templates/admin.html:150 cps/templates/admin.html:164
+#: cps/templates/admin.html:184 cps/templates/shelf.html:59
msgid "Ok"
msgstr "Ok"
-#: cps/templates/admin.html:116 cps/templates/admin.html:130
+#: cps/templates/admin.html:151 cps/templates/admin.html:165
#: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200
#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75
@@ -833,11 +866,11 @@ msgstr "Ok"
msgid "Back"
msgstr "Назад"
-#: cps/templates/admin.html:128
+#: cps/templates/admin.html:163
msgid "Do you really want to stop Calibre-Web?"
msgstr "Вы действительно хотите остановить Calibre-Web?"
-#: cps/templates/admin.html:141
+#: cps/templates/admin.html:175
msgid "Updating, please do not reload page"
msgstr "Установка обновлений, пожалуйста, не обновляйте страницу."
@@ -1840,3 +1873,9 @@ msgstr "Недавние скачивания"
#~ msgid "E-mail: %s"
#~ msgstr "Почта: %s"
+#~ msgid "Current commit timestamp"
+#~ msgstr ""
+
+#~ msgid "Newest commit timestamp"
+#~ msgstr ""
+
diff --git a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po
index 25cd38cb..3b3f8575 100644
--- a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po
+++ b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po
@@ -3,19 +3,11 @@
# This file is distributed under the same license as the Calibre-Web
# project.
# FIRST AUTHOR dalin , 2017.
-# # Translation template file..
-# Copyright (C) 2011 Kovid Goyal
-#
-# Translators:
-# Alastair McKinstry , 2001
-# LI Daobing , 2007-2008
-# nature , 2015
-# Wang Vincent , 2016
msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
-"POT-Creation-Date: 2018-09-09 17:57+0200\n"
+"POT-Creation-Date: 2018-09-14 21:11+0200\n"
"PO-Revision-Date: 2017-01-06 17:00+0000\n"
"Last-Translator: dalin \n"
"Language: zh_Hans_CN\n"
@@ -122,710 +114,750 @@ msgstr "执行UnRar时出错"
msgid "Unrar binary file not found"
msgstr "找不到Unrar二进制文件"
-#: cps/web.py:1127
+#: cps/web.py:1112 cps/web.py:2778
+msgid "Unknown"
+msgstr "未知"
+
+#: cps/web.py:1121 cps/web.py:1152
+msgid "HTTP Error"
+msgstr ""
+
+#: cps/web.py:1123 cps/web.py:1154
+msgid "Connection error"
+msgstr ""
+
+#: cps/web.py:1125 cps/web.py:1156
+msgid "Timeout while establishing connection"
+msgstr ""
+
+#: cps/web.py:1127 cps/web.py:1158
+msgid "General error"
+msgstr ""
+
+#: cps/web.py:1133
+msgid "Unexpected data while reading update information"
+msgstr ""
+
+#: cps/web.py:1140
+msgid "No update available. You already have the latest version installed"
+msgstr ""
+
+#: cps/web.py:1165
+msgid "A new update is available. Click on the button below to update to the latest version."
+msgstr ""
+
+#: cps/web.py:1215
+msgid "Could not fetch update information"
+msgstr ""
+
+#: cps/web.py:1230
msgid "Requesting update package"
msgstr "正在请求更新包"
-#: cps/web.py:1128
+#: cps/web.py:1231
msgid "Downloading update package"
msgstr "正在下载更新包"
-#: cps/web.py:1129
+#: cps/web.py:1232
msgid "Unzipping update package"
msgstr "正在解压更新包"
-#: cps/web.py:1130
+#: cps/web.py:1233
msgid "Files are replaced"
msgstr "文件已替换"
-#: cps/web.py:1131
+#: cps/web.py:1234
msgid "Database connections are closed"
msgstr "数据库连接已关闭"
-#: cps/web.py:1132
+#: cps/web.py:1235
msgid "Server is stopped"
msgstr "服务器已停止"
-#: cps/web.py:1133
+#: cps/web.py:1236
msgid "Update finished, please press okay and reload page"
msgstr "更新完成,请按确定并刷新页面"
-#: cps/web.py:1153
+#: cps/web.py:1256
msgid "Recently Added Books"
msgstr "最近添加的书籍"
-#: cps/web.py:1163
+#: cps/web.py:1266
msgid "Newest Books"
msgstr "最新书籍"
-#: cps/web.py:1175
+#: cps/web.py:1278
msgid "Oldest Books"
msgstr "最旧书籍"
-#: cps/web.py:1187
+#: cps/web.py:1290
msgid "Books (A-Z)"
msgstr "书籍 (A-Z)"
-#: cps/web.py:1198
+#: cps/web.py:1301
msgid "Books (Z-A)"
msgstr "书籍 (Z-A)"
-#: cps/web.py:1227
+#: cps/web.py:1330
msgid "Hot Books (most downloaded)"
msgstr "热门书籍(最多下载)"
-#: cps/web.py:1240
+#: cps/web.py:1343
msgid "Best rated books"
msgstr "最高评分书籍"
-#: cps/templates/index.xml:36 cps/web.py:1252
+#: cps/templates/index.xml:36 cps/web.py:1355
msgid "Random Books"
msgstr "随机书籍"
-#: cps/web.py:1267
+#: cps/web.py:1370
msgid "Author list"
msgstr "作者列表"
-#: cps/web.py:1279 cps/web.py:1342 cps/web.py:1497 cps/web.py:2049
+#: cps/web.py:1382 cps/web.py:1445 cps/web.py:1600 cps/web.py:2152
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "无法打开电子书。 文件不存在或者文件不可访问:"
-#: cps/templates/index.xml:73 cps/web.py:1326
+#: cps/templates/index.xml:73 cps/web.py:1429
msgid "Series list"
msgstr "丛书列表"
-#: cps/web.py:1340
+#: cps/web.py:1443
#, python-format
msgid "Series: %(serie)s"
msgstr "丛书: %(serie)s"
-#: cps/web.py:1367
+#: cps/web.py:1470
msgid "Available languages"
msgstr "可用语言"
-#: cps/web.py:1384
+#: cps/web.py:1487
#, python-format
msgid "Language: %(name)s"
msgstr "语言: %(name)s"
-#: cps/templates/index.xml:66 cps/web.py:1395
+#: cps/templates/index.xml:66 cps/web.py:1498
msgid "Category list"
msgstr "分类列表"
-#: cps/web.py:1409
+#: cps/web.py:1512
#, python-format
msgid "Category: %(name)s"
msgstr "分类: %(name)s"
-#: cps/templates/layout.html:71 cps/web.py:1548
+#: cps/templates/layout.html:71 cps/web.py:1651
msgid "Tasks"
msgstr "任务"
-#: cps/web.py:1578
+#: cps/web.py:1681
msgid "Statistics"
msgstr "统计"
-#: cps/web.py:1683
+#: cps/web.py:1786
msgid "Callback domain is not verified, please follow steps to verify domain in google developer console"
msgstr "回调域名尚未被校验,请在google开发者控制台按步骤校验域名"
-#: cps/web.py:1758
+#: cps/web.py:1861
msgid "Server restarted, please reload page"
msgstr "服务器已重启,请刷新页面"
-#: cps/web.py:1761
+#: cps/web.py:1864
msgid "Performing shutdown of server, please close window"
msgstr "正在关闭服务器,请关闭窗口"
-#: cps/web.py:1780
+#: cps/web.py:1883
msgid "Update done"
msgstr "更新完成"
-#: cps/web.py:1850
+#: cps/web.py:1953
msgid "Published after "
msgstr ""
-#: cps/web.py:1857
+#: cps/web.py:1960
msgid "Published before "
msgstr "出版时早于 "
-#: cps/web.py:1871
+#: cps/web.py:1974
#, python-format
msgid "Rating <= %(rating)s"
msgstr "评分 <= %(rating)s"
-#: cps/web.py:1873
+#: cps/web.py:1976
#, python-format
msgid "Rating >= %(rating)s"
msgstr "评分 >= %(rating)s"
-#: cps/web.py:1932 cps/web.py:1941
+#: cps/web.py:2035 cps/web.py:2044
msgid "search"
msgstr "搜索"
#: cps/templates/index.xml:44 cps/templates/index.xml:48
-#: cps/templates/layout.html:146 cps/web.py:2008
+#: cps/templates/layout.html:146 cps/web.py:2111
msgid "Read Books"
msgstr "已读书籍"
#: cps/templates/index.xml:52 cps/templates/index.xml:56
-#: cps/templates/layout.html:148 cps/web.py:2011
+#: cps/templates/layout.html:148 cps/web.py:2114
msgid "Unread Books"
msgstr "未读书籍"
-#: cps/web.py:2059 cps/web.py:2061 cps/web.py:2063 cps/web.py:2075
+#: cps/web.py:2162 cps/web.py:2164 cps/web.py:2166 cps/web.py:2178
msgid "Read a Book"
msgstr "阅读一本书"
-#: cps/web.py:2141 cps/web.py:3019
+#: cps/web.py:2244 cps/web.py:3129
msgid "Please fill out all fields!"
msgstr "请填写所有字段"
-#: cps/web.py:2142 cps/web.py:2163 cps/web.py:2167 cps/web.py:2172
-#: cps/web.py:2174
+#: cps/web.py:2245 cps/web.py:2266 cps/web.py:2270 cps/web.py:2275
+#: cps/web.py:2277
msgid "register"
msgstr "注册"
-#: cps/web.py:2162 cps/web.py:3235
+#: cps/web.py:2265 cps/web.py:3345
msgid "An unknown error occurred. Please try again later."
msgstr "发生一个未知错误,请稍后再试。"
-#: cps/web.py:2165
+#: cps/web.py:2268
msgid "Your e-mail is not allowed to register"
msgstr "您的邮箱不能用来注册"
-#: cps/web.py:2168
+#: cps/web.py:2271
msgid "Confirmation e-mail was send to your e-mail account."
msgstr "确认邮件已经发送到您的邮箱。"
-#: cps/web.py:2171
+#: cps/web.py:2274
msgid "This username or e-mail address is already in use."
msgstr "这个用户名或者邮箱已经被使用。"
-#: cps/web.py:2188 cps/web.py:2284
+#: cps/web.py:2291 cps/web.py:2387
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "您现在已以'%(nickname)s'身份登录"
-#: cps/web.py:2193
+#: cps/web.py:2296
msgid "Wrong Username or Password"
msgstr "用户名或密码错误"
-#: cps/web.py:2199 cps/web.py:2220
+#: cps/web.py:2302 cps/web.py:2323
msgid "login"
msgstr "登录"
-#: cps/web.py:2232 cps/web.py:2263
+#: cps/web.py:2335 cps/web.py:2366
msgid "Token not found"
msgstr "找不到Token"
-#: cps/web.py:2240 cps/web.py:2271
+#: cps/web.py:2343 cps/web.py:2374
msgid "Token has expired"
msgstr "Token已过期"
-#: cps/web.py:2248
+#: cps/web.py:2351
msgid "Success! Please return to your device"
msgstr "成功!请返回您的设备"
-#: cps/web.py:2298
+#: cps/web.py:2401
msgid "Please configure the SMTP mail settings first..."
msgstr "请先配置SMTP邮箱..."
-#: cps/web.py:2302
+#: cps/web.py:2405
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "书籍已经被成功加入 %(kindlemail)s 的发送队列"
-#: cps/web.py:2306
+#: cps/web.py:2409
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr "发送这本书的时候出现错误: %(res)s"
-#: cps/web.py:2308 cps/web.py:3073
+#: cps/web.py:2411 cps/web.py:3183
msgid "Please configure your kindle e-mail address first..."
msgstr "请先配置您的kindle邮箱..."
-#: cps/web.py:2352
+#: cps/web.py:2455
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "此书已被添加到书架: %(sname)s"
-#: cps/web.py:2363
+#: cps/web.py:2466
msgid "Invalid shelf specified"
msgstr "指定的书架无效"
-#: cps/web.py:2368
+#: cps/web.py:2471
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr "您没有添加书籍到书架 %(name)s 的权限"
-#: cps/web.py:2373
+#: cps/web.py:2476
msgid "User is not allowed to edit public shelves"
msgstr "用户没有编辑公开书架的权限"
-#: cps/web.py:2391
+#: cps/web.py:2494
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr "书籍已经在书架 %(name)s 中了"
-#: cps/web.py:2405
+#: cps/web.py:2508
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr "书籍已经被添加到书架 %(sname)s 中'"
-#: cps/web.py:2407
+#: cps/web.py:2510
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr "无法添加书籍到书架: %(sname)s"
-#: cps/web.py:2444
+#: cps/web.py:2547
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "此书已从书架 %(sname)s 中删除"
-#: cps/web.py:2450
+#: cps/web.py:2553
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr "对不起,您没有从书架 %(sname)s 中删除书籍的权限"
-#: cps/web.py:2470 cps/web.py:2494
+#: cps/web.py:2573 cps/web.py:2597
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr "已存在书架 '%(title)s'。"
-#: cps/web.py:2475
+#: cps/web.py:2578
#, python-format
msgid "Shelf %(title)s created"
msgstr "书架 %(title)s 已被创建"
-#: cps/web.py:2477 cps/web.py:2505
+#: cps/web.py:2580 cps/web.py:2608
msgid "There was an error"
msgstr "发生错误"
-#: cps/web.py:2478 cps/web.py:2480
+#: cps/web.py:2581 cps/web.py:2583
msgid "create a shelf"
msgstr "创建书架"
-#: cps/web.py:2503
+#: cps/web.py:2606
#, python-format
msgid "Shelf %(title)s changed"
msgstr "书架 %(title)s 已被修改"
-#: cps/web.py:2506 cps/web.py:2508
+#: cps/web.py:2609 cps/web.py:2611
msgid "Edit a shelf"
msgstr "编辑书架"
-#: cps/web.py:2529
+#: cps/web.py:2632
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "成功删除书架 %(name)s"
-#: cps/web.py:2551
+#: cps/web.py:2659
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "书架: '%(name)s'"
-#: cps/web.py:2554
+#: cps/web.py:2662
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "打开书架出错。书架不存在或不可访问"
-#: cps/web.py:2585
+#: cps/web.py:2693
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "修改书架 '%(name)s' 顺序"
-#: cps/web.py:2614 cps/web.py:3025
+#: cps/web.py:2722 cps/web.py:3135
msgid "E-mail is not from valid domain"
msgstr "邮箱不在有效域中'"
-#: cps/web.py:2616 cps/web.py:2657 cps/web.py:2660
+#: cps/web.py:2724 cps/web.py:2765 cps/web.py:2768
#, python-format
msgid "%(name)s's profile"
msgstr "%(name)s 的资料"
-#: cps/web.py:2655
+#: cps/web.py:2763
msgid "Found an existing account for this e-mail address."
msgstr "找到一个已有账号使用这个邮箱。"
-#: cps/web.py:2658
+#: cps/web.py:2766
msgid "Profile updated"
msgstr "资料已更新"
-#: cps/web.py:2670
-msgid "Unknown"
-msgstr "未知"
-
-#: cps/web.py:2684
+#: cps/web.py:2794
msgid "Admin page"
msgstr "管理页"
-#: cps/web.py:2762 cps/web.py:2935
+#: cps/web.py:2872 cps/web.py:3045
msgid "Calibre-Web configuration updated"
msgstr "Calibre-Web配置已更新"
-#: cps/templates/admin.html:91 cps/web.py:2775
+#: cps/templates/admin.html:100 cps/web.py:2885
msgid "UI Configuration"
msgstr "UI配置"
-#: cps/web.py:2793
+#: cps/web.py:2903
msgid "Import of optional Google Drive requirements missing"
msgstr "可选的Google Drive依赖导入缺失"
-#: cps/web.py:2796
+#: cps/web.py:2906
msgid "client_secrets.json is missing or not readable"
msgstr "client_secrets.json文件缺失或不可读"
-#: cps/web.py:2801 cps/web.py:2828
+#: cps/web.py:2911 cps/web.py:2938
msgid "client_secrets.json is not configured for web application"
msgstr "没有为web应用配置client_secrets.json"
-#: cps/templates/admin.html:90 cps/web.py:2831 cps/web.py:2857 cps/web.py:2869
-#: cps/web.py:2911 cps/web.py:2926 cps/web.py:2943 cps/web.py:2950
-#: cps/web.py:2967
+#: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979
+#: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060
+#: cps/web.py:3077
msgid "Basic Configuration"
msgstr "基本配置"
-#: cps/web.py:2854
+#: cps/web.py:2964
msgid "Keyfile location is not valid, please enter correct path"
msgstr "key文件位置无效,请输入正确路径"
-#: cps/web.py:2866
+#: cps/web.py:2976
msgid "Certfile location is not valid, please enter correct path"
msgstr "证书文件位置无效,请输入正确路径"
-#: cps/web.py:2908
+#: cps/web.py:3018
msgid "Logfile location is not valid, please enter correct path"
msgstr "日志文件位置无效,请输入正确路径"
-#: cps/web.py:2947
+#: cps/web.py:3057
msgid "DB location is not valid, please enter correct path"
msgstr "DB位置无效,请输入正确路径"
-#: cps/templates/admin.html:31 cps/web.py:3021 cps/web.py:3027 cps/web.py:3043
+#: cps/templates/admin.html:33 cps/web.py:3131 cps/web.py:3137 cps/web.py:3153
msgid "Add new user"
msgstr "添加新用户"
-#: cps/web.py:3033
+#: cps/web.py:3143
#, python-format
msgid "User '%(user)s' created"
msgstr "用户 '%(user)s' 已被创建"
-#: cps/web.py:3037
+#: cps/web.py:3147
msgid "Found an existing account for this e-mail address or nickname."
msgstr "此邮箱或昵称的账号已经存在。"
-#: cps/web.py:3061 cps/web.py:3075
+#: cps/web.py:3171 cps/web.py:3185
msgid "E-mail server settings updated"
msgstr "已更新邮件服务器设置"
-#: cps/web.py:3068
+#: cps/web.py:3178
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr "测试邮件已经被成功发到 %(kindlemail)s"
-#: cps/web.py:3071
+#: cps/web.py:3181
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "发送测试邮件出错了: %(res)s"
-#: cps/web.py:3076
+#: cps/web.py:3186
msgid "Edit e-mail server settings"
msgstr "编辑邮箱服务器设置"
-#: cps/web.py:3101
+#: cps/web.py:3211
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "用户 '%(nick)s' 已被删除"
-#: cps/web.py:3210
+#: cps/web.py:3320
#, python-format
msgid "User '%(nick)s' updated"
msgstr "用户 '%(nick)s' 已被更新"
-#: cps/web.py:3213
+#: cps/web.py:3323
msgid "An unknown error occured."
msgstr "发生未知错误。"
-#: cps/web.py:3215
+#: cps/web.py:3325
#, python-format
msgid "Edit User %(nick)s"
msgstr "编辑用户 %(nick)s"
-#: cps/web.py:3232
+#: cps/web.py:3342
#, python-format
msgid "Password for user %(user)s reset"
msgstr "用户 %(user)s 的密码已重置"
-#: cps/web.py:3252
+#: cps/web.py:3362
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "打开电子书出错。文件不存在或不可访问"
-#: cps/web.py:3279 cps/web.py:3555 cps/web.py:3560 cps/web.py:3715
+#: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827
msgid "edit metadata"
msgstr "编辑元数据"
-#: cps/web.py:3289 cps/web.py:3585
+#: cps/web.py:3401 cps/web.py:3697
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "不能上传后缀为 '%(ext)s' 的文件到此服务器"
-#: cps/web.py:3293 cps/web.py:3589
+#: cps/web.py:3405 cps/web.py:3701
msgid "File to be uploaded must have an extension"
msgstr "要上传的文件必须有一个后缀"
-#: cps/web.py:3305 cps/web.py:3609
+#: cps/web.py:3417 cps/web.py:3721
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr "创建路径 %(path)s 失败(权限拒绝)。"
-#: cps/web.py:3310
+#: cps/web.py:3422
#, python-format
msgid "Failed to store file %(file)s."
msgstr "保存文件 %(file)s 失败。"
-#: cps/web.py:3326
+#: cps/web.py:3438
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr "已添加 %(ext)s 格式到 %(book)s"
-#: cps/web.py:3343
+#: cps/web.py:3455
#, python-format
msgid "Failed to create path for cover %(path)s (Permission denied)."
msgstr ""
-#: cps/web.py:3350
+#: cps/web.py:3462
#, python-format
msgid "Failed to store cover-file %(cover)s."
msgstr "保存封面文件 %(cover)s 失败。"
-#: cps/web.py:3353
+#: cps/web.py:3465
msgid "Cover-file is not a valid image file"
msgstr "封面文件不是一个有效的图片文件"
-#: cps/web.py:3370 cps/web.py:3374
+#: cps/web.py:3482 cps/web.py:3486
msgid "unknown"
msgstr "未知"
-#: cps/web.py:3396
+#: cps/web.py:3508
msgid "Cover is not a jpg file, can't save"
msgstr "封面不是一个jpg文件,无法保存"
-#: cps/web.py:3442
+#: cps/web.py:3554
#, python-format
msgid "%(langname)s is not a valid language"
msgstr ""
-#: cps/web.py:3564
+#: cps/web.py:3676
msgid "Error editing book, please check logfile for details"
msgstr "编辑书籍出错,详情请检查日志文件"
-#: cps/web.py:3614
+#: cps/web.py:3726
#, python-format
msgid "Failed to store file %(file)s (Permission denied)."
msgstr "存储文件 %(file)s 失败(权限拒绝)。"
-#: cps/web.py:3619
+#: cps/web.py:3731
#, python-format
msgid "Failed to delete file %(file)s (Permission denied)."
msgstr "删除文件 %(file)s 失败(权限拒绝)。"
-#: cps/web.py:3701
+#: cps/web.py:3813
#, python-format
msgid "File %(file)s uploaded"
msgstr "文件 %(file)s 已上传"
-#: cps/web.py:3731
+#: cps/web.py:3843
msgid "Source or destination format for conversion missing"
msgstr "转换的源或目的格式缺失"
-#: cps/web.py:3741
+#: cps/web.py:3853
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr "书籍已经被成功加入 %(book_format)s 的转换队列"
-#: cps/web.py:3745
+#: cps/web.py:3857
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr "转换此书时出现错误: %(res)s"
-#: cps/worker.py:215 cps/worker.py:387
+#: cps/worker.py:215 cps/worker.py:398
msgid "Started"
msgstr "已开始"
-#: cps/worker.py:237
+#: cps/worker.py:251
#, python-format
msgid "Convertertool %(converter)s not found"
msgstr "找不到转换工具 $(converter)s"
-#: cps/worker.py:272
+#: cps/worker.py:287
#, python-format
msgid "Ebook-converter failed: %(error)s"
msgstr "电子书转换器失败: %(error)s"
-#: cps/worker.py:283
+#: cps/worker.py:298
#, python-format
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
msgstr "Kindlegen 因为错误 %(error)s 失败。消息: %(message)s"
-#: cps/worker.py:317 cps/worker.py:377 cps/worker.py:438
-msgid "Finished"
-msgstr "已完成"
-
-#: cps/worker.py:344 cps/worker.py:363
+#: cps/worker.py:355 cps/worker.py:374
msgid "Waiting"
msgstr "等待中"
-#: cps/worker.py:351
+#: cps/worker.py:362
msgid "This e-mail has been sent via Calibre-Web."
msgstr "此邮件已经通过Calibre-Web发送"
-#: cps/worker.py:472
+#: cps/worker.py:388 cps/worker.py:484
+msgid "Finished"
+msgstr "已完成"
+
+#: cps/worker.py:476
msgid "Failed"
msgstr "失败"
-#: cps/templates/admin.html:4
+#: cps/templates/admin.html:6
msgid "User list"
msgstr "用户列表"
-#: cps/templates/admin.html:7
+#: cps/templates/admin.html:9
msgid "Nickname"
msgstr "昵称"
-#: cps/templates/admin.html:8
+#: cps/templates/admin.html:10
msgid "E-mail"
msgstr ""
-#: cps/templates/admin.html:9
+#: cps/templates/admin.html:11
msgid "Kindle"
msgstr ""
-#: cps/templates/admin.html:10
+#: cps/templates/admin.html:12
msgid "DLS"
msgstr ""
-#: cps/templates/admin.html:11 cps/templates/layout.html:74
+#: cps/templates/admin.html:13 cps/templates/layout.html:74
msgid "Admin"
msgstr "管理"
-#: cps/templates/admin.html:12 cps/templates/detail.html:22
+#: cps/templates/admin.html:14 cps/templates/detail.html:22
#: cps/templates/detail.html:31
msgid "Download"
msgstr "下载"
-#: cps/templates/admin.html:13 cps/templates/layout.html:64
+#: cps/templates/admin.html:15 cps/templates/layout.html:64
msgid "Upload"
msgstr "上传"
-#: cps/templates/admin.html:14
+#: cps/templates/admin.html:16
msgid "Edit"
msgstr "编辑"
-#: cps/templates/admin.html:32
+#: cps/templates/admin.html:39
msgid "SMTP e-mail server settings"
msgstr "SMTP邮件服务器设置"
-#: cps/templates/admin.html:35 cps/templates/email_edit.html:11
+#: cps/templates/admin.html:42 cps/templates/email_edit.html:11
msgid "SMTP hostname"
msgstr "SMTP地址"
-#: cps/templates/admin.html:36
+#: cps/templates/admin.html:43
msgid "SMTP port"
msgstr "SMTP端口"
-#: cps/templates/admin.html:37
+#: cps/templates/admin.html:44
msgid "SSL"
msgstr ""
-#: cps/templates/admin.html:38 cps/templates/email_edit.html:27
+#: cps/templates/admin.html:45 cps/templates/email_edit.html:27
msgid "SMTP login"
msgstr "SMTP用户名"
-#: cps/templates/admin.html:39
+#: cps/templates/admin.html:46
msgid "From mail"
msgstr "来自邮箱"
-#: cps/templates/admin.html:48
+#: cps/templates/admin.html:56
msgid "Change SMTP settings"
msgstr "修改SMTP设置"
-#: cps/templates/admin.html:50
+#: cps/templates/admin.html:62
msgid "Configuration"
msgstr "配置"
-#: cps/templates/admin.html:53
+#: cps/templates/admin.html:65
msgid "Calibre DB dir"
msgstr "Calibre DB目录"
-#: cps/templates/admin.html:57
+#: cps/templates/admin.html:69
msgid "Log level"
msgstr "日志级别"
-#: cps/templates/admin.html:61
+#: cps/templates/admin.html:73
msgid "Port"
msgstr "端口"
-#: cps/templates/admin.html:67 cps/templates/config_view_edit.html:23
+#: cps/templates/admin.html:79 cps/templates/config_view_edit.html:23
msgid "Books per page"
msgstr "每页书籍数"
-#: cps/templates/admin.html:71
+#: cps/templates/admin.html:83
msgid "Uploading"
msgstr "上传"
-#: cps/templates/admin.html:75
+#: cps/templates/admin.html:87
msgid "Anonymous browsing"
msgstr "匿名浏览"
-#: cps/templates/admin.html:79
+#: cps/templates/admin.html:91
msgid "Public registration"
msgstr "开放注册"
-#: cps/templates/admin.html:83 cps/templates/remote_login.html:4
+#: cps/templates/admin.html:95 cps/templates/remote_login.html:4
msgid "Remote login"
msgstr "远程登录"
-#: cps/templates/admin.html:93
+#: cps/templates/admin.html:106
msgid "Administration"
msgstr "管理"
-#: cps/templates/admin.html:94
-msgid "Current commit timestamp"
-msgstr "当前提交时间戳"
-
-#: cps/templates/admin.html:95
-msgid "Newest commit timestamp"
-msgstr "最新提交时间戳"
-
-#: cps/templates/admin.html:97
+#: cps/templates/admin.html:107
msgid "Reconnect to Calibre DB"
msgstr "重新连接到Calibre数据库"
-#: cps/templates/admin.html:98
+#: cps/templates/admin.html:108
msgid "Restart Calibre-Web"
msgstr "重启 Calibre-Web"
-#: cps/templates/admin.html:99
+#: cps/templates/admin.html:109
msgid "Stop Calibre-Web"
msgstr "停止 Calibre-Web"
-#: cps/templates/admin.html:100
+#: cps/templates/admin.html:115
+msgid "Update"
+msgstr ""
+
+#: cps/templates/admin.html:119
+msgid "Version"
+msgstr ""
+
+#: cps/templates/admin.html:120
+msgid "Details"
+msgstr ""
+
+#: cps/templates/admin.html:126
+msgid "Current version"
+msgstr ""
+
+#: cps/templates/admin.html:132
msgid "Check for update"
msgstr "检查更新"
-#: cps/templates/admin.html:101
+#: cps/templates/admin.html:133
msgid "Perform Update"
msgstr "执行更新"
-#: cps/templates/admin.html:110
+#: cps/templates/admin.html:145
msgid "Do you really want to restart Calibre-Web?"
msgstr "您确定要重启 Calibre-Web 吗?"
-#: cps/templates/admin.html:115 cps/templates/admin.html:129
-#: cps/templates/admin.html:150 cps/templates/shelf.html:59
+#: cps/templates/admin.html:150 cps/templates/admin.html:164
+#: cps/templates/admin.html:184 cps/templates/shelf.html:59
msgid "Ok"
msgstr "确定"
-#: cps/templates/admin.html:116 cps/templates/admin.html:130
+#: cps/templates/admin.html:151 cps/templates/admin.html:165
#: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200
#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75
@@ -834,11 +866,11 @@ msgstr "确定"
msgid "Back"
msgstr "后退"
-#: cps/templates/admin.html:128
+#: cps/templates/admin.html:163
msgid "Do you really want to stop Calibre-Web?"
msgstr "您确定要关闭 Calibre-Web 吗?"
-#: cps/templates/admin.html:141
+#: cps/templates/admin.html:175
msgid "Updating, please do not reload page"
msgstr "正在更新,请不要刷新页面"
@@ -1874,3 +1906,9 @@ msgstr "最近下载"
#~ msgid "File extension \"%(ext)s\" is not allowed to be uploaded to this server"
#~ msgstr "不能上传后缀为 \"%(ext)s\" 的文件到此服务器"
+#~ msgid "Current commit timestamp"
+#~ msgstr "当前提交时间戳"
+
+#~ msgid "Newest commit timestamp"
+#~ msgstr "最新提交时间戳"
+
diff --git a/cps/web.py b/cps/web.py
index a3a5d71a..2de1bbd3 100644
--- a/cps/web.py
+++ b/cps/web.py
@@ -1095,23 +1095,126 @@ def get_matching_tags():
@app.route("/get_update_status", methods=['GET'])
@login_required_if_no_ano
def get_update_status():
- status = {}
+ status = {
+ 'update': False,
+ 'success': False,
+ 'message': '',
+ 'current_commit_hash': ''
+ }
+ parents = []
+
+ repository_url = 'https://api.github.com/repos/janeczku/calibre-web'
tz = datetime.timedelta(seconds=time.timezone if (time.localtime().tm_isdst == 0) else time.altzone)
+
if request.method == "GET":
- # should be automatically replaced by git with current commit hash
- commit_id = '$Format:%H$'
- # ToDo: Handle server not reachable -> ValueError:
- commit = requests.get('https://api.github.com/repos/janeczku/calibre-web/git/refs/heads/master').json()
- if "object" in commit and commit['object']['sha'] != commit_id:
- status['status'] = True
- commitdate = requests.get('https://api.github.com/repos/janeczku/calibre-web/git/commits/'+commit['object']['sha']).json()
- if "committer" in commitdate:
- form_date=datetime.datetime.strptime(commitdate['committer']['date'],"%Y-%m-%dT%H:%M:%SZ") - tz
- status['commit'] = format_datetime(form_date, format='short', locale=get_locale())
- else:
- status['commit'] = u'Unknown'
+ version = helper.get_current_version_info()
+ if version is False:
+ status['current_commit_hash'] = _(u'Unknown')
else:
- status['status'] = False
+ status['current_commit_hash'] = version['hash']
+
+ try:
+ r = requests.get(repository_url + '/git/refs/heads/master')
+ r.raise_for_status()
+ commit = r.json()
+ except requests.exceptions.HTTPError as ex:
+ status['message'] = _(u'HTTP Error') + ' ' + str(ex)
+ except requests.exceptions.ConnectionError:
+ status['message'] = _(u'Connection error')
+ except requests.exceptions.Timeout:
+ status['message'] = _(u'Timeout while establishing connection')
+ except requests.exceptions.RequestException:
+ status['message'] = _(u'General error')
+
+ if status['message'] != '':
+ return json.dumps(status)
+
+ if 'object' not in commit:
+ status['message'] = _(u'Unexpected data while reading update information')
+ return json.dumps(status)
+
+ if commit['object']['sha'] == status['current_commit_hash']:
+ status.update({
+ 'update': False,
+ 'success': True,
+ 'message': _(u'No update available. You already have the latest version installed')
+ })
+ return json.dumps(status)
+
+ # a new update is available
+ status['update'] = True
+
+ try:
+ r = requests.get(repository_url + '/git/commits/' + commit['object']['sha'])
+ r.raise_for_status()
+ update_data = r.json()
+ except requests.exceptions.HTTPError as ex:
+ status['error'] = _(u'HTTP Error') + ' ' + str(ex)
+ except requests.exceptions.ConnectionError:
+ status['error'] = _(u'Connection error')
+ except requests.exceptions.Timeout:
+ status['error'] = _(u'Timeout while establishing connection')
+ except requests.exceptions.RequestException:
+ status['error'] = _(u'General error')
+
+ if status['message'] != '':
+ return json.dumps(status)
+
+ if 'committer' in update_data and 'message' in update_data:
+ status['success'] = True
+ status['message'] = _(u'A new update is available. Click on the button below to update to the latest version.')
+
+ new_commit_date = datetime.datetime.strptime(
+ update_data['committer']['date'], '%Y-%m-%dT%H:%M:%SZ') - tz
+ parents.append(
+ [
+ format_datetime(new_commit_date, format='short', locale=get_locale()),
+ update_data['message'],
+ update_data['sha']
+ ]
+ )
+
+ # it only makes sense to analyze the parents if we know the current commit hash
+ if status['current_commit_hash'] != '':
+ try:
+ parent_commit = update_data['parents'][0]
+ # limit the maximum search depth
+ remaining_parents_cnt = 10
+ except IndexError:
+ remaining_parents_cnt = None
+
+ if remaining_parents_cnt is not None:
+ while True:
+ if remaining_parents_cnt == 0:
+ break
+
+ # check if we are more than one update behind if so, go up the tree
+ if parent_commit['sha'] != status['current_commit_hash']:
+ try:
+ r = requests.get(parent_commit['url'])
+ r.raise_for_status()
+ parent_data = r.json()
+
+ parent_commit_date = datetime.datetime.strptime(
+ parent_data['committer']['date'], '%Y-%m-%dT%H:%M:%SZ') - tz
+ parent_commit_date = format_datetime(
+ parent_commit_date, format='short', locale=get_locale())
+
+ parents.append([parent_commit_date, parent_data['message'], parent_data['sha']])
+ parent_commit = parent_data['parents'][0]
+ remaining_parents_cnt -= 1
+ except Exception:
+ # it isn't crucial if we can't get information about the parent
+ break
+ else:
+ # parent is our current version
+ break
+
+ else:
+ status['success'] = False
+ status['message'] = _(u'Could not fetch update information')
+
+ status['history'] = parents
return json.dumps(status)
@@ -2670,10 +2773,12 @@ def profile():
@login_required
@admin_required
def admin():
- commit = '$Format:%cI$'
- if commit.startswith("$"):
+ version = helper.get_current_version_info()
+ if version is False:
commit = _(u'Unknown')
else:
+ commit = version['datetime']
+
tz = datetime.timedelta(seconds=time.timezone if (time.localtime().tm_isdst == 0) else time.altzone)
form_date = datetime.datetime.strptime(commit[:19], "%Y-%m-%dT%H:%M:%S")
if len(commit) > 19: # check if string has timezone
diff --git a/messages.pot b/messages.pot
index f4b802fb..0cc3c9cf 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-09-14 20:34+0200\n"
+"POT-Creation-Date: 2018-09-14 21:11+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -113,528 +113,560 @@ msgstr ""
msgid "Unrar binary file not found"
msgstr ""
-#: cps/web.py:1127
+#: cps/web.py:1112 cps/web.py:2778
+msgid "Unknown"
+msgstr ""
+
+#: cps/web.py:1121 cps/web.py:1152
+msgid "HTTP Error"
+msgstr ""
+
+#: cps/web.py:1123 cps/web.py:1154
+msgid "Connection error"
+msgstr ""
+
+#: cps/web.py:1125 cps/web.py:1156
+msgid "Timeout while establishing connection"
+msgstr ""
+
+#: cps/web.py:1127 cps/web.py:1158
+msgid "General error"
+msgstr ""
+
+#: cps/web.py:1133
+msgid "Unexpected data while reading update information"
+msgstr ""
+
+#: cps/web.py:1140
+msgid "No update available. You already have the latest version installed"
+msgstr ""
+
+#: cps/web.py:1165
+msgid "A new update is available. Click on the button below to update to the latest version."
+msgstr ""
+
+#: cps/web.py:1215
+msgid "Could not fetch update information"
+msgstr ""
+
+#: cps/web.py:1230
msgid "Requesting update package"
msgstr ""
-#: cps/web.py:1128
+#: cps/web.py:1231
msgid "Downloading update package"
msgstr ""
-#: cps/web.py:1129
+#: cps/web.py:1232
msgid "Unzipping update package"
msgstr ""
-#: cps/web.py:1130
+#: cps/web.py:1233
msgid "Files are replaced"
msgstr ""
-#: cps/web.py:1131
+#: cps/web.py:1234
msgid "Database connections are closed"
msgstr ""
-#: cps/web.py:1132
+#: cps/web.py:1235
msgid "Server is stopped"
msgstr ""
-#: cps/web.py:1133
+#: cps/web.py:1236
msgid "Update finished, please press okay and reload page"
msgstr ""
-#: cps/web.py:1153
+#: cps/web.py:1256
msgid "Recently Added Books"
msgstr ""
-#: cps/web.py:1163
+#: cps/web.py:1266
msgid "Newest Books"
msgstr ""
-#: cps/web.py:1175
+#: cps/web.py:1278
msgid "Oldest Books"
msgstr ""
-#: cps/web.py:1187
+#: cps/web.py:1290
msgid "Books (A-Z)"
msgstr ""
-#: cps/web.py:1198
+#: cps/web.py:1301
msgid "Books (Z-A)"
msgstr ""
-#: cps/web.py:1227
+#: cps/web.py:1330
msgid "Hot Books (most downloaded)"
msgstr ""
-#: cps/web.py:1240
+#: cps/web.py:1343
msgid "Best rated books"
msgstr ""
-#: cps/templates/index.xml:36 cps/web.py:1252
+#: cps/templates/index.xml:36 cps/web.py:1355
msgid "Random Books"
msgstr ""
-#: cps/web.py:1267
+#: cps/web.py:1370
msgid "Author list"
msgstr ""
-#: cps/web.py:1279 cps/web.py:1342 cps/web.py:1497 cps/web.py:2049
+#: cps/web.py:1382 cps/web.py:1445 cps/web.py:1600 cps/web.py:2152
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr ""
-#: cps/templates/index.xml:73 cps/web.py:1326
+#: cps/templates/index.xml:73 cps/web.py:1429
msgid "Series list"
msgstr ""
-#: cps/web.py:1340
+#: cps/web.py:1443
#, python-format
msgid "Series: %(serie)s"
msgstr ""
-#: cps/web.py:1367
+#: cps/web.py:1470
msgid "Available languages"
msgstr ""
-#: cps/web.py:1384
+#: cps/web.py:1487
#, python-format
msgid "Language: %(name)s"
msgstr ""
-#: cps/templates/index.xml:66 cps/web.py:1395
+#: cps/templates/index.xml:66 cps/web.py:1498
msgid "Category list"
msgstr ""
-#: cps/web.py:1409
+#: cps/web.py:1512
#, python-format
msgid "Category: %(name)s"
msgstr ""
-#: cps/templates/layout.html:71 cps/web.py:1548
+#: cps/templates/layout.html:71 cps/web.py:1651
msgid "Tasks"
msgstr ""
-#: cps/web.py:1578
+#: cps/web.py:1681
msgid "Statistics"
msgstr ""
-#: cps/web.py:1683
+#: cps/web.py:1786
msgid "Callback domain is not verified, please follow steps to verify domain in google developer console"
msgstr ""
-#: cps/web.py:1758
+#: cps/web.py:1861
msgid "Server restarted, please reload page"
msgstr ""
-#: cps/web.py:1761
+#: cps/web.py:1864
msgid "Performing shutdown of server, please close window"
msgstr ""
-#: cps/web.py:1780
+#: cps/web.py:1883
msgid "Update done"
msgstr ""
-#: cps/web.py:1850
+#: cps/web.py:1953
msgid "Published after "
msgstr ""
-#: cps/web.py:1857
+#: cps/web.py:1960
msgid "Published before "
msgstr ""
-#: cps/web.py:1871
+#: cps/web.py:1974
#, python-format
msgid "Rating <= %(rating)s"
msgstr ""
-#: cps/web.py:1873
+#: cps/web.py:1976
#, python-format
msgid "Rating >= %(rating)s"
msgstr ""
-#: cps/web.py:1932 cps/web.py:1941
+#: cps/web.py:2035 cps/web.py:2044
msgid "search"
msgstr ""
#: cps/templates/index.xml:44 cps/templates/index.xml:48
-#: cps/templates/layout.html:146 cps/web.py:2008
+#: cps/templates/layout.html:146 cps/web.py:2111
msgid "Read Books"
msgstr ""
#: cps/templates/index.xml:52 cps/templates/index.xml:56
-#: cps/templates/layout.html:148 cps/web.py:2011
+#: cps/templates/layout.html:148 cps/web.py:2114
msgid "Unread Books"
msgstr ""
-#: cps/web.py:2059 cps/web.py:2061 cps/web.py:2063 cps/web.py:2075
+#: cps/web.py:2162 cps/web.py:2164 cps/web.py:2166 cps/web.py:2178
msgid "Read a Book"
msgstr ""
-#: cps/web.py:2141 cps/web.py:3024
+#: cps/web.py:2244 cps/web.py:3129
msgid "Please fill out all fields!"
msgstr ""
-#: cps/web.py:2142 cps/web.py:2163 cps/web.py:2167 cps/web.py:2172
-#: cps/web.py:2174
+#: cps/web.py:2245 cps/web.py:2266 cps/web.py:2270 cps/web.py:2275
+#: cps/web.py:2277
msgid "register"
msgstr ""
-#: cps/web.py:2162 cps/web.py:3240
+#: cps/web.py:2265 cps/web.py:3345
msgid "An unknown error occurred. Please try again later."
msgstr ""
-#: cps/web.py:2165
+#: cps/web.py:2268
msgid "Your e-mail is not allowed to register"
msgstr ""
-#: cps/web.py:2168
+#: cps/web.py:2271
msgid "Confirmation e-mail was send to your e-mail account."
msgstr ""
-#: cps/web.py:2171
+#: cps/web.py:2274
msgid "This username or e-mail address is already in use."
msgstr ""
-#: cps/web.py:2188 cps/web.py:2284
+#: cps/web.py:2291 cps/web.py:2387
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr ""
-#: cps/web.py:2193
+#: cps/web.py:2296
msgid "Wrong Username or Password"
msgstr ""
-#: cps/web.py:2199 cps/web.py:2220
+#: cps/web.py:2302 cps/web.py:2323
msgid "login"
msgstr ""
-#: cps/web.py:2232 cps/web.py:2263
+#: cps/web.py:2335 cps/web.py:2366
msgid "Token not found"
msgstr ""
-#: cps/web.py:2240 cps/web.py:2271
+#: cps/web.py:2343 cps/web.py:2374
msgid "Token has expired"
msgstr ""
-#: cps/web.py:2248
+#: cps/web.py:2351
msgid "Success! Please return to your device"
msgstr ""
-#: cps/web.py:2298
+#: cps/web.py:2401
msgid "Please configure the SMTP mail settings first..."
msgstr ""
-#: cps/web.py:2302
+#: cps/web.py:2405
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr ""
-#: cps/web.py:2306
+#: cps/web.py:2409
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr ""
-#: cps/web.py:2308 cps/web.py:3078
+#: cps/web.py:2411 cps/web.py:3183
msgid "Please configure your kindle e-mail address first..."
msgstr ""
-#: cps/web.py:2352
+#: cps/web.py:2455
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2363
+#: cps/web.py:2466
msgid "Invalid shelf specified"
msgstr ""
-#: cps/web.py:2368
+#: cps/web.py:2471
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr ""
-#: cps/web.py:2373
+#: cps/web.py:2476
msgid "User is not allowed to edit public shelves"
msgstr ""
-#: cps/web.py:2391
+#: cps/web.py:2494
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr ""
-#: cps/web.py:2405
+#: cps/web.py:2508
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2407
+#: cps/web.py:2510
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2444
+#: cps/web.py:2547
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2450
+#: cps/web.py:2553
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2470 cps/web.py:2494
+#: cps/web.py:2573 cps/web.py:2597
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/web.py:2475
+#: cps/web.py:2578
#, python-format
msgid "Shelf %(title)s created"
msgstr ""
-#: cps/web.py:2477 cps/web.py:2505
+#: cps/web.py:2580 cps/web.py:2608
msgid "There was an error"
msgstr ""
-#: cps/web.py:2478 cps/web.py:2480
+#: cps/web.py:2581 cps/web.py:2583
msgid "create a shelf"
msgstr ""
-#: cps/web.py:2503
+#: cps/web.py:2606
#, python-format
msgid "Shelf %(title)s changed"
msgstr ""
-#: cps/web.py:2506 cps/web.py:2508
+#: cps/web.py:2609 cps/web.py:2611
msgid "Edit a shelf"
msgstr ""
-#: cps/web.py:2529
+#: cps/web.py:2632
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr ""
-#: cps/web.py:2556
+#: cps/web.py:2659
#, python-format
msgid "Shelf: '%(name)s'"
msgstr ""
-#: cps/web.py:2559
+#: cps/web.py:2662
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr ""
-#: cps/web.py:2590
+#: cps/web.py:2693
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr ""
-#: cps/web.py:2619 cps/web.py:3030
+#: cps/web.py:2722 cps/web.py:3135
msgid "E-mail is not from valid domain"
msgstr ""
-#: cps/web.py:2621 cps/web.py:2662 cps/web.py:2665
+#: cps/web.py:2724 cps/web.py:2765 cps/web.py:2768
#, python-format
msgid "%(name)s's profile"
msgstr ""
-#: cps/web.py:2660
+#: cps/web.py:2763
msgid "Found an existing account for this e-mail address."
msgstr ""
-#: cps/web.py:2663
+#: cps/web.py:2766
msgid "Profile updated"
msgstr ""
-#: cps/web.py:2675
-msgid "Unknown"
-msgstr ""
-
-#: cps/web.py:2689
+#: cps/web.py:2794
msgid "Admin page"
msgstr ""
-#: cps/web.py:2767 cps/web.py:2940
+#: cps/web.py:2872 cps/web.py:3045
msgid "Calibre-Web configuration updated"
msgstr ""
-#: cps/templates/admin.html:91 cps/web.py:2780
+#: cps/templates/admin.html:100 cps/web.py:2885
msgid "UI Configuration"
msgstr ""
-#: cps/web.py:2798
+#: cps/web.py:2903
msgid "Import of optional Google Drive requirements missing"
msgstr ""
-#: cps/web.py:2801
+#: cps/web.py:2906
msgid "client_secrets.json is missing or not readable"
msgstr ""
-#: cps/web.py:2806 cps/web.py:2833
+#: cps/web.py:2911 cps/web.py:2938
msgid "client_secrets.json is not configured for web application"
msgstr ""
-#: cps/templates/admin.html:90 cps/web.py:2836 cps/web.py:2862 cps/web.py:2874
-#: cps/web.py:2916 cps/web.py:2931 cps/web.py:2948 cps/web.py:2955
-#: cps/web.py:2972
+#: cps/templates/admin.html:99 cps/web.py:2941 cps/web.py:2967 cps/web.py:2979
+#: cps/web.py:3021 cps/web.py:3036 cps/web.py:3053 cps/web.py:3060
+#: cps/web.py:3077
msgid "Basic Configuration"
msgstr ""
-#: cps/web.py:2859
+#: cps/web.py:2964
msgid "Keyfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2871
+#: cps/web.py:2976
msgid "Certfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2913
+#: cps/web.py:3018
msgid "Logfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2952
+#: cps/web.py:3057
msgid "DB location is not valid, please enter correct path"
msgstr ""
-#: cps/templates/admin.html:31 cps/web.py:3026 cps/web.py:3032 cps/web.py:3048
+#: cps/templates/admin.html:33 cps/web.py:3131 cps/web.py:3137 cps/web.py:3153
msgid "Add new user"
msgstr ""
-#: cps/web.py:3038
+#: cps/web.py:3143
#, python-format
msgid "User '%(user)s' created"
msgstr ""
-#: cps/web.py:3042
+#: cps/web.py:3147
msgid "Found an existing account for this e-mail address or nickname."
msgstr ""
-#: cps/web.py:3066 cps/web.py:3080
+#: cps/web.py:3171 cps/web.py:3185
msgid "E-mail server settings updated"
msgstr ""
-#: cps/web.py:3073
+#: cps/web.py:3178
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr ""
-#: cps/web.py:3076
+#: cps/web.py:3181
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr ""
-#: cps/web.py:3081
+#: cps/web.py:3186
msgid "Edit e-mail server settings"
msgstr ""
-#: cps/web.py:3106
+#: cps/web.py:3211
#, python-format
msgid "User '%(nick)s' deleted"
msgstr ""
-#: cps/web.py:3215
+#: cps/web.py:3320
#, python-format
msgid "User '%(nick)s' updated"
msgstr ""
-#: cps/web.py:3218
+#: cps/web.py:3323
msgid "An unknown error occured."
msgstr ""
-#: cps/web.py:3220
+#: cps/web.py:3325
#, python-format
msgid "Edit User %(nick)s"
msgstr ""
-#: cps/web.py:3237
+#: cps/web.py:3342
#, python-format
msgid "Password for user %(user)s reset"
msgstr ""
-#: cps/web.py:3257
+#: cps/web.py:3362
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr ""
-#: cps/web.py:3285 cps/web.py:3562 cps/web.py:3567 cps/web.py:3722
+#: cps/web.py:3390 cps/web.py:3667 cps/web.py:3672 cps/web.py:3827
msgid "edit metadata"
msgstr ""
-#: cps/web.py:3296 cps/web.py:3592
+#: cps/web.py:3401 cps/web.py:3697
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr ""
-#: cps/web.py:3300 cps/web.py:3596
+#: cps/web.py:3405 cps/web.py:3701
msgid "File to be uploaded must have an extension"
msgstr ""
-#: cps/web.py:3312 cps/web.py:3616
+#: cps/web.py:3417 cps/web.py:3721
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr ""
-#: cps/web.py:3317
+#: cps/web.py:3422
#, python-format
msgid "Failed to store file %(file)s."
msgstr ""
-#: cps/web.py:3333
+#: cps/web.py:3438
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr ""
-#: cps/web.py:3350
+#: cps/web.py:3455
#, python-format
msgid "Failed to create path for cover %(path)s (Permission denied)."
msgstr ""
-#: cps/web.py:3357
+#: cps/web.py:3462
#, python-format
msgid "Failed to store cover-file %(cover)s."
msgstr ""
-#: cps/web.py:3360
+#: cps/web.py:3465
msgid "Cover-file is not a valid image file"
msgstr ""
-#: cps/web.py:3377 cps/web.py:3381
+#: cps/web.py:3482 cps/web.py:3486
msgid "unknown"
msgstr ""
-#: cps/web.py:3403
+#: cps/web.py:3508
msgid "Cover is not a jpg file, can't save"
msgstr ""
-#: cps/web.py:3449
+#: cps/web.py:3554
#, python-format
msgid "%(langname)s is not a valid language"
msgstr ""
-#: cps/web.py:3571
+#: cps/web.py:3676
msgid "Error editing book, please check logfile for details"
msgstr ""
-#: cps/web.py:3621
+#: cps/web.py:3726
#, python-format
msgid "Failed to store file %(file)s (Permission denied)."
msgstr ""
-#: cps/web.py:3626
+#: cps/web.py:3731
#, python-format
msgid "Failed to delete file %(file)s (Permission denied)."
msgstr ""
-#: cps/web.py:3708
+#: cps/web.py:3813
#, python-format
msgid "File %(file)s uploaded"
msgstr ""
-#: cps/web.py:3738
+#: cps/web.py:3843
msgid "Source or destination format for conversion missing"
msgstr ""
-#: cps/web.py:3748
+#: cps/web.py:3853
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr ""
-#: cps/web.py:3752
+#: cps/web.py:3857
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr ""
@@ -674,149 +706,157 @@ msgstr ""
msgid "Failed"
msgstr ""
-#: cps/templates/admin.html:4
+#: cps/templates/admin.html:6
msgid "User list"
msgstr ""
-#: cps/templates/admin.html:7
+#: cps/templates/admin.html:9
msgid "Nickname"
msgstr ""
-#: cps/templates/admin.html:8
+#: cps/templates/admin.html:10
msgid "E-mail"
msgstr ""
-#: cps/templates/admin.html:9
+#: cps/templates/admin.html:11
msgid "Kindle"
msgstr ""
-#: cps/templates/admin.html:10
+#: cps/templates/admin.html:12
msgid "DLS"
msgstr ""
-#: cps/templates/admin.html:11 cps/templates/layout.html:74
+#: cps/templates/admin.html:13 cps/templates/layout.html:74
msgid "Admin"
msgstr ""
-#: cps/templates/admin.html:12 cps/templates/detail.html:22
+#: cps/templates/admin.html:14 cps/templates/detail.html:22
#: cps/templates/detail.html:31
msgid "Download"
msgstr ""
-#: cps/templates/admin.html:13 cps/templates/layout.html:64
+#: cps/templates/admin.html:15 cps/templates/layout.html:64
msgid "Upload"
msgstr ""
-#: cps/templates/admin.html:14
+#: cps/templates/admin.html:16
msgid "Edit"
msgstr ""
-#: cps/templates/admin.html:32
+#: cps/templates/admin.html:39
msgid "SMTP e-mail server settings"
msgstr ""
-#: cps/templates/admin.html:35 cps/templates/email_edit.html:11
+#: cps/templates/admin.html:42 cps/templates/email_edit.html:11
msgid "SMTP hostname"
msgstr ""
-#: cps/templates/admin.html:36
+#: cps/templates/admin.html:43
msgid "SMTP port"
msgstr ""
-#: cps/templates/admin.html:37
+#: cps/templates/admin.html:44
msgid "SSL"
msgstr ""
-#: cps/templates/admin.html:38 cps/templates/email_edit.html:27
+#: cps/templates/admin.html:45 cps/templates/email_edit.html:27
msgid "SMTP login"
msgstr ""
-#: cps/templates/admin.html:39
+#: cps/templates/admin.html:46
msgid "From mail"
msgstr ""
-#: cps/templates/admin.html:48
+#: cps/templates/admin.html:56
msgid "Change SMTP settings"
msgstr ""
-#: cps/templates/admin.html:50
+#: cps/templates/admin.html:62
msgid "Configuration"
msgstr ""
-#: cps/templates/admin.html:53
+#: cps/templates/admin.html:65
msgid "Calibre DB dir"
msgstr ""
-#: cps/templates/admin.html:57
+#: cps/templates/admin.html:69
msgid "Log level"
msgstr ""
-#: cps/templates/admin.html:61
+#: cps/templates/admin.html:73
msgid "Port"
msgstr ""
-#: cps/templates/admin.html:67 cps/templates/config_view_edit.html:23
+#: cps/templates/admin.html:79 cps/templates/config_view_edit.html:23
msgid "Books per page"
msgstr ""
-#: cps/templates/admin.html:71
+#: cps/templates/admin.html:83
msgid "Uploading"
msgstr ""
-#: cps/templates/admin.html:75
+#: cps/templates/admin.html:87
msgid "Anonymous browsing"
msgstr ""
-#: cps/templates/admin.html:79
+#: cps/templates/admin.html:91
msgid "Public registration"
msgstr ""
-#: cps/templates/admin.html:83 cps/templates/remote_login.html:4
+#: cps/templates/admin.html:95 cps/templates/remote_login.html:4
msgid "Remote login"
msgstr ""
-#: cps/templates/admin.html:93
+#: cps/templates/admin.html:106
msgid "Administration"
msgstr ""
-#: cps/templates/admin.html:94
-msgid "Current commit timestamp"
+#: cps/templates/admin.html:107
+msgid "Reconnect to Calibre DB"
msgstr ""
-#: cps/templates/admin.html:95
-msgid "Newest commit timestamp"
+#: cps/templates/admin.html:108
+msgid "Restart Calibre-Web"
msgstr ""
-#: cps/templates/admin.html:97
-msgid "Reconnect to Calibre DB"
+#: cps/templates/admin.html:109
+msgid "Stop Calibre-Web"
msgstr ""
-#: cps/templates/admin.html:98
-msgid "Restart Calibre-Web"
+#: cps/templates/admin.html:115
+msgid "Update"
msgstr ""
-#: cps/templates/admin.html:99
-msgid "Stop Calibre-Web"
+#: cps/templates/admin.html:119
+msgid "Version"
+msgstr ""
+
+#: cps/templates/admin.html:120
+msgid "Details"
+msgstr ""
+
+#: cps/templates/admin.html:126
+msgid "Current version"
msgstr ""
-#: cps/templates/admin.html:100
+#: cps/templates/admin.html:132
msgid "Check for update"
msgstr ""
-#: cps/templates/admin.html:101
+#: cps/templates/admin.html:133
msgid "Perform Update"
msgstr ""
-#: cps/templates/admin.html:110
+#: cps/templates/admin.html:145
msgid "Do you really want to restart Calibre-Web?"
msgstr ""
-#: cps/templates/admin.html:115 cps/templates/admin.html:129
-#: cps/templates/admin.html:150 cps/templates/shelf.html:59
+#: cps/templates/admin.html:150 cps/templates/admin.html:164
+#: cps/templates/admin.html:184 cps/templates/shelf.html:59
msgid "Ok"
msgstr ""
-#: cps/templates/admin.html:116 cps/templates/admin.html:130
+#: cps/templates/admin.html:151 cps/templates/admin.html:165
#: cps/templates/book_edit.html:178 cps/templates/book_edit.html:200
#: cps/templates/config_edit.html:212 cps/templates/config_view_edit.html:164
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:75
@@ -825,11 +865,11 @@ msgstr ""
msgid "Back"
msgstr ""
-#: cps/templates/admin.html:128
+#: cps/templates/admin.html:163
msgid "Do you really want to stop Calibre-Web?"
msgstr ""
-#: cps/templates/admin.html:141
+#: cps/templates/admin.html:175
msgid "Updating, please do not reload page"
msgstr ""