\n"
"Language: pl\n"
@@ -28,59 +28,59 @@ msgstr ""
msgid "not installed"
msgstr "nie zainstalowane"
-#: cps/helper.py:78
+#: cps/helper.py:79
#, python-format
msgid "kindlegen binary %(kindlepath)s not found"
msgstr ""
-#: cps/helper.py:84
+#: cps/helper.py:85
#, python-format
msgid "epub format not found for book id: %(book)d"
msgstr ""
-#: cps/helper.py:94
+#: cps/helper.py:95
msgid "kindlegen failed, no execution permissions"
msgstr ""
-#: cps/helper.py:109
+#: cps/helper.py:110
#, python-format
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
msgstr ""
-#: cps/helper.py:188
+#: cps/helper.py:189
#, python-format
msgid "Failed to send mail: %s"
msgstr "Nie można wysłać poczty: %s"
-#: cps/helper.py:195
+#: cps/helper.py:196
msgid "Calibre-web test email"
msgstr "Calibre-web testowy email"
-#: cps/helper.py:196 cps/helper.py:208
+#: cps/helper.py:197 cps/helper.py:209
msgid "This email has been sent via calibre web."
msgstr "Ten e-mail został wysłany przez Calibre Web."
-#: cps/helper.py:205 cps/templates/detail.html:44
+#: cps/helper.py:206 cps/templates/detail.html:44
msgid "Send to Kindle"
msgstr "Wyślij do Kindle"
-#: cps/helper.py:225 cps/helper.py:239
+#: cps/helper.py:226 cps/helper.py:240
msgid "Could not find any formats suitable for sending by email"
msgstr ""
"Nie można znaleźć żadnych formatów przystosowane do wysyłania pocztą "
"e-mail"
-#: cps/helper.py:340
+#: cps/helper.py:341
#, python-format
msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s"
msgstr ""
-#: cps/helper.py:349
+#: cps/helper.py:350
#, python-format
msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s"
msgstr ""
-#: cps/ub.py:684
+#: cps/ub.py:694
msgid "Guest"
msgstr "Gość"
@@ -148,7 +148,7 @@ msgstr "Losowe książki"
msgid "Author list"
msgstr "Lista autorów"
-#: cps/web.py:1220 cps/web.py:1278 cps/web.py:1408 cps/web.py:1903
+#: cps/web.py:1220 cps/web.py:1278 cps/web.py:1408 cps/web.py:1917
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:"
@@ -187,306 +187,328 @@ msgstr ""
msgid "Statistics"
msgstr "Statystyki"
-#: cps/web.py:1641
+#: cps/web.py:1573
+msgid ""
+"Callback domain is not verified, please follow steps to verify domain in "
+"google developer console"
+msgstr ""
+
+#: cps/web.py:1651
msgid "Server restarted, please reload page"
msgstr "Serwer uruchomiony ponownie, proszę odświeżyć stronę"
-#: cps/web.py:1643
+#: cps/web.py:1653
msgid "Performing shutdown of server, please close window"
msgstr "Wykonano wyłączenie serwera, proszę zamknąć okno"
-#: cps/web.py:1659
+#: cps/web.py:1669
msgid "Update done"
msgstr "Aktualizacja zakończona"
-#: cps/web.py:1716
+#: cps/web.py:1726
#, python-format
msgid "Published after %s"
msgstr ""
-#: cps/web.py:1721
+#: cps/web.py:1731
msgid "Published before "
msgstr ""
-#: cps/web.py:1767 cps/web.py:1780
+#: cps/web.py:1777 cps/web.py:1790
msgid "search"
msgstr "szukaj"
+#: cps/web.py:1816
+msgid "not found on GDrive"
+msgstr ""
+
#: cps/templates/index.xml:39 cps/templates/index.xml:42
-#: cps/templates/layout.html:141 cps/web.py:1858
+#: cps/templates/layout.html:143 cps/web.py:1872
msgid "Read Books"
msgstr "Przeczytane książki"
#: cps/templates/index.xml:46 cps/templates/index.xml:49
-#: cps/templates/layout.html:143 cps/web.py:1861
+#: cps/templates/layout.html:145 cps/web.py:1875
msgid "Unread Books"
msgstr "Nieprzeczytane książki"
-#: cps/web.py:1936 cps/web.py:1938 cps/web.py:1940 cps/web.py:1949
+#: cps/web.py:1950 cps/web.py:1952 cps/web.py:1954 cps/web.py:1963
msgid "Read a Book"
msgstr "Czytaj książkę"
-#: cps/web.py:2001 cps/web.py:2718
+#: cps/web.py:2015 cps/web.py:2751
msgid "Please fill out all fields!"
msgstr "Proszę wypełnić wszystkie pola!"
-#: cps/web.py:2002 cps/web.py:2019 cps/web.py:2024 cps/web.py:2026
+#: cps/web.py:2016 cps/web.py:2033 cps/web.py:2038 cps/web.py:2040
msgid "register"
msgstr "rejestracja"
-#: cps/web.py:2018
+#: cps/web.py:2032
msgid "An unknown error occured. Please try again later."
msgstr "Wystąpił nieznany błąd. Spróbuj ponownie później."
-#: cps/web.py:2023
+#: cps/web.py:2037
msgid "This username or email address is already in use."
msgstr "Nazwa użytkownika lub adres e-mail jest już w użyciu."
-#: cps/web.py:2042 cps/web.py:2138
+#: cps/web.py:2056 cps/web.py:2152
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "Zalogowałeś się jako: '%(nickname)s'"
-#: cps/web.py:2047
+#: cps/web.py:2061
msgid "Wrong Username or Password"
msgstr "Błędna nazwa użytkownika lub hasło"
-#: cps/web.py:2053 cps/web.py:2074
+#: cps/web.py:2067 cps/web.py:2088
msgid "login"
msgstr "logowanie"
-#: cps/web.py:2086 cps/web.py:2117
+#: cps/web.py:2100 cps/web.py:2131
msgid "Token not found"
msgstr ""
-#: cps/web.py:2094 cps/web.py:2125
+#: cps/web.py:2108 cps/web.py:2139
msgid "Token has expired"
msgstr ""
-#: cps/web.py:2102
+#: cps/web.py:2116
msgid "Success! Please return to your device"
msgstr ""
-#: cps/web.py:2152
+#: cps/web.py:2166
msgid "Please configure the SMTP mail settings first..."
msgstr "Proszę najpierw skonfigurować ustawienia SMTP poczty e-mail..."
-#: cps/web.py:2156
+#: cps/web.py:2170
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr "Książka została pomyślnie wysłana do %(kindlemail)s"
-#: cps/web.py:2160
+#: cps/web.py:2174
#, 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:2162 cps/web.py:2805
+#: cps/web.py:2176 cps/web.py:2839
msgid "Please configure your kindle email address first..."
msgstr "Proszę najpierw skonfigurować adres e-mail swojego kindla..."
-#: cps/web.py:2206
+#: cps/web.py:2220
#, 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:2244
+#: cps/web.py:2258
#, 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:2250
+#: cps/web.py:2264
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2270 cps/web.py:2294
+#: cps/web.py:2284 cps/web.py:2308
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr "Półka o nazwie '%(title)s' już istnieje."
-#: cps/web.py:2275
+#: cps/web.py:2289
#, python-format
msgid "Shelf %(title)s created"
msgstr "Półka %(title)s została utworzona"
-#: cps/web.py:2277 cps/web.py:2305
+#: cps/web.py:2291 cps/web.py:2319
msgid "There was an error"
msgstr "Wystąpił błąd"
-#: cps/web.py:2278 cps/web.py:2280
+#: cps/web.py:2292 cps/web.py:2294
msgid "create a shelf"
msgstr "utwórz półkę"
-#: cps/web.py:2303
+#: cps/web.py:2317
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Półka %(title)s została zmieniona"
-#: cps/web.py:2306 cps/web.py:2308
+#: cps/web.py:2320 cps/web.py:2322
msgid "Edit a shelf"
msgstr "Edytuj półkę"
-#: cps/web.py:2329
+#: cps/web.py:2343
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "pomyślnie usunięto półkę %(name)s"
-#: cps/web.py:2351
+#: cps/web.py:2365
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Półka: '%(name)s'"
-#: cps/web.py:2354
+#: cps/web.py:2368
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr ""
-#: cps/web.py:2385
+#: cps/web.py:2399
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Zmieniono kolejność półki: '%(name)s'"
-#: cps/web.py:2454
+#: cps/web.py:2469
msgid "Found an existing account for this email address."
msgstr "Znaleziono istniejące konto dla tego adresu e-mail."
-#: cps/web.py:2456 cps/web.py:2460
+#: cps/web.py:2471 cps/web.py:2475
#, python-format
msgid "%(name)s's profile"
msgstr "Profil użytkownika %(name)s"
-#: cps/web.py:2457
+#: cps/web.py:2472
msgid "Profile updated"
msgstr "Zaktualizowano profil"
-#: cps/web.py:2469
+#: cps/web.py:2484
msgid "Unknown"
msgstr ""
-#: cps/web.py:2482
+#: cps/web.py:2497
msgid "Admin page"
msgstr "Portal administracyjny"
-#: cps/web.py:2553
-msgid "Keyfile location is not valid, please enter correct path"
+#: cps/web.py:2520
+msgid "Import of optional GDrive requirements missing"
msgstr ""
-#: cps/web.py:2556 cps/web.py:2567 cps/web.py:2660 cps/web.py:2679
-#: cps/web.py:2685 cps/web.py:2699
+#: cps/web.py:2523
+msgid "client_secret.json is missing or not readable"
+msgstr ""
+
+#: cps/web.py:2528 cps/web.py:2553
+msgid "client_secret.json is not configured for web application"
+msgstr ""
+
+#: cps/web.py:2556 cps/web.py:2582 cps/web.py:2593 cps/web.py:2686
+#: cps/web.py:2706 cps/web.py:2713 cps/web.py:2732
msgid "Basic Configuration"
msgstr "Podstawowa konfiguracja"
-#: cps/web.py:2564
+#: cps/web.py:2579
+msgid "Keyfile location is not valid, please enter correct path"
+msgstr ""
+
+#: cps/web.py:2590
msgid "Certfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2657
+#: cps/web.py:2683
msgid "Logfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2672
+#: cps/web.py:2698
msgid "Calibre-web configuration updated"
msgstr "Konfiguracja Calibre-web została zaktualizowana"
-#: cps/web.py:2683
+#: cps/web.py:2710
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:34 cps/web.py:2720 cps/web.py:2775
+#: cps/templates/admin.html:34 cps/web.py:2753 cps/web.py:2809
msgid "Add new user"
msgstr "Dodaj nowego użytkownika"
-#: cps/web.py:2765
+#: cps/web.py:2799
#, python-format
msgid "User '%(user)s' created"
msgstr "Użytkownik '%(user)s' został utworzony"
-#: cps/web.py:2769
+#: cps/web.py:2803
msgid "Found an existing account for this email address or nickname."
msgstr "Znaleziono istniejące konto dla tego adresu e-mail lub nazwy użytkownika."
-#: cps/web.py:2793
+#: cps/web.py:2827
msgid "Mail settings updated"
msgstr "Zaktualizowano ustawienia poczty e-mail"
-#: cps/web.py:2800
+#: cps/web.py:2834
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr "Testowy e-mail został pomyślnie wysłany do %(kindlemail)s"
-#: cps/web.py:2803
+#: cps/web.py:2837
#, python-format
msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr "Wystąpił błąd podczas wysyłania testowej wiadomości e-mail: %(res)s"
-#: cps/web.py:2807
+#: cps/web.py:2841
msgid "E-Mail settings updated"
msgstr "Zaktualizowano ustawienia e-mail"
-#: cps/web.py:2808
+#: cps/web.py:2842
msgid "Edit mail settings"
msgstr "Edytuj ustawienia poczty e-mail"
-#: cps/web.py:2837
+#: cps/web.py:2871
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Użytkownik '%(nick)s' został usunięty"
-#: cps/web.py:2945
+#: cps/web.py:2980
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Użytkownik '%(nick)s' został zaktualizowany"
-#: cps/web.py:2948
+#: cps/web.py:2983
msgid "An unknown error occured."
msgstr "Wystąpił nieznany błąd."
-#: cps/web.py:2951
+#: cps/web.py:2986
#, python-format
msgid "Edit User %(nick)s"
msgstr "Edytuj użytkownika %(nick)s"
-#: cps/web.py:2967
+#: cps/web.py:3002
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr ""
-#: cps/web.py:2982 cps/web.py:3193 cps/web.py:3198 cps/web.py:3344
+#: cps/web.py:3017 cps/web.py:3228 cps/web.py:3233 cps/web.py:3379
msgid "edit metadata"
msgstr "edytuj metadane"
-#: cps/web.py:2992 cps/web.py:3238
+#: cps/web.py:3027 cps/web.py:3273
#, python-format
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
msgstr "Rozszerzenie pliku \"%s\" nie jest dozwolone do przesłania na ten serwer"
-#: cps/web.py:3003
+#: cps/web.py:3038
#, python-format
msgid "Failed to store file %s."
msgstr ""
-#: cps/web.py:3025 cps/web.py:3029
+#: cps/web.py:3060 cps/web.py:3064
msgid "unknown"
msgstr ""
-#: cps/web.py:3052
+#: cps/web.py:3087
msgid "Cover is not a jpg file, can't save"
msgstr ""
-#: cps/web.py:3244
+#: cps/web.py:3279
msgid "File to be uploaded must have an extension"
msgstr "Plik do przesłania musi mieć rozszerzenie"
-#: cps/web.py:3263
+#: cps/web.py:3298
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr "Nie udało się utworzyć łącza %s (Odmowa dostępu)."
-#: cps/web.py:3268
+#: cps/web.py:3303
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr "Nie można przechowywać pliku %s (Odmowa dostępu)."
-#: cps/web.py:3273
+#: cps/web.py:3308
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr "Nie udało się usunąć pliku %s (Odmowa dostępu)."
@@ -511,7 +533,7 @@ msgstr "Kindle"
msgid "DLS"
msgstr "DLS"
-#: cps/templates/admin.html:12 cps/templates/layout.html:69
+#: cps/templates/admin.html:12 cps/templates/layout.html:71
msgid "Admin"
msgstr "Portal administracyjny"
@@ -520,7 +542,7 @@ msgstr "Portal administracyjny"
msgid "Download"
msgstr "Pobierz"
-#: cps/templates/admin.html:14 cps/templates/layout.html:62
+#: cps/templates/admin.html:14 cps/templates/layout.html:64
msgid "Upload"
msgstr "Wyślij"
@@ -572,7 +594,7 @@ msgstr "Konfiguracja"
msgid "Calibre DB dir"
msgstr "Folder bazy danych Calibre"
-#: cps/templates/admin.html:61 cps/templates/config_edit.html:91
+#: cps/templates/admin.html:61 cps/templates/config_edit.html:87
msgid "Log Level"
msgstr "Poziom logów"
@@ -580,7 +602,7 @@ msgstr "Poziom logów"
msgid "Port"
msgstr "Port"
-#: cps/templates/admin.html:63 cps/templates/config_edit.html:68
+#: cps/templates/admin.html:63 cps/templates/config_edit.html:64
msgid "Books per page"
msgstr "Ilość książek na stronie"
@@ -643,9 +665,9 @@ msgstr "OK"
#: cps/templates/admin.html:105 cps/templates/admin.html:119
#: cps/templates/book_edit.html:135 cps/templates/book_edit.html:157
-#: cps/templates/config_edit.html:223 cps/templates/email_edit.html:36
+#: cps/templates/config_edit.html:219 cps/templates/email_edit.html:36
#: cps/templates/shelf.html:60 cps/templates/shelf_edit.html:19
-#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:139
+#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:147
msgid "Back"
msgstr "Wróć"
@@ -691,7 +713,7 @@ msgstr "Opis"
msgid "Tags"
msgstr "Tagi"
-#: cps/templates/book_edit.html:39 cps/templates/layout.html:152
+#: cps/templates/book_edit.html:39 cps/templates/layout.html:154
#: cps/templates/search_form.html:54
msgid "Series"
msgstr "Seria"
@@ -738,9 +760,9 @@ msgstr "wyświetl książkę po edycji"
msgid "Get metadata"
msgstr "Uzyskaj metadane"
-#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:221
+#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:217
#: cps/templates/login.html:20 cps/templates/search_form.html:96
-#: cps/templates/shelf_edit.html:17 cps/templates/user_edit.html:137
+#: cps/templates/shelf_edit.html:17 cps/templates/user_edit.html:145
msgid "Submit"
msgstr "Wyślij"
@@ -768,7 +790,7 @@ msgstr "Słowo kluczowe"
msgid " Search keyword "
msgstr " Szukaj słowa kluczowego "
-#: cps/templates/book_edit.html:175 cps/templates/layout.html:44
+#: cps/templates/book_edit.html:175 cps/templates/layout.html:46
msgid "Go!"
msgstr "Idź!"
@@ -780,7 +802,7 @@ msgstr "Kliknij okładkę, aby załadować metadane do formularza"
msgid "Loading..."
msgstr "Ładowanie..."
-#: cps/templates/book_edit.html:196 cps/templates/layout.html:216
+#: cps/templates/book_edit.html:196 cps/templates/layout.html:218
msgid "Close"
msgstr "Zamknij"
@@ -805,185 +827,181 @@ msgstr "Brak wyników! Spróbuj innego słowa kluczowego."
msgid "Location of Calibre database"
msgstr "Lokalizacja bazy danych Calibre"
-#: cps/templates/config_edit.html:13
+#: cps/templates/config_edit.html:12
msgid "Use google drive?"
msgstr "Użyć dysku Google?"
-#: cps/templates/config_edit.html:17
-msgid "Client id"
-msgstr "Client id"
-
-#: cps/templates/config_edit.html:21
-msgid "Client secret"
-msgstr "Client secret"
-
-#: cps/templates/config_edit.html:25
-msgid "Calibre Base URL"
-msgstr "Adres URL bazy Calibre"
+#: cps/templates/config_edit.html:18
+msgid "Google drive config problem"
+msgstr ""
-#: cps/templates/config_edit.html:29
+#: cps/templates/config_edit.html:28
msgid "Google drive Calibre folder"
msgstr "Folder biblioteki Calibre na Dysku Google"
-#: cps/templates/config_edit.html:38
+#: cps/templates/config_edit.html:36
#, fuzzy
msgid "Metadata Watch Channel ID"
msgstr "Metadane Watch Channel ID"
-#: cps/templates/config_edit.html:52
+#: cps/templates/config_edit.html:39
+msgid "Revoke"
+msgstr ""
+
+#: cps/templates/config_edit.html:48
msgid "Server Port"
msgstr "Port serwera"
-#: cps/templates/config_edit.html:56
+#: cps/templates/config_edit.html:52
msgid "SSL certfile location (leave it empty for non-SSL Servers)"
msgstr ""
-#: cps/templates/config_edit.html:60
+#: cps/templates/config_edit.html:56
msgid "SSL Keyfile location (leave it empty for non-SSL Servers)"
msgstr ""
-#: cps/templates/config_edit.html:64 cps/templates/layout.html:128
-#: cps/templates/layout.html:129 cps/templates/shelf_edit.html:7
+#: cps/templates/config_edit.html:60 cps/templates/layout.html:130
+#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7
msgid "Title"
msgstr "Tytuł"
-#: cps/templates/config_edit.html:72
+#: cps/templates/config_edit.html:68
msgid "No. of random books to show"
msgstr "Liczba losowych książek do pokazania"
-#: cps/templates/config_edit.html:76
+#: cps/templates/config_edit.html:72
msgid "Regular expression for ignoring columns"
msgstr "Wyrażenie regularne dla ignorowanych kolumn"
-#: cps/templates/config_edit.html:80
+#: cps/templates/config_edit.html:76
msgid "Regular expression for title sorting"
msgstr "Wyrażenie regularne dla tytułu sortującego"
-#: cps/templates/config_edit.html:84
+#: cps/templates/config_edit.html:80
msgid "Tags for Mature Content"
msgstr ""
-#: cps/templates/config_edit.html:100
+#: cps/templates/config_edit.html:96
msgid "Location and name of logfile (calibre-web.log for no entry)"
msgstr ""
-#: cps/templates/config_edit.html:106
+#: cps/templates/config_edit.html:102
msgid "Enable uploading"
msgstr "Włącz wysyłanie"
-#: cps/templates/config_edit.html:110
+#: cps/templates/config_edit.html:106
msgid "Enable anonymous browsing"
msgstr "Włącz anonimowe przeglądanie"
-#: cps/templates/config_edit.html:114
+#: cps/templates/config_edit.html:110
msgid "Enable public registration"
msgstr "Włącz publiczną rejestrację"
-#: cps/templates/config_edit.html:118
+#: cps/templates/config_edit.html:114
msgid "Enable remote login (\"magic link\")"
msgstr ""
-#: cps/templates/config_edit.html:123
+#: cps/templates/config_edit.html:119
msgid "Use"
msgstr ""
-#: cps/templates/config_edit.html:124
+#: cps/templates/config_edit.html:120
msgid "Obtain an API Key"
msgstr ""
-#: cps/templates/config_edit.html:128
+#: cps/templates/config_edit.html:124
msgid "Goodreads API Key"
msgstr ""
-#: cps/templates/config_edit.html:132
+#: cps/templates/config_edit.html:128
msgid "Goodreads API Secret"
msgstr ""
-#: cps/templates/config_edit.html:137
+#: cps/templates/config_edit.html:133
msgid "Default Settings for new users"
msgstr "Domyślne ustawienia dla nowych użytkowników"
-#: cps/templates/config_edit.html:140 cps/templates/user_edit.html:94
+#: cps/templates/config_edit.html:136 cps/templates/user_edit.html:102
msgid "Admin user"
msgstr "Użytkownik z uprawnieniami administratora"
-#: cps/templates/config_edit.html:144 cps/templates/user_edit.html:103
+#: cps/templates/config_edit.html:140 cps/templates/user_edit.html:111
msgid "Allow Downloads"
msgstr "Zezwalaj na pobieranie"
-#: cps/templates/config_edit.html:148 cps/templates/user_edit.html:107
+#: cps/templates/config_edit.html:144 cps/templates/user_edit.html:115
msgid "Allow Uploads"
msgstr "Zezwalaj na wysyłanie"
-#: cps/templates/config_edit.html:152 cps/templates/user_edit.html:111
+#: cps/templates/config_edit.html:148 cps/templates/user_edit.html:119
msgid "Allow Edit"
msgstr "Zezwalaj na edycję"
-#: cps/templates/config_edit.html:156 cps/templates/user_edit.html:115
+#: cps/templates/config_edit.html:152 cps/templates/user_edit.html:123
msgid "Allow Delete books"
msgstr ""
-#: cps/templates/config_edit.html:160 cps/templates/user_edit.html:120
+#: cps/templates/config_edit.html:156 cps/templates/user_edit.html:128
msgid "Allow Changing Password"
msgstr "Zezwalaj na zmianę hasła"
-#: cps/templates/config_edit.html:164 cps/templates/user_edit.html:124
+#: cps/templates/config_edit.html:160 cps/templates/user_edit.html:132
msgid "Allow Editing Public Shelfs"
msgstr ""
-#: cps/templates/config_edit.html:168
+#: cps/templates/config_edit.html:164
msgid "Default visiblities for new users"
msgstr ""
-#: cps/templates/config_edit.html:172 cps/templates/user_edit.html:46
+#: cps/templates/config_edit.html:168 cps/templates/user_edit.html:54
msgid "Show random books"
msgstr "Pokaż losowe książki"
-#: cps/templates/config_edit.html:176 cps/templates/user_edit.html:50
+#: cps/templates/config_edit.html:172 cps/templates/user_edit.html:58
msgid "Show recent books"
msgstr ""
-#: cps/templates/config_edit.html:180 cps/templates/user_edit.html:54
+#: cps/templates/config_edit.html:176 cps/templates/user_edit.html:62
msgid "Show sorted books"
msgstr ""
-#: cps/templates/config_edit.html:184 cps/templates/user_edit.html:58
+#: cps/templates/config_edit.html:180 cps/templates/user_edit.html:66
msgid "Show hot books"
msgstr "Pokaż najpopularniejsze książki"
-#: cps/templates/config_edit.html:188 cps/templates/user_edit.html:62
+#: cps/templates/config_edit.html:184 cps/templates/user_edit.html:70
msgid "Show best rated books"
msgstr "Pokaż najlepiej ocenione książki"
-#: cps/templates/config_edit.html:192 cps/templates/user_edit.html:66
+#: cps/templates/config_edit.html:188 cps/templates/user_edit.html:74
msgid "Show language selection"
msgstr "Pokaż wybór języka"
-#: cps/templates/config_edit.html:196 cps/templates/user_edit.html:70
+#: cps/templates/config_edit.html:192 cps/templates/user_edit.html:78
msgid "Show series selection"
msgstr "Pokaż wybór serii"
-#: cps/templates/config_edit.html:200 cps/templates/user_edit.html:74
+#: cps/templates/config_edit.html:196 cps/templates/user_edit.html:82
msgid "Show category selection"
msgstr "Pokaż wybór kategorii"
-#: cps/templates/config_edit.html:204 cps/templates/user_edit.html:78
+#: cps/templates/config_edit.html:200 cps/templates/user_edit.html:86
msgid "Show author selection"
msgstr "Pokaż wybór autora"
-#: cps/templates/config_edit.html:208 cps/templates/user_edit.html:82
+#: cps/templates/config_edit.html:204 cps/templates/user_edit.html:90
msgid "Show read and unread"
msgstr "Pokaż przeczytane i nieprzeczytane"
-#: cps/templates/config_edit.html:212 cps/templates/user_edit.html:86
+#: cps/templates/config_edit.html:208 cps/templates/user_edit.html:94
msgid "Show random books in detail view"
msgstr "Pokaz losowe książki w widoku szczegółowym"
-#: cps/templates/config_edit.html:216 cps/templates/user_edit.html:99
+#: cps/templates/config_edit.html:212 cps/templates/user_edit.html:107
msgid "Show mature content"
msgstr ""
-#: cps/templates/config_edit.html:226 cps/templates/layout.html:77
+#: cps/templates/config_edit.html:222 cps/templates/layout.html:79
#: cps/templates/login.html:4
msgid "Login"
msgstr "Zaloguj się"
@@ -1054,12 +1072,12 @@ msgstr "Zapisz ustawienia"
msgid "Save settings and send Test E-Mail"
msgstr "Zapisz ustawienia i wyślij testową wiadomość e-mail"
-#: cps/templates/feed.xml:20 cps/templates/layout.html:200
+#: cps/templates/feed.xml:20 cps/templates/layout.html:202
msgid "Next"
msgstr "Następne"
#: cps/templates/feed.xml:29 cps/templates/index.xml:7
-#: cps/templates/layout.html:41 cps/templates/layout.html:42
+#: cps/templates/layout.html:43 cps/templates/layout.html:44
msgid "Search"
msgstr "Szukaj"
@@ -1071,7 +1089,7 @@ msgstr "Odkrywaj (losowe książki)"
msgid "Start"
msgstr "Rozpocznij"
-#: cps/templates/index.xml:14 cps/templates/layout.html:134
+#: cps/templates/index.xml:14 cps/templates/layout.html:136
msgid "Hot Books"
msgstr "Najpopularniejsze książki"
@@ -1079,7 +1097,7 @@ msgstr "Najpopularniejsze książki"
msgid "Popular publications from this catalog based on Downloads."
msgstr "Popularne publikacje z tego katalogu bazujące na pobranych."
-#: cps/templates/index.xml:20 cps/templates/layout.html:137
+#: cps/templates/index.xml:20 cps/templates/layout.html:139
msgid "Best rated Books"
msgstr "Najlepiej ocenione książki"
@@ -1099,7 +1117,7 @@ msgstr "Ostatnie książki"
msgid "Show Random Books"
msgstr "Pokazuj losowe książki"
-#: cps/templates/index.xml:52 cps/templates/layout.html:155
+#: cps/templates/index.xml:52 cps/templates/layout.html:157
msgid "Authors"
msgstr "Autorzy"
@@ -1115,7 +1133,7 @@ msgstr "Książki sortowane według kategorii"
msgid "Books ordered by series"
msgstr "Książki sortowane według serii"
-#: cps/templates/index.xml:70 cps/templates/layout.html:161
+#: cps/templates/index.xml:70 cps/templates/layout.html:163
msgid "Public Shelves"
msgstr "Publiczne półki"
@@ -1123,7 +1141,7 @@ msgstr "Publiczne półki"
msgid "Books organized in public shelfs, visible to everyone"
msgstr ""
-#: cps/templates/index.xml:77 cps/templates/layout.html:165
+#: cps/templates/index.xml:77 cps/templates/layout.html:167
msgid "Your Shelves"
msgstr "Twoje półki"
@@ -1131,88 +1149,88 @@ msgstr "Twoje półki"
msgid "User's own shelfs, only visible to the current user himself"
msgstr ""
-#: cps/templates/layout.html:31
+#: cps/templates/layout.html:33
msgid "Toggle navigation"
msgstr "Przełącz nawigację"
-#: cps/templates/layout.html:52
+#: cps/templates/layout.html:54
msgid "Advanced Search"
msgstr "Zaawansowane wyszukiwanie"
-#: cps/templates/layout.html:73
+#: cps/templates/layout.html:75
msgid "Logout"
msgstr "Wyloguj się"
-#: cps/templates/layout.html:78 cps/templates/register.html:18
+#: cps/templates/layout.html:80 cps/templates/register.html:18
msgid "Register"
msgstr "Zarejestruj się"
-#: cps/templates/layout.html:103
+#: cps/templates/layout.html:105
msgid "Uploading..."
msgstr ""
-#: cps/templates/layout.html:104
+#: cps/templates/layout.html:106
msgid "please don't refresh the page"
msgstr ""
-#: cps/templates/layout.html:115
+#: cps/templates/layout.html:117
msgid "Browse"
msgstr "Przeglądaj"
-#: cps/templates/layout.html:117
+#: cps/templates/layout.html:119
msgid "Recently Added"
msgstr ""
-#: cps/templates/layout.html:122
+#: cps/templates/layout.html:124
msgid "Sorted Books"
msgstr ""
-#: cps/templates/layout.html:126 cps/templates/layout.html:127
#: cps/templates/layout.html:128 cps/templates/layout.html:129
+#: cps/templates/layout.html:130 cps/templates/layout.html:131
msgid "Sort By"
msgstr ""
-#: cps/templates/layout.html:126
+#: cps/templates/layout.html:128
msgid "Newest"
msgstr ""
-#: cps/templates/layout.html:127
+#: cps/templates/layout.html:129
msgid "Oldest"
msgstr ""
-#: cps/templates/layout.html:128
+#: cps/templates/layout.html:130
msgid "Ascending"
msgstr ""
-#: cps/templates/layout.html:129
+#: cps/templates/layout.html:131
msgid "Descending"
msgstr ""
-#: cps/templates/layout.html:146
+#: cps/templates/layout.html:148
msgid "Discover"
msgstr "Odkrywaj"
-#: cps/templates/layout.html:149
+#: cps/templates/layout.html:151
msgid "Categories"
msgstr "Kategorie"
-#: cps/templates/layout.html:158 cps/templates/search_form.html:75
+#: cps/templates/layout.html:160 cps/templates/search_form.html:75
msgid "Languages"
msgstr "Języki"
-#: cps/templates/layout.html:170
+#: cps/templates/layout.html:172
msgid "Create a Shelf"
msgstr "Utwórz półkę"
-#: cps/templates/layout.html:171 cps/templates/stats.html:3
+#: cps/templates/layout.html:173 cps/templates/stats.html:3
msgid "About"
msgstr "O programie"
-#: cps/templates/layout.html:185
+#: cps/templates/layout.html:187
msgid "Previous"
msgstr ""
-#: cps/templates/layout.html:212
+#: cps/templates/layout.html:214
msgid "Book Details"
msgstr ""
@@ -1384,18 +1402,30 @@ msgid "Kindle E-Mail"
msgstr "Adres e-mail Kindle"
#: cps/templates/user_edit.html:35
+msgid "Theme"
+msgstr ""
+
+#: cps/templates/user_edit.html:37
+msgid "Standard Theme"
+msgstr ""
+
+#: cps/templates/user_edit.html:38
+msgid "caliBlur! Dark Theme (Beta)"
+msgstr ""
+
+#: cps/templates/user_edit.html:43
msgid "Show books with language"
msgstr "Pokaż książki w języku"
-#: cps/templates/user_edit.html:37
+#: cps/templates/user_edit.html:45
msgid "Show all"
msgstr "Pokaż wszystko"
-#: cps/templates/user_edit.html:131
+#: cps/templates/user_edit.html:139
msgid "Delete this user"
msgstr "Usuń tego użytkownika"
-#: cps/templates/user_edit.html:146
+#: cps/templates/user_edit.html:154
msgid "Recent Downloads"
msgstr "Ostatnio pobierane"
diff --git a/cps/translations/ru/LC_MESSAGES/messages.po b/cps/translations/ru/LC_MESSAGES/messages.po
index 0e1c4ca3..56b2988f 100644
--- a/cps/translations/ru/LC_MESSAGES/messages.po
+++ b/cps/translations/ru/LC_MESSAGES/messages.po
@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
-"POT-Creation-Date: 2018-04-01 19:27+0200\n"
+"POT-Creation-Date: 2018-06-02 10:45+0200\n"
"PO-Revision-Date: 2017-04-30 00:47+0300\n"
"Last-Translator: Pavel Korovin \n"
"Language: ru\n"
@@ -30,57 +30,57 @@ msgstr ""
msgid "not installed"
msgstr "Отсутствует"
-#: cps/helper.py:78
+#: cps/helper.py:79
#, python-format
msgid "kindlegen binary %(kindlepath)s not found"
msgstr ""
-#: cps/helper.py:84
+#: cps/helper.py:85
#, python-format
msgid "epub format not found for book id: %(book)d"
msgstr ""
-#: cps/helper.py:94
+#: cps/helper.py:95
msgid "kindlegen failed, no execution permissions"
msgstr ""
-#: cps/helper.py:109
+#: cps/helper.py:110
#, python-format
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
msgstr ""
-#: cps/helper.py:188
+#: cps/helper.py:189
#, python-format
msgid "Failed to send mail: %s"
msgstr "Ошибка отправки письма: %s"
-#: cps/helper.py:195
+#: cps/helper.py:196
msgid "Calibre-web test email"
msgstr "Тестовое письмо от Calibre-web"
-#: cps/helper.py:196 cps/helper.py:208
+#: cps/helper.py:197 cps/helper.py:209
msgid "This email has been sent via calibre web."
msgstr "Письмо было отправлено через calibre web"
-#: cps/helper.py:205 cps/templates/detail.html:44
+#: cps/helper.py:206 cps/templates/detail.html:44
msgid "Send to Kindle"
msgstr "Отправить на Kindle"
-#: cps/helper.py:225 cps/helper.py:239
+#: cps/helper.py:226 cps/helper.py:240
msgid "Could not find any formats suitable for sending by email"
msgstr "Невозоможно найти формат, подходящий для отправки по email"
-#: cps/helper.py:340
+#: cps/helper.py:341
#, python-format
msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s"
msgstr ""
-#: cps/helper.py:349
+#: cps/helper.py:350
#, python-format
msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s"
msgstr ""
-#: cps/ub.py:684
+#: cps/ub.py:694
msgid "Guest"
msgstr "Гость"
@@ -148,7 +148,7 @@ msgstr "Случайный выбор"
msgid "Author list"
msgstr "Авторы"
-#: cps/web.py:1220 cps/web.py:1278 cps/web.py:1408 cps/web.py:1903
+#: cps/web.py:1220 cps/web.py:1278 cps/web.py:1408 cps/web.py:1917
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Невозможно открыть книгу. Файл не существует или недоступен."
@@ -187,306 +187,328 @@ msgstr ""
msgid "Statistics"
msgstr "Статистика"
-#: cps/web.py:1641
+#: cps/web.py:1573
+msgid ""
+"Callback domain is not verified, please follow steps to verify domain in "
+"google developer console"
+msgstr ""
+
+#: cps/web.py:1651
msgid "Server restarted, please reload page"
msgstr "Сервер перезагружен, пожалуйста, перезагрузите страницу"
-#: cps/web.py:1643
+#: cps/web.py:1653
msgid "Performing shutdown of server, please close window"
msgstr "Производится остановка сервера, пожалуйста, закройте окно"
-#: cps/web.py:1659
+#: cps/web.py:1669
msgid "Update done"
msgstr "Обновление закончено"
-#: cps/web.py:1716
+#: cps/web.py:1726
#, python-format
msgid "Published after %s"
msgstr ""
-#: cps/web.py:1721
+#: cps/web.py:1731
msgid "Published before "
msgstr ""
-#: cps/web.py:1767 cps/web.py:1780
+#: cps/web.py:1777 cps/web.py:1790
msgid "search"
msgstr "поиск"
+#: cps/web.py:1816
+msgid "not found on GDrive"
+msgstr ""
+
#: cps/templates/index.xml:39 cps/templates/index.xml:42
-#: cps/templates/layout.html:141 cps/web.py:1858
+#: cps/templates/layout.html:143 cps/web.py:1872
msgid "Read Books"
msgstr "Прочитанные"
#: cps/templates/index.xml:46 cps/templates/index.xml:49
-#: cps/templates/layout.html:143 cps/web.py:1861
+#: cps/templates/layout.html:145 cps/web.py:1875
msgid "Unread Books"
msgstr "Непрочитанные"
-#: cps/web.py:1936 cps/web.py:1938 cps/web.py:1940 cps/web.py:1949
+#: cps/web.py:1950 cps/web.py:1952 cps/web.py:1954 cps/web.py:1963
msgid "Read a Book"
msgstr "Читать книгу"
-#: cps/web.py:2001 cps/web.py:2718
+#: cps/web.py:2015 cps/web.py:2751
msgid "Please fill out all fields!"
msgstr "Пожалуйста, заполните все поля!"
-#: cps/web.py:2002 cps/web.py:2019 cps/web.py:2024 cps/web.py:2026
+#: cps/web.py:2016 cps/web.py:2033 cps/web.py:2038 cps/web.py:2040
msgid "register"
msgstr "зарегистрироваться"
-#: cps/web.py:2018
+#: cps/web.py:2032
msgid "An unknown error occured. Please try again later."
msgstr "Неизвестная ошибка. Пожалуйста, попробуйте позже."
-#: cps/web.py:2023
+#: cps/web.py:2037
msgid "This username or email address is already in use."
msgstr "Имя пользователя или адрес эл. почты уже используется"
-#: cps/web.py:2042 cps/web.py:2138
+#: cps/web.py:2056 cps/web.py:2152
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "Вы вошли как пользователь '%(nickname)s'"
-#: cps/web.py:2047
+#: cps/web.py:2061
msgid "Wrong Username or Password"
msgstr "Ошибка в имени пользователя или пароле"
-#: cps/web.py:2053 cps/web.py:2074
+#: cps/web.py:2067 cps/web.py:2088
msgid "login"
msgstr "войти"
-#: cps/web.py:2086 cps/web.py:2117
+#: cps/web.py:2100 cps/web.py:2131
msgid "Token not found"
msgstr ""
-#: cps/web.py:2094 cps/web.py:2125
+#: cps/web.py:2108 cps/web.py:2139
msgid "Token has expired"
msgstr ""
-#: cps/web.py:2102
+#: cps/web.py:2116
msgid "Success! Please return to your device"
msgstr ""
-#: cps/web.py:2152
+#: cps/web.py:2166
msgid "Please configure the SMTP mail settings first..."
msgstr "Пожалуйста, сначала сконфигурируйте параметры SMTP"
-#: cps/web.py:2156
+#: cps/web.py:2170
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr "Книга успешно отправлена на %(kindlemail)s"
-#: cps/web.py:2160
+#: cps/web.py:2174
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr "Ошибка при отправке книги: %(res)s"
-#: cps/web.py:2162 cps/web.py:2805
+#: cps/web.py:2176 cps/web.py:2839
msgid "Please configure your kindle email address first..."
msgstr "Пожалуйста, сначала укажите ваш kindle email..."
-#: cps/web.py:2206
+#: cps/web.py:2220
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Книга добавлена на книжную полку: %(sname)s"
-#: cps/web.py:2244
+#: cps/web.py:2258
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Книга удалена с книжной полки: %(sname)s"
-#: cps/web.py:2250
+#: cps/web.py:2264
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2270 cps/web.py:2294
+#: cps/web.py:2284 cps/web.py:2308
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr "Книжкная полка с названием '%(title)s' уже существует."
-#: cps/web.py:2275
+#: cps/web.py:2289
#, python-format
msgid "Shelf %(title)s created"
msgstr "Создана книжная полка %(title)s"
-#: cps/web.py:2277 cps/web.py:2305
+#: cps/web.py:2291 cps/web.py:2319
msgid "There was an error"
msgstr "Произошла ошибка"
-#: cps/web.py:2278 cps/web.py:2280
+#: cps/web.py:2292 cps/web.py:2294
msgid "create a shelf"
msgstr "создать книжную полку"
-#: cps/web.py:2303
+#: cps/web.py:2317
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Книжная полка %(title)s изменена"
-#: cps/web.py:2306 cps/web.py:2308
+#: cps/web.py:2320 cps/web.py:2322
msgid "Edit a shelf"
msgstr "Изменить книжную полку"
-#: cps/web.py:2329
+#: cps/web.py:2343
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "Книжная полка %(name)s удалена"
-#: cps/web.py:2351
+#: cps/web.py:2365
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Книжная полка: '%(name)s'"
-#: cps/web.py:2354
+#: cps/web.py:2368
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr ""
-#: cps/web.py:2385
+#: cps/web.py:2399
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Изменить расположение книжной полки '%(name)s'"
-#: cps/web.py:2454
+#: cps/web.py:2469
msgid "Found an existing account for this email address."
msgstr "Найдена учётная запись для для данного адреса email."
-#: cps/web.py:2456 cps/web.py:2460
+#: cps/web.py:2471 cps/web.py:2475
#, python-format
msgid "%(name)s's profile"
msgstr "Профиль %(name)s"
-#: cps/web.py:2457
+#: cps/web.py:2472
msgid "Profile updated"
msgstr "Профиль обновлён"
-#: cps/web.py:2469
+#: cps/web.py:2484
msgid "Unknown"
msgstr ""
-#: cps/web.py:2482
+#: cps/web.py:2497
msgid "Admin page"
msgstr "Администрирование"
-#: cps/web.py:2553
-msgid "Keyfile location is not valid, please enter correct path"
+#: cps/web.py:2520
+msgid "Import of optional GDrive requirements missing"
msgstr ""
-#: cps/web.py:2556 cps/web.py:2567 cps/web.py:2660 cps/web.py:2679
-#: cps/web.py:2685 cps/web.py:2699
+#: cps/web.py:2523
+msgid "client_secret.json is missing or not readable"
+msgstr ""
+
+#: cps/web.py:2528 cps/web.py:2553
+msgid "client_secret.json is not configured for web application"
+msgstr ""
+
+#: cps/web.py:2556 cps/web.py:2582 cps/web.py:2593 cps/web.py:2686
+#: cps/web.py:2706 cps/web.py:2713 cps/web.py:2732
msgid "Basic Configuration"
msgstr "Настройки сервера"
-#: cps/web.py:2564
+#: cps/web.py:2579
+msgid "Keyfile location is not valid, please enter correct path"
+msgstr ""
+
+#: cps/web.py:2590
msgid "Certfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2657
+#: cps/web.py:2683
msgid "Logfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2672
+#: cps/web.py:2698
msgid "Calibre-web configuration updated"
msgstr "Конфигурация Calibre-web обновлена"
-#: cps/web.py:2683
+#: cps/web.py:2710
msgid "DB location is not valid, please enter correct path"
msgstr "Неверный путь к фалу БД, пожалуйста, укажите правильное расположение БД"
-#: cps/templates/admin.html:34 cps/web.py:2720 cps/web.py:2775
+#: cps/templates/admin.html:34 cps/web.py:2753 cps/web.py:2809
msgid "Add new user"
msgstr "Добавить пользователя"
-#: cps/web.py:2765
+#: cps/web.py:2799
#, python-format
msgid "User '%(user)s' created"
msgstr "Пользователь '%(user)s' добавлен"
-#: cps/web.py:2769
+#: cps/web.py:2803
msgid "Found an existing account for this email address or nickname."
msgstr "Для указанного адреса или имени найдена существующая учётная запись."
-#: cps/web.py:2793
+#: cps/web.py:2827
msgid "Mail settings updated"
msgstr "Настройки почты изменены"
-#: cps/web.py:2800
+#: cps/web.py:2834
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr "Тестовое сообщение успешно отправлено на адрес %(kindlemail)s"
-#: cps/web.py:2803
+#: cps/web.py:2837
#, python-format
msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr "Ошибка отправки тестового сообщения: %(res)s"
-#: cps/web.py:2807
+#: cps/web.py:2841
msgid "E-Mail settings updated"
msgstr "Обновлены настройки e-mail"
-#: cps/web.py:2808
+#: cps/web.py:2842
msgid "Edit mail settings"
msgstr "Изменить почтовые настройки"
-#: cps/web.py:2837
+#: cps/web.py:2871
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Пользователь '%(nick)s' удалён"
-#: cps/web.py:2945
+#: cps/web.py:2980
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Пользователь '%(nick)s' обновлён"
-#: cps/web.py:2948
+#: cps/web.py:2983
msgid "An unknown error occured."
msgstr "Произошла неизвестная ошибка."
-#: cps/web.py:2951
+#: cps/web.py:2986
#, python-format
msgid "Edit User %(nick)s"
msgstr "Изменить пользователя %(nick)s"
-#: cps/web.py:2967
+#: cps/web.py:3002
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr ""
-#: cps/web.py:2982 cps/web.py:3193 cps/web.py:3198 cps/web.py:3344
+#: cps/web.py:3017 cps/web.py:3228 cps/web.py:3233 cps/web.py:3379
msgid "edit metadata"
msgstr "изменить метаданные"
-#: cps/web.py:2992 cps/web.py:3238
+#: cps/web.py:3027 cps/web.py:3273
#, python-format
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
msgstr "Запрещена загрузка файлов с расширением \"%s\""
-#: cps/web.py:3003
+#: cps/web.py:3038
#, python-format
msgid "Failed to store file %s."
msgstr ""
-#: cps/web.py:3025 cps/web.py:3029
+#: cps/web.py:3060 cps/web.py:3064
msgid "unknown"
msgstr "неизвестно"
-#: cps/web.py:3052
+#: cps/web.py:3087
msgid "Cover is not a jpg file, can't save"
msgstr ""
-#: cps/web.py:3244
+#: cps/web.py:3279
msgid "File to be uploaded must have an extension"
msgstr "Загружаемый файл должен иметь расширение"
-#: cps/web.py:3263
+#: cps/web.py:3298
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr "Ошибка при создании пути %s (доступ запрещён)"
-#: cps/web.py:3268
+#: cps/web.py:3303
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr "Ошибка записи файоа %s (доступ запрещён)"
-#: cps/web.py:3273
+#: cps/web.py:3308
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr "Ошибка удаления файла %s (доступ запрещён)"
@@ -511,7 +533,7 @@ msgstr "Kindle"
msgid "DLS"
msgstr "DLS"
-#: cps/templates/admin.html:12 cps/templates/layout.html:69
+#: cps/templates/admin.html:12 cps/templates/layout.html:71
msgid "Admin"
msgstr "Управление"
@@ -520,7 +542,7 @@ msgstr "Управление"
msgid "Download"
msgstr "Скачать"
-#: cps/templates/admin.html:14 cps/templates/layout.html:62
+#: cps/templates/admin.html:14 cps/templates/layout.html:64
msgid "Upload"
msgstr "Загрузить"
@@ -572,7 +594,7 @@ msgstr "Настройки сервера"
msgid "Calibre DB dir"
msgstr "Папка Calibre DB"
-#: cps/templates/admin.html:61 cps/templates/config_edit.html:91
+#: cps/templates/admin.html:61 cps/templates/config_edit.html:87
msgid "Log Level"
msgstr "Уровень логирования"
@@ -580,7 +602,7 @@ msgstr "Уровень логирования"
msgid "Port"
msgstr "Порт"
-#: cps/templates/admin.html:63 cps/templates/config_edit.html:68
+#: cps/templates/admin.html:63 cps/templates/config_edit.html:64
msgid "Books per page"
msgstr "Количество книг на странице"
@@ -643,9 +665,9 @@ msgstr "Ok"
#: cps/templates/admin.html:105 cps/templates/admin.html:119
#: cps/templates/book_edit.html:135 cps/templates/book_edit.html:157
-#: cps/templates/config_edit.html:223 cps/templates/email_edit.html:36
+#: cps/templates/config_edit.html:219 cps/templates/email_edit.html:36
#: cps/templates/shelf.html:60 cps/templates/shelf_edit.html:19
-#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:139
+#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:147
msgid "Back"
msgstr "Назад"
@@ -691,7 +713,7 @@ msgstr "Описание"
msgid "Tags"
msgstr "Теги"
-#: cps/templates/book_edit.html:39 cps/templates/layout.html:152
+#: cps/templates/book_edit.html:39 cps/templates/layout.html:154
#: cps/templates/search_form.html:54
msgid "Series"
msgstr "Серии"
@@ -738,9 +760,9 @@ msgstr "смотреть книгу после редактирования"
msgid "Get metadata"
msgstr "Получить метаданные"
-#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:221
+#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:217
#: cps/templates/login.html:20 cps/templates/search_form.html:96
-#: cps/templates/shelf_edit.html:17 cps/templates/user_edit.html:137
+#: cps/templates/shelf_edit.html:17 cps/templates/user_edit.html:145
msgid "Submit"
msgstr "Отправить"
@@ -768,7 +790,7 @@ msgstr "Ключевое слово"
msgid " Search keyword "
msgstr " Поиск по ключевому слову"
-#: cps/templates/book_edit.html:175 cps/templates/layout.html:44
+#: cps/templates/book_edit.html:175 cps/templates/layout.html:46
msgid "Go!"
msgstr "Искать"
@@ -780,7 +802,7 @@ msgstr "Нажмите на обложку, чтобы получить мета
msgid "Loading..."
msgstr "Загрузка..."
-#: cps/templates/book_edit.html:196 cps/templates/layout.html:216
+#: cps/templates/book_edit.html:196 cps/templates/layout.html:218
msgid "Close"
msgstr "Закрыть"
@@ -805,184 +827,180 @@ msgstr "Нет результатов. Пожалуйста, попробуйт
msgid "Location of Calibre database"
msgstr "Расположение БД Calibre"
-#: cps/templates/config_edit.html:13
+#: cps/templates/config_edit.html:12
msgid "Use google drive?"
msgstr "Использовать Google Drive?"
-#: cps/templates/config_edit.html:17
-msgid "Client id"
-msgstr ""
-
-#: cps/templates/config_edit.html:21
-msgid "Client secret"
+#: cps/templates/config_edit.html:18
+msgid "Google drive config problem"
msgstr ""
-#: cps/templates/config_edit.html:25
-msgid "Calibre Base URL"
-msgstr "URL БД Calibre"
-
-#: cps/templates/config_edit.html:29
+#: cps/templates/config_edit.html:28
msgid "Google drive Calibre folder"
msgstr "Папка Calibre на Google drive"
-#: cps/templates/config_edit.html:38
+#: cps/templates/config_edit.html:36
msgid "Metadata Watch Channel ID"
msgstr "Metadata Watch Channel ID"
-#: cps/templates/config_edit.html:52
+#: cps/templates/config_edit.html:39
+msgid "Revoke"
+msgstr ""
+
+#: cps/templates/config_edit.html:48
msgid "Server Port"
msgstr "Порт сервера"
-#: cps/templates/config_edit.html:56
+#: cps/templates/config_edit.html:52
msgid "SSL certfile location (leave it empty for non-SSL Servers)"
msgstr ""
-#: cps/templates/config_edit.html:60
+#: cps/templates/config_edit.html:56
msgid "SSL Keyfile location (leave it empty for non-SSL Servers)"
msgstr ""
-#: cps/templates/config_edit.html:64 cps/templates/layout.html:128
-#: cps/templates/layout.html:129 cps/templates/shelf_edit.html:7
+#: cps/templates/config_edit.html:60 cps/templates/layout.html:130
+#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7
msgid "Title"
msgstr "Заголовок"
-#: cps/templates/config_edit.html:72
+#: cps/templates/config_edit.html:68
msgid "No. of random books to show"
msgstr "Количество отображаемых случайных книг"
-#: cps/templates/config_edit.html:76
+#: cps/templates/config_edit.html:72
msgid "Regular expression for ignoring columns"
msgstr "Regexp для игнорирования столбцов"
-#: cps/templates/config_edit.html:80
+#: cps/templates/config_edit.html:76
msgid "Regular expression for title sorting"
msgstr "Regexp для сортировки по названию"
-#: cps/templates/config_edit.html:84
+#: cps/templates/config_edit.html:80
msgid "Tags for Mature Content"
msgstr ""
-#: cps/templates/config_edit.html:100
+#: cps/templates/config_edit.html:96
msgid "Location and name of logfile (calibre-web.log for no entry)"
msgstr ""
-#: cps/templates/config_edit.html:106
+#: cps/templates/config_edit.html:102
msgid "Enable uploading"
msgstr "Разрешить загрузку на сервер"
-#: cps/templates/config_edit.html:110
+#: cps/templates/config_edit.html:106
msgid "Enable anonymous browsing"
msgstr "Разрешить анонимный просмотр"
-#: cps/templates/config_edit.html:114
+#: cps/templates/config_edit.html:110
msgid "Enable public registration"
msgstr "Разрешить публичную регистрацию"
-#: cps/templates/config_edit.html:118
+#: cps/templates/config_edit.html:114
msgid "Enable remote login (\"magic link\")"
msgstr ""
-#: cps/templates/config_edit.html:123
+#: cps/templates/config_edit.html:119
msgid "Use"
msgstr ""
-#: cps/templates/config_edit.html:124
+#: cps/templates/config_edit.html:120
msgid "Obtain an API Key"
msgstr ""
-#: cps/templates/config_edit.html:128
+#: cps/templates/config_edit.html:124
msgid "Goodreads API Key"
msgstr ""
-#: cps/templates/config_edit.html:132
+#: cps/templates/config_edit.html:128
msgid "Goodreads API Secret"
msgstr ""
-#: cps/templates/config_edit.html:137
+#: cps/templates/config_edit.html:133
msgid "Default Settings for new users"
msgstr "Настройки по умолчанию для новых пользователей"
-#: cps/templates/config_edit.html:140 cps/templates/user_edit.html:94
+#: cps/templates/config_edit.html:136 cps/templates/user_edit.html:102
msgid "Admin user"
msgstr "Управление сервером"
-#: cps/templates/config_edit.html:144 cps/templates/user_edit.html:103
+#: cps/templates/config_edit.html:140 cps/templates/user_edit.html:111
msgid "Allow Downloads"
msgstr "Разрешить скачивание с сервера"
-#: cps/templates/config_edit.html:148 cps/templates/user_edit.html:107
+#: cps/templates/config_edit.html:144 cps/templates/user_edit.html:115
msgid "Allow Uploads"
msgstr "Разрешить загрузку на сервер"
-#: cps/templates/config_edit.html:152 cps/templates/user_edit.html:111
+#: cps/templates/config_edit.html:148 cps/templates/user_edit.html:119
msgid "Allow Edit"
msgstr "Разрешить редактирование книг"
-#: cps/templates/config_edit.html:156 cps/templates/user_edit.html:115
+#: cps/templates/config_edit.html:152 cps/templates/user_edit.html:123
msgid "Allow Delete books"
msgstr "Разрешить удаление книг"
-#: cps/templates/config_edit.html:160 cps/templates/user_edit.html:120
+#: cps/templates/config_edit.html:156 cps/templates/user_edit.html:128
msgid "Allow Changing Password"
msgstr "Разрешить смену пароля"
-#: cps/templates/config_edit.html:164 cps/templates/user_edit.html:124
+#: cps/templates/config_edit.html:160 cps/templates/user_edit.html:132
msgid "Allow Editing Public Shelfs"
msgstr "Разрешить редактирование публичных книжных полок"
-#: cps/templates/config_edit.html:168
+#: cps/templates/config_edit.html:164
msgid "Default visiblities for new users"
msgstr ""
-#: cps/templates/config_edit.html:172 cps/templates/user_edit.html:46
+#: cps/templates/config_edit.html:168 cps/templates/user_edit.html:54
msgid "Show random books"
msgstr "Показывать случайные книги"
-#: cps/templates/config_edit.html:176 cps/templates/user_edit.html:50
+#: cps/templates/config_edit.html:172 cps/templates/user_edit.html:58
msgid "Show recent books"
msgstr ""
-#: cps/templates/config_edit.html:180 cps/templates/user_edit.html:54
+#: cps/templates/config_edit.html:176 cps/templates/user_edit.html:62
msgid "Show sorted books"
msgstr ""
-#: cps/templates/config_edit.html:184 cps/templates/user_edit.html:58
+#: cps/templates/config_edit.html:180 cps/templates/user_edit.html:66
msgid "Show hot books"
msgstr "Показывать популярные книги"
-#: cps/templates/config_edit.html:188 cps/templates/user_edit.html:62
+#: cps/templates/config_edit.html:184 cps/templates/user_edit.html:70
msgid "Show best rated books"
msgstr "Показывать книги с наивысшим рейтингом"
-#: cps/templates/config_edit.html:192 cps/templates/user_edit.html:66
+#: cps/templates/config_edit.html:188 cps/templates/user_edit.html:74
msgid "Show language selection"
msgstr "Показывать выбор языка"
-#: cps/templates/config_edit.html:196 cps/templates/user_edit.html:70
+#: cps/templates/config_edit.html:192 cps/templates/user_edit.html:78
msgid "Show series selection"
msgstr "Показывать выбор серии"
-#: cps/templates/config_edit.html:200 cps/templates/user_edit.html:74
+#: cps/templates/config_edit.html:196 cps/templates/user_edit.html:82
msgid "Show category selection"
msgstr "Показывать выбор категории"
-#: cps/templates/config_edit.html:204 cps/templates/user_edit.html:78
+#: cps/templates/config_edit.html:200 cps/templates/user_edit.html:86
msgid "Show author selection"
msgstr "Показывать выбор автора"
-#: cps/templates/config_edit.html:208 cps/templates/user_edit.html:82
+#: cps/templates/config_edit.html:204 cps/templates/user_edit.html:90
msgid "Show read and unread"
msgstr "Показывать прочитанные и непрочитанные"
-#: cps/templates/config_edit.html:212 cps/templates/user_edit.html:86
+#: cps/templates/config_edit.html:208 cps/templates/user_edit.html:94
msgid "Show random books in detail view"
msgstr "Показывать случайные книги при просмотре деталей"
-#: cps/templates/config_edit.html:216 cps/templates/user_edit.html:99
+#: cps/templates/config_edit.html:212 cps/templates/user_edit.html:107
msgid "Show mature content"
msgstr ""
-#: cps/templates/config_edit.html:226 cps/templates/layout.html:77
+#: cps/templates/config_edit.html:222 cps/templates/layout.html:79
#: cps/templates/login.html:4
msgid "Login"
msgstr "Имя пользователя"
@@ -1051,12 +1069,12 @@ msgstr "Сохранить настройки"
msgid "Save settings and send Test E-Mail"
msgstr "Сохранить настройки и отправить тестовое письмо"
-#: cps/templates/feed.xml:20 cps/templates/layout.html:200
+#: cps/templates/feed.xml:20 cps/templates/layout.html:202
msgid "Next"
msgstr "Дальше"
#: cps/templates/feed.xml:29 cps/templates/index.xml:7
-#: cps/templates/layout.html:41 cps/templates/layout.html:42
+#: cps/templates/layout.html:43 cps/templates/layout.html:44
msgid "Search"
msgstr "Поиск"
@@ -1068,7 +1086,7 @@ msgstr "Обзор (случайные книги)"
msgid "Start"
msgstr "Старт"
-#: cps/templates/index.xml:14 cps/templates/layout.html:134
+#: cps/templates/index.xml:14 cps/templates/layout.html:136
msgid "Hot Books"
msgstr "Популярные книги"
@@ -1076,7 +1094,7 @@ msgstr "Популярные книги"
msgid "Popular publications from this catalog based on Downloads."
msgstr "Популярные книги в этом каталоге, на основе количества скачиваний"
-#: cps/templates/index.xml:20 cps/templates/layout.html:137
+#: cps/templates/index.xml:20 cps/templates/layout.html:139
msgid "Best rated Books"
msgstr "Книги с наилучшим рейтингом"
@@ -1096,7 +1114,7 @@ msgstr "Последние поступления"
msgid "Show Random Books"
msgstr "Показывать случайные книги"
-#: cps/templates/index.xml:52 cps/templates/layout.html:155
+#: cps/templates/index.xml:52 cps/templates/layout.html:157
msgid "Authors"
msgstr "Авторы"
@@ -1112,7 +1130,7 @@ msgstr "Книги, отсортированные по категории"
msgid "Books ordered by series"
msgstr "Книги, отсортированные по серии"
-#: cps/templates/index.xml:70 cps/templates/layout.html:161
+#: cps/templates/index.xml:70 cps/templates/layout.html:163
msgid "Public Shelves"
msgstr "Общие книжные полки"
@@ -1120,7 +1138,7 @@ msgstr "Общие книжные полки"
msgid "Books organized in public shelfs, visible to everyone"
msgstr ""
-#: cps/templates/index.xml:77 cps/templates/layout.html:165
+#: cps/templates/index.xml:77 cps/templates/layout.html:167
msgid "Your Shelves"
msgstr "Ваши книжные полки"
@@ -1128,88 +1146,88 @@ msgstr "Ваши книжные полки"
msgid "User's own shelfs, only visible to the current user himself"
msgstr ""
-#: cps/templates/layout.html:31
+#: cps/templates/layout.html:33
msgid "Toggle navigation"
msgstr "Включить навигацию"
-#: cps/templates/layout.html:52
+#: cps/templates/layout.html:54
msgid "Advanced Search"
msgstr "Расширенный поиск"
-#: cps/templates/layout.html:73
+#: cps/templates/layout.html:75
msgid "Logout"
msgstr "Выход"
-#: cps/templates/layout.html:78 cps/templates/register.html:18
+#: cps/templates/layout.html:80 cps/templates/register.html:18
msgid "Register"
msgstr "Зарегистрироваться"
-#: cps/templates/layout.html:103
+#: cps/templates/layout.html:105
msgid "Uploading..."
msgstr ""
-#: cps/templates/layout.html:104
+#: cps/templates/layout.html:106
msgid "please don't refresh the page"
msgstr ""
-#: cps/templates/layout.html:115
+#: cps/templates/layout.html:117
msgid "Browse"
msgstr "Просмотр"
-#: cps/templates/layout.html:117
+#: cps/templates/layout.html:119
msgid "Recently Added"
msgstr ""
-#: cps/templates/layout.html:122
+#: cps/templates/layout.html:124
msgid "Sorted Books"
msgstr ""
-#: cps/templates/layout.html:126 cps/templates/layout.html:127
#: cps/templates/layout.html:128 cps/templates/layout.html:129
+#: cps/templates/layout.html:130 cps/templates/layout.html:131
msgid "Sort By"
msgstr ""
-#: cps/templates/layout.html:126
+#: cps/templates/layout.html:128
msgid "Newest"
msgstr ""
-#: cps/templates/layout.html:127
+#: cps/templates/layout.html:129
msgid "Oldest"
msgstr ""
-#: cps/templates/layout.html:128
+#: cps/templates/layout.html:130
msgid "Ascending"
msgstr ""
-#: cps/templates/layout.html:129
+#: cps/templates/layout.html:131
msgid "Descending"
msgstr ""
-#: cps/templates/layout.html:146
+#: cps/templates/layout.html:148
msgid "Discover"
msgstr "Обзор"
-#: cps/templates/layout.html:149
+#: cps/templates/layout.html:151
msgid "Categories"
msgstr "Категории"
-#: cps/templates/layout.html:158 cps/templates/search_form.html:75
+#: cps/templates/layout.html:160 cps/templates/search_form.html:75
msgid "Languages"
msgstr "Языки"
-#: cps/templates/layout.html:170
+#: cps/templates/layout.html:172
msgid "Create a Shelf"
msgstr "Создать книжную полку"
-#: cps/templates/layout.html:171 cps/templates/stats.html:3
+#: cps/templates/layout.html:173 cps/templates/stats.html:3
msgid "About"
msgstr "О программе"
-#: cps/templates/layout.html:185
+#: cps/templates/layout.html:187
msgid "Previous"
msgstr ""
-#: cps/templates/layout.html:212
+#: cps/templates/layout.html:214
msgid "Book Details"
msgstr ""
@@ -1380,18 +1398,30 @@ msgid "Kindle E-Mail"
msgstr "Адрес почты Kindle"
#: cps/templates/user_edit.html:35
+msgid "Theme"
+msgstr ""
+
+#: cps/templates/user_edit.html:37
+msgid "Standard Theme"
+msgstr ""
+
+#: cps/templates/user_edit.html:38
+msgid "caliBlur! Dark Theme (Beta)"
+msgstr ""
+
+#: cps/templates/user_edit.html:43
msgid "Show books with language"
msgstr "Показать книги на языках"
-#: cps/templates/user_edit.html:37
+#: cps/templates/user_edit.html:45
msgid "Show all"
msgstr "Всех"
-#: cps/templates/user_edit.html:131
+#: cps/templates/user_edit.html:139
msgid "Delete this user"
msgstr "Удалить этого пользователя"
-#: cps/templates/user_edit.html:146
+#: cps/templates/user_edit.html:154
msgid "Recent Downloads"
msgstr "Недавние скачивания"
diff --git a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po
index ef630455..5e4e0ba9 100644
--- a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po
+++ b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
-"POT-Creation-Date: 2018-04-01 19:27+0200\n"
+"POT-Creation-Date: 2018-06-02 10:45+0200\n"
"PO-Revision-Date: 2017-01-06 17:00+0000\n"
"Last-Translator: dalin \n"
"Language: zh_Hans_CN\n"
@@ -30,57 +30,57 @@ msgstr ""
msgid "not installed"
msgstr "未安装"
-#: cps/helper.py:78
+#: cps/helper.py:79
#, python-format
msgid "kindlegen binary %(kindlepath)s not found"
msgstr "找不到kindlegen二进制 %(kindlepath)s"
-#: cps/helper.py:84
+#: cps/helper.py:85
#, python-format
msgid "epub format not found for book id: %(book)d"
msgstr "没有找到书籍ID %(book)d 的epub格式"
-#: cps/helper.py:94
+#: cps/helper.py:95
msgid "kindlegen failed, no execution permissions"
msgstr "kindlegen失败,没有可执行权限"
-#: cps/helper.py:109
+#: cps/helper.py:110
#, python-format
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
msgstr "Kindlegen 因为错误 %(error)s 失败。消息: %(message)s"
-#: cps/helper.py:188
+#: cps/helper.py:189
#, python-format
msgid "Failed to send mail: %s"
msgstr "发送邮件失败: %s"
-#: cps/helper.py:195
+#: cps/helper.py:196
msgid "Calibre-web test email"
msgstr "Calibre-web 测试邮件"
-#: cps/helper.py:196 cps/helper.py:208
+#: cps/helper.py:197 cps/helper.py:209
msgid "This email has been sent via calibre web."
msgstr "此邮件由calibre web发送"
-#: cps/helper.py:205 cps/templates/detail.html:44
+#: cps/helper.py:206 cps/templates/detail.html:44
msgid "Send to Kindle"
msgstr "发送到Kindle"
-#: cps/helper.py:225 cps/helper.py:239
+#: cps/helper.py:226 cps/helper.py:240
msgid "Could not find any formats suitable for sending by email"
msgstr "无法找到适合邮件发送的格式"
-#: cps/helper.py:340
+#: cps/helper.py:341
#, python-format
msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s"
msgstr ""
-#: cps/helper.py:349
+#: cps/helper.py:350
#, python-format
msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s"
msgstr ""
-#: cps/ub.py:684
+#: cps/ub.py:694
msgid "Guest"
msgstr "游客"
@@ -148,7 +148,7 @@ msgstr "随机书籍"
msgid "Author list"
msgstr "作者列表"
-#: cps/web.py:1220 cps/web.py:1278 cps/web.py:1408 cps/web.py:1903
+#: cps/web.py:1220 cps/web.py:1278 cps/web.py:1408 cps/web.py:1917
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "无法打开电子书。 文件不存在或者文件不可访问:"
@@ -187,306 +187,328 @@ msgstr "可执行权限缺失"
msgid "Statistics"
msgstr "统计"
-#: cps/web.py:1641
+#: cps/web.py:1573
+msgid ""
+"Callback domain is not verified, please follow steps to verify domain in "
+"google developer console"
+msgstr ""
+
+#: cps/web.py:1651
msgid "Server restarted, please reload page"
msgstr "服务器已重启,请刷新页面"
-#: cps/web.py:1643
+#: cps/web.py:1653
msgid "Performing shutdown of server, please close window"
msgstr "正在关闭服务器,请关闭窗口"
-#: cps/web.py:1659
+#: cps/web.py:1669
msgid "Update done"
msgstr "更新完成"
-#: cps/web.py:1716
+#: cps/web.py:1726
#, python-format
msgid "Published after %s"
msgstr ""
-#: cps/web.py:1721
+#: cps/web.py:1731
msgid "Published before "
msgstr ""
-#: cps/web.py:1767 cps/web.py:1780
+#: cps/web.py:1777 cps/web.py:1790
msgid "search"
msgstr "搜索"
+#: cps/web.py:1816
+msgid "not found on GDrive"
+msgstr ""
+
#: cps/templates/index.xml:39 cps/templates/index.xml:42
-#: cps/templates/layout.html:141 cps/web.py:1858
+#: cps/templates/layout.html:143 cps/web.py:1872
msgid "Read Books"
msgstr "已读书籍"
#: cps/templates/index.xml:46 cps/templates/index.xml:49
-#: cps/templates/layout.html:143 cps/web.py:1861
+#: cps/templates/layout.html:145 cps/web.py:1875
msgid "Unread Books"
msgstr "未读书籍"
-#: cps/web.py:1936 cps/web.py:1938 cps/web.py:1940 cps/web.py:1949
+#: cps/web.py:1950 cps/web.py:1952 cps/web.py:1954 cps/web.py:1963
msgid "Read a Book"
msgstr "阅读一本书"
-#: cps/web.py:2001 cps/web.py:2718
+#: cps/web.py:2015 cps/web.py:2751
msgid "Please fill out all fields!"
msgstr "请填写所有字段"
-#: cps/web.py:2002 cps/web.py:2019 cps/web.py:2024 cps/web.py:2026
+#: cps/web.py:2016 cps/web.py:2033 cps/web.py:2038 cps/web.py:2040
msgid "register"
msgstr "注册"
-#: cps/web.py:2018
+#: cps/web.py:2032
msgid "An unknown error occured. Please try again later."
msgstr "发生一个未知错误。请稍后再试。"
-#: cps/web.py:2023
+#: cps/web.py:2037
msgid "This username or email address is already in use."
msgstr "此用户名或邮箱已被使用。"
-#: cps/web.py:2042 cps/web.py:2138
+#: cps/web.py:2056 cps/web.py:2152
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "您现在已以'%(nickname)s'身份登录"
-#: cps/web.py:2047
+#: cps/web.py:2061
msgid "Wrong Username or Password"
msgstr "用户名或密码错误"
-#: cps/web.py:2053 cps/web.py:2074
+#: cps/web.py:2067 cps/web.py:2088
msgid "login"
msgstr "登录"
-#: cps/web.py:2086 cps/web.py:2117
+#: cps/web.py:2100 cps/web.py:2131
msgid "Token not found"
msgstr "找不到Token"
-#: cps/web.py:2094 cps/web.py:2125
+#: cps/web.py:2108 cps/web.py:2139
msgid "Token has expired"
msgstr "Token已过期"
-#: cps/web.py:2102
+#: cps/web.py:2116
msgid "Success! Please return to your device"
msgstr "成功!请返回您的设备"
-#: cps/web.py:2152
+#: cps/web.py:2166
msgid "Please configure the SMTP mail settings first..."
msgstr "请先配置SMTP邮箱..."
-#: cps/web.py:2156
+#: cps/web.py:2170
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr "此书已被成功发给 %(kindlemail)s"
-#: cps/web.py:2160
+#: cps/web.py:2174
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr "发送这本书的时候出现错误: %(res)s"
-#: cps/web.py:2162 cps/web.py:2805
+#: cps/web.py:2176 cps/web.py:2839
msgid "Please configure your kindle email address first..."
msgstr "请先配置您的kindle电子邮箱地址..."
-#: cps/web.py:2206
+#: cps/web.py:2220
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "此书已被添加到书架: %(sname)s"
-#: cps/web.py:2244
+#: cps/web.py:2258
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "此书已从书架 %(sname)s 中删除"
-#: cps/web.py:2250
+#: cps/web.py:2264
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2270 cps/web.py:2294
+#: cps/web.py:2284 cps/web.py:2308
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr "已存在书架 '%(title)s'。"
-#: cps/web.py:2275
+#: cps/web.py:2289
#, python-format
msgid "Shelf %(title)s created"
msgstr "书架 %(title)s 已被创建"
-#: cps/web.py:2277 cps/web.py:2305
+#: cps/web.py:2291 cps/web.py:2319
msgid "There was an error"
msgstr "发生错误"
-#: cps/web.py:2278 cps/web.py:2280
+#: cps/web.py:2292 cps/web.py:2294
msgid "create a shelf"
msgstr "创建书架"
-#: cps/web.py:2303
+#: cps/web.py:2317
#, python-format
msgid "Shelf %(title)s changed"
msgstr "书架 %(title)s 已被修改"
-#: cps/web.py:2306 cps/web.py:2308
+#: cps/web.py:2320 cps/web.py:2322
msgid "Edit a shelf"
msgstr "编辑书架"
-#: cps/web.py:2329
+#: cps/web.py:2343
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "成功删除书架 %(name)s"
-#: cps/web.py:2351
+#: cps/web.py:2365
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "书架: '%(name)s'"
-#: cps/web.py:2354
+#: cps/web.py:2368
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "打开书架出错。书架不存在或不可访问"
-#: cps/web.py:2385
+#: cps/web.py:2399
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "修改书架 '%(name)s' 顺序"
-#: cps/web.py:2454
+#: cps/web.py:2469
msgid "Found an existing account for this email address."
msgstr "找到已使用此邮箱的账号。"
-#: cps/web.py:2456 cps/web.py:2460
+#: cps/web.py:2471 cps/web.py:2475
#, python-format
msgid "%(name)s's profile"
msgstr "%(name)s 的资料"
-#: cps/web.py:2457
+#: cps/web.py:2472
msgid "Profile updated"
msgstr "资料已更新"
-#: cps/web.py:2469
+#: cps/web.py:2484
msgid "Unknown"
msgstr ""
-#: cps/web.py:2482
+#: cps/web.py:2497
msgid "Admin page"
msgstr "管理页"
-#: cps/web.py:2553
-msgid "Keyfile location is not valid, please enter correct path"
+#: cps/web.py:2520
+msgid "Import of optional GDrive requirements missing"
msgstr ""
-#: cps/web.py:2556 cps/web.py:2567 cps/web.py:2660 cps/web.py:2679
-#: cps/web.py:2685 cps/web.py:2699
+#: cps/web.py:2523
+msgid "client_secret.json is missing or not readable"
+msgstr ""
+
+#: cps/web.py:2528 cps/web.py:2553
+msgid "client_secret.json is not configured for web application"
+msgstr ""
+
+#: cps/web.py:2556 cps/web.py:2582 cps/web.py:2593 cps/web.py:2686
+#: cps/web.py:2706 cps/web.py:2713 cps/web.py:2732
msgid "Basic Configuration"
msgstr "基本配置"
-#: cps/web.py:2564
+#: cps/web.py:2579
+msgid "Keyfile location is not valid, please enter correct path"
+msgstr ""
+
+#: cps/web.py:2590
msgid "Certfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2657
+#: cps/web.py:2683
msgid "Logfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2672
+#: cps/web.py:2698
msgid "Calibre-web configuration updated"
msgstr "Calibre-web配置已更新"
-#: cps/web.py:2683
+#: cps/web.py:2710
msgid "DB location is not valid, please enter correct path"
msgstr "DB位置无效,请输入正确路径"
-#: cps/templates/admin.html:34 cps/web.py:2720 cps/web.py:2775
+#: cps/templates/admin.html:34 cps/web.py:2753 cps/web.py:2809
msgid "Add new user"
msgstr "添加新用户"
-#: cps/web.py:2765
+#: cps/web.py:2799
#, python-format
msgid "User '%(user)s' created"
msgstr "用户 '%(user)s' 已被创建"
-#: cps/web.py:2769
+#: cps/web.py:2803
msgid "Found an existing account for this email address or nickname."
msgstr "已存在使用此邮箱或昵称的账号。"
-#: cps/web.py:2793
+#: cps/web.py:2827
msgid "Mail settings updated"
msgstr "邮箱设置已更新"
-#: cps/web.py:2800
+#: cps/web.py:2834
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr "测试邮件已成功发送到 %(kindlemail)s"
-#: cps/web.py:2803
+#: cps/web.py:2837
#, python-format
msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr "发送测试邮件时发生错误: %(res)s"
-#: cps/web.py:2807
+#: cps/web.py:2841
msgid "E-Mail settings updated"
msgstr "E-Mail 设置已更新"
-#: cps/web.py:2808
+#: cps/web.py:2842
msgid "Edit mail settings"
msgstr "编辑邮箱设置"
-#: cps/web.py:2837
+#: cps/web.py:2871
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "用户 '%(nick)s' 已被删除"
-#: cps/web.py:2945
+#: cps/web.py:2980
#, python-format
msgid "User '%(nick)s' updated"
msgstr "用户 '%(nick)s' 已被更新"
-#: cps/web.py:2948
+#: cps/web.py:2983
msgid "An unknown error occured."
msgstr "发生未知错误。"
-#: cps/web.py:2951
+#: cps/web.py:2986
#, python-format
msgid "Edit User %(nick)s"
msgstr "编辑用户 %(nick)s"
-#: cps/web.py:2967
+#: cps/web.py:3002
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "打开电子书出错。文件不存在或不可访问"
-#: cps/web.py:2982 cps/web.py:3193 cps/web.py:3198 cps/web.py:3344
+#: cps/web.py:3017 cps/web.py:3228 cps/web.py:3233 cps/web.py:3379
msgid "edit metadata"
msgstr "编辑元数据"
-#: cps/web.py:2992 cps/web.py:3238
+#: cps/web.py:3027 cps/web.py:3273
#, python-format
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
msgstr "不能上传后缀为 \"%s\" 的文件到此服务器"
-#: cps/web.py:3003
+#: cps/web.py:3038
#, python-format
msgid "Failed to store file %s."
msgstr ""
-#: cps/web.py:3025 cps/web.py:3029
+#: cps/web.py:3060 cps/web.py:3064
msgid "unknown"
msgstr "未知"
-#: cps/web.py:3052
+#: cps/web.py:3087
msgid "Cover is not a jpg file, can't save"
msgstr ""
-#: cps/web.py:3244
+#: cps/web.py:3279
msgid "File to be uploaded must have an extension"
msgstr "要上传的文件必须有一个后缀"
-#: cps/web.py:3263
+#: cps/web.py:3298
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr "创建路径 %s 失败(权限拒绝)。"
-#: cps/web.py:3268
+#: cps/web.py:3303
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr "存储文件 %s 失败(权限拒绝)。"
-#: cps/web.py:3273
+#: cps/web.py:3308
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr "删除文件 %s 失败(权限拒绝)。"
@@ -511,7 +533,7 @@ msgstr ""
msgid "DLS"
msgstr ""
-#: cps/templates/admin.html:12 cps/templates/layout.html:69
+#: cps/templates/admin.html:12 cps/templates/layout.html:71
msgid "Admin"
msgstr "管理"
@@ -520,7 +542,7 @@ msgstr "管理"
msgid "Download"
msgstr "下载"
-#: cps/templates/admin.html:14 cps/templates/layout.html:62
+#: cps/templates/admin.html:14 cps/templates/layout.html:64
msgid "Upload"
msgstr "上传"
@@ -572,7 +594,7 @@ msgstr "配置"
msgid "Calibre DB dir"
msgstr "Calibre DB目录"
-#: cps/templates/admin.html:61 cps/templates/config_edit.html:91
+#: cps/templates/admin.html:61 cps/templates/config_edit.html:87
msgid "Log Level"
msgstr "日志级别"
@@ -580,7 +602,7 @@ msgstr "日志级别"
msgid "Port"
msgstr "端口"
-#: cps/templates/admin.html:63 cps/templates/config_edit.html:68
+#: cps/templates/admin.html:63 cps/templates/config_edit.html:64
msgid "Books per page"
msgstr "每页书籍数"
@@ -643,9 +665,9 @@ msgstr "确定"
#: cps/templates/admin.html:105 cps/templates/admin.html:119
#: cps/templates/book_edit.html:135 cps/templates/book_edit.html:157
-#: cps/templates/config_edit.html:223 cps/templates/email_edit.html:36
+#: cps/templates/config_edit.html:219 cps/templates/email_edit.html:36
#: cps/templates/shelf.html:60 cps/templates/shelf_edit.html:19
-#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:139
+#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:147
msgid "Back"
msgstr "后退"
@@ -691,7 +713,7 @@ msgstr "简介"
msgid "Tags"
msgstr "标签"
-#: cps/templates/book_edit.html:39 cps/templates/layout.html:152
+#: cps/templates/book_edit.html:39 cps/templates/layout.html:154
#: cps/templates/search_form.html:54
msgid "Series"
msgstr "丛书"
@@ -738,9 +760,9 @@ msgstr "编辑后查看书籍"
msgid "Get metadata"
msgstr "获取元数据"
-#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:221
+#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:217
#: cps/templates/login.html:20 cps/templates/search_form.html:96
-#: cps/templates/shelf_edit.html:17 cps/templates/user_edit.html:137
+#: cps/templates/shelf_edit.html:17 cps/templates/user_edit.html:145
msgid "Submit"
msgstr "提交"
@@ -768,7 +790,7 @@ msgstr "关键字"
msgid " Search keyword "
msgstr "搜索关键字"
-#: cps/templates/book_edit.html:175 cps/templates/layout.html:44
+#: cps/templates/book_edit.html:175 cps/templates/layout.html:46
msgid "Go!"
msgstr "走起!"
@@ -780,7 +802,7 @@ msgstr "点击封面加载元数据到表单"
msgid "Loading..."
msgstr "加载中..."
-#: cps/templates/book_edit.html:196 cps/templates/layout.html:216
+#: cps/templates/book_edit.html:196 cps/templates/layout.html:218
msgid "Close"
msgstr "关闭"
@@ -805,184 +827,180 @@ msgstr "没有结果!请尝试别的关键字."
msgid "Location of Calibre database"
msgstr "Calibre 数据库位置"
-#: cps/templates/config_edit.html:13
+#: cps/templates/config_edit.html:12
msgid "Use google drive?"
msgstr "是否使用google drive?"
-#: cps/templates/config_edit.html:17
-msgid "Client id"
-msgstr ""
-
-#: cps/templates/config_edit.html:21
-msgid "Client secret"
+#: cps/templates/config_edit.html:18
+msgid "Google drive config problem"
msgstr ""
-#: cps/templates/config_edit.html:25
-msgid "Calibre Base URL"
-msgstr ""
-
-#: cps/templates/config_edit.html:29
+#: cps/templates/config_edit.html:28
msgid "Google drive Calibre folder"
msgstr ""
-#: cps/templates/config_edit.html:38
+#: cps/templates/config_edit.html:36
msgid "Metadata Watch Channel ID"
msgstr ""
-#: cps/templates/config_edit.html:52
+#: cps/templates/config_edit.html:39
+msgid "Revoke"
+msgstr ""
+
+#: cps/templates/config_edit.html:48
msgid "Server Port"
msgstr "服务器端口"
-#: cps/templates/config_edit.html:56
+#: cps/templates/config_edit.html:52
msgid "SSL certfile location (leave it empty for non-SSL Servers)"
msgstr ""
-#: cps/templates/config_edit.html:60
+#: cps/templates/config_edit.html:56
msgid "SSL Keyfile location (leave it empty for non-SSL Servers)"
msgstr ""
-#: cps/templates/config_edit.html:64 cps/templates/layout.html:128
-#: cps/templates/layout.html:129 cps/templates/shelf_edit.html:7
+#: cps/templates/config_edit.html:60 cps/templates/layout.html:130
+#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7
msgid "Title"
msgstr "标题"
-#: cps/templates/config_edit.html:72
+#: cps/templates/config_edit.html:68
msgid "No. of random books to show"
msgstr "随机书籍显示数量"
-#: cps/templates/config_edit.html:76
+#: cps/templates/config_edit.html:72
msgid "Regular expression for ignoring columns"
msgstr "忽略列的正则表达式"
-#: cps/templates/config_edit.html:80
+#: cps/templates/config_edit.html:76
msgid "Regular expression for title sorting"
msgstr "标题排序的正则表达式"
-#: cps/templates/config_edit.html:84
+#: cps/templates/config_edit.html:80
msgid "Tags for Mature Content"
msgstr ""
-#: cps/templates/config_edit.html:100
+#: cps/templates/config_edit.html:96
msgid "Location and name of logfile (calibre-web.log for no entry)"
msgstr ""
-#: cps/templates/config_edit.html:106
+#: cps/templates/config_edit.html:102
msgid "Enable uploading"
msgstr "启用上传"
-#: cps/templates/config_edit.html:110
+#: cps/templates/config_edit.html:106
msgid "Enable anonymous browsing"
msgstr "启用匿名浏览"
-#: cps/templates/config_edit.html:114
+#: cps/templates/config_edit.html:110
msgid "Enable public registration"
msgstr "启用注册"
-#: cps/templates/config_edit.html:118
+#: cps/templates/config_edit.html:114
msgid "Enable remote login (\"magic link\")"
msgstr "启用远程登录 (\"魔法链接\")"
-#: cps/templates/config_edit.html:123
+#: cps/templates/config_edit.html:119
msgid "Use"
msgstr ""
-#: cps/templates/config_edit.html:124
+#: cps/templates/config_edit.html:120
msgid "Obtain an API Key"
msgstr ""
-#: cps/templates/config_edit.html:128
+#: cps/templates/config_edit.html:124
msgid "Goodreads API Key"
msgstr ""
-#: cps/templates/config_edit.html:132
+#: cps/templates/config_edit.html:128
msgid "Goodreads API Secret"
msgstr ""
-#: cps/templates/config_edit.html:137
+#: cps/templates/config_edit.html:133
msgid "Default Settings for new users"
msgstr "新用户默认设置"
-#: cps/templates/config_edit.html:140 cps/templates/user_edit.html:94
+#: cps/templates/config_edit.html:136 cps/templates/user_edit.html:102
msgid "Admin user"
msgstr "管理用户"
-#: cps/templates/config_edit.html:144 cps/templates/user_edit.html:103
+#: cps/templates/config_edit.html:140 cps/templates/user_edit.html:111
msgid "Allow Downloads"
msgstr "允许下载"
-#: cps/templates/config_edit.html:148 cps/templates/user_edit.html:107
+#: cps/templates/config_edit.html:144 cps/templates/user_edit.html:115
msgid "Allow Uploads"
msgstr "允许上传"
-#: cps/templates/config_edit.html:152 cps/templates/user_edit.html:111
+#: cps/templates/config_edit.html:148 cps/templates/user_edit.html:119
msgid "Allow Edit"
msgstr "允许编辑"
-#: cps/templates/config_edit.html:156 cps/templates/user_edit.html:115
+#: cps/templates/config_edit.html:152 cps/templates/user_edit.html:123
msgid "Allow Delete books"
msgstr "允许删除书籍"
-#: cps/templates/config_edit.html:160 cps/templates/user_edit.html:120
+#: cps/templates/config_edit.html:156 cps/templates/user_edit.html:128
msgid "Allow Changing Password"
msgstr "允许修改密码"
-#: cps/templates/config_edit.html:164 cps/templates/user_edit.html:124
+#: cps/templates/config_edit.html:160 cps/templates/user_edit.html:132
msgid "Allow Editing Public Shelfs"
msgstr "允许编辑公共书架"
-#: cps/templates/config_edit.html:168
+#: cps/templates/config_edit.html:164
msgid "Default visiblities for new users"
msgstr ""
-#: cps/templates/config_edit.html:172 cps/templates/user_edit.html:46
+#: cps/templates/config_edit.html:168 cps/templates/user_edit.html:54
msgid "Show random books"
msgstr "显示随机书籍"
-#: cps/templates/config_edit.html:176 cps/templates/user_edit.html:50
+#: cps/templates/config_edit.html:172 cps/templates/user_edit.html:58
msgid "Show recent books"
msgstr ""
-#: cps/templates/config_edit.html:180 cps/templates/user_edit.html:54
+#: cps/templates/config_edit.html:176 cps/templates/user_edit.html:62
msgid "Show sorted books"
msgstr ""
-#: cps/templates/config_edit.html:184 cps/templates/user_edit.html:58
+#: cps/templates/config_edit.html:180 cps/templates/user_edit.html:66
msgid "Show hot books"
msgstr "显示热门书籍"
-#: cps/templates/config_edit.html:188 cps/templates/user_edit.html:62
+#: cps/templates/config_edit.html:184 cps/templates/user_edit.html:70
msgid "Show best rated books"
msgstr "显示最高评分书籍"
-#: cps/templates/config_edit.html:192 cps/templates/user_edit.html:66
+#: cps/templates/config_edit.html:188 cps/templates/user_edit.html:74
msgid "Show language selection"
msgstr "显示语言选择"
-#: cps/templates/config_edit.html:196 cps/templates/user_edit.html:70
+#: cps/templates/config_edit.html:192 cps/templates/user_edit.html:78
msgid "Show series selection"
msgstr "显示丛书选择"
-#: cps/templates/config_edit.html:200 cps/templates/user_edit.html:74
+#: cps/templates/config_edit.html:196 cps/templates/user_edit.html:82
msgid "Show category selection"
msgstr "显示分类选择"
-#: cps/templates/config_edit.html:204 cps/templates/user_edit.html:78
+#: cps/templates/config_edit.html:200 cps/templates/user_edit.html:86
msgid "Show author selection"
msgstr "显示作者选择"
-#: cps/templates/config_edit.html:208 cps/templates/user_edit.html:82
+#: cps/templates/config_edit.html:204 cps/templates/user_edit.html:90
msgid "Show read and unread"
msgstr "显示已读和未读"
-#: cps/templates/config_edit.html:212 cps/templates/user_edit.html:86
+#: cps/templates/config_edit.html:208 cps/templates/user_edit.html:94
msgid "Show random books in detail view"
msgstr "在详情页显示随机书籍"
-#: cps/templates/config_edit.html:216 cps/templates/user_edit.html:99
+#: cps/templates/config_edit.html:212 cps/templates/user_edit.html:107
msgid "Show mature content"
msgstr ""
-#: cps/templates/config_edit.html:226 cps/templates/layout.html:77
+#: cps/templates/config_edit.html:222 cps/templates/layout.html:79
#: cps/templates/login.html:4
msgid "Login"
msgstr "登录"
@@ -1051,12 +1069,12 @@ msgstr "保存设置"
msgid "Save settings and send Test E-Mail"
msgstr "保存设置并发送测试邮件"
-#: cps/templates/feed.xml:20 cps/templates/layout.html:200
+#: cps/templates/feed.xml:20 cps/templates/layout.html:202
msgid "Next"
msgstr "下一个"
#: cps/templates/feed.xml:29 cps/templates/index.xml:7
-#: cps/templates/layout.html:41 cps/templates/layout.html:42
+#: cps/templates/layout.html:43 cps/templates/layout.html:44
msgid "Search"
msgstr "搜索"
@@ -1068,7 +1086,7 @@ msgstr "发现(随机书籍)"
msgid "Start"
msgstr "开始"
-#: cps/templates/index.xml:14 cps/templates/layout.html:134
+#: cps/templates/index.xml:14 cps/templates/layout.html:136
msgid "Hot Books"
msgstr "热门书籍"
@@ -1076,7 +1094,7 @@ msgstr "热门书籍"
msgid "Popular publications from this catalog based on Downloads."
msgstr "基于下载数的热门书籍"
-#: cps/templates/index.xml:20 cps/templates/layout.html:137
+#: cps/templates/index.xml:20 cps/templates/layout.html:139
msgid "Best rated Books"
msgstr "最高评分书籍"
@@ -1096,7 +1114,7 @@ msgstr "最新书籍"
msgid "Show Random Books"
msgstr "显示随机书籍"
-#: cps/templates/index.xml:52 cps/templates/layout.html:155
+#: cps/templates/index.xml:52 cps/templates/layout.html:157
msgid "Authors"
msgstr "作者"
@@ -1112,7 +1130,7 @@ msgstr "书籍按分类排序"
msgid "Books ordered by series"
msgstr "书籍按丛书排序"
-#: cps/templates/index.xml:70 cps/templates/layout.html:161
+#: cps/templates/index.xml:70 cps/templates/layout.html:163
msgid "Public Shelves"
msgstr "公开书架"
@@ -1120,7 +1138,7 @@ msgstr "公开书架"
msgid "Books organized in public shelfs, visible to everyone"
msgstr ""
-#: cps/templates/index.xml:77 cps/templates/layout.html:165
+#: cps/templates/index.xml:77 cps/templates/layout.html:167
msgid "Your Shelves"
msgstr "您的书架"
@@ -1128,88 +1146,88 @@ msgstr "您的书架"
msgid "User's own shelfs, only visible to the current user himself"
msgstr ""
-#: cps/templates/layout.html:31
+#: cps/templates/layout.html:33
msgid "Toggle navigation"
msgstr "切换导航"
-#: cps/templates/layout.html:52
+#: cps/templates/layout.html:54
msgid "Advanced Search"
msgstr "高级搜索"
-#: cps/templates/layout.html:73
+#: cps/templates/layout.html:75
msgid "Logout"
msgstr "注销"
-#: cps/templates/layout.html:78 cps/templates/register.html:18
+#: cps/templates/layout.html:80 cps/templates/register.html:18
msgid "Register"
msgstr "注册"
-#: cps/templates/layout.html:103
+#: cps/templates/layout.html:105
msgid "Uploading..."
msgstr ""
-#: cps/templates/layout.html:104
+#: cps/templates/layout.html:106
msgid "please don't refresh the page"
msgstr ""
-#: cps/templates/layout.html:115
+#: cps/templates/layout.html:117
msgid "Browse"
msgstr "浏览"
-#: cps/templates/layout.html:117
+#: cps/templates/layout.html:119
msgid "Recently Added"
msgstr "最近添加"
-#: cps/templates/layout.html:122
+#: cps/templates/layout.html:124
msgid "Sorted Books"
msgstr "已排序书籍"
-#: cps/templates/layout.html:126 cps/templates/layout.html:127
#: cps/templates/layout.html:128 cps/templates/layout.html:129
+#: cps/templates/layout.html:130 cps/templates/layout.html:131
msgid "Sort By"
msgstr "排序"
-#: cps/templates/layout.html:126
+#: cps/templates/layout.html:128
msgid "Newest"
msgstr "最新"
-#: cps/templates/layout.html:127
+#: cps/templates/layout.html:129
msgid "Oldest"
msgstr "最旧"
-#: cps/templates/layout.html:128
+#: cps/templates/layout.html:130
msgid "Ascending"
msgstr "升序"
-#: cps/templates/layout.html:129
+#: cps/templates/layout.html:131
msgid "Descending"
msgstr "降序"
-#: cps/templates/layout.html:146
+#: cps/templates/layout.html:148
msgid "Discover"
msgstr "发现"
-#: cps/templates/layout.html:149
+#: cps/templates/layout.html:151
msgid "Categories"
msgstr "分类"
-#: cps/templates/layout.html:158 cps/templates/search_form.html:75
+#: cps/templates/layout.html:160 cps/templates/search_form.html:75
msgid "Languages"
msgstr "语言"
-#: cps/templates/layout.html:170
+#: cps/templates/layout.html:172
msgid "Create a Shelf"
msgstr "创建书架"
-#: cps/templates/layout.html:171 cps/templates/stats.html:3
+#: cps/templates/layout.html:173 cps/templates/stats.html:3
msgid "About"
msgstr "关于"
-#: cps/templates/layout.html:185
+#: cps/templates/layout.html:187
msgid "Previous"
msgstr ""
-#: cps/templates/layout.html:212
+#: cps/templates/layout.html:214
msgid "Book Details"
msgstr ""
@@ -1380,18 +1398,30 @@ msgid "Kindle E-Mail"
msgstr ""
#: cps/templates/user_edit.html:35
+msgid "Theme"
+msgstr ""
+
+#: cps/templates/user_edit.html:37
+msgid "Standard Theme"
+msgstr ""
+
+#: cps/templates/user_edit.html:38
+msgid "caliBlur! Dark Theme (Beta)"
+msgstr ""
+
+#: cps/templates/user_edit.html:43
msgid "Show books with language"
msgstr "按语言显示书籍"
-#: cps/templates/user_edit.html:37
+#: cps/templates/user_edit.html:45
msgid "Show all"
msgstr "显示全部"
-#: cps/templates/user_edit.html:131
+#: cps/templates/user_edit.html:139
msgid "Delete this user"
msgstr "删除此用户"
-#: cps/templates/user_edit.html:146
+#: cps/templates/user_edit.html:154
msgid "Recent Downloads"
msgstr "最近下载"
diff --git a/cps/ub.py b/cps/ub.py
index 53b23811..ccf82a6d 100644
--- a/cps/ub.py
+++ b/cps/ub.py
@@ -291,10 +291,10 @@ class Settings(Base):
config_default_show = Column(SmallInteger, default=2047)
config_columns_to_ignore = Column(String)
config_use_google_drive = Column(Boolean)
- config_google_drive_client_id = Column(String)
- config_google_drive_client_secret = Column(String)
+ # config_google_drive_client_id = Column(String)
+ # config_google_drive_client_secret = Column(String)
config_google_drive_folder = Column(String)
- config_google_drive_calibre_url_base = Column(String)
+ # config_google_drive_calibre_url_base = Column(String)
config_google_drive_watch_changes_response = Column(String)
config_remote_login = Column(Boolean)
config_use_goodreads = Column(Boolean)
@@ -352,9 +352,9 @@ class Config:
self.config_default_show = data.config_default_show
self.config_columns_to_ignore = data.config_columns_to_ignore
self.config_use_google_drive = data.config_use_google_drive
- self.config_google_drive_client_id = data.config_google_drive_client_id
- self.config_google_drive_client_secret = data.config_google_drive_client_secret
- self.config_google_drive_calibre_url_base = data.config_google_drive_calibre_url_base
+ # self.config_google_drive_client_id = data.config_google_drive_client_id
+ # self.config_google_drive_client_secret = data.config_google_drive_client_secret
+ # self.config_google_drive_calibre_url_base = data.config_google_drive_calibre_url_base
self.config_google_drive_folder = data.config_google_drive_folder
if data.config_google_drive_watch_changes_response:
self.config_google_drive_watch_changes_response = json.loads(data.config_google_drive_watch_changes_response)
@@ -550,9 +550,9 @@ def migrate_Database():
except exc.OperationalError:
conn = engine.connect()
conn.execute("ALTER TABLE Settings ADD column `config_use_google_drive` INTEGER DEFAULT 0")
- conn.execute("ALTER TABLE Settings ADD column `config_google_drive_client_id` String DEFAULT ''")
- conn.execute("ALTER TABLE Settings ADD column `config_google_drive_client_secret` String DEFAULT ''")
- conn.execute("ALTER TABLE Settings ADD column `config_google_drive_calibre_url_base` INTEGER DEFAULT 0")
+ # conn.execute("ALTER TABLE Settings ADD column `config_google_drive_client_id` String DEFAULT ''")
+ # conn.execute("ALTER TABLE Settings ADD column `config_google_drive_client_secret` String DEFAULT ''")
+ # conn.execute("ALTER TABLE Settings ADD column `config_google_drive_calibre_url_base` INTEGER DEFAULT 0")
conn.execute("ALTER TABLE Settings ADD column `config_google_drive_folder` String DEFAULT ''")
conn.execute("ALTER TABLE Settings ADD column `config_google_drive_watch_changes_response` String DEFAULT ''")
try:
diff --git a/cps/web.py b/cps/web.py
index f69e3855..ea201102 100755
--- a/cps/web.py
+++ b/cps/web.py
@@ -1550,19 +1550,29 @@ def google_drive_callback():
@admin_required
def watch_gdrive():
if not config.config_google_drive_watch_changes_response:
- address = '%s/gdrive/watch/callback' % config.config_google_drive_calibre_url_base
+ with open('client_secret.json', 'r') as settings:
+ filedata = json.load(settings)
+ if filedata['web']['redirect_uris'][0].endswith('/'):
+ filedata['web']['redirect_uris'][0] = filedata['web']['redirect_uris'][0][:-((len('/gdrive/callback')+1))]
+ else:
+ filedata['web']['redirect_uris'][0] = filedata['web']['redirect_uris'][0][:-(len('/gdrive/callback'))]
+ address = '%s/gdrive/watch/callback' % filedata['web']['redirect_uris'][0]
notification_id = str(uuid4())
- result = gdriveutils.watchChange(Gdrive.Instance().drive, notification_id,
+ try:
+ result = gdriveutils.watchChange(Gdrive.Instance().drive, notification_id,
'web_hook', address, gdrive_watch_callback_token, current_milli_time() + 604800*1000)
- print (result)
- settings = ub.session.query(ub.Settings).first()
- settings.config_google_drive_watch_changes_response = json.dumps(result)
- ub.session.merge(settings)
- ub.session.commit()
- settings = ub.session.query(ub.Settings).first()
- config.loadSettings()
-
- print (settings.config_google_drive_watch_changes_response)
+ settings = ub.session.query(ub.Settings).first()
+ settings.config_google_drive_watch_changes_response = json.dumps(result)
+ ub.session.merge(settings)
+ ub.session.commit()
+ settings = ub.session.query(ub.Settings).first()
+ config.loadSettings()
+ except HttpError as e:
+ reason=json.loads(e.content)['error']['errors'][0]
+ if reason['reason'] == u'push.webhookUrlUnauthorized':
+ flash(_(u'Callback domain is not verified, please follow steps to verify domain in google developer console'), category="error")
+ else:
+ flash(reason['message'], category="error")
return redirect(url_for('configuration'))
@@ -1800,7 +1810,11 @@ def get_cover_via_gdrive(cover_path):
@login_required_if_no_ano
def get_cover(cover_path):
if config.config_use_google_drive:
- return redirect(get_cover_via_gdrive(cover_path))
+ try:
+ return redirect(get_cover_via_gdrive(cover_path))
+ except:
+ app.logger.error(cover_path + '/cover.jpg ' + _('not found on GDrive'))
+ return send_from_directory(os.path.join(os.path.dirname(__file__), "static"),"generic_cover.jpg")
else:
return send_from_directory(os.path.join(config.config_calibre_dir, cover_path), "cover.jpg")
@@ -2499,8 +2513,20 @@ def basic_configuration():
def configuration_helper(origin):
# global global_task
reboot_required = False
+ gdriveError=None
db_change = False
success = False
+ if gdrive_support == False:
+ gdriveError = _('Import of optional GDrive requirements missing')
+ else:
+ if not os.path.isfile('client_secret.json'):
+ gdriveError = _('client_secret.json is missing or not readable')
+ else:
+ with open('client_secret.json', 'r') as settings:
+ filedata=json.load(settings)
+ if not 'web' in filedata:
+ gdriveError = _('client_secret.json is not configured for web application')
+ filedata = None
if request.method == "POST":
to_save = request.form.to_dict()
content = ub.session.query(ub.Settings).first() # type: ub.Settings
@@ -2509,37 +2535,36 @@ def configuration_helper(origin):
content.config_calibre_dir = to_save["config_calibre_dir"]
db_change = True
# Google drive setup
- create_new_yaml = False
- if "config_google_drive_client_id" in to_save:
- if content.config_google_drive_client_id != to_save["config_google_drive_client_id"]:
- content.config_google_drive_client_id = to_save["config_google_drive_client_id"]
- create_new_yaml = True
- if "config_google_drive_client_secret" in to_save:
- if content.config_google_drive_client_secret != to_save["config_google_drive_client_secret"]:
- content.config_google_drive_client_secret = to_save["config_google_drive_client_secret"]
- create_new_yaml = True
- if "config_google_drive_calibre_url_base" in to_save:
- if to_save['config_google_drive_calibre_url_base'].endswith('/'):
- to_save['config_google_drive_calibre_url_base'] = to_save['config_google_drive_calibre_url_base'][:-1]
- if content.config_google_drive_calibre_url_base != to_save["config_google_drive_calibre_url_base"]:
- content.config_google_drive_calibre_url_base = to_save["config_google_drive_calibre_url_base"]
- create_new_yaml = True
- if ("config_use_google_drive" in to_save and not content.config_use_google_drive) or ("config_use_google_drive" not in to_save and content.config_use_google_drive):
+ if "config_use_google_drive" in to_save and not content.config_use_google_drive and not gdriveError:
+ if filedata:
+ if filedata['web']['redirect_uris'][0].endswith('/'):
+ filedata['web']['redirect_uris'][0] = filedata['web']['redirect_uris'][0][:-1]
+ with open('settings.yaml', 'w') as f:
+ yaml = "client_config_backend: settings\nclient_config:\n" \
+ " client_id: %(client_id)s\n client_secret: %(client_secret)s\n" \
+ " redirect_uri: %(redirect_uri)s\nsave_credentials: True\n" \
+ "save_credentials_backend: file\nsave_credentials_file: gdrive_credentials\n" \
+ "get_refresh_token: True\n\noauth_scope:\n" \
+ "- https://www.googleapis.com/auth/drive\n"
+ f.write(yaml % {'client_id': filedata['web']['client_id'],
+ 'client_secret': filedata['web']['client_secret'],
+ 'redirect_uri': filedata['web']['redirect_uris'][0]})
+ else:
+ flash(_(u'client_secret.json is not configured for web application'), category="error")
+ return render_title_template("config_edit.html", content=config, origin=origin,
+ gdrive=gdrive_support, gdriveError=gdriveError,
+ goodreads=goodreads_support, title=_(u"Basic Configuration"))
+ # always show google drive settings, but in case of error deny support
+ if (("config_use_google_drive" in to_save and not content.config_use_google_drive) or
+ ("config_use_google_drive" not in to_save and content.config_use_google_drive)) and not gdriveError:
content.config_use_google_drive = "config_use_google_drive" in to_save
- db_change = True
- if not content.config_use_google_drive:
- create_new_yaml = False
- if create_new_yaml:
- with open('settings.yaml', 'w') as f:
- with open('gdrive_template.yaml', 'r') as t:
- f.write(t.read() % {'client_id': content.config_google_drive_client_id,
- 'client_secret': content.config_google_drive_client_secret,
- "redirect_uri": content.config_google_drive_calibre_url_base + '/gdrive/callback'})
+ else:
+ content.config_use_google_drive = 0
if "config_google_drive_folder" in to_save:
if content.config_google_drive_folder != to_save["config_google_drive_folder"]:
content.config_google_drive_folder = to_save["config_google_drive_folder"]
- db_change = True
- ##
+ gdriveutils.deleteDatabaseOnChange()
+
if "config_port" in to_save:
if content.config_port != int(to_save["config_port"]):
content.config_port = int(to_save["config_port"])
@@ -2553,7 +2578,7 @@ def configuration_helper(origin):
ub.session.commit()
flash(_(u'Keyfile location is not valid, please enter correct path'), category="error")
return render_title_template("config_edit.html", content=config, origin=origin,
- gdrive=gdrive_support,
+ gdrive=gdrive_support, gdriveError=gdriveError,
goodreads=goodreads_support, title=_(u"Basic Configuration"))
if "config_certfile" in to_save:
if content.config_certfile != to_save["config_certfile"]:
@@ -2564,7 +2589,7 @@ def configuration_helper(origin):
ub.session.commit()
flash(_(u'Certfile location is not valid, please enter correct path'), category="error")
return render_title_template("config_edit.html", content=config, origin=origin,
- gdrive=gdrive_support,
+ gdrive=gdrive_support, gdriveError=gdriveError,
goodreads=goodreads_support, title=_(u"Basic Configuration"))
if "config_calibre_web_title" in to_save:
content.config_calibre_web_title = to_save["config_calibre_web_title"]
@@ -2657,7 +2682,7 @@ def configuration_helper(origin):
ub.session.commit()
flash(_(u'Logfile location is not valid, please enter correct path'), category="error")
return render_title_template("config_edit.html", content=config, origin=origin,
- gdrive=gdrive_support,
+ gdrive=gdrive_support, gdriveError=gdriveError,
goodreads=goodreads_support, title=_(u"Basic Configuration"))
else:
content.config_logfile = to_save["config_logfile"]
@@ -2677,12 +2702,14 @@ def configuration_helper(origin):
except e:
flash(e, category="error")
return render_title_template("config_edit.html", content=config, origin=origin, gdrive=gdrive_support,
+ gdriveError=gdriveError,
goodreads=goodreads_support, title=_(u"Basic Configuration"))
if db_change:
reload(db)
if not db.setup_db():
flash(_(u'DB location is not valid, please enter correct path'), category="error")
return render_title_template("config_edit.html", content=config, origin=origin, gdrive=gdrive_support,
+ gdriveError=gdriveError,
goodreads=goodreads_support, title=_(u"Basic Configuration"))
if reboot_required:
# db.engine.dispose() # ToDo verify correct
@@ -2695,8 +2722,13 @@ def configuration_helper(origin):
app.logger.info('Reboot required, restarting')
if origin:
success = True
+ if is_gdrive_ready():
+ gdrivefolders=gdriveutils.listRootFolders()
+ else:
+ gdrivefolders=None
return render_title_template("config_edit.html", origin=origin, success=success, content=config,
show_authenticate_google_drive=not is_gdrive_ready(), gdrive=gdrive_support,
+ gdriveError=gdriveError, gdrivefolders=gdrivefolders,
goodreads=goodreads_support, title=_(u"Basic Configuration"))
@@ -3351,7 +3383,7 @@ def upload():
else:
return redirect(url_for("index"))
-def start_gevent():
+'''def start_gevent():
from gevent.wsgi import WSGIServer
global gevent_server
try:
@@ -3366,4 +3398,4 @@ def start_gevent():
gevent_server = WSGIServer(('0.0.0.0', ub.config.config_port), app, **ssl_args)
gevent_server.serve_forever()
except:
- pass
+ pass'''
diff --git a/gdrive_template.yaml b/gdrive_template.yaml
deleted file mode 100644
index a6d77eee..00000000
--- a/gdrive_template.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-client_config_backend: settings
-client_config:
- client_id: %(client_id)s
- client_secret: %(client_secret)s
- redirect_uri: %(redirect_uri)s
-
-save_credentials: True
-save_credentials_backend: file
-save_credentials_file: gdrive_credentials
-
-get_refresh_token: True
-
-oauth_scope:
- - https://www.googleapis.com/auth/drive
diff --git a/getVendor.sh b/getVendor.sh
deleted file mode 100644
index 022125c7..00000000
--- a/getVendor.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash -e
-
-pip install --target ./vendor -r requirements.txt
diff --git a/messages.pot b/messages.pot
index db1c90c3..a697ae21 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-04-02 09:35+0200\n"
+"POT-Creation-Date: 2018-06-02 10:45+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -21,57 +21,57 @@ msgstr ""
msgid "not installed"
msgstr ""
-#: cps/helper.py:78
+#: cps/helper.py:79
#, python-format
msgid "kindlegen binary %(kindlepath)s not found"
msgstr ""
-#: cps/helper.py:84
+#: cps/helper.py:85
#, python-format
msgid "epub format not found for book id: %(book)d"
msgstr ""
-#: cps/helper.py:94
+#: cps/helper.py:95
msgid "kindlegen failed, no execution permissions"
msgstr ""
-#: cps/helper.py:109
+#: cps/helper.py:110
#, python-format
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
msgstr ""
-#: cps/helper.py:188
+#: cps/helper.py:189
#, python-format
msgid "Failed to send mail: %s"
msgstr ""
-#: cps/helper.py:195
+#: cps/helper.py:196
msgid "Calibre-web test email"
msgstr ""
-#: cps/helper.py:196 cps/helper.py:208
+#: cps/helper.py:197 cps/helper.py:209
msgid "This email has been sent via calibre web."
msgstr ""
-#: cps/helper.py:205 cps/templates/detail.html:44
+#: cps/helper.py:206 cps/templates/detail.html:44
msgid "Send to Kindle"
msgstr ""
-#: cps/helper.py:225 cps/helper.py:239
+#: cps/helper.py:226 cps/helper.py:240
msgid "Could not find any formats suitable for sending by email"
msgstr ""
-#: cps/helper.py:340
+#: cps/helper.py:341
#, python-format
msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s"
msgstr ""
-#: cps/helper.py:349
+#: cps/helper.py:350
#, python-format
msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s"
msgstr ""
-#: cps/ub.py:684
+#: cps/ub.py:694
msgid "Guest"
msgstr ""
@@ -139,7 +139,7 @@ msgstr ""
msgid "Author list"
msgstr ""
-#: cps/web.py:1220 cps/web.py:1278 cps/web.py:1408 cps/web.py:1903
+#: cps/web.py:1220 cps/web.py:1278 cps/web.py:1408 cps/web.py:1917
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr ""
@@ -178,306 +178,326 @@ msgstr ""
msgid "Statistics"
msgstr ""
-#: cps/web.py:1641
+#: cps/web.py:1573
+msgid "Callback domain is not verified, please follow steps to verify domain in google developer console"
+msgstr ""
+
+#: cps/web.py:1651
msgid "Server restarted, please reload page"
msgstr ""
-#: cps/web.py:1643
+#: cps/web.py:1653
msgid "Performing shutdown of server, please close window"
msgstr ""
-#: cps/web.py:1659
+#: cps/web.py:1669
msgid "Update done"
msgstr ""
-#: cps/web.py:1716
+#: cps/web.py:1726
#, python-format
msgid "Published after %s"
msgstr ""
-#: cps/web.py:1721
+#: cps/web.py:1731
msgid "Published before "
msgstr ""
-#: cps/web.py:1767 cps/web.py:1780
+#: cps/web.py:1777 cps/web.py:1790
msgid "search"
msgstr ""
+#: cps/web.py:1816
+msgid "not found on GDrive"
+msgstr ""
+
#: cps/templates/index.xml:39 cps/templates/index.xml:42
-#: cps/templates/layout.html:141 cps/web.py:1858
+#: cps/templates/layout.html:143 cps/web.py:1872
msgid "Read Books"
msgstr ""
#: cps/templates/index.xml:46 cps/templates/index.xml:49
-#: cps/templates/layout.html:143 cps/web.py:1861
+#: cps/templates/layout.html:145 cps/web.py:1875
msgid "Unread Books"
msgstr ""
-#: cps/web.py:1936 cps/web.py:1938 cps/web.py:1940 cps/web.py:1949
+#: cps/web.py:1950 cps/web.py:1952 cps/web.py:1954 cps/web.py:1963
msgid "Read a Book"
msgstr ""
-#: cps/web.py:2001 cps/web.py:2718
+#: cps/web.py:2015 cps/web.py:2751
msgid "Please fill out all fields!"
msgstr ""
-#: cps/web.py:2002 cps/web.py:2019 cps/web.py:2024 cps/web.py:2026
+#: cps/web.py:2016 cps/web.py:2033 cps/web.py:2038 cps/web.py:2040
msgid "register"
msgstr ""
-#: cps/web.py:2018
+#: cps/web.py:2032
msgid "An unknown error occured. Please try again later."
msgstr ""
-#: cps/web.py:2023
+#: cps/web.py:2037
msgid "This username or email address is already in use."
msgstr ""
-#: cps/web.py:2042 cps/web.py:2138
+#: cps/web.py:2056 cps/web.py:2152
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr ""
-#: cps/web.py:2047
+#: cps/web.py:2061
msgid "Wrong Username or Password"
msgstr ""
-#: cps/web.py:2053 cps/web.py:2074
+#: cps/web.py:2067 cps/web.py:2088
msgid "login"
msgstr ""
-#: cps/web.py:2086 cps/web.py:2117
+#: cps/web.py:2100 cps/web.py:2131
msgid "Token not found"
msgstr ""
-#: cps/web.py:2094 cps/web.py:2125
+#: cps/web.py:2108 cps/web.py:2139
msgid "Token has expired"
msgstr ""
-#: cps/web.py:2102
+#: cps/web.py:2116
msgid "Success! Please return to your device"
msgstr ""
-#: cps/web.py:2152
+#: cps/web.py:2166
msgid "Please configure the SMTP mail settings first..."
msgstr ""
-#: cps/web.py:2156
+#: cps/web.py:2170
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr ""
-#: cps/web.py:2160
+#: cps/web.py:2174
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr ""
-#: cps/web.py:2162 cps/web.py:2805
+#: cps/web.py:2176 cps/web.py:2839
msgid "Please configure your kindle email address first..."
msgstr ""
-#: cps/web.py:2206
+#: cps/web.py:2220
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2244
+#: cps/web.py:2258
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2250
+#: cps/web.py:2264
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr ""
-#: cps/web.py:2270 cps/web.py:2294
+#: cps/web.py:2284 cps/web.py:2308
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/web.py:2275
+#: cps/web.py:2289
#, python-format
msgid "Shelf %(title)s created"
msgstr ""
-#: cps/web.py:2277 cps/web.py:2305
+#: cps/web.py:2291 cps/web.py:2319
msgid "There was an error"
msgstr ""
-#: cps/web.py:2278 cps/web.py:2280
+#: cps/web.py:2292 cps/web.py:2294
msgid "create a shelf"
msgstr ""
-#: cps/web.py:2303
+#: cps/web.py:2317
#, python-format
msgid "Shelf %(title)s changed"
msgstr ""
-#: cps/web.py:2306 cps/web.py:2308
+#: cps/web.py:2320 cps/web.py:2322
msgid "Edit a shelf"
msgstr ""
-#: cps/web.py:2329
+#: cps/web.py:2343
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr ""
-#: cps/web.py:2351
+#: cps/web.py:2365
#, python-format
msgid "Shelf: '%(name)s'"
msgstr ""
-#: cps/web.py:2354
+#: cps/web.py:2368
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr ""
-#: cps/web.py:2385
+#: cps/web.py:2399
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr ""
-#: cps/web.py:2454
+#: cps/web.py:2469
msgid "Found an existing account for this email address."
msgstr ""
-#: cps/web.py:2456 cps/web.py:2460
+#: cps/web.py:2471 cps/web.py:2475
#, python-format
msgid "%(name)s's profile"
msgstr ""
-#: cps/web.py:2457
+#: cps/web.py:2472
msgid "Profile updated"
msgstr ""
-#: cps/web.py:2469
+#: cps/web.py:2484
msgid "Unknown"
msgstr ""
-#: cps/web.py:2482
+#: cps/web.py:2497
msgid "Admin page"
msgstr ""
-#: cps/web.py:2553
-msgid "Keyfile location is not valid, please enter correct path"
+#: cps/web.py:2520
+msgid "Import of optional GDrive requirements missing"
msgstr ""
-#: cps/web.py:2556 cps/web.py:2567 cps/web.py:2660 cps/web.py:2679
-#: cps/web.py:2685 cps/web.py:2699
+#: cps/web.py:2523
+msgid "client_secret.json is missing or not readable"
+msgstr ""
+
+#: cps/web.py:2528 cps/web.py:2553
+msgid "client_secret.json is not configured for web application"
+msgstr ""
+
+#: cps/web.py:2556 cps/web.py:2582 cps/web.py:2593 cps/web.py:2686
+#: cps/web.py:2706 cps/web.py:2713 cps/web.py:2732
msgid "Basic Configuration"
msgstr ""
-#: cps/web.py:2564
+#: cps/web.py:2579
+msgid "Keyfile location is not valid, please enter correct path"
+msgstr ""
+
+#: cps/web.py:2590
msgid "Certfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2657
+#: cps/web.py:2683
msgid "Logfile location is not valid, please enter correct path"
msgstr ""
-#: cps/web.py:2672
+#: cps/web.py:2698
msgid "Calibre-web configuration updated"
msgstr ""
-#: cps/web.py:2683
+#: cps/web.py:2710
msgid "DB location is not valid, please enter correct path"
msgstr ""
-#: cps/templates/admin.html:34 cps/web.py:2720 cps/web.py:2775
+#: cps/templates/admin.html:34 cps/web.py:2753 cps/web.py:2809
msgid "Add new user"
msgstr ""
-#: cps/web.py:2765
+#: cps/web.py:2799
#, python-format
msgid "User '%(user)s' created"
msgstr ""
-#: cps/web.py:2769
+#: cps/web.py:2803
msgid "Found an existing account for this email address or nickname."
msgstr ""
-#: cps/web.py:2793
+#: cps/web.py:2827
msgid "Mail settings updated"
msgstr ""
-#: cps/web.py:2800
+#: cps/web.py:2834
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr ""
-#: cps/web.py:2803
+#: cps/web.py:2837
#, python-format
msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr ""
-#: cps/web.py:2807
+#: cps/web.py:2841
msgid "E-Mail settings updated"
msgstr ""
-#: cps/web.py:2808
+#: cps/web.py:2842
msgid "Edit mail settings"
msgstr ""
-#: cps/web.py:2837
+#: cps/web.py:2871
#, python-format
msgid "User '%(nick)s' deleted"
msgstr ""
-#: cps/web.py:2945
+#: cps/web.py:2980
#, python-format
msgid "User '%(nick)s' updated"
msgstr ""
-#: cps/web.py:2948
+#: cps/web.py:2983
msgid "An unknown error occured."
msgstr ""
-#: cps/web.py:2951
+#: cps/web.py:2986
#, python-format
msgid "Edit User %(nick)s"
msgstr ""
-#: cps/web.py:2967
+#: cps/web.py:3002
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr ""
-#: cps/web.py:2982 cps/web.py:3193 cps/web.py:3198 cps/web.py:3344
+#: cps/web.py:3017 cps/web.py:3228 cps/web.py:3233 cps/web.py:3379
msgid "edit metadata"
msgstr ""
-#: cps/web.py:2992 cps/web.py:3238
+#: cps/web.py:3027 cps/web.py:3273
#, python-format
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
msgstr ""
-#: cps/web.py:3003
+#: cps/web.py:3038
#, python-format
msgid "Failed to store file %s."
msgstr ""
-#: cps/web.py:3025 cps/web.py:3029
+#: cps/web.py:3060 cps/web.py:3064
msgid "unknown"
msgstr ""
-#: cps/web.py:3052
+#: cps/web.py:3087
msgid "Cover is not a jpg file, can't save"
msgstr ""
-#: cps/web.py:3244
+#: cps/web.py:3279
msgid "File to be uploaded must have an extension"
msgstr ""
-#: cps/web.py:3263
+#: cps/web.py:3298
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr ""
-#: cps/web.py:3268
+#: cps/web.py:3303
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr ""
-#: cps/web.py:3273
+#: cps/web.py:3308
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr ""
@@ -502,7 +522,7 @@ msgstr ""
msgid "DLS"
msgstr ""
-#: cps/templates/admin.html:12 cps/templates/layout.html:69
+#: cps/templates/admin.html:12 cps/templates/layout.html:71
msgid "Admin"
msgstr ""
@@ -511,7 +531,7 @@ msgstr ""
msgid "Download"
msgstr ""
-#: cps/templates/admin.html:14 cps/templates/layout.html:62
+#: cps/templates/admin.html:14 cps/templates/layout.html:64
msgid "Upload"
msgstr ""
@@ -563,7 +583,7 @@ msgstr ""
msgid "Calibre DB dir"
msgstr ""
-#: cps/templates/admin.html:61 cps/templates/config_edit.html:91
+#: cps/templates/admin.html:61 cps/templates/config_edit.html:87
msgid "Log Level"
msgstr ""
@@ -571,7 +591,7 @@ msgstr ""
msgid "Port"
msgstr ""
-#: cps/templates/admin.html:63 cps/templates/config_edit.html:68
+#: cps/templates/admin.html:63 cps/templates/config_edit.html:64
msgid "Books per page"
msgstr ""
@@ -634,9 +654,9 @@ msgstr ""
#: cps/templates/admin.html:105 cps/templates/admin.html:119
#: cps/templates/book_edit.html:135 cps/templates/book_edit.html:157
-#: cps/templates/config_edit.html:223 cps/templates/email_edit.html:36
+#: cps/templates/config_edit.html:219 cps/templates/email_edit.html:36
#: cps/templates/shelf.html:60 cps/templates/shelf_edit.html:19
-#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:139
+#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:147
msgid "Back"
msgstr ""
@@ -682,7 +702,7 @@ msgstr ""
msgid "Tags"
msgstr ""
-#: cps/templates/book_edit.html:39 cps/templates/layout.html:152
+#: cps/templates/book_edit.html:39 cps/templates/layout.html:154
#: cps/templates/search_form.html:54
msgid "Series"
msgstr ""
@@ -727,9 +747,9 @@ msgstr ""
msgid "Get metadata"
msgstr ""
-#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:221
+#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:217
#: cps/templates/login.html:20 cps/templates/search_form.html:96
-#: cps/templates/shelf_edit.html:17 cps/templates/user_edit.html:137
+#: cps/templates/shelf_edit.html:17 cps/templates/user_edit.html:145
msgid "Submit"
msgstr ""
@@ -757,7 +777,7 @@ msgstr ""
msgid " Search keyword "
msgstr ""
-#: cps/templates/book_edit.html:175 cps/templates/layout.html:44
+#: cps/templates/book_edit.html:175 cps/templates/layout.html:46
msgid "Go!"
msgstr ""
@@ -769,7 +789,7 @@ msgstr ""
msgid "Loading..."
msgstr ""
-#: cps/templates/book_edit.html:196 cps/templates/layout.html:216
+#: cps/templates/book_edit.html:196 cps/templates/layout.html:218
msgid "Close"
msgstr ""
@@ -794,184 +814,180 @@ msgstr ""
msgid "Location of Calibre database"
msgstr ""
-#: cps/templates/config_edit.html:13
+#: cps/templates/config_edit.html:12
msgid "Use google drive?"
msgstr ""
-#: cps/templates/config_edit.html:17
-msgid "Client id"
-msgstr ""
-
-#: cps/templates/config_edit.html:21
-msgid "Client secret"
+#: cps/templates/config_edit.html:18
+msgid "Google drive config problem"
msgstr ""
-#: cps/templates/config_edit.html:25
-msgid "Calibre Base URL"
-msgstr ""
-
-#: cps/templates/config_edit.html:29
+#: cps/templates/config_edit.html:28
msgid "Google drive Calibre folder"
msgstr ""
-#: cps/templates/config_edit.html:38
+#: cps/templates/config_edit.html:36
msgid "Metadata Watch Channel ID"
msgstr ""
-#: cps/templates/config_edit.html:52
+#: cps/templates/config_edit.html:39
+msgid "Revoke"
+msgstr ""
+
+#: cps/templates/config_edit.html:48
msgid "Server Port"
msgstr ""
-#: cps/templates/config_edit.html:56
+#: cps/templates/config_edit.html:52
msgid "SSL certfile location (leave it empty for non-SSL Servers)"
msgstr ""
-#: cps/templates/config_edit.html:60
+#: cps/templates/config_edit.html:56
msgid "SSL Keyfile location (leave it empty for non-SSL Servers)"
msgstr ""
-#: cps/templates/config_edit.html:64 cps/templates/layout.html:128
-#: cps/templates/layout.html:129 cps/templates/shelf_edit.html:7
+#: cps/templates/config_edit.html:60 cps/templates/layout.html:130
+#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7
msgid "Title"
msgstr ""
-#: cps/templates/config_edit.html:72
+#: cps/templates/config_edit.html:68
msgid "No. of random books to show"
msgstr ""
-#: cps/templates/config_edit.html:76
+#: cps/templates/config_edit.html:72
msgid "Regular expression for ignoring columns"
msgstr ""
-#: cps/templates/config_edit.html:80
+#: cps/templates/config_edit.html:76
msgid "Regular expression for title sorting"
msgstr ""
-#: cps/templates/config_edit.html:84
+#: cps/templates/config_edit.html:80
msgid "Tags for Mature Content"
msgstr ""
-#: cps/templates/config_edit.html:100
+#: cps/templates/config_edit.html:96
msgid "Location and name of logfile (calibre-web.log for no entry)"
msgstr ""
-#: cps/templates/config_edit.html:106
+#: cps/templates/config_edit.html:102
msgid "Enable uploading"
msgstr ""
-#: cps/templates/config_edit.html:110
+#: cps/templates/config_edit.html:106
msgid "Enable anonymous browsing"
msgstr ""
-#: cps/templates/config_edit.html:114
+#: cps/templates/config_edit.html:110
msgid "Enable public registration"
msgstr ""
-#: cps/templates/config_edit.html:118
+#: cps/templates/config_edit.html:114
msgid "Enable remote login (\"magic link\")"
msgstr ""
-#: cps/templates/config_edit.html:123
+#: cps/templates/config_edit.html:119
msgid "Use"
msgstr ""
-#: cps/templates/config_edit.html:124
+#: cps/templates/config_edit.html:120
msgid "Obtain an API Key"
msgstr ""
-#: cps/templates/config_edit.html:128
+#: cps/templates/config_edit.html:124
msgid "Goodreads API Key"
msgstr ""
-#: cps/templates/config_edit.html:132
+#: cps/templates/config_edit.html:128
msgid "Goodreads API Secret"
msgstr ""
-#: cps/templates/config_edit.html:137
+#: cps/templates/config_edit.html:133
msgid "Default Settings for new users"
msgstr ""
-#: cps/templates/config_edit.html:140 cps/templates/user_edit.html:94
+#: cps/templates/config_edit.html:136 cps/templates/user_edit.html:102
msgid "Admin user"
msgstr ""
-#: cps/templates/config_edit.html:144 cps/templates/user_edit.html:103
+#: cps/templates/config_edit.html:140 cps/templates/user_edit.html:111
msgid "Allow Downloads"
msgstr ""
-#: cps/templates/config_edit.html:148 cps/templates/user_edit.html:107
+#: cps/templates/config_edit.html:144 cps/templates/user_edit.html:115
msgid "Allow Uploads"
msgstr ""
-#: cps/templates/config_edit.html:152 cps/templates/user_edit.html:111
+#: cps/templates/config_edit.html:148 cps/templates/user_edit.html:119
msgid "Allow Edit"
msgstr ""
-#: cps/templates/config_edit.html:156 cps/templates/user_edit.html:115
+#: cps/templates/config_edit.html:152 cps/templates/user_edit.html:123
msgid "Allow Delete books"
msgstr ""
-#: cps/templates/config_edit.html:160 cps/templates/user_edit.html:120
+#: cps/templates/config_edit.html:156 cps/templates/user_edit.html:128
msgid "Allow Changing Password"
msgstr ""
-#: cps/templates/config_edit.html:164 cps/templates/user_edit.html:124
+#: cps/templates/config_edit.html:160 cps/templates/user_edit.html:132
msgid "Allow Editing Public Shelfs"
msgstr ""
-#: cps/templates/config_edit.html:168
+#: cps/templates/config_edit.html:164
msgid "Default visiblities for new users"
msgstr ""
-#: cps/templates/config_edit.html:172 cps/templates/user_edit.html:46
+#: cps/templates/config_edit.html:168 cps/templates/user_edit.html:54
msgid "Show random books"
msgstr ""
-#: cps/templates/config_edit.html:176 cps/templates/user_edit.html:50
+#: cps/templates/config_edit.html:172 cps/templates/user_edit.html:58
msgid "Show recent books"
msgstr ""
-#: cps/templates/config_edit.html:180 cps/templates/user_edit.html:54
+#: cps/templates/config_edit.html:176 cps/templates/user_edit.html:62
msgid "Show sorted books"
msgstr ""
-#: cps/templates/config_edit.html:184 cps/templates/user_edit.html:58
+#: cps/templates/config_edit.html:180 cps/templates/user_edit.html:66
msgid "Show hot books"
msgstr ""
-#: cps/templates/config_edit.html:188 cps/templates/user_edit.html:62
+#: cps/templates/config_edit.html:184 cps/templates/user_edit.html:70
msgid "Show best rated books"
msgstr ""
-#: cps/templates/config_edit.html:192 cps/templates/user_edit.html:66
+#: cps/templates/config_edit.html:188 cps/templates/user_edit.html:74
msgid "Show language selection"
msgstr ""
-#: cps/templates/config_edit.html:196 cps/templates/user_edit.html:70
+#: cps/templates/config_edit.html:192 cps/templates/user_edit.html:78
msgid "Show series selection"
msgstr ""
-#: cps/templates/config_edit.html:200 cps/templates/user_edit.html:74
+#: cps/templates/config_edit.html:196 cps/templates/user_edit.html:82
msgid "Show category selection"
msgstr ""
-#: cps/templates/config_edit.html:204 cps/templates/user_edit.html:78
+#: cps/templates/config_edit.html:200 cps/templates/user_edit.html:86
msgid "Show author selection"
msgstr ""
-#: cps/templates/config_edit.html:208 cps/templates/user_edit.html:82
+#: cps/templates/config_edit.html:204 cps/templates/user_edit.html:90
msgid "Show read and unread"
msgstr ""
-#: cps/templates/config_edit.html:212 cps/templates/user_edit.html:86
+#: cps/templates/config_edit.html:208 cps/templates/user_edit.html:94
msgid "Show random books in detail view"
msgstr ""
-#: cps/templates/config_edit.html:216 cps/templates/user_edit.html:99
+#: cps/templates/config_edit.html:212 cps/templates/user_edit.html:107
msgid "Show mature content"
msgstr ""
-#: cps/templates/config_edit.html:226 cps/templates/layout.html:77
+#: cps/templates/config_edit.html:222 cps/templates/layout.html:79
#: cps/templates/login.html:4
msgid "Login"
msgstr ""
@@ -1040,12 +1056,12 @@ msgstr ""
msgid "Save settings and send Test E-Mail"
msgstr ""
-#: cps/templates/feed.xml:20 cps/templates/layout.html:200
+#: cps/templates/feed.xml:20 cps/templates/layout.html:202
msgid "Next"
msgstr ""
#: cps/templates/feed.xml:29 cps/templates/index.xml:7
-#: cps/templates/layout.html:41 cps/templates/layout.html:42
+#: cps/templates/layout.html:43 cps/templates/layout.html:44
msgid "Search"
msgstr ""
@@ -1057,7 +1073,7 @@ msgstr ""
msgid "Start"
msgstr ""
-#: cps/templates/index.xml:14 cps/templates/layout.html:134
+#: cps/templates/index.xml:14 cps/templates/layout.html:136
msgid "Hot Books"
msgstr ""
@@ -1065,7 +1081,7 @@ msgstr ""
msgid "Popular publications from this catalog based on Downloads."
msgstr ""
-#: cps/templates/index.xml:20 cps/templates/layout.html:137
+#: cps/templates/index.xml:20 cps/templates/layout.html:139
msgid "Best rated Books"
msgstr ""
@@ -1085,7 +1101,7 @@ msgstr ""
msgid "Show Random Books"
msgstr ""
-#: cps/templates/index.xml:52 cps/templates/layout.html:155
+#: cps/templates/index.xml:52 cps/templates/layout.html:157
msgid "Authors"
msgstr ""
@@ -1101,7 +1117,7 @@ msgstr ""
msgid "Books ordered by series"
msgstr ""
-#: cps/templates/index.xml:70 cps/templates/layout.html:161
+#: cps/templates/index.xml:70 cps/templates/layout.html:163
msgid "Public Shelves"
msgstr ""
@@ -1109,7 +1125,7 @@ msgstr ""
msgid "Books organized in public shelfs, visible to everyone"
msgstr ""
-#: cps/templates/index.xml:77 cps/templates/layout.html:165
+#: cps/templates/index.xml:77 cps/templates/layout.html:167
msgid "Your Shelves"
msgstr ""
@@ -1117,88 +1133,88 @@ msgstr ""
msgid "User's own shelfs, only visible to the current user himself"
msgstr ""
-#: cps/templates/layout.html:31
+#: cps/templates/layout.html:33
msgid "Toggle navigation"
msgstr ""
-#: cps/templates/layout.html:52
+#: cps/templates/layout.html:54
msgid "Advanced Search"
msgstr ""
-#: cps/templates/layout.html:73
+#: cps/templates/layout.html:75
msgid "Logout"
msgstr ""
-#: cps/templates/layout.html:78 cps/templates/register.html:18
+#: cps/templates/layout.html:80 cps/templates/register.html:18
msgid "Register"
msgstr ""
-#: cps/templates/layout.html:103
+#: cps/templates/layout.html:105
msgid "Uploading..."
msgstr ""
-#: cps/templates/layout.html:104
+#: cps/templates/layout.html:106
msgid "please don't refresh the page"
msgstr ""
-#: cps/templates/layout.html:115
+#: cps/templates/layout.html:117
msgid "Browse"
msgstr ""
-#: cps/templates/layout.html:117
+#: cps/templates/layout.html:119
msgid "Recently Added"
msgstr ""
-#: cps/templates/layout.html:122
+#: cps/templates/layout.html:124
msgid "Sorted Books"
msgstr ""
-#: cps/templates/layout.html:126 cps/templates/layout.html:127
#: cps/templates/layout.html:128 cps/templates/layout.html:129
+#: cps/templates/layout.html:130 cps/templates/layout.html:131
msgid "Sort By"
msgstr ""
-#: cps/templates/layout.html:126
+#: cps/templates/layout.html:128
msgid "Newest"
msgstr ""
-#: cps/templates/layout.html:127
+#: cps/templates/layout.html:129
msgid "Oldest"
msgstr ""
-#: cps/templates/layout.html:128
+#: cps/templates/layout.html:130
msgid "Ascending"
msgstr ""
-#: cps/templates/layout.html:129
+#: cps/templates/layout.html:131
msgid "Descending"
msgstr ""
-#: cps/templates/layout.html:146
+#: cps/templates/layout.html:148
msgid "Discover"
msgstr ""
-#: cps/templates/layout.html:149
+#: cps/templates/layout.html:151
msgid "Categories"
msgstr ""
-#: cps/templates/layout.html:158 cps/templates/search_form.html:75
+#: cps/templates/layout.html:160 cps/templates/search_form.html:75
msgid "Languages"
msgstr ""
-#: cps/templates/layout.html:170
+#: cps/templates/layout.html:172
msgid "Create a Shelf"
msgstr ""
-#: cps/templates/layout.html:171 cps/templates/stats.html:3
+#: cps/templates/layout.html:173 cps/templates/stats.html:3
msgid "About"
msgstr ""
-#: cps/templates/layout.html:185
+#: cps/templates/layout.html:187
msgid "Previous"
msgstr ""
-#: cps/templates/layout.html:212
+#: cps/templates/layout.html:214
msgid "Book Details"
msgstr ""
@@ -1369,18 +1385,30 @@ msgid "Kindle E-Mail"
msgstr ""
#: cps/templates/user_edit.html:35
-msgid "Show books with language"
+msgid "Theme"
msgstr ""
#: cps/templates/user_edit.html:37
+msgid "Standard Theme"
+msgstr ""
+
+#: cps/templates/user_edit.html:38
+msgid "caliBlur! Dark Theme (Beta)"
+msgstr ""
+
+#: cps/templates/user_edit.html:43
+msgid "Show books with language"
+msgstr ""
+
+#: cps/templates/user_edit.html:45
msgid "Show all"
msgstr ""
-#: cps/templates/user_edit.html:131
+#: cps/templates/user_edit.html:139
msgid "Delete this user"
msgstr ""
-#: cps/templates/user_edit.html:146
+#: cps/templates/user_edit.html:154
msgid "Recent Downloads"
msgstr ""
diff --git a/optional-requirements.txt b/optional-requirements.txt
index cf743dbb..ca86cc3a 100644
--- a/optional-requirements.txt
+++ b/optional-requirements.txt
@@ -1,15 +1,18 @@
-gevent==1.2.1
+# GDrive Integration
google-api-python-client==1.6.1
+gevent==1.2.1
greenlet==0.4.12
httplib2==0.9.2
-lxml==3.7.2
oauth2client==4.0.0
+uritemplate==3.0.0
pyasn1-modules==0.0.8
pyasn1==0.1.9
PyDrive==1.3.1
PyYAML==3.12
rsa==3.4.2
six==1.10.0
-uritemplate==3.0.0
+# goodreads
goodreads>=0.3.2
python-Levenshtein>=0.12.0
+# other
+lxml==3.7.2
diff --git a/readme.md b/readme.md
index 1469ebdc..3a253843 100755
--- a/readme.md
+++ b/readme.md
@@ -88,22 +88,22 @@ Once a project has been created, we need to create a client ID and a client secr
The Drive API should now be setup and ready to use, so we need to integrate it into Calibre-Web. This is done as below: -
1. Open config page
-2. Enter the location that will be used to store the metadata.db file, and to temporary store uploaded books and other temporary files for upload
+2. Enter the location that will be used to store the metadata.db file locally, and to temporary store uploaded books and other temporary files for upload ("Location of Calibre database")
2. Tick Use Google Drive
-3. Enter Client Secret and Client Key as provided via previous steps
-4. Enter the folder that is the root of your calibre library
-5. Enter base URL for calibre-web (used for google callbacks)
-6. Click the "Submit" button
-7. Come back to the configuration form
-8. Now select Authenticate Google Drive
-9. This should redirect you to google to allow it top use your Drive, and then redirect you back to the config page
-10. Google Drive should now be connected and be used to get images and download Epubs. The metadata.db is stored in the calibre library location
+3. Click the "Submit" button
+4. Now select Authenticate Google Drive
+5. This should redirect you to Google to allow it top use your Drive, and then redirect you back to the config page
+6. Select the folder that is the root of your calibre library on Gdrive ("Google drive Calibre folder")
+7. Click the "Submit" button
+8. Google Drive should now be connected and be used to get images and download Epubs. The metadata.db is stored in the calibre library location
### Optional
If your calibre web is using https, it is possible to add a "watch" to the drive. This will inform us if the metadata.db file is updated and allow us to update our calibre library accordingly.
+Additionally the public adress your server uses (e.g.https://example.com) has to be verified in the Google developer console. After this is done, please wait a few minutes.
-11. Click enable watch of metadata.db
-12. Note that this expires after a week, so will need to be manually refresh
+9. Open config page
+10. Click enable watch of metadata.db
+11. Note that this expires after a week, so will need to be manually refresh
## Docker image
diff --git a/requirements.txt b/requirements.txt
index e33778a9..a5f80c0f 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,5 @@
Babel>=1.3
-Flask-Babel==0.11.1
+Flask-Babel>=0.11.1
Flask-Login>=0.3.2
Flask-Principal>=0.3.2
singledispatch>=3.4.0.0