From ee0485a8d58f069cfcd0468d7350834b1b43f247 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 9 Dec 2021 11:07:22 -0800 Subject: [PATCH 01/20] Locale updates --- locale/de_DE/LC_MESSAGES/django.mo | Bin 60361 -> 60361 bytes locale/de_DE/LC_MESSAGES/django.po | 190 ++++++++++++++------- locale/en_US/LC_MESSAGES/django.po | 2 +- locale/es_ES/LC_MESSAGES/django.mo | Bin 65497 -> 65557 bytes locale/es_ES/LC_MESSAGES/django.po | 190 ++++++++++++++------- locale/fr_FR/LC_MESSAGES/django.mo | Bin 70177 -> 71197 bytes locale/fr_FR/LC_MESSAGES/django.po | 190 ++++++++++++++------- locale/gl_ES/LC_MESSAGES/django.mo | Bin 64021 -> 67812 bytes locale/gl_ES/LC_MESSAGES/django.po | 240 +++++++++++++++++---------- locale/lt_LT/LC_MESSAGES/django.mo | Bin 69316 -> 69316 bytes locale/lt_LT/LC_MESSAGES/django.po | 192 ++++++++++++++------- locale/pt_BR/LC_MESSAGES/django.mo | Bin 67193 -> 68135 bytes locale/pt_BR/LC_MESSAGES/django.po | 190 ++++++++++++++------- locale/zh_Hans/LC_MESSAGES/django.mo | Bin 58899 -> 58899 bytes locale/zh_Hans/LC_MESSAGES/django.po | 190 ++++++++++++++------- locale/zh_Hant/LC_MESSAGES/django.mo | Bin 37183 -> 37183 bytes locale/zh_Hant/LC_MESSAGES/django.po | 190 ++++++++++++++------- 17 files changed, 1059 insertions(+), 515 deletions(-) diff --git a/locale/de_DE/LC_MESSAGES/django.mo b/locale/de_DE/LC_MESSAGES/django.mo index 1c7baeb56f9b274e7e6c8f1180a97d380809aa9e..c9a7135b24fe2ed064da1636676161fbb39ab2fc 100644 GIT binary patch delta 22 dcmX?ko%!T-<_$T0?3N0K7FMQan~VFxVgYYm2*v;a delta 22 dcmX?ko%!T-<_$T0?B)uF7FI^4n~VFxVgYX|2*3aU diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po index 5a1f73490..5eb621b0b 100644 --- a/locale/de_DE/LC_MESSAGES/django.po +++ b/locale/de_DE/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-07 17:35+0000\n" -"PO-Revision-Date: 2021-12-07 18:25\n" +"POT-Creation-Date: 2021-12-08 15:40+0000\n" +"PO-Revision-Date: 2021-12-09 18:56\n" "Last-Translator: Mouse Reeve \n" "Language-Team: German\n" "Language: de\n" @@ -101,23 +101,23 @@ msgstr "Moderator*in löschen" msgid "Domain block" msgstr "Domainsperrung" -#: bookwyrm/models/book.py:233 +#: bookwyrm/models/book.py:243 msgid "Audiobook" msgstr "Hörbuch" -#: bookwyrm/models/book.py:234 +#: bookwyrm/models/book.py:244 msgid "eBook" msgstr "E-Book" -#: bookwyrm/models/book.py:235 +#: bookwyrm/models/book.py:245 msgid "Graphic novel" msgstr "Graphic Novel" -#: bookwyrm/models/book.py:236 +#: bookwyrm/models/book.py:246 msgid "Hardcover" msgstr "Hardcover" -#: bookwyrm/models/book.py:237 +#: bookwyrm/models/book.py:247 msgid "Paperback" msgstr "Taschenbuch" @@ -153,7 +153,7 @@ msgstr "Benutzer*inname" msgid "A user with that username already exists." msgstr "Dieser Benutzer*inname ist bereits vergeben." -#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:227 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:244 msgid "Reviews" msgstr "Besprechungen" @@ -248,46 +248,61 @@ msgstr "Etwas ist schief gelaufen! Tut uns leid." msgid "Edit Author" msgstr "Autor*in bearbeiten" -#: bookwyrm/templates/author/author.html:35 +#: bookwyrm/templates/author/author.html:40 +msgid "Author details" +msgstr "" + +#: bookwyrm/templates/author/author.html:44 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "Alternative Namen:" -#: bookwyrm/templates/author/author.html:46 +#: bookwyrm/templates/author/author.html:53 msgid "Born:" msgstr "Geboren:" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:60 msgid "Died:" msgstr "Gestorben:" -#: bookwyrm/templates/author/author.html:62 +#: bookwyrm/templates/author/author.html:70 +msgid "External links" +msgstr "" + +#: bookwyrm/templates/author/author.html:75 msgid "Wikipedia" msgstr "Wikipedia" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:83 msgid "View ISNI record" msgstr "ISNI-Datensatz anzeigen" -#: bookwyrm/templates/author/author.html:78 -#: bookwyrm/templates/book/book.html:94 +#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/sync_modal.html:5 +#: bookwyrm/templates/book/book.html:93 +#: bookwyrm/templates/book/sync_modal.html:5 +msgid "Load data" +msgstr "" + +#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/book/book.html:96 msgid "View on OpenLibrary" msgstr "Auf OpenLibrary ansehen" -#: bookwyrm/templates/author/author.html:86 -#: bookwyrm/templates/book/book.html:97 +#: bookwyrm/templates/author/author.html:106 +#: bookwyrm/templates/book/book.html:107 msgid "View on Inventaire" msgstr "Auf Inventaire anzeigen" -#: bookwyrm/templates/author/author.html:94 +#: bookwyrm/templates/author/author.html:121 msgid "View on LibraryThing" msgstr "Auf LibraryThing anzeigen" -#: bookwyrm/templates/author/author.html:102 +#: bookwyrm/templates/author/author.html:129 msgid "View on Goodreads" msgstr "Auf Goodreads ansehen" -#: bookwyrm/templates/author/author.html:117 +#: bookwyrm/templates/author/author.html:143 #, python-format msgid "Books by %(name)s" msgstr "Bücher von %(name)s" @@ -369,7 +384,7 @@ msgid "ISNI:" msgstr "" #: bookwyrm/templates/author/edit_author.html:115 -#: bookwyrm/templates/book/book.html:140 +#: bookwyrm/templates/book/book.html:157 #: bookwyrm/templates/book/edit/edit_book.html:121 #: bookwyrm/templates/book/readthrough.html:76 #: bookwyrm/templates/groups/form.html:24 @@ -387,11 +402,13 @@ msgid "Save" msgstr "Speichern" #: bookwyrm/templates/author/edit_author.html:116 -#: bookwyrm/templates/book/book.html:141 bookwyrm/templates/book/book.html:199 +#: bookwyrm/templates/author/sync_modal.html:26 +#: bookwyrm/templates/book/book.html:158 bookwyrm/templates/book/book.html:216 #: bookwyrm/templates/book/cover_modal.html:32 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/readthrough.html:77 +#: bookwyrm/templates/book/sync_modal.html:26 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:17 #: bookwyrm/templates/settings/federation/instance.html:88 @@ -400,6 +417,20 @@ msgstr "Speichern" msgid "Cancel" msgstr "Abbrechen" +#: bookwyrm/templates/author/sync_modal.html:15 +#, python-format +msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." +msgstr "" + +#: bookwyrm/templates/author/sync_modal.html:23 +#: bookwyrm/templates/book/edit/edit_book.html:108 +#: bookwyrm/templates/book/sync_modal.html:23 +#: bookwyrm/templates/groups/members.html:16 +#: bookwyrm/templates/landing/password_reset.html:42 +#: bookwyrm/templates/snippets/remove_from_group_button.html:16 +msgid "Confirm" +msgstr "Bestätigen" + #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/landing/large-book.html:25 @@ -420,74 +451,74 @@ msgstr "Titelbild hinzufügen" msgid "Failed to load cover" msgstr "Fehler beim Laden des Titelbilds" -#: bookwyrm/templates/book/book.html:117 +#: bookwyrm/templates/book/book.html:134 #, python-format msgid "(%(review_count)s review)" msgid_plural "(%(review_count)s reviews)" msgstr[0] "(%(review_count)s Besprechung)" msgstr[1] "(%(review_count)s Besprechungen)" -#: bookwyrm/templates/book/book.html:129 +#: bookwyrm/templates/book/book.html:146 msgid "Add Description" msgstr "Beschreibung hinzufügen" -#: bookwyrm/templates/book/book.html:136 +#: bookwyrm/templates/book/book.html:153 #: bookwyrm/templates/book/edit/edit_book_form.html:39 #: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17 msgid "Description:" msgstr "Beschreibung:" -#: bookwyrm/templates/book/book.html:150 +#: bookwyrm/templates/book/book.html:167 #, python-format msgid "%(count)s editions" msgstr "%(count)s Ausgaben" -#: bookwyrm/templates/book/book.html:158 +#: bookwyrm/templates/book/book.html:175 msgid "You have shelved this edition in:" msgstr "" -#: bookwyrm/templates/book/book.html:173 +#: bookwyrm/templates/book/book.html:190 #, python-format msgid "A different edition of this book is on your %(shelf_name)s shelf." msgstr "Eine andere Ausgabe dieses Buches befindet sich in deinem %(shelf_name)s Regal." -#: bookwyrm/templates/book/book.html:184 +#: bookwyrm/templates/book/book.html:201 msgid "Your reading activity" msgstr "Deine Leseaktivität" -#: bookwyrm/templates/book/book.html:187 +#: bookwyrm/templates/book/book.html:204 msgid "Add read dates" msgstr "Lesedaten hinzufügen" -#: bookwyrm/templates/book/book.html:196 +#: bookwyrm/templates/book/book.html:213 msgid "Create" msgstr "Erstellen" -#: bookwyrm/templates/book/book.html:206 +#: bookwyrm/templates/book/book.html:223 msgid "You don't have any reading activity for this book." msgstr "Du hast keine Leseaktivität für dieses Buch." -#: bookwyrm/templates/book/book.html:232 +#: bookwyrm/templates/book/book.html:249 msgid "Your reviews" msgstr "Deine Besprechungen" -#: bookwyrm/templates/book/book.html:238 +#: bookwyrm/templates/book/book.html:255 msgid "Your comments" msgstr "Deine Kommentare" -#: bookwyrm/templates/book/book.html:244 +#: bookwyrm/templates/book/book.html:261 msgid "Your quotes" msgstr "Deine Zitate" -#: bookwyrm/templates/book/book.html:280 +#: bookwyrm/templates/book/book.html:297 msgid "Subjects" msgstr "Themen" -#: bookwyrm/templates/book/book.html:292 +#: bookwyrm/templates/book/book.html:309 msgid "Places" msgstr "Orte" -#: bookwyrm/templates/book/book.html:303 bookwyrm/templates/layout.html:75 +#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 #: bookwyrm/templates/search/layout.html:50 @@ -495,11 +526,11 @@ msgstr "Orte" msgid "Lists" msgstr "Listen" -#: bookwyrm/templates/book/book.html:314 +#: bookwyrm/templates/book/book.html:331 msgid "Add to list" msgstr "Zur Liste hinzufügen" -#: bookwyrm/templates/book/book.html:324 +#: bookwyrm/templates/book/book.html:341 #: bookwyrm/templates/book/cover_modal.html:31 #: bookwyrm/templates/lists/list.html:182 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 @@ -577,13 +608,6 @@ msgstr "Ist das eine Ausgabe eines vorhandenen Werkes?" msgid "This is a new work" msgstr "Dies ist ein neues Werk." -#: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/landing/password_reset.html:42 -#: bookwyrm/templates/snippets/remove_from_group_button.html:16 -msgid "Confirm" -msgstr "Bestätigen" - #: bookwyrm/templates/book/edit/edit_book.html:110 #: bookwyrm/templates/feed/status.html:21 msgid "Back" @@ -783,6 +807,11 @@ msgstr "Lesedaten bearbeiten" msgid "Delete these read dates" msgstr "Diese Lesedaten löschen" +#: bookwyrm/templates/book/sync_modal.html:15 +#, python-format +msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten." +msgstr "" + #: bookwyrm/templates/components/inline_form.html:8 #: bookwyrm/templates/components/modal.html:11 #: bookwyrm/templates/components/tooltip.html:7 @@ -1099,6 +1128,25 @@ msgstr "Falls du dein Passwort gar nicht zurücksetzen wolltest, kannst du diese msgid "Reset your %(site_name)s password" msgstr "Passwort für %(site_name)s zurücksetzen" +#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:37 +#, python-format +msgid "%(site_name)s home page" +msgstr "" + +#: bookwyrm/templates/embed-layout.html:34 +#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230 +#, python-format +msgid "About %(site_name)s" +msgstr "Über %(site_name)s" + +#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234 +msgid "Contact site admin" +msgstr "Administrator*in kontaktieren" + +#: bookwyrm/templates/embed-layout.html:46 +msgid "Join Bookwyrm" +msgstr "" + #: bookwyrm/templates/feed/direct_messages.html:8 #, python-format msgid "Direct Messages with %(username)s" @@ -1654,11 +1702,6 @@ msgstr "" msgid "Contact your admin or open an issue if you are seeing unexpected failed items." msgstr "" -#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230 -#, python-format -msgid "About %(site_name)s" -msgstr "Über %(site_name)s" - #: bookwyrm/templates/landing/about.html:10 #: bookwyrm/templates/landing/about.html:20 msgid "Code of Conduct" @@ -1830,10 +1873,6 @@ msgstr "Status veröffentlicht" msgid "Error posting status" msgstr "Fehler beim veröffentlichen des Status" -#: bookwyrm/templates/layout.html:234 -msgid "Contact site admin" -msgstr "Administrator*in kontaktieren" - #: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "Handbuch" @@ -1900,6 +1939,21 @@ msgstr "Diese Liste löschen?" msgid "Edit List" msgstr "Liste bearbeiten" +#: bookwyrm/templates/lists/embed-list.html:7 +#, python-format +msgid "%(list_name)s, a list by %(owner)s" +msgstr "" + +#: bookwyrm/templates/lists/embed-list.html:17 +#, python-format +msgid "on %(site_name)s" +msgstr "" + +#: bookwyrm/templates/lists/embed-list.html:26 +#: bookwyrm/templates/lists/list.html:29 +msgid "This list is currently empty" +msgstr "Diese Liste ist momentan leer" + #: bookwyrm/templates/lists/form.html:19 msgid "List curation:" msgstr "Listenkuratierung:" @@ -1965,10 +2019,6 @@ msgstr "Dein Buchvorschlag wurde dieser Liste hinzugefügt!" msgid "You successfully added a book to this list!" msgstr "Du hast ein Buch zu dieser Liste hinzugefügt!" -#: bookwyrm/templates/lists/list.html:29 -msgid "This list is currently empty" -msgstr "Diese Liste ist momentan leer" - #: bookwyrm/templates/lists/list.html:67 #, python-format msgid "Added by %(username)s" @@ -2021,6 +2071,23 @@ msgstr "Keine passenden Bücher zu „%(query)s“ gefunden" msgid "Suggest" msgstr "Vorschlagen" +#: bookwyrm/templates/lists/list.html:191 +msgid "Embed this list on a website" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +msgid "Copy embed code" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +msgid "Copied!" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +#, python-format +msgid "%(list_name)s, a list by %(owner)s on %(site_name)s" +msgstr "" + #: bookwyrm/templates/lists/list_items.html:15 msgid "Saved" msgstr "Gespeichert" @@ -3387,6 +3454,7 @@ msgid "Posted by %(username)s" msgstr "Veröffentlicht von %(username)s" #: bookwyrm/templates/snippets/authors.html:22 +#: bookwyrm/templates/snippets/trimmed_list.html:14 #, python-format msgid "and %(remainder_count_display)s other" msgid_plural "and %(remainder_count_display)s others" @@ -4072,7 +4140,7 @@ msgstr "Keine Follower*innen, denen du folgst" msgid "File exceeds maximum size: 10MB" msgstr "Datei überschreitet die maximale Größe von 10MB" -#: bookwyrm/templatetags/utilities.py:34 +#: bookwyrm/templatetags/utilities.py:33 #, python-format msgid "%(title)s: %(subtitle)s" msgstr "%(title)s: %(subtitle)s" diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index 68d74f454..cc728b95b 100644 --- a/locale/en_US/LC_MESSAGES/django.po +++ b/locale/en_US/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-08 15:40+0000\n" +"POT-Creation-Date: 2021-12-09 19:05+0000\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" diff --git a/locale/es_ES/LC_MESSAGES/django.mo b/locale/es_ES/LC_MESSAGES/django.mo index 5c04a33cbeef541ba3de2df4eb3ee512cc65f781..fb346ca0bbd72a97d03f3424b2d0393ec996e2e7 100644 GIT binary patch delta 18326 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 ULklY-)6Fcig~d0UY\n" "Language-Team: Spanish\n" "Language: es\n" @@ -101,23 +101,23 @@ msgstr "Eliminación de moderador" msgid "Domain block" msgstr "Bloqueo de dominio" -#: bookwyrm/models/book.py:233 +#: bookwyrm/models/book.py:243 msgid "Audiobook" msgstr "Audio libro" -#: bookwyrm/models/book.py:234 +#: bookwyrm/models/book.py:244 msgid "eBook" msgstr "Libro electrónico" -#: bookwyrm/models/book.py:235 +#: bookwyrm/models/book.py:245 msgid "Graphic novel" msgstr "Novela gráfica" -#: bookwyrm/models/book.py:236 +#: bookwyrm/models/book.py:246 msgid "Hardcover" msgstr "Tapa dura" -#: bookwyrm/models/book.py:237 +#: bookwyrm/models/book.py:247 msgid "Paperback" msgstr "Tapa blanda" @@ -153,7 +153,7 @@ msgstr "nombre de usuario" msgid "A user with that username already exists." msgstr "Ya existe un usuario con ese nombre." -#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:227 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:244 msgid "Reviews" msgstr "Reseñas" @@ -248,46 +248,61 @@ msgstr "¡Algo salió mal! Disculpa." msgid "Edit Author" msgstr "Editar Autor/Autora" -#: bookwyrm/templates/author/author.html:35 +#: bookwyrm/templates/author/author.html:40 +msgid "Author details" +msgstr "Detalles sobre el/la autor/a" + +#: bookwyrm/templates/author/author.html:44 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "Alias:" -#: bookwyrm/templates/author/author.html:46 +#: bookwyrm/templates/author/author.html:53 msgid "Born:" msgstr "Nacido:" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:60 msgid "Died:" msgstr "Muerto:" -#: bookwyrm/templates/author/author.html:62 +#: bookwyrm/templates/author/author.html:70 +msgid "External links" +msgstr "" + +#: bookwyrm/templates/author/author.html:75 msgid "Wikipedia" msgstr "Wikipedia" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:83 msgid "View ISNI record" msgstr "Ver registro ISNI" -#: bookwyrm/templates/author/author.html:78 -#: bookwyrm/templates/book/book.html:94 +#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/sync_modal.html:5 +#: bookwyrm/templates/book/book.html:93 +#: bookwyrm/templates/book/sync_modal.html:5 +msgid "Load data" +msgstr "" + +#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/book/book.html:96 msgid "View on OpenLibrary" msgstr "Ver en OpenLibrary" -#: bookwyrm/templates/author/author.html:86 -#: bookwyrm/templates/book/book.html:97 +#: bookwyrm/templates/author/author.html:106 +#: bookwyrm/templates/book/book.html:107 msgid "View on Inventaire" msgstr "Ver en Inventaire" -#: bookwyrm/templates/author/author.html:94 +#: bookwyrm/templates/author/author.html:121 msgid "View on LibraryThing" msgstr "Ver en LibraryThing" -#: bookwyrm/templates/author/author.html:102 +#: bookwyrm/templates/author/author.html:129 msgid "View on Goodreads" msgstr "Ver en Goodreads" -#: bookwyrm/templates/author/author.html:117 +#: bookwyrm/templates/author/author.html:143 #, python-format msgid "Books by %(name)s" msgstr "Libros de %(name)s" @@ -369,7 +384,7 @@ msgid "ISNI:" msgstr "" #: bookwyrm/templates/author/edit_author.html:115 -#: bookwyrm/templates/book/book.html:140 +#: bookwyrm/templates/book/book.html:157 #: bookwyrm/templates/book/edit/edit_book.html:121 #: bookwyrm/templates/book/readthrough.html:76 #: bookwyrm/templates/groups/form.html:24 @@ -387,11 +402,13 @@ msgid "Save" msgstr "Guardar" #: bookwyrm/templates/author/edit_author.html:116 -#: bookwyrm/templates/book/book.html:141 bookwyrm/templates/book/book.html:199 +#: bookwyrm/templates/author/sync_modal.html:26 +#: bookwyrm/templates/book/book.html:158 bookwyrm/templates/book/book.html:216 #: bookwyrm/templates/book/cover_modal.html:32 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/readthrough.html:77 +#: bookwyrm/templates/book/sync_modal.html:26 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:17 #: bookwyrm/templates/settings/federation/instance.html:88 @@ -400,6 +417,20 @@ msgstr "Guardar" msgid "Cancel" msgstr "Cancelar" +#: bookwyrm/templates/author/sync_modal.html:15 +#, python-format +msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." +msgstr "" + +#: bookwyrm/templates/author/sync_modal.html:23 +#: bookwyrm/templates/book/edit/edit_book.html:108 +#: bookwyrm/templates/book/sync_modal.html:23 +#: bookwyrm/templates/groups/members.html:16 +#: bookwyrm/templates/landing/password_reset.html:42 +#: bookwyrm/templates/snippets/remove_from_group_button.html:16 +msgid "Confirm" +msgstr "Confirmar" + #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/landing/large-book.html:25 @@ -420,74 +451,74 @@ msgstr "Agregar portada" msgid "Failed to load cover" msgstr "No se pudo cargar la portada" -#: bookwyrm/templates/book/book.html:117 +#: bookwyrm/templates/book/book.html:134 #, python-format msgid "(%(review_count)s review)" msgid_plural "(%(review_count)s reviews)" msgstr[0] "(%(review_count)s reseña)" msgstr[1] "(%(review_count)s reseñas)" -#: bookwyrm/templates/book/book.html:129 +#: bookwyrm/templates/book/book.html:146 msgid "Add Description" msgstr "Agregar descripción" -#: bookwyrm/templates/book/book.html:136 +#: bookwyrm/templates/book/book.html:153 #: bookwyrm/templates/book/edit/edit_book_form.html:39 #: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17 msgid "Description:" msgstr "Descripción:" -#: bookwyrm/templates/book/book.html:150 +#: bookwyrm/templates/book/book.html:167 #, python-format msgid "%(count)s editions" msgstr "%(count)s ediciones" -#: bookwyrm/templates/book/book.html:158 +#: bookwyrm/templates/book/book.html:175 msgid "You have shelved this edition in:" msgstr "Has guardado esta edición en la estantería de:" -#: bookwyrm/templates/book/book.html:173 +#: bookwyrm/templates/book/book.html:190 #, python-format msgid "A different edition of this book is on your %(shelf_name)s shelf." msgstr "Una edición diferente de este libro está en tu estantería %(shelf_name)s." -#: bookwyrm/templates/book/book.html:184 +#: bookwyrm/templates/book/book.html:201 msgid "Your reading activity" msgstr "Tu actividad de lectura" -#: bookwyrm/templates/book/book.html:187 +#: bookwyrm/templates/book/book.html:204 msgid "Add read dates" msgstr "Agregar fechas de lectura" -#: bookwyrm/templates/book/book.html:196 +#: bookwyrm/templates/book/book.html:213 msgid "Create" msgstr "Crear" -#: bookwyrm/templates/book/book.html:206 +#: bookwyrm/templates/book/book.html:223 msgid "You don't have any reading activity for this book." msgstr "No tienes ninguna actividad de lectura para este libro." -#: bookwyrm/templates/book/book.html:232 +#: bookwyrm/templates/book/book.html:249 msgid "Your reviews" msgstr "Tus reseñas" -#: bookwyrm/templates/book/book.html:238 +#: bookwyrm/templates/book/book.html:255 msgid "Your comments" msgstr "Tus comentarios" -#: bookwyrm/templates/book/book.html:244 +#: bookwyrm/templates/book/book.html:261 msgid "Your quotes" msgstr "Tus citas" -#: bookwyrm/templates/book/book.html:280 +#: bookwyrm/templates/book/book.html:297 msgid "Subjects" msgstr "Sujetos" -#: bookwyrm/templates/book/book.html:292 +#: bookwyrm/templates/book/book.html:309 msgid "Places" msgstr "Lugares" -#: bookwyrm/templates/book/book.html:303 bookwyrm/templates/layout.html:75 +#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 #: bookwyrm/templates/search/layout.html:50 @@ -495,11 +526,11 @@ msgstr "Lugares" msgid "Lists" msgstr "Listas" -#: bookwyrm/templates/book/book.html:314 +#: bookwyrm/templates/book/book.html:331 msgid "Add to list" msgstr "Agregar a lista" -#: bookwyrm/templates/book/book.html:324 +#: bookwyrm/templates/book/book.html:341 #: bookwyrm/templates/book/cover_modal.html:31 #: bookwyrm/templates/lists/list.html:182 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 @@ -577,13 +608,6 @@ msgstr "¿Es esta una edición de una obra ya existente?" msgid "This is a new work" msgstr "Esta es una obra nueva" -#: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/landing/password_reset.html:42 -#: bookwyrm/templates/snippets/remove_from_group_button.html:16 -msgid "Confirm" -msgstr "Confirmar" - #: bookwyrm/templates/book/edit/edit_book.html:110 #: bookwyrm/templates/feed/status.html:21 msgid "Back" @@ -783,6 +807,11 @@ msgstr "Editar fechas de lectura" msgid "Delete these read dates" msgstr "Eliminar estas fechas de lectura" +#: bookwyrm/templates/book/sync_modal.html:15 +#, python-format +msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten." +msgstr "" + #: bookwyrm/templates/components/inline_form.html:8 #: bookwyrm/templates/components/modal.html:11 #: bookwyrm/templates/components/tooltip.html:7 @@ -1099,6 +1128,25 @@ msgstr "Si no solicitaste reestablecer tu contraseña, puedes ignorar este mensa msgid "Reset your %(site_name)s password" msgstr "Reestablece tu contraseña de %(site_name)s" +#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:37 +#, python-format +msgid "%(site_name)s home page" +msgstr "" + +#: bookwyrm/templates/embed-layout.html:34 +#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230 +#, python-format +msgid "About %(site_name)s" +msgstr "Sobre %(site_name)s" + +#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234 +msgid "Contact site admin" +msgstr "Comuníquese con el administrador del sitio" + +#: bookwyrm/templates/embed-layout.html:46 +msgid "Join Bookwyrm" +msgstr "" + #: bookwyrm/templates/feed/direct_messages.html:8 #, python-format msgid "Direct Messages with %(username)s" @@ -1654,11 +1702,6 @@ msgstr "BookWyrm ha sido actualizado con posterioridad a esta importación con u msgid "Contact your admin or open an issue if you are seeing unexpected failed items." msgstr "Póngase en contacto con su administrador o cree una propuesta si está viendo elementos fallidos inesperados." -#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230 -#, python-format -msgid "About %(site_name)s" -msgstr "Sobre %(site_name)s" - #: bookwyrm/templates/landing/about.html:10 #: bookwyrm/templates/landing/about.html:20 msgid "Code of Conduct" @@ -1830,10 +1873,6 @@ msgstr "Estado publicado con éxito" msgid "Error posting status" msgstr "Error al publicar el estado" -#: bookwyrm/templates/layout.html:234 -msgid "Contact site admin" -msgstr "Comuníquese con el administrador del sitio" - #: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "Documentación de Django" @@ -1900,6 +1939,21 @@ msgstr "¿Eliminar esta lista?" msgid "Edit List" msgstr "Editar lista" +#: bookwyrm/templates/lists/embed-list.html:7 +#, python-format +msgid "%(list_name)s, a list by %(owner)s" +msgstr "" + +#: bookwyrm/templates/lists/embed-list.html:17 +#, python-format +msgid "on %(site_name)s" +msgstr "" + +#: bookwyrm/templates/lists/embed-list.html:26 +#: bookwyrm/templates/lists/list.html:29 +msgid "This list is currently empty" +msgstr "Esta lista está vacia" + #: bookwyrm/templates/lists/form.html:19 msgid "List curation:" msgstr "Enumerar lista de comisariado:" @@ -1965,10 +2019,6 @@ msgstr "¡Has sugerido un libro para esta lista exitosamente!" msgid "You successfully added a book to this list!" msgstr "¡Has agregado un libro a esta lista exitosamente!" -#: bookwyrm/templates/lists/list.html:29 -msgid "This list is currently empty" -msgstr "Esta lista está vacia" - #: bookwyrm/templates/lists/list.html:67 #, python-format msgid "Added by %(username)s" @@ -2021,6 +2071,23 @@ msgstr "No se encontró ningún libro correspondiente a la búsqueda: \"%(query) msgid "Suggest" msgstr "Sugerir" +#: bookwyrm/templates/lists/list.html:191 +msgid "Embed this list on a website" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +msgid "Copy embed code" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +msgid "Copied!" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +#, python-format +msgid "%(list_name)s, a list by %(owner)s on %(site_name)s" +msgstr "" + #: bookwyrm/templates/lists/list_items.html:15 msgid "Saved" msgstr "Guardado" @@ -3387,6 +3454,7 @@ msgid "Posted by %(username)s" msgstr "Publicado por %(username)s" #: bookwyrm/templates/snippets/authors.html:22 +#: bookwyrm/templates/snippets/trimmed_list.html:14 #, python-format msgid "and %(remainder_count_display)s other" msgid_plural "and %(remainder_count_display)s others" @@ -4072,7 +4140,7 @@ msgstr "Ningún seguidor que tu sigues" msgid "File exceeds maximum size: 10MB" msgstr "Archivo excede el tamaño máximo: 10MB" -#: bookwyrm/templatetags/utilities.py:34 +#: bookwyrm/templatetags/utilities.py:33 #, python-format msgid "%(title)s: %(subtitle)s" msgstr "%(title)s: %(subtitle)s" diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo index 88d8816cf66edb32402cd36cf8ac94547584d97f..db7af1d006a5b454f2161d40f6f78da47524715b 100644 GIT binary patch delta 19878 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 c97{FtDdc396%p?tJw)gbN*Uni30HvFhZvX%Q delta 18856 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 diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po index c443d6c56..64f8edcee 100644 --- a/locale/fr_FR/LC_MESSAGES/django.po +++ b/locale/fr_FR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-07 17:35+0000\n" -"PO-Revision-Date: 2021-12-07 19:43\n" +"POT-Creation-Date: 2021-12-08 15:40+0000\n" +"PO-Revision-Date: 2021-12-09 18:55\n" "Last-Translator: Mouse Reeve \n" "Language-Team: French\n" "Language: fr\n" @@ -101,23 +101,23 @@ msgstr "Suppression du modérateur" msgid "Domain block" msgstr "Blocage de domaine" -#: bookwyrm/models/book.py:233 +#: bookwyrm/models/book.py:243 msgid "Audiobook" msgstr "Livre audio" -#: bookwyrm/models/book.py:234 +#: bookwyrm/models/book.py:244 msgid "eBook" msgstr "eBook" -#: bookwyrm/models/book.py:235 +#: bookwyrm/models/book.py:245 msgid "Graphic novel" msgstr "Roman Graphique" -#: bookwyrm/models/book.py:236 +#: bookwyrm/models/book.py:246 msgid "Hardcover" msgstr "Couverture rigide" -#: bookwyrm/models/book.py:237 +#: bookwyrm/models/book.py:247 msgid "Paperback" msgstr "Couverture souple" @@ -153,7 +153,7 @@ msgstr "nom du compte :" msgid "A user with that username already exists." msgstr "Ce nom est déjà associé à un compte." -#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:227 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:244 msgid "Reviews" msgstr "Critiques" @@ -248,46 +248,61 @@ msgstr "Une erreur s’est produite ; désolé !" msgid "Edit Author" msgstr "Modifier l’auteur ou autrice" -#: bookwyrm/templates/author/author.html:35 +#: bookwyrm/templates/author/author.html:40 +msgid "Author details" +msgstr "Informations sur l’auteur ou l’autrice" + +#: bookwyrm/templates/author/author.html:44 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "Pseudonymes :" -#: bookwyrm/templates/author/author.html:46 +#: bookwyrm/templates/author/author.html:53 msgid "Born:" msgstr "Naissance :" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:60 msgid "Died:" msgstr "Décès :" -#: bookwyrm/templates/author/author.html:62 +#: bookwyrm/templates/author/author.html:70 +msgid "External links" +msgstr "Liens externes" + +#: bookwyrm/templates/author/author.html:75 msgid "Wikipedia" msgstr "Wikipedia" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:83 msgid "View ISNI record" msgstr "Voir l’enregistrement ISNI" -#: bookwyrm/templates/author/author.html:78 -#: bookwyrm/templates/book/book.html:94 +#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/sync_modal.html:5 +#: bookwyrm/templates/book/book.html:93 +#: bookwyrm/templates/book/sync_modal.html:5 +msgid "Load data" +msgstr "Charger les données" + +#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/book/book.html:96 msgid "View on OpenLibrary" msgstr "Voir sur OpenLibrary" -#: bookwyrm/templates/author/author.html:86 -#: bookwyrm/templates/book/book.html:97 +#: bookwyrm/templates/author/author.html:106 +#: bookwyrm/templates/book/book.html:107 msgid "View on Inventaire" msgstr "Voir sur Inventaire" -#: bookwyrm/templates/author/author.html:94 +#: bookwyrm/templates/author/author.html:121 msgid "View on LibraryThing" msgstr "Voir sur LibraryThing" -#: bookwyrm/templates/author/author.html:102 +#: bookwyrm/templates/author/author.html:129 msgid "View on Goodreads" msgstr "Voir sur Goodreads" -#: bookwyrm/templates/author/author.html:117 +#: bookwyrm/templates/author/author.html:143 #, python-format msgid "Books by %(name)s" msgstr "Livres de %(name)s" @@ -369,7 +384,7 @@ msgid "ISNI:" msgstr "ISNI :" #: bookwyrm/templates/author/edit_author.html:115 -#: bookwyrm/templates/book/book.html:140 +#: bookwyrm/templates/book/book.html:157 #: bookwyrm/templates/book/edit/edit_book.html:121 #: bookwyrm/templates/book/readthrough.html:76 #: bookwyrm/templates/groups/form.html:24 @@ -387,11 +402,13 @@ msgid "Save" msgstr "Enregistrer" #: bookwyrm/templates/author/edit_author.html:116 -#: bookwyrm/templates/book/book.html:141 bookwyrm/templates/book/book.html:199 +#: bookwyrm/templates/author/sync_modal.html:26 +#: bookwyrm/templates/book/book.html:158 bookwyrm/templates/book/book.html:216 #: bookwyrm/templates/book/cover_modal.html:32 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/readthrough.html:77 +#: bookwyrm/templates/book/sync_modal.html:26 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:17 #: bookwyrm/templates/settings/federation/instance.html:88 @@ -400,6 +417,20 @@ msgstr "Enregistrer" msgid "Cancel" msgstr "Annuler" +#: bookwyrm/templates/author/sync_modal.html:15 +#, python-format +msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." +msgstr "Le chargement des données se connectera à %(source_name)s et vérifiera les métadonnées de cet auteur ou autrice qui ne sont pas présentes ici. Les métadonnées existantes ne seront pas écrasées." + +#: bookwyrm/templates/author/sync_modal.html:23 +#: bookwyrm/templates/book/edit/edit_book.html:108 +#: bookwyrm/templates/book/sync_modal.html:23 +#: bookwyrm/templates/groups/members.html:16 +#: bookwyrm/templates/landing/password_reset.html:42 +#: bookwyrm/templates/snippets/remove_from_group_button.html:16 +msgid "Confirm" +msgstr "Confirmer" + #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/landing/large-book.html:25 @@ -420,74 +451,74 @@ msgstr "Ajouter une couverture" msgid "Failed to load cover" msgstr "La couverture n’a pu être chargée" -#: bookwyrm/templates/book/book.html:117 +#: bookwyrm/templates/book/book.html:134 #, python-format msgid "(%(review_count)s review)" msgid_plural "(%(review_count)s reviews)" msgstr[0] "(%(review_count)s critique)" msgstr[1] "(%(review_count)s critiques)" -#: bookwyrm/templates/book/book.html:129 +#: bookwyrm/templates/book/book.html:146 msgid "Add Description" msgstr "Ajouter une description" -#: bookwyrm/templates/book/book.html:136 +#: bookwyrm/templates/book/book.html:153 #: bookwyrm/templates/book/edit/edit_book_form.html:39 #: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17 msgid "Description:" msgstr "Description :" -#: bookwyrm/templates/book/book.html:150 +#: bookwyrm/templates/book/book.html:167 #, python-format msgid "%(count)s editions" msgstr "%(count)s éditions" -#: bookwyrm/templates/book/book.html:158 +#: bookwyrm/templates/book/book.html:175 msgid "You have shelved this edition in:" msgstr "Vous avez rangé cette édition dans :" -#: bookwyrm/templates/book/book.html:173 +#: bookwyrm/templates/book/book.html:190 #, python-format msgid "A different edition of this book is on your %(shelf_name)s shelf." msgstr "Une édition différente de ce livre existe sur votre étagère %(shelf_name)s." -#: bookwyrm/templates/book/book.html:184 +#: bookwyrm/templates/book/book.html:201 msgid "Your reading activity" msgstr "Votre activité de lecture" -#: bookwyrm/templates/book/book.html:187 +#: bookwyrm/templates/book/book.html:204 msgid "Add read dates" msgstr "Ajouter des dates de lecture" -#: bookwyrm/templates/book/book.html:196 +#: bookwyrm/templates/book/book.html:213 msgid "Create" msgstr "Créer" -#: bookwyrm/templates/book/book.html:206 +#: bookwyrm/templates/book/book.html:223 msgid "You don't have any reading activity for this book." msgstr "Vous n’avez aucune activité de lecture pour ce livre" -#: bookwyrm/templates/book/book.html:232 +#: bookwyrm/templates/book/book.html:249 msgid "Your reviews" msgstr "Vos critiques" -#: bookwyrm/templates/book/book.html:238 +#: bookwyrm/templates/book/book.html:255 msgid "Your comments" msgstr "Vos commentaires" -#: bookwyrm/templates/book/book.html:244 +#: bookwyrm/templates/book/book.html:261 msgid "Your quotes" msgstr "Vos citations" -#: bookwyrm/templates/book/book.html:280 +#: bookwyrm/templates/book/book.html:297 msgid "Subjects" msgstr "Sujets" -#: bookwyrm/templates/book/book.html:292 +#: bookwyrm/templates/book/book.html:309 msgid "Places" msgstr "Lieux" -#: bookwyrm/templates/book/book.html:303 bookwyrm/templates/layout.html:75 +#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 #: bookwyrm/templates/search/layout.html:50 @@ -495,11 +526,11 @@ msgstr "Lieux" msgid "Lists" msgstr "Listes" -#: bookwyrm/templates/book/book.html:314 +#: bookwyrm/templates/book/book.html:331 msgid "Add to list" msgstr "Ajouter à la liste" -#: bookwyrm/templates/book/book.html:324 +#: bookwyrm/templates/book/book.html:341 #: bookwyrm/templates/book/cover_modal.html:31 #: bookwyrm/templates/lists/list.html:182 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 @@ -577,13 +608,6 @@ msgstr "Est‑ce l’édition d’un ouvrage existant ?" msgid "This is a new work" msgstr "Il s’agit d’un nouvel ouvrage." -#: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/landing/password_reset.html:42 -#: bookwyrm/templates/snippets/remove_from_group_button.html:16 -msgid "Confirm" -msgstr "Confirmer" - #: bookwyrm/templates/book/edit/edit_book.html:110 #: bookwyrm/templates/feed/status.html:21 msgid "Back" @@ -783,6 +807,11 @@ msgstr "Modifier les date de lecture" msgid "Delete these read dates" msgstr "Supprimer ces dates de lecture" +#: bookwyrm/templates/book/sync_modal.html:15 +#, python-format +msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten." +msgstr "Le chargement des données se connectera à %(source_name)s et vérifiera les métadonnées de ce livre qui ne sont pas présentes ici. Les métadonnées existantes ne seront pas écrasées." + #: bookwyrm/templates/components/inline_form.html:8 #: bookwyrm/templates/components/modal.html:11 #: bookwyrm/templates/components/tooltip.html:7 @@ -1099,6 +1128,25 @@ msgstr "Si vous n’avez pas demandé la réinitialisation de votre mot de passe msgid "Reset your %(site_name)s password" msgstr "Réinitialiser votre mot de passe sur %(site_name)s" +#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:37 +#, python-format +msgid "%(site_name)s home page" +msgstr "" + +#: bookwyrm/templates/embed-layout.html:34 +#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230 +#, python-format +msgid "About %(site_name)s" +msgstr "À propos de %(site_name)s" + +#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234 +msgid "Contact site admin" +msgstr "Contacter l’administrateur du site" + +#: bookwyrm/templates/embed-layout.html:46 +msgid "Join Bookwyrm" +msgstr "" + #: bookwyrm/templates/feed/direct_messages.html:8 #, python-format msgid "Direct Messages with %(username)s" @@ -1654,11 +1702,6 @@ msgstr "BookWyrm a été mis à jour depuis cette importation avec une correctio msgid "Contact your admin or open an issue if you are seeing unexpected failed items." msgstr "Contactez votre administrateur·ice ou signalez un problème si vous voyez des éléments inattendus qui ont échoué." -#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230 -#, python-format -msgid "About %(site_name)s" -msgstr "À propos de %(site_name)s" - #: bookwyrm/templates/landing/about.html:10 #: bookwyrm/templates/landing/about.html:20 msgid "Code of Conduct" @@ -1830,10 +1873,6 @@ msgstr "Publié !" msgid "Error posting status" msgstr "Erreur lors de la publication" -#: bookwyrm/templates/layout.html:234 -msgid "Contact site admin" -msgstr "Contacter l’administrateur du site" - #: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "Documentation" @@ -1900,6 +1939,21 @@ msgstr "Supprimer cette liste ?" msgid "Edit List" msgstr "Modifier la liste" +#: bookwyrm/templates/lists/embed-list.html:7 +#, python-format +msgid "%(list_name)s, a list by %(owner)s" +msgstr "" + +#: bookwyrm/templates/lists/embed-list.html:17 +#, python-format +msgid "on %(site_name)s" +msgstr "" + +#: bookwyrm/templates/lists/embed-list.html:26 +#: bookwyrm/templates/lists/list.html:29 +msgid "This list is currently empty" +msgstr "Cette liste est actuellement vide" + #: bookwyrm/templates/lists/form.html:19 msgid "List curation:" msgstr "Modération de la liste :" @@ -1965,10 +2019,6 @@ msgstr "Vous avez suggéré un livre à cette liste !" msgid "You successfully added a book to this list!" msgstr "Vous avez ajouté un livre à cette liste !" -#: bookwyrm/templates/lists/list.html:29 -msgid "This list is currently empty" -msgstr "Cette liste est actuellement vide" - #: bookwyrm/templates/lists/list.html:67 #, python-format msgid "Added by %(username)s" @@ -2021,6 +2071,23 @@ msgstr "Aucun livre trouvé pour la requête « %(query)s »" msgid "Suggest" msgstr "Suggérer" +#: bookwyrm/templates/lists/list.html:191 +msgid "Embed this list on a website" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +msgid "Copy embed code" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +msgid "Copied!" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +#, python-format +msgid "%(list_name)s, a list by %(owner)s on %(site_name)s" +msgstr "" + #: bookwyrm/templates/lists/list_items.html:15 msgid "Saved" msgstr "Sauvegardé" @@ -3387,6 +3454,7 @@ msgid "Posted by %(username)s" msgstr "Publiée par %(username)s" #: bookwyrm/templates/snippets/authors.html:22 +#: bookwyrm/templates/snippets/trimmed_list.html:14 #, python-format msgid "and %(remainder_count_display)s other" msgid_plural "and %(remainder_count_display)s others" @@ -4072,7 +4140,7 @@ msgstr "Aucun·e abonné·e que vous suivez" msgid "File exceeds maximum size: 10MB" msgstr "Ce fichier dépasse la taille limite : 10 Mo" -#: bookwyrm/templatetags/utilities.py:34 +#: bookwyrm/templatetags/utilities.py:33 #, python-format msgid "%(title)s: %(subtitle)s" msgstr "%(title)s (%(subtitle)s)" diff --git a/locale/gl_ES/LC_MESSAGES/django.mo b/locale/gl_ES/LC_MESSAGES/django.mo index 8b3a61491b07219c763f1ca56778b56c58c540a3..a233550539aab97ea67415b2e925ae518ae9f45b 100644 GIT binary patch delta 22153 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 diff --git a/locale/gl_ES/LC_MESSAGES/django.po b/locale/gl_ES/LC_MESSAGES/django.po index bbf692111..1216c635b 100644 --- a/locale/gl_ES/LC_MESSAGES/django.po +++ b/locale/gl_ES/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-07 17:35+0000\n" -"PO-Revision-Date: 2021-12-07 18:25\n" +"POT-Creation-Date: 2021-12-08 15:40+0000\n" +"PO-Revision-Date: 2021-12-09 18:56\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Galician\n" "Language: gl\n" @@ -101,23 +101,23 @@ msgstr "Eliminado pola moderación" msgid "Domain block" msgstr "Bloqueo de dominio" -#: bookwyrm/models/book.py:233 +#: bookwyrm/models/book.py:243 msgid "Audiobook" msgstr "Audiolibro" -#: bookwyrm/models/book.py:234 +#: bookwyrm/models/book.py:244 msgid "eBook" msgstr "eBook" -#: bookwyrm/models/book.py:235 +#: bookwyrm/models/book.py:245 msgid "Graphic novel" msgstr "Novela gráfica" -#: bookwyrm/models/book.py:236 +#: bookwyrm/models/book.py:246 msgid "Hardcover" msgstr "Portada dura" -#: bookwyrm/models/book.py:237 +#: bookwyrm/models/book.py:247 msgid "Paperback" msgstr "En rústica" @@ -153,7 +153,7 @@ msgstr "nome de usuaria" msgid "A user with that username already exists." msgstr "Xa existe unha usuaria con ese nome." -#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:227 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:244 msgid "Reviews" msgstr "Recensións" @@ -248,46 +248,61 @@ msgstr "Algo fallou! Lamentámolo." msgid "Edit Author" msgstr "Editar Autora" -#: bookwyrm/templates/author/author.html:35 +#: bookwyrm/templates/author/author.html:40 +msgid "Author details" +msgstr "Detalles da autoría" + +#: bookwyrm/templates/author/author.html:44 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "Alias:" -#: bookwyrm/templates/author/author.html:46 +#: bookwyrm/templates/author/author.html:53 msgid "Born:" msgstr "Nacemento:" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:60 msgid "Died:" msgstr "Morte:" -#: bookwyrm/templates/author/author.html:62 +#: bookwyrm/templates/author/author.html:70 +msgid "External links" +msgstr "Ligazóns externas" + +#: bookwyrm/templates/author/author.html:75 msgid "Wikipedia" msgstr "Wikipedia" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:83 msgid "View ISNI record" msgstr "Ver rexistro ISNI" -#: bookwyrm/templates/author/author.html:78 -#: bookwyrm/templates/book/book.html:94 +#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/sync_modal.html:5 +#: bookwyrm/templates/book/book.html:93 +#: bookwyrm/templates/book/sync_modal.html:5 +msgid "Load data" +msgstr "Cargar datos" + +#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/book/book.html:96 msgid "View on OpenLibrary" msgstr "Ver en OpenLibrary" -#: bookwyrm/templates/author/author.html:86 -#: bookwyrm/templates/book/book.html:97 +#: bookwyrm/templates/author/author.html:106 +#: bookwyrm/templates/book/book.html:107 msgid "View on Inventaire" msgstr "Ver en Inventaire" -#: bookwyrm/templates/author/author.html:94 +#: bookwyrm/templates/author/author.html:121 msgid "View on LibraryThing" msgstr "Ver en LibraryThing" -#: bookwyrm/templates/author/author.html:102 +#: bookwyrm/templates/author/author.html:129 msgid "View on Goodreads" msgstr "Ver en Goodreads" -#: bookwyrm/templates/author/author.html:117 +#: bookwyrm/templates/author/author.html:143 #, python-format msgid "Books by %(name)s" msgstr "Libros de %(name)s" @@ -366,10 +381,10 @@ msgstr "Chave en Goodreads:" #: bookwyrm/templates/author/edit_author.html:105 msgid "ISNI:" -msgstr "" +msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 -#: bookwyrm/templates/book/book.html:140 +#: bookwyrm/templates/book/book.html:157 #: bookwyrm/templates/book/edit/edit_book.html:121 #: bookwyrm/templates/book/readthrough.html:76 #: bookwyrm/templates/groups/form.html:24 @@ -387,11 +402,13 @@ msgid "Save" msgstr "Gardar" #: bookwyrm/templates/author/edit_author.html:116 -#: bookwyrm/templates/book/book.html:141 bookwyrm/templates/book/book.html:199 +#: bookwyrm/templates/author/sync_modal.html:26 +#: bookwyrm/templates/book/book.html:158 bookwyrm/templates/book/book.html:216 #: bookwyrm/templates/book/cover_modal.html:32 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/readthrough.html:77 +#: bookwyrm/templates/book/sync_modal.html:26 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:17 #: bookwyrm/templates/settings/federation/instance.html:88 @@ -400,6 +417,20 @@ msgstr "Gardar" msgid "Cancel" msgstr "Cancelar" +#: bookwyrm/templates/author/sync_modal.html:15 +#, python-format +msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." +msgstr "Ao cargar os datos vas conectar con %(source_name)s e comprobar se existen metadatos desta persoa autora que non están aquí presentes. Non se sobrescribirán os datos existentes." + +#: bookwyrm/templates/author/sync_modal.html:23 +#: bookwyrm/templates/book/edit/edit_book.html:108 +#: bookwyrm/templates/book/sync_modal.html:23 +#: bookwyrm/templates/groups/members.html:16 +#: bookwyrm/templates/landing/password_reset.html:42 +#: bookwyrm/templates/snippets/remove_from_group_button.html:16 +msgid "Confirm" +msgstr "Confirmar" + #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/landing/large-book.html:25 @@ -420,74 +451,74 @@ msgstr "Engadir portada" msgid "Failed to load cover" msgstr "Fallou a carga da portada" -#: bookwyrm/templates/book/book.html:117 +#: bookwyrm/templates/book/book.html:134 #, python-format msgid "(%(review_count)s review)" msgid_plural "(%(review_count)s reviews)" msgstr[0] "(%(review_count)s recensión)" msgstr[1] "(%(review_count)s recensións)" -#: bookwyrm/templates/book/book.html:129 +#: bookwyrm/templates/book/book.html:146 msgid "Add Description" msgstr "Engadir descrición" -#: bookwyrm/templates/book/book.html:136 +#: bookwyrm/templates/book/book.html:153 #: bookwyrm/templates/book/edit/edit_book_form.html:39 #: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17 msgid "Description:" msgstr "Descrición:" -#: bookwyrm/templates/book/book.html:150 +#: bookwyrm/templates/book/book.html:167 #, python-format msgid "%(count)s editions" msgstr "%(count)s edicións" -#: bookwyrm/templates/book/book.html:158 +#: bookwyrm/templates/book/book.html:175 msgid "You have shelved this edition in:" msgstr "Puxeches esta edición no estante:" -#: bookwyrm/templates/book/book.html:173 +#: bookwyrm/templates/book/book.html:190 #, python-format msgid "A different edition of this book is on your %(shelf_name)s shelf." msgstr "Hai unha edición diferente deste libro no teu estante %(shelf_name)s." -#: bookwyrm/templates/book/book.html:184 +#: bookwyrm/templates/book/book.html:201 msgid "Your reading activity" msgstr "Actividade lectora" -#: bookwyrm/templates/book/book.html:187 +#: bookwyrm/templates/book/book.html:204 msgid "Add read dates" msgstr "Engadir datas de lectura" -#: bookwyrm/templates/book/book.html:196 +#: bookwyrm/templates/book/book.html:213 msgid "Create" msgstr "Crear" -#: bookwyrm/templates/book/book.html:206 +#: bookwyrm/templates/book/book.html:223 msgid "You don't have any reading activity for this book." msgstr "Non tes actividade lectora neste libro." -#: bookwyrm/templates/book/book.html:232 +#: bookwyrm/templates/book/book.html:249 msgid "Your reviews" msgstr "As túas recensións" -#: bookwyrm/templates/book/book.html:238 +#: bookwyrm/templates/book/book.html:255 msgid "Your comments" msgstr "Os teus comentarios" -#: bookwyrm/templates/book/book.html:244 +#: bookwyrm/templates/book/book.html:261 msgid "Your quotes" msgstr "As túas citas" -#: bookwyrm/templates/book/book.html:280 +#: bookwyrm/templates/book/book.html:297 msgid "Subjects" msgstr "Temas" -#: bookwyrm/templates/book/book.html:292 +#: bookwyrm/templates/book/book.html:309 msgid "Places" msgstr "Lugares" -#: bookwyrm/templates/book/book.html:303 bookwyrm/templates/layout.html:75 +#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 #: bookwyrm/templates/search/layout.html:50 @@ -495,11 +526,11 @@ msgstr "Lugares" msgid "Lists" msgstr "Listaxes" -#: bookwyrm/templates/book/book.html:314 +#: bookwyrm/templates/book/book.html:331 msgid "Add to list" msgstr "Engadir a listaxe" -#: bookwyrm/templates/book/book.html:324 +#: bookwyrm/templates/book/book.html:341 #: bookwyrm/templates/book/cover_modal.html:31 #: bookwyrm/templates/lists/list.html:182 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 @@ -577,13 +608,6 @@ msgstr "É esta a edición dun traballo existente?" msgid "This is a new work" msgstr "Este é un novo traballo" -#: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/landing/password_reset.html:42 -#: bookwyrm/templates/snippets/remove_from_group_button.html:16 -msgid "Confirm" -msgstr "Confirmar" - #: bookwyrm/templates/book/edit/edit_book.html:110 #: bookwyrm/templates/feed/status.html:21 msgid "Back" @@ -783,6 +807,11 @@ msgstr "Editar datas da lectura" msgid "Delete these read dates" msgstr "Eliminar estas datas da lectura" +#: bookwyrm/templates/book/sync_modal.html:15 +#, python-format +msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten." +msgstr "Ao cargar os datos vas conectar con %(source_name)s e comprobar se existen metadatos deste libro que non están aquí presentes. Non se sobrescribirán os datos existentes." + #: bookwyrm/templates/components/inline_form.html:8 #: bookwyrm/templates/components/modal.html:11 #: bookwyrm/templates/components/tooltip.html:7 @@ -1099,6 +1128,25 @@ msgstr "Se non solicitaches cambiar o contrasinal podes ignorar este email." msgid "Reset your %(site_name)s password" msgstr "Restablece o contrasinal en %(site_name)s" +#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:37 +#, python-format +msgid "%(site_name)s home page" +msgstr "" + +#: bookwyrm/templates/embed-layout.html:34 +#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230 +#, python-format +msgid "About %(site_name)s" +msgstr "Acerca de %(site_name)s" + +#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234 +msgid "Contact site admin" +msgstr "Contacta coa administración" + +#: bookwyrm/templates/embed-layout.html:46 +msgid "Join Bookwyrm" +msgstr "" + #: bookwyrm/templates/feed/direct_messages.html:8 #, python-format msgid "Direct Messages with %(username)s" @@ -1654,11 +1702,6 @@ msgstr "Actualizouse BookWyrm desde a importación arranxando algún fallo" msgid "Contact your admin or open an issue if you are seeing unexpected failed items." msgstr "Contacta coa administración ou abre unha incidencia se atopas fallos non agardados." -#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230 -#, python-format -msgid "About %(site_name)s" -msgstr "Acerca de %(site_name)s" - #: bookwyrm/templates/landing/about.html:10 #: bookwyrm/templates/landing/about.html:20 msgid "Code of Conduct" @@ -1830,10 +1873,6 @@ msgstr "Publicación correcta" msgid "Error posting status" msgstr "Erro ao publicar" -#: bookwyrm/templates/layout.html:234 -msgid "Contact site admin" -msgstr "Contacta coa administración" - #: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "Documentación" @@ -1900,6 +1939,21 @@ msgstr "Eliminar esta lista?" msgid "Edit List" msgstr "Editar lista" +#: bookwyrm/templates/lists/embed-list.html:7 +#, python-format +msgid "%(list_name)s, a list by %(owner)s" +msgstr "" + +#: bookwyrm/templates/lists/embed-list.html:17 +#, python-format +msgid "on %(site_name)s" +msgstr "" + +#: bookwyrm/templates/lists/embed-list.html:26 +#: bookwyrm/templates/lists/list.html:29 +msgid "This list is currently empty" +msgstr "A lista está baleira neste intre" + #: bookwyrm/templates/lists/form.html:19 msgid "List curation:" msgstr "Mantemento da lista:" @@ -1965,10 +2019,6 @@ msgstr "Suxeriches correctamente un libro para esta lista!" msgid "You successfully added a book to this list!" msgstr "Engadiches correctamente un libro a esta lista!" -#: bookwyrm/templates/lists/list.html:29 -msgid "This list is currently empty" -msgstr "A lista está baleira neste intre" - #: bookwyrm/templates/lists/list.html:67 #, python-format msgid "Added by %(username)s" @@ -2021,6 +2071,23 @@ msgstr "Non se atopan libros coa consulta \"%(query)s\"" msgid "Suggest" msgstr "Suxire" +#: bookwyrm/templates/lists/list.html:191 +msgid "Embed this list on a website" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +msgid "Copy embed code" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +msgid "Copied!" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +#, python-format +msgid "%(list_name)s, a list by %(owner)s on %(site_name)s" +msgstr "" + #: bookwyrm/templates/lists/list_items.html:15 msgid "Saved" msgstr "Gardado" @@ -2209,116 +2276,116 @@ msgstr "Estás ao día!" #: bookwyrm/templates/ostatus/error.html:7 #, python-format msgid "%(account)s is not a valid username" -msgstr "" +msgstr "%(account)s non é un nome de usuaria válido" #: bookwyrm/templates/ostatus/error.html:8 #: bookwyrm/templates/ostatus/error.html:13 msgid "Check you have the correct username before trying again" -msgstr "" +msgstr "Comproba que usaches o identificador correcto e inténtao outra vez" #: bookwyrm/templates/ostatus/error.html:12 #, python-format msgid "%(account)s could not be found or %(remote_domain)s does not support identity discovery" -msgstr "" +msgstr "Non se puido atopar a %(account)s ou %(remote_domain)s non ten soporte para o descubrimento remoto de identidades" #: bookwyrm/templates/ostatus/error.html:17 #, python-format msgid "%(account)s was found but %(remote_domain)s does not support 'remote follow'" -msgstr "" +msgstr "Atopamos a %(account)s mais %(remote_domain)s non ten soporte para 'seguimento remoto'" #: bookwyrm/templates/ostatus/error.html:18 #, python-format msgid "Try searching for %(user)s on %(remote_domain)s instead" -msgstr "" +msgstr "Intenta buscar %(user)s en %(remote_domain)s" #: bookwyrm/templates/ostatus/error.html:46 #, python-format msgid "Something went wrong trying to follow %(account)s" -msgstr "" +msgstr "Algo fallou ao intentar seguir a %(account)s" #: bookwyrm/templates/ostatus/error.html:47 msgid "Check you have the correct username before trying again." -msgstr "" +msgstr "Comproba se escribiches o nome de usuaria correcto e inténtao outra vez." #: bookwyrm/templates/ostatus/error.html:51 #, python-format msgid "You have blocked %(account)s" -msgstr "" +msgstr "Bloqueaches a %(account)s" #: bookwyrm/templates/ostatus/error.html:55 #, python-format msgid "%(account)s has blocked you" -msgstr "" +msgstr "%(account)s bloqueoute" #: bookwyrm/templates/ostatus/error.html:59 #, python-format msgid "You are already following %(account)s" -msgstr "" +msgstr "Xa estás a seguir a %(account)s" #: bookwyrm/templates/ostatus/error.html:63 #, python-format msgid "You have already requested to follow %(account)s" -msgstr "" +msgstr "Xa solicitaches seguir a %(account)s" #: bookwyrm/templates/ostatus/remote_follow.html:6 #, python-format msgid "Follow %(username)s on the fediverse" -msgstr "" +msgstr "Seguir a %(username)s no fediverso" #: bookwyrm/templates/ostatus/remote_follow.html:33 #, python-format msgid "Follow %(username)s from another Fediverse account like BookWyrm, Mastodon, or Pleroma." -msgstr "" +msgstr "Sigue a %(username)s desde outra conta no Fediverso como BookWyrm, Mastodon ou Pleroma." #: bookwyrm/templates/ostatus/remote_follow.html:40 msgid "User handle to follow from:" -msgstr "" +msgstr "ID da usuaria desde onde seguir:" #: bookwyrm/templates/ostatus/remote_follow.html:42 msgid "Follow!" -msgstr "" +msgstr "Seguir!" #: bookwyrm/templates/ostatus/remote_follow_button.html:8 msgid "Follow on Fediverse" -msgstr "" +msgstr "Seguir no Fediverso" #: bookwyrm/templates/ostatus/remote_follow_button.html:12 msgid "This link opens in a pop-up window" -msgstr "" +msgstr "Esta ligazón abre unha ventá emerxente" #: bookwyrm/templates/ostatus/subscribe.html:8 #, python-format msgid "Log in to %(sitename)s" -msgstr "" +msgstr "Conectar con %(sitename)s" #: bookwyrm/templates/ostatus/subscribe.html:10 #, python-format msgid "Error following from %(sitename)s" -msgstr "" +msgstr "Erro no seguimento desde %(sitename)s" #: bookwyrm/templates/ostatus/subscribe.html:12 #: bookwyrm/templates/ostatus/subscribe.html:22 #, python-format msgid "Follow from %(sitename)s" -msgstr "" +msgstr "Seguir desde %(sitename)s" #: bookwyrm/templates/ostatus/subscribe.html:18 msgid "Uh oh..." -msgstr "" +msgstr "Oioioi..." #: bookwyrm/templates/ostatus/subscribe.html:20 msgid "Let's log in first..." -msgstr "" +msgstr "Primeiro hai que conectar..." #: bookwyrm/templates/ostatus/subscribe.html:51 #, python-format msgid "Follow %(username)s" -msgstr "" +msgstr "Segue a %(username)s" #: bookwyrm/templates/ostatus/success.html:28 #, python-format msgid "You are now following %(display_name)s!" -msgstr "" +msgstr "Estás a seguir a %(display_name)s!" #: bookwyrm/templates/preferences/blocks.html:4 #: bookwyrm/templates/preferences/blocks.html:7 @@ -3387,6 +3454,7 @@ msgid "Posted by %(username)s" msgstr "Publicado por %(username)s" #: bookwyrm/templates/snippets/authors.html:22 +#: bookwyrm/templates/snippets/trimmed_list.html:14 #, python-format msgid "and %(remainder_count_display)s other" msgid_plural "and %(remainder_count_display)s others" @@ -4072,7 +4140,7 @@ msgstr "Sen seguidoras que ti segues" msgid "File exceeds maximum size: 10MB" msgstr "O ficheiro supera o tamaño máximo: 10MB" -#: bookwyrm/templatetags/utilities.py:34 +#: bookwyrm/templatetags/utilities.py:33 #, python-format msgid "%(title)s: %(subtitle)s" msgstr "%(title)s: %(subtitle)s" diff --git a/locale/lt_LT/LC_MESSAGES/django.mo b/locale/lt_LT/LC_MESSAGES/django.mo index 6c6d140732dd66c8fa2c97a70d8e5223b72fdd2f..ad76704a09049a9b22f6a15cf717b945f2d3e60f 100644 GIT binary patch delta 51 zcmX>ym*vP@mJPNG*)0_eEv!tym*vP@mJPNG+07M<46ICzH@hr6pT$;LlBjTG{ba@+n$sP57^T^gj;=0F&D);L I!\n" "Language-Team: Lithuanian\n" "Language: lt\n" @@ -101,23 +101,23 @@ msgstr "Moderatorius ištrynė" msgid "Domain block" msgstr "Blokuoti pagal domeną" -#: bookwyrm/models/book.py:233 +#: bookwyrm/models/book.py:243 msgid "Audiobook" msgstr "Audioknyga" -#: bookwyrm/models/book.py:234 +#: bookwyrm/models/book.py:244 msgid "eBook" msgstr "Elektroninė knyga" -#: bookwyrm/models/book.py:235 +#: bookwyrm/models/book.py:245 msgid "Graphic novel" msgstr "Grafinė novelė" -#: bookwyrm/models/book.py:236 +#: bookwyrm/models/book.py:246 msgid "Hardcover" msgstr "Knyga kietais viršeliais" -#: bookwyrm/models/book.py:237 +#: bookwyrm/models/book.py:247 msgid "Paperback" msgstr "Knyga minkštais viršeliais" @@ -153,7 +153,7 @@ msgstr "naudotojo vardas" msgid "A user with that username already exists." msgstr "Toks naudotojo vardas jau egzistuoja." -#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:227 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:244 msgid "Reviews" msgstr "Apžvalgos" @@ -248,46 +248,61 @@ msgstr "Kažkas nepavyko. Atsiprašome." msgid "Edit Author" msgstr "Keisti autorių" -#: bookwyrm/templates/author/author.html:35 +#: bookwyrm/templates/author/author.html:40 +msgid "Author details" +msgstr "" + +#: bookwyrm/templates/author/author.html:44 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "Pseudonimai:" -#: bookwyrm/templates/author/author.html:46 +#: bookwyrm/templates/author/author.html:53 msgid "Born:" msgstr "Gimęs:" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:60 msgid "Died:" msgstr "Mirė:" -#: bookwyrm/templates/author/author.html:62 +#: bookwyrm/templates/author/author.html:70 +msgid "External links" +msgstr "" + +#: bookwyrm/templates/author/author.html:75 msgid "Wikipedia" msgstr "Wikipedia" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:83 msgid "View ISNI record" msgstr "Peržiūrėti ISNI įrašą" -#: bookwyrm/templates/author/author.html:78 -#: bookwyrm/templates/book/book.html:94 +#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/sync_modal.html:5 +#: bookwyrm/templates/book/book.html:93 +#: bookwyrm/templates/book/sync_modal.html:5 +msgid "Load data" +msgstr "" + +#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/book/book.html:96 msgid "View on OpenLibrary" msgstr "Žiūrėti „OpenLibrary“" -#: bookwyrm/templates/author/author.html:86 -#: bookwyrm/templates/book/book.html:97 +#: bookwyrm/templates/author/author.html:106 +#: bookwyrm/templates/book/book.html:107 msgid "View on Inventaire" msgstr "Žiūrėti „Inventaire“" -#: bookwyrm/templates/author/author.html:94 +#: bookwyrm/templates/author/author.html:121 msgid "View on LibraryThing" msgstr "Žiūrėti „LibraryThing“" -#: bookwyrm/templates/author/author.html:102 +#: bookwyrm/templates/author/author.html:129 msgid "View on Goodreads" msgstr "Žiūrėti „Goodreads“" -#: bookwyrm/templates/author/author.html:117 +#: bookwyrm/templates/author/author.html:143 #, python-format msgid "Books by %(name)s" msgstr "%(name)s knygos" @@ -369,7 +384,7 @@ msgid "ISNI:" msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 -#: bookwyrm/templates/book/book.html:140 +#: bookwyrm/templates/book/book.html:157 #: bookwyrm/templates/book/edit/edit_book.html:121 #: bookwyrm/templates/book/readthrough.html:76 #: bookwyrm/templates/groups/form.html:24 @@ -387,11 +402,13 @@ msgid "Save" msgstr "Išsaugoti" #: bookwyrm/templates/author/edit_author.html:116 -#: bookwyrm/templates/book/book.html:141 bookwyrm/templates/book/book.html:199 +#: bookwyrm/templates/author/sync_modal.html:26 +#: bookwyrm/templates/book/book.html:158 bookwyrm/templates/book/book.html:216 #: bookwyrm/templates/book/cover_modal.html:32 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/readthrough.html:77 +#: bookwyrm/templates/book/sync_modal.html:26 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:17 #: bookwyrm/templates/settings/federation/instance.html:88 @@ -400,6 +417,20 @@ msgstr "Išsaugoti" msgid "Cancel" msgstr "Atšaukti" +#: bookwyrm/templates/author/sync_modal.html:15 +#, python-format +msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." +msgstr "" + +#: bookwyrm/templates/author/sync_modal.html:23 +#: bookwyrm/templates/book/edit/edit_book.html:108 +#: bookwyrm/templates/book/sync_modal.html:23 +#: bookwyrm/templates/groups/members.html:16 +#: bookwyrm/templates/landing/password_reset.html:42 +#: bookwyrm/templates/snippets/remove_from_group_button.html:16 +msgid "Confirm" +msgstr "Patvirtinti" + #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/landing/large-book.html:25 @@ -420,7 +451,7 @@ msgstr "Pridėti viršelį" msgid "Failed to load cover" msgstr "Nepavyko įkelti viršelio" -#: bookwyrm/templates/book/book.html:117 +#: bookwyrm/templates/book/book.html:134 #, python-format msgid "(%(review_count)s review)" msgid_plural "(%(review_count)s reviews)" @@ -429,67 +460,67 @@ msgstr[1] "(%(review_count)s atsiliepimai)" msgstr[2] "(%(review_count)s atsiliepimų)" msgstr[3] "(%(review_count)s atsiliepimai)" -#: bookwyrm/templates/book/book.html:129 +#: bookwyrm/templates/book/book.html:146 msgid "Add Description" msgstr "Pridėti aprašymą" -#: bookwyrm/templates/book/book.html:136 +#: bookwyrm/templates/book/book.html:153 #: bookwyrm/templates/book/edit/edit_book_form.html:39 #: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17 msgid "Description:" msgstr "Aprašymas:" -#: bookwyrm/templates/book/book.html:150 +#: bookwyrm/templates/book/book.html:167 #, python-format msgid "%(count)s editions" msgstr "%(count)s leidimai (-ų)" -#: bookwyrm/templates/book/book.html:158 +#: bookwyrm/templates/book/book.html:175 msgid "You have shelved this edition in:" msgstr "Šis leidimas įdėtas į:" -#: bookwyrm/templates/book/book.html:173 +#: bookwyrm/templates/book/book.html:190 #, python-format msgid "A different edition of this book is on your %(shelf_name)s shelf." msgstr "kitas šios knygos leidimas yra jūsų %(shelf_name)s lentynoje." -#: bookwyrm/templates/book/book.html:184 +#: bookwyrm/templates/book/book.html:201 msgid "Your reading activity" msgstr "Jūsų skaitymo veikla" -#: bookwyrm/templates/book/book.html:187 +#: bookwyrm/templates/book/book.html:204 msgid "Add read dates" msgstr "Pridėti skaitymo datas" -#: bookwyrm/templates/book/book.html:196 +#: bookwyrm/templates/book/book.html:213 msgid "Create" msgstr "Kurti" -#: bookwyrm/templates/book/book.html:206 +#: bookwyrm/templates/book/book.html:223 msgid "You don't have any reading activity for this book." msgstr "Šios knygos neskaitote." -#: bookwyrm/templates/book/book.html:232 +#: bookwyrm/templates/book/book.html:249 msgid "Your reviews" msgstr "Tavo atsiliepimai" -#: bookwyrm/templates/book/book.html:238 +#: bookwyrm/templates/book/book.html:255 msgid "Your comments" msgstr "Tavo komentarai" -#: bookwyrm/templates/book/book.html:244 +#: bookwyrm/templates/book/book.html:261 msgid "Your quotes" msgstr "Jūsų citatos" -#: bookwyrm/templates/book/book.html:280 +#: bookwyrm/templates/book/book.html:297 msgid "Subjects" msgstr "Temos" -#: bookwyrm/templates/book/book.html:292 +#: bookwyrm/templates/book/book.html:309 msgid "Places" msgstr "Vietos" -#: bookwyrm/templates/book/book.html:303 bookwyrm/templates/layout.html:75 +#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 #: bookwyrm/templates/search/layout.html:50 @@ -497,11 +528,11 @@ msgstr "Vietos" msgid "Lists" msgstr "Sąrašai" -#: bookwyrm/templates/book/book.html:314 +#: bookwyrm/templates/book/book.html:331 msgid "Add to list" msgstr "Pridėti prie sąrašo" -#: bookwyrm/templates/book/book.html:324 +#: bookwyrm/templates/book/book.html:341 #: bookwyrm/templates/book/cover_modal.html:31 #: bookwyrm/templates/lists/list.html:182 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 @@ -579,13 +610,6 @@ msgstr "Ar tai egzistuojančio darbo leidimas?" msgid "This is a new work" msgstr "Tai naujas darbas" -#: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/landing/password_reset.html:42 -#: bookwyrm/templates/snippets/remove_from_group_button.html:16 -msgid "Confirm" -msgstr "Patvirtinti" - #: bookwyrm/templates/book/edit/edit_book.html:110 #: bookwyrm/templates/feed/status.html:21 msgid "Back" @@ -785,6 +809,11 @@ msgstr "Redaguoti skaitymo datas" msgid "Delete these read dates" msgstr "Ištrinti šias skaitymo datas" +#: bookwyrm/templates/book/sync_modal.html:15 +#, python-format +msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten." +msgstr "" + #: bookwyrm/templates/components/inline_form.html:8 #: bookwyrm/templates/components/modal.html:11 #: bookwyrm/templates/components/tooltip.html:7 @@ -1105,6 +1134,25 @@ msgstr "Jei nenorite pakeisti savo slaptažodžio - ignoruokite šį laišką." msgid "Reset your %(site_name)s password" msgstr "Keisti %(site_name)s slaptažodį" +#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:37 +#, python-format +msgid "%(site_name)s home page" +msgstr "" + +#: bookwyrm/templates/embed-layout.html:34 +#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230 +#, python-format +msgid "About %(site_name)s" +msgstr "Apie %(site_name)s" + +#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234 +msgid "Contact site admin" +msgstr "Puslapio administratorius" + +#: bookwyrm/templates/embed-layout.html:46 +msgid "Join Bookwyrm" +msgstr "" + #: bookwyrm/templates/feed/direct_messages.html:8 #, python-format msgid "Direct Messages with %(username)s" @@ -1668,11 +1716,6 @@ msgstr "Nuo importo datos „BookWyrm“ atnaujinto programinę įrangą ir išt msgid "Contact your admin or open an issue if you are seeing unexpected failed items." msgstr "Jei matote netikėtų nesklandumų, susisiekite su administratoriumi arba registruokite problemą." -#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230 -#, python-format -msgid "About %(site_name)s" -msgstr "Apie %(site_name)s" - #: bookwyrm/templates/landing/about.html:10 #: bookwyrm/templates/landing/about.html:20 msgid "Code of Conduct" @@ -1844,10 +1887,6 @@ msgstr "Būsena publikuota sėkmingai" msgid "Error posting status" msgstr "Klaida, publikuojant būseną" -#: bookwyrm/templates/layout.html:234 -msgid "Contact site admin" -msgstr "Puslapio administratorius" - #: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "Dokumentacija" @@ -1914,6 +1953,21 @@ msgstr "Ištrinti šį sąrašą?" msgid "Edit List" msgstr "Redaguoti sąrašą" +#: bookwyrm/templates/lists/embed-list.html:7 +#, python-format +msgid "%(list_name)s, a list by %(owner)s" +msgstr "" + +#: bookwyrm/templates/lists/embed-list.html:17 +#, python-format +msgid "on %(site_name)s" +msgstr "" + +#: bookwyrm/templates/lists/embed-list.html:26 +#: bookwyrm/templates/lists/list.html:29 +msgid "This list is currently empty" +msgstr "Šiuo metu sąrašas tuščias" + #: bookwyrm/templates/lists/form.html:19 msgid "List curation:" msgstr "Sąrašo kuravimas:" @@ -1979,10 +2033,6 @@ msgstr "Sėkmingai pasiūlėte knygą šiam sąrašui!" msgid "You successfully added a book to this list!" msgstr "Sėkmingai pridėjote knygą į šį sąrašą!" -#: bookwyrm/templates/lists/list.html:29 -msgid "This list is currently empty" -msgstr "Šiuo metu sąrašas tuščias" - #: bookwyrm/templates/lists/list.html:67 #, python-format msgid "Added by %(username)s" @@ -2035,6 +2085,23 @@ msgstr "Pagal paiešką „%(query)s“ knygų nerasta" msgid "Suggest" msgstr "Siūlyti" +#: bookwyrm/templates/lists/list.html:191 +msgid "Embed this list on a website" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +msgid "Copy embed code" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +msgid "Copied!" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +#, python-format +msgid "%(list_name)s, a list by %(owner)s on %(site_name)s" +msgstr "" + #: bookwyrm/templates/lists/list_items.html:15 msgid "Saved" msgstr "Išsaugota" @@ -3409,6 +3476,7 @@ msgid "Posted by %(username)s" msgstr "Publikavo %(username)s" #: bookwyrm/templates/snippets/authors.html:22 +#: bookwyrm/templates/snippets/trimmed_list.html:14 #, python-format msgid "and %(remainder_count_display)s other" msgid_plural "and %(remainder_count_display)s others" @@ -3882,7 +3950,7 @@ msgstr "pakomentavo %(book)s" #: bookwyrm/templates/snippets/status/headers/note.html:8 #, python-format msgid "replied to %(username)s's status" -msgstr "atsakyta į %(username)s būseną" +msgstr "atsakė į %(username)s statusą" #: bookwyrm/templates/snippets/status/headers/quotation.html:2 #, python-format @@ -4110,7 +4178,7 @@ msgstr "Jūs kartu nieko nesekate" msgid "File exceeds maximum size: 10MB" msgstr "Failas viršijo maksimalų dydį: 10 MB" -#: bookwyrm/templatetags/utilities.py:34 +#: bookwyrm/templatetags/utilities.py:33 #, python-format msgid "%(title)s: %(subtitle)s" msgstr "%(title)s: %(subtitle)s" diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo index 9bcb242a411a83260b75778d7be82d7e7d0aad82..5af66564c76608d5f5100fb818a3974aaa3fe5c5 100644 GIT binary patch delta 19830 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 delta 18856 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\n" "Language-Team: Portuguese, Brazilian\n" "Language: pt\n" @@ -101,23 +101,23 @@ msgstr "Exclusão de moderador" msgid "Domain block" msgstr "Bloqueio de domínio" -#: bookwyrm/models/book.py:233 +#: bookwyrm/models/book.py:243 msgid "Audiobook" msgstr "Audiolivro" -#: bookwyrm/models/book.py:234 +#: bookwyrm/models/book.py:244 msgid "eBook" msgstr "e-book" -#: bookwyrm/models/book.py:235 +#: bookwyrm/models/book.py:245 msgid "Graphic novel" msgstr "Graphic novel" -#: bookwyrm/models/book.py:236 +#: bookwyrm/models/book.py:246 msgid "Hardcover" msgstr "Capa dura" -#: bookwyrm/models/book.py:237 +#: bookwyrm/models/book.py:247 msgid "Paperback" msgstr "Capa mole" @@ -153,7 +153,7 @@ msgstr "nome de usuário" msgid "A user with that username already exists." msgstr "Já existe um usuário com este nome." -#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:227 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:244 msgid "Reviews" msgstr "Resenhas" @@ -248,46 +248,61 @@ msgstr "Algo deu errado! Foi mal." msgid "Edit Author" msgstr "Editar autor" -#: bookwyrm/templates/author/author.html:35 +#: bookwyrm/templates/author/author.html:40 +msgid "Author details" +msgstr "Detalhes do/a autor/a" + +#: bookwyrm/templates/author/author.html:44 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "Pseudônimos:" -#: bookwyrm/templates/author/author.html:46 +#: bookwyrm/templates/author/author.html:53 msgid "Born:" msgstr "Nascimento:" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:60 msgid "Died:" msgstr "Morte:" -#: bookwyrm/templates/author/author.html:62 +#: bookwyrm/templates/author/author.html:70 +msgid "External links" +msgstr "Links externos" + +#: bookwyrm/templates/author/author.html:75 msgid "Wikipedia" msgstr "Wikipédia" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:83 msgid "View ISNI record" msgstr "Ver registro ISNI" -#: bookwyrm/templates/author/author.html:78 -#: bookwyrm/templates/book/book.html:94 +#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/sync_modal.html:5 +#: bookwyrm/templates/book/book.html:93 +#: bookwyrm/templates/book/sync_modal.html:5 +msgid "Load data" +msgstr "Carregar dados" + +#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/book/book.html:96 msgid "View on OpenLibrary" msgstr "Ver na OpenLibrary" -#: bookwyrm/templates/author/author.html:86 -#: bookwyrm/templates/book/book.html:97 +#: bookwyrm/templates/author/author.html:106 +#: bookwyrm/templates/book/book.html:107 msgid "View on Inventaire" msgstr "Ver no Inventaire" -#: bookwyrm/templates/author/author.html:94 +#: bookwyrm/templates/author/author.html:121 msgid "View on LibraryThing" msgstr "Ver no LibraryThing" -#: bookwyrm/templates/author/author.html:102 +#: bookwyrm/templates/author/author.html:129 msgid "View on Goodreads" msgstr "Ver no Goodreads" -#: bookwyrm/templates/author/author.html:117 +#: bookwyrm/templates/author/author.html:143 #, python-format msgid "Books by %(name)s" msgstr "Livros de %(name)s" @@ -369,7 +384,7 @@ msgid "ISNI:" msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 -#: bookwyrm/templates/book/book.html:140 +#: bookwyrm/templates/book/book.html:157 #: bookwyrm/templates/book/edit/edit_book.html:121 #: bookwyrm/templates/book/readthrough.html:76 #: bookwyrm/templates/groups/form.html:24 @@ -387,11 +402,13 @@ msgid "Save" msgstr "Salvar" #: bookwyrm/templates/author/edit_author.html:116 -#: bookwyrm/templates/book/book.html:141 bookwyrm/templates/book/book.html:199 +#: bookwyrm/templates/author/sync_modal.html:26 +#: bookwyrm/templates/book/book.html:158 bookwyrm/templates/book/book.html:216 #: bookwyrm/templates/book/cover_modal.html:32 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/readthrough.html:77 +#: bookwyrm/templates/book/sync_modal.html:26 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:17 #: bookwyrm/templates/settings/federation/instance.html:88 @@ -400,6 +417,20 @@ msgstr "Salvar" msgid "Cancel" msgstr "Cancelar" +#: bookwyrm/templates/author/sync_modal.html:15 +#, python-format +msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." +msgstr "Ao carregar os dados nos conectaremos a %(source_name)s e buscaremos metadados sobre este/a autor/a que ainda não temos. Metadados já existentes não serão substituídos." + +#: bookwyrm/templates/author/sync_modal.html:23 +#: bookwyrm/templates/book/edit/edit_book.html:108 +#: bookwyrm/templates/book/sync_modal.html:23 +#: bookwyrm/templates/groups/members.html:16 +#: bookwyrm/templates/landing/password_reset.html:42 +#: bookwyrm/templates/snippets/remove_from_group_button.html:16 +msgid "Confirm" +msgstr "Confirmar" + #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/landing/large-book.html:25 @@ -420,74 +451,74 @@ msgstr "Adicionar capa" msgid "Failed to load cover" msgstr "Erro ao carregar capa" -#: bookwyrm/templates/book/book.html:117 +#: bookwyrm/templates/book/book.html:134 #, python-format msgid "(%(review_count)s review)" msgid_plural "(%(review_count)s reviews)" msgstr[0] "(%(review_count)s resenha)" msgstr[1] "(%(review_count)s resenhas)" -#: bookwyrm/templates/book/book.html:129 +#: bookwyrm/templates/book/book.html:146 msgid "Add Description" msgstr "Adicionar descrição" -#: bookwyrm/templates/book/book.html:136 +#: bookwyrm/templates/book/book.html:153 #: bookwyrm/templates/book/edit/edit_book_form.html:39 #: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17 msgid "Description:" msgstr "Descrição:" -#: bookwyrm/templates/book/book.html:150 +#: bookwyrm/templates/book/book.html:167 #, python-format msgid "%(count)s editions" msgstr "%(count)s edições" -#: bookwyrm/templates/book/book.html:158 +#: bookwyrm/templates/book/book.html:175 msgid "You have shelved this edition in:" msgstr "Você colocou esta edição na estante em:" -#: bookwyrm/templates/book/book.html:173 +#: bookwyrm/templates/book/book.html:190 #, python-format msgid "A different edition of this book is on your %(shelf_name)s shelf." msgstr "Uma edição diferente deste livro está em sua estante %(shelf_name)s." -#: bookwyrm/templates/book/book.html:184 +#: bookwyrm/templates/book/book.html:201 msgid "Your reading activity" msgstr "Sua atividade de leitura" -#: bookwyrm/templates/book/book.html:187 +#: bookwyrm/templates/book/book.html:204 msgid "Add read dates" msgstr "Adicionar datas de leitura" -#: bookwyrm/templates/book/book.html:196 +#: bookwyrm/templates/book/book.html:213 msgid "Create" msgstr "Criar" -#: bookwyrm/templates/book/book.html:206 +#: bookwyrm/templates/book/book.html:223 msgid "You don't have any reading activity for this book." msgstr "Você ainda não registrou seu progresso para este livro." -#: bookwyrm/templates/book/book.html:232 +#: bookwyrm/templates/book/book.html:249 msgid "Your reviews" msgstr "Suas resenhas" -#: bookwyrm/templates/book/book.html:238 +#: bookwyrm/templates/book/book.html:255 msgid "Your comments" msgstr "Seus comentários" -#: bookwyrm/templates/book/book.html:244 +#: bookwyrm/templates/book/book.html:261 msgid "Your quotes" msgstr "Suas citações" -#: bookwyrm/templates/book/book.html:280 +#: bookwyrm/templates/book/book.html:297 msgid "Subjects" msgstr "Assuntos" -#: bookwyrm/templates/book/book.html:292 +#: bookwyrm/templates/book/book.html:309 msgid "Places" msgstr "Lugares" -#: bookwyrm/templates/book/book.html:303 bookwyrm/templates/layout.html:75 +#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 #: bookwyrm/templates/search/layout.html:50 @@ -495,11 +526,11 @@ msgstr "Lugares" msgid "Lists" msgstr "Listas" -#: bookwyrm/templates/book/book.html:314 +#: bookwyrm/templates/book/book.html:331 msgid "Add to list" msgstr "Adicionar à lista" -#: bookwyrm/templates/book/book.html:324 +#: bookwyrm/templates/book/book.html:341 #: bookwyrm/templates/book/cover_modal.html:31 #: bookwyrm/templates/lists/list.html:182 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 @@ -577,13 +608,6 @@ msgstr "É uma edição de uma obra já registrada?" msgid "This is a new work" msgstr "É uma nova obra" -#: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/landing/password_reset.html:42 -#: bookwyrm/templates/snippets/remove_from_group_button.html:16 -msgid "Confirm" -msgstr "Confirmar" - #: bookwyrm/templates/book/edit/edit_book.html:110 #: bookwyrm/templates/feed/status.html:21 msgid "Back" @@ -783,6 +807,11 @@ msgstr "Editar datas de leitura" msgid "Delete these read dates" msgstr "Excluir estas datas de leitura" +#: bookwyrm/templates/book/sync_modal.html:15 +#, python-format +msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten." +msgstr "Ao carregar os dados nos conectaremos a %(source_name)s e buscaremos metadados sobre este livro que ainda não temos. Metadados já existentes não serão substituídos." + #: bookwyrm/templates/components/inline_form.html:8 #: bookwyrm/templates/components/modal.html:11 #: bookwyrm/templates/components/tooltip.html:7 @@ -1099,6 +1128,25 @@ msgstr "Se você não solicitou a redefinição de senha, ignore este e-mail." msgid "Reset your %(site_name)s password" msgstr "Redefinir sua senha no %(site_name)s" +#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:37 +#, python-format +msgid "%(site_name)s home page" +msgstr "" + +#: bookwyrm/templates/embed-layout.html:34 +#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230 +#, python-format +msgid "About %(site_name)s" +msgstr "Sobre %(site_name)s" + +#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234 +msgid "Contact site admin" +msgstr "Falar com a administração" + +#: bookwyrm/templates/embed-layout.html:46 +msgid "Join Bookwyrm" +msgstr "" + #: bookwyrm/templates/feed/direct_messages.html:8 #, python-format msgid "Direct Messages with %(username)s" @@ -1654,11 +1702,6 @@ msgstr "Desde a importação a BookWyrm foi atualizada com uma correção de bug msgid "Contact your admin or open an issue if you are seeing unexpected failed items." msgstr "Fale com a administração ou crie um problema se você perceber itens com erros inesperados." -#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230 -#, python-format -msgid "About %(site_name)s" -msgstr "Sobre %(site_name)s" - #: bookwyrm/templates/landing/about.html:10 #: bookwyrm/templates/landing/about.html:20 msgid "Code of Conduct" @@ -1830,10 +1873,6 @@ msgstr "Publicação feita com sucesso" msgid "Error posting status" msgstr "Erro ao publicar" -#: bookwyrm/templates/layout.html:234 -msgid "Contact site admin" -msgstr "Falar com a administração" - #: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "Documentação" @@ -1900,6 +1939,21 @@ msgstr "Deletar esta lista?" msgid "Edit List" msgstr "Editar lista" +#: bookwyrm/templates/lists/embed-list.html:7 +#, python-format +msgid "%(list_name)s, a list by %(owner)s" +msgstr "" + +#: bookwyrm/templates/lists/embed-list.html:17 +#, python-format +msgid "on %(site_name)s" +msgstr "" + +#: bookwyrm/templates/lists/embed-list.html:26 +#: bookwyrm/templates/lists/list.html:29 +msgid "This list is currently empty" +msgstr "Esta lista está vazia" + #: bookwyrm/templates/lists/form.html:19 msgid "List curation:" msgstr "Configuração da lista:" @@ -1965,10 +2019,6 @@ msgstr "Você sugeriu um livro para esta lista com sucesso!" msgid "You successfully added a book to this list!" msgstr "Você adicionou um livro a esta lista com sucesso!" -#: bookwyrm/templates/lists/list.html:29 -msgid "This list is currently empty" -msgstr "Esta lista está vazia" - #: bookwyrm/templates/lists/list.html:67 #, python-format msgid "Added by %(username)s" @@ -2021,6 +2071,23 @@ msgstr "Nenhum livro encontrado para \"%(query)s\"" msgid "Suggest" msgstr "Sugerir" +#: bookwyrm/templates/lists/list.html:191 +msgid "Embed this list on a website" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +msgid "Copy embed code" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +msgid "Copied!" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +#, python-format +msgid "%(list_name)s, a list by %(owner)s on %(site_name)s" +msgstr "" + #: bookwyrm/templates/lists/list_items.html:15 msgid "Saved" msgstr "Salvo" @@ -3387,6 +3454,7 @@ msgid "Posted by %(username)s" msgstr "Publicado por %(username)s" #: bookwyrm/templates/snippets/authors.html:22 +#: bookwyrm/templates/snippets/trimmed_list.html:14 #, python-format msgid "and %(remainder_count_display)s other" msgid_plural "and %(remainder_count_display)s others" @@ -4072,7 +4140,7 @@ msgstr "Nenhum seguidor que você segue" msgid "File exceeds maximum size: 10MB" msgstr "Arquivo excede o tamanho máximo: 10MB" -#: bookwyrm/templatetags/utilities.py:34 +#: bookwyrm/templatetags/utilities.py:33 #, python-format msgid "%(title)s: %(subtitle)s" msgstr "%(title)s: %(subtitle)s" diff --git a/locale/zh_Hans/LC_MESSAGES/django.mo b/locale/zh_Hans/LC_MESSAGES/django.mo index ba086077e417e980b749737ac8ee853fcf888a89..8dc3158c45925e4ef9935d7aac45f1380655fa29 100644 GIT binary patch delta 22 ecmbPyhI#TC<_({wvRf(`T3DHyZT>k`DgXd(?g\n" "Language-Team: Chinese Simplified\n" "Language: zh\n" @@ -101,23 +101,23 @@ msgstr "仲裁员删除" msgid "Domain block" msgstr "域名屏蔽" -#: bookwyrm/models/book.py:233 +#: bookwyrm/models/book.py:243 msgid "Audiobook" msgstr "有声书籍" -#: bookwyrm/models/book.py:234 +#: bookwyrm/models/book.py:244 msgid "eBook" msgstr "电子书" -#: bookwyrm/models/book.py:235 +#: bookwyrm/models/book.py:245 msgid "Graphic novel" msgstr "图像小说" -#: bookwyrm/models/book.py:236 +#: bookwyrm/models/book.py:246 msgid "Hardcover" msgstr "精装" -#: bookwyrm/models/book.py:237 +#: bookwyrm/models/book.py:247 msgid "Paperback" msgstr "平装" @@ -153,7 +153,7 @@ msgstr "用户名" msgid "A user with that username already exists." msgstr "已经存在使用该用户名的用户。" -#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:227 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:244 msgid "Reviews" msgstr "书评" @@ -248,46 +248,61 @@ msgstr "某些东西出错了!对不起啦。" msgid "Edit Author" msgstr "编辑作者" -#: bookwyrm/templates/author/author.html:35 +#: bookwyrm/templates/author/author.html:40 +msgid "Author details" +msgstr "" + +#: bookwyrm/templates/author/author.html:44 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "别名:" -#: bookwyrm/templates/author/author.html:46 +#: bookwyrm/templates/author/author.html:53 msgid "Born:" msgstr "出生:" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:60 msgid "Died:" msgstr "逝世:" -#: bookwyrm/templates/author/author.html:62 +#: bookwyrm/templates/author/author.html:70 +msgid "External links" +msgstr "" + +#: bookwyrm/templates/author/author.html:75 msgid "Wikipedia" msgstr "维基百科" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:83 msgid "View ISNI record" msgstr "" -#: bookwyrm/templates/author/author.html:78 -#: bookwyrm/templates/book/book.html:94 +#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/sync_modal.html:5 +#: bookwyrm/templates/book/book.html:93 +#: bookwyrm/templates/book/sync_modal.html:5 +msgid "Load data" +msgstr "" + +#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/book/book.html:96 msgid "View on OpenLibrary" msgstr "在 OpenLibrary 查看" -#: bookwyrm/templates/author/author.html:86 -#: bookwyrm/templates/book/book.html:97 +#: bookwyrm/templates/author/author.html:106 +#: bookwyrm/templates/book/book.html:107 msgid "View on Inventaire" msgstr "在 Inventaire 查看" -#: bookwyrm/templates/author/author.html:94 +#: bookwyrm/templates/author/author.html:121 msgid "View on LibraryThing" msgstr "在 LibraryThing 查看" -#: bookwyrm/templates/author/author.html:102 +#: bookwyrm/templates/author/author.html:129 msgid "View on Goodreads" msgstr "在 Goodreads 查看" -#: bookwyrm/templates/author/author.html:117 +#: bookwyrm/templates/author/author.html:143 #, python-format msgid "Books by %(name)s" msgstr "%(name)s 所著的书" @@ -369,7 +384,7 @@ msgid "ISNI:" msgstr "" #: bookwyrm/templates/author/edit_author.html:115 -#: bookwyrm/templates/book/book.html:140 +#: bookwyrm/templates/book/book.html:157 #: bookwyrm/templates/book/edit/edit_book.html:121 #: bookwyrm/templates/book/readthrough.html:76 #: bookwyrm/templates/groups/form.html:24 @@ -387,11 +402,13 @@ msgid "Save" msgstr "保存" #: bookwyrm/templates/author/edit_author.html:116 -#: bookwyrm/templates/book/book.html:141 bookwyrm/templates/book/book.html:199 +#: bookwyrm/templates/author/sync_modal.html:26 +#: bookwyrm/templates/book/book.html:158 bookwyrm/templates/book/book.html:216 #: bookwyrm/templates/book/cover_modal.html:32 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/readthrough.html:77 +#: bookwyrm/templates/book/sync_modal.html:26 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:17 #: bookwyrm/templates/settings/federation/instance.html:88 @@ -400,6 +417,20 @@ msgstr "保存" msgid "Cancel" msgstr "取消" +#: bookwyrm/templates/author/sync_modal.html:15 +#, python-format +msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." +msgstr "" + +#: bookwyrm/templates/author/sync_modal.html:23 +#: bookwyrm/templates/book/edit/edit_book.html:108 +#: bookwyrm/templates/book/sync_modal.html:23 +#: bookwyrm/templates/groups/members.html:16 +#: bookwyrm/templates/landing/password_reset.html:42 +#: bookwyrm/templates/snippets/remove_from_group_button.html:16 +msgid "Confirm" +msgstr "确认" + #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/landing/large-book.html:25 @@ -420,73 +451,73 @@ msgstr "添加封面" msgid "Failed to load cover" msgstr "加载封面失败" -#: bookwyrm/templates/book/book.html:117 +#: bookwyrm/templates/book/book.html:134 #, python-format msgid "(%(review_count)s review)" msgid_plural "(%(review_count)s reviews)" msgstr[0] "(%(review_count)s 则书评)" -#: bookwyrm/templates/book/book.html:129 +#: bookwyrm/templates/book/book.html:146 msgid "Add Description" msgstr "添加描述" -#: bookwyrm/templates/book/book.html:136 +#: bookwyrm/templates/book/book.html:153 #: bookwyrm/templates/book/edit/edit_book_form.html:39 #: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17 msgid "Description:" msgstr "描述:" -#: bookwyrm/templates/book/book.html:150 +#: bookwyrm/templates/book/book.html:167 #, python-format msgid "%(count)s editions" msgstr "%(count)s 个版本" -#: bookwyrm/templates/book/book.html:158 +#: bookwyrm/templates/book/book.html:175 msgid "You have shelved this edition in:" msgstr "" -#: bookwyrm/templates/book/book.html:173 +#: bookwyrm/templates/book/book.html:190 #, python-format msgid "A different edition of this book is on your %(shelf_name)s shelf." msgstr "本书的 另一个版本 在你的 %(shelf_name)s 书架上。" -#: bookwyrm/templates/book/book.html:184 +#: bookwyrm/templates/book/book.html:201 msgid "Your reading activity" msgstr "你的阅读活动" -#: bookwyrm/templates/book/book.html:187 +#: bookwyrm/templates/book/book.html:204 msgid "Add read dates" msgstr "添加阅读日期" -#: bookwyrm/templates/book/book.html:196 +#: bookwyrm/templates/book/book.html:213 msgid "Create" msgstr "创建" -#: bookwyrm/templates/book/book.html:206 +#: bookwyrm/templates/book/book.html:223 msgid "You don't have any reading activity for this book." msgstr "你还没有任何这本书的阅读活动。" -#: bookwyrm/templates/book/book.html:232 +#: bookwyrm/templates/book/book.html:249 msgid "Your reviews" msgstr "你的书评" -#: bookwyrm/templates/book/book.html:238 +#: bookwyrm/templates/book/book.html:255 msgid "Your comments" msgstr "你的评论" -#: bookwyrm/templates/book/book.html:244 +#: bookwyrm/templates/book/book.html:261 msgid "Your quotes" msgstr "你的引用" -#: bookwyrm/templates/book/book.html:280 +#: bookwyrm/templates/book/book.html:297 msgid "Subjects" msgstr "主题" -#: bookwyrm/templates/book/book.html:292 +#: bookwyrm/templates/book/book.html:309 msgid "Places" msgstr "地点" -#: bookwyrm/templates/book/book.html:303 bookwyrm/templates/layout.html:75 +#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 #: bookwyrm/templates/search/layout.html:50 @@ -494,11 +525,11 @@ msgstr "地点" msgid "Lists" msgstr "列表" -#: bookwyrm/templates/book/book.html:314 +#: bookwyrm/templates/book/book.html:331 msgid "Add to list" msgstr "添加到列表" -#: bookwyrm/templates/book/book.html:324 +#: bookwyrm/templates/book/book.html:341 #: bookwyrm/templates/book/cover_modal.html:31 #: bookwyrm/templates/lists/list.html:182 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 @@ -576,13 +607,6 @@ msgstr "这是已存在的作品的一个版本吗?" msgid "This is a new work" msgstr "这是一个新的作品。" -#: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/landing/password_reset.html:42 -#: bookwyrm/templates/snippets/remove_from_group_button.html:16 -msgid "Confirm" -msgstr "确认" - #: bookwyrm/templates/book/edit/edit_book.html:110 #: bookwyrm/templates/feed/status.html:21 msgid "Back" @@ -782,6 +806,11 @@ msgstr "编辑阅读日期" msgid "Delete these read dates" msgstr "删除这些阅读日期" +#: bookwyrm/templates/book/sync_modal.html:15 +#, python-format +msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten." +msgstr "" + #: bookwyrm/templates/components/inline_form.html:8 #: bookwyrm/templates/components/modal.html:11 #: bookwyrm/templates/components/tooltip.html:7 @@ -1096,6 +1125,25 @@ msgstr "如果你没有请求重设密码,你可以忽略这封邮件。" msgid "Reset your %(site_name)s password" msgstr "重置你在 %(site_name)s 的密码" +#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:37 +#, python-format +msgid "%(site_name)s home page" +msgstr "" + +#: bookwyrm/templates/embed-layout.html:34 +#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230 +#, python-format +msgid "About %(site_name)s" +msgstr "关于 %(site_name)s" + +#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234 +msgid "Contact site admin" +msgstr "联系站点管理员" + +#: bookwyrm/templates/embed-layout.html:46 +msgid "Join Bookwyrm" +msgstr "" + #: bookwyrm/templates/feed/direct_messages.html:8 #, python-format msgid "Direct Messages with %(username)s" @@ -1647,11 +1695,6 @@ msgstr "在此次导入后,BookWyrm 已经更新并修复了漏洞" msgid "Contact your admin or open an issue if you are seeing unexpected failed items." msgstr "如果您看到意外失败的项目,请联系您的管理员或 发起一个 issue。" -#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230 -#, python-format -msgid "About %(site_name)s" -msgstr "关于 %(site_name)s" - #: bookwyrm/templates/landing/about.html:10 #: bookwyrm/templates/landing/about.html:20 msgid "Code of Conduct" @@ -1823,10 +1866,6 @@ msgstr "成功发布的状态" msgid "Error posting status" msgstr "发布状态时出错" -#: bookwyrm/templates/layout.html:234 -msgid "Contact site admin" -msgstr "联系站点管理员" - #: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "文档" @@ -1893,6 +1932,21 @@ msgstr "删除此列表?" msgid "Edit List" msgstr "编辑列表" +#: bookwyrm/templates/lists/embed-list.html:7 +#, python-format +msgid "%(list_name)s, a list by %(owner)s" +msgstr "" + +#: bookwyrm/templates/lists/embed-list.html:17 +#, python-format +msgid "on %(site_name)s" +msgstr "" + +#: bookwyrm/templates/lists/embed-list.html:26 +#: bookwyrm/templates/lists/list.html:29 +msgid "This list is currently empty" +msgstr "此列表当前是空的" + #: bookwyrm/templates/lists/form.html:19 msgid "List curation:" msgstr "列表策展:" @@ -1958,10 +2012,6 @@ msgstr "你成功向该列表推荐了一本书!" msgid "You successfully added a book to this list!" msgstr "你成功向此列表添加了一本书!" -#: bookwyrm/templates/lists/list.html:29 -msgid "This list is currently empty" -msgstr "此列表当前是空的" - #: bookwyrm/templates/lists/list.html:67 #, python-format msgid "Added by %(username)s" @@ -2014,6 +2064,23 @@ msgstr "没有符合 “%(query)s” 请求的书目" msgid "Suggest" msgstr "推荐" +#: bookwyrm/templates/lists/list.html:191 +msgid "Embed this list on a website" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +msgid "Copy embed code" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +msgid "Copied!" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +#, python-format +msgid "%(list_name)s, a list by %(owner)s on %(site_name)s" +msgstr "" + #: bookwyrm/templates/lists/list_items.html:15 msgid "Saved" msgstr "已保存" @@ -3376,6 +3443,7 @@ msgid "Posted by %(username)s" msgstr "由 %(username)s 发布" #: bookwyrm/templates/snippets/authors.html:22 +#: bookwyrm/templates/snippets/trimmed_list.html:14 #, python-format msgid "and %(remainder_count_display)s other" msgid_plural "and %(remainder_count_display)s others" @@ -4053,7 +4121,7 @@ msgstr "没有你关注的关注者" msgid "File exceeds maximum size: 10MB" msgstr "文件超过了最大大小: 10MB" -#: bookwyrm/templatetags/utilities.py:34 +#: bookwyrm/templatetags/utilities.py:33 #, python-format msgid "%(title)s: %(subtitle)s" msgstr "%(title)s:%(subtitle)s" diff --git a/locale/zh_Hant/LC_MESSAGES/django.mo b/locale/zh_Hant/LC_MESSAGES/django.mo index 9c41d921579b73785a96a8ad7af2d0c13618817a..a8b4f6274b3d504da302eeae9de7891249a19f3c 100644 GIT binary patch delta 22 dcmdnLh-v>KrVYjk?3N0K7FMQao2?R94FO$r2KxX2 delta 22 dcmdnLh-v>KrVYjk?B)uF7FI?ko2?R94FO#{2J`>` diff --git a/locale/zh_Hant/LC_MESSAGES/django.po b/locale/zh_Hant/LC_MESSAGES/django.po index b1408f93e..b136569d1 100644 --- a/locale/zh_Hant/LC_MESSAGES/django.po +++ b/locale/zh_Hant/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-07 17:35+0000\n" -"PO-Revision-Date: 2021-12-07 18:24\n" +"POT-Creation-Date: 2021-12-08 15:40+0000\n" +"PO-Revision-Date: 2021-12-09 18:56\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Traditional\n" "Language: zh\n" @@ -101,23 +101,23 @@ msgstr "" msgid "Domain block" msgstr "" -#: bookwyrm/models/book.py:233 +#: bookwyrm/models/book.py:243 msgid "Audiobook" msgstr "" -#: bookwyrm/models/book.py:234 +#: bookwyrm/models/book.py:244 msgid "eBook" msgstr "" -#: bookwyrm/models/book.py:235 +#: bookwyrm/models/book.py:245 msgid "Graphic novel" msgstr "" -#: bookwyrm/models/book.py:236 +#: bookwyrm/models/book.py:246 msgid "Hardcover" msgstr "" -#: bookwyrm/models/book.py:237 +#: bookwyrm/models/book.py:247 msgid "Paperback" msgstr "" @@ -153,7 +153,7 @@ msgstr "使用者名稱" msgid "A user with that username already exists." msgstr "已經存在使用該名稱的使用者。" -#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:227 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:244 msgid "Reviews" msgstr "書評" @@ -248,46 +248,61 @@ msgstr "某些東西出錯了!抱歉。" msgid "Edit Author" msgstr "編輯作者" -#: bookwyrm/templates/author/author.html:35 +#: bookwyrm/templates/author/author.html:40 +msgid "Author details" +msgstr "" + +#: bookwyrm/templates/author/author.html:44 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "別名:" -#: bookwyrm/templates/author/author.html:46 +#: bookwyrm/templates/author/author.html:53 msgid "Born:" msgstr "出生:" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:60 msgid "Died:" msgstr "逝世:" -#: bookwyrm/templates/author/author.html:62 +#: bookwyrm/templates/author/author.html:70 +msgid "External links" +msgstr "" + +#: bookwyrm/templates/author/author.html:75 msgid "Wikipedia" msgstr "維基百科" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:83 msgid "View ISNI record" msgstr "" -#: bookwyrm/templates/author/author.html:78 -#: bookwyrm/templates/book/book.html:94 +#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/sync_modal.html:5 +#: bookwyrm/templates/book/book.html:93 +#: bookwyrm/templates/book/sync_modal.html:5 +msgid "Load data" +msgstr "" + +#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/book/book.html:96 msgid "View on OpenLibrary" msgstr "在 OpenLibrary 檢視" -#: bookwyrm/templates/author/author.html:86 -#: bookwyrm/templates/book/book.html:97 +#: bookwyrm/templates/author/author.html:106 +#: bookwyrm/templates/book/book.html:107 msgid "View on Inventaire" msgstr "在 Inventaire 檢視" -#: bookwyrm/templates/author/author.html:94 +#: bookwyrm/templates/author/author.html:121 msgid "View on LibraryThing" msgstr "" -#: bookwyrm/templates/author/author.html:102 +#: bookwyrm/templates/author/author.html:129 msgid "View on Goodreads" msgstr "" -#: bookwyrm/templates/author/author.html:117 +#: bookwyrm/templates/author/author.html:143 #, python-format msgid "Books by %(name)s" msgstr "%(name)s 所著的書" @@ -369,7 +384,7 @@ msgid "ISNI:" msgstr "" #: bookwyrm/templates/author/edit_author.html:115 -#: bookwyrm/templates/book/book.html:140 +#: bookwyrm/templates/book/book.html:157 #: bookwyrm/templates/book/edit/edit_book.html:121 #: bookwyrm/templates/book/readthrough.html:76 #: bookwyrm/templates/groups/form.html:24 @@ -387,11 +402,13 @@ msgid "Save" msgstr "儲存" #: bookwyrm/templates/author/edit_author.html:116 -#: bookwyrm/templates/book/book.html:141 bookwyrm/templates/book/book.html:199 +#: bookwyrm/templates/author/sync_modal.html:26 +#: bookwyrm/templates/book/book.html:158 bookwyrm/templates/book/book.html:216 #: bookwyrm/templates/book/cover_modal.html:32 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 #: bookwyrm/templates/book/readthrough.html:77 +#: bookwyrm/templates/book/sync_modal.html:26 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:17 #: bookwyrm/templates/settings/federation/instance.html:88 @@ -400,6 +417,20 @@ msgstr "儲存" msgid "Cancel" msgstr "取消" +#: bookwyrm/templates/author/sync_modal.html:15 +#, python-format +msgid "Loading data will connect to %(source_name)s and check for any metadata about this author which aren't present here. Existing metadata will not be overwritten." +msgstr "" + +#: bookwyrm/templates/author/sync_modal.html:23 +#: bookwyrm/templates/book/edit/edit_book.html:108 +#: bookwyrm/templates/book/sync_modal.html:23 +#: bookwyrm/templates/groups/members.html:16 +#: bookwyrm/templates/landing/password_reset.html:42 +#: bookwyrm/templates/snippets/remove_from_group_button.html:16 +msgid "Confirm" +msgstr "確認" + #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/landing/large-book.html:25 @@ -420,73 +451,73 @@ msgstr "新增封面" msgid "Failed to load cover" msgstr "載入封面失敗" -#: bookwyrm/templates/book/book.html:117 +#: bookwyrm/templates/book/book.html:134 #, python-format msgid "(%(review_count)s review)" msgid_plural "(%(review_count)s reviews)" msgstr[0] "(%(review_count)s 則書評)" -#: bookwyrm/templates/book/book.html:129 +#: bookwyrm/templates/book/book.html:146 msgid "Add Description" msgstr "新增描述" -#: bookwyrm/templates/book/book.html:136 +#: bookwyrm/templates/book/book.html:153 #: bookwyrm/templates/book/edit/edit_book_form.html:39 #: bookwyrm/templates/lists/form.html:13 bookwyrm/templates/shelf/form.html:17 msgid "Description:" msgstr "描述:" -#: bookwyrm/templates/book/book.html:150 +#: bookwyrm/templates/book/book.html:167 #, python-format msgid "%(count)s editions" msgstr "%(count)s 個版本" -#: bookwyrm/templates/book/book.html:158 +#: bookwyrm/templates/book/book.html:175 msgid "You have shelved this edition in:" msgstr "" -#: bookwyrm/templates/book/book.html:173 +#: bookwyrm/templates/book/book.html:190 #, python-format msgid "A different edition of this book is on your %(shelf_name)s shelf." msgstr "本書的 另一個版本 在你的 %(shelf_name)s 書架上。" -#: bookwyrm/templates/book/book.html:184 +#: bookwyrm/templates/book/book.html:201 msgid "Your reading activity" msgstr "你的閱讀活動" -#: bookwyrm/templates/book/book.html:187 +#: bookwyrm/templates/book/book.html:204 msgid "Add read dates" msgstr "新增閱讀日期" -#: bookwyrm/templates/book/book.html:196 +#: bookwyrm/templates/book/book.html:213 msgid "Create" msgstr "建立" -#: bookwyrm/templates/book/book.html:206 +#: bookwyrm/templates/book/book.html:223 msgid "You don't have any reading activity for this book." msgstr "你還未閱讀這本書。" -#: bookwyrm/templates/book/book.html:232 +#: bookwyrm/templates/book/book.html:249 msgid "Your reviews" msgstr "你的書評" -#: bookwyrm/templates/book/book.html:238 +#: bookwyrm/templates/book/book.html:255 msgid "Your comments" msgstr "你的評論" -#: bookwyrm/templates/book/book.html:244 +#: bookwyrm/templates/book/book.html:261 msgid "Your quotes" msgstr "你的引用" -#: bookwyrm/templates/book/book.html:280 +#: bookwyrm/templates/book/book.html:297 msgid "Subjects" msgstr "主題" -#: bookwyrm/templates/book/book.html:292 +#: bookwyrm/templates/book/book.html:309 msgid "Places" msgstr "地點" -#: bookwyrm/templates/book/book.html:303 bookwyrm/templates/layout.html:75 +#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:75 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 #: bookwyrm/templates/search/layout.html:50 @@ -494,11 +525,11 @@ msgstr "地點" msgid "Lists" msgstr "列表" -#: bookwyrm/templates/book/book.html:314 +#: bookwyrm/templates/book/book.html:331 msgid "Add to list" msgstr "新增到列表" -#: bookwyrm/templates/book/book.html:324 +#: bookwyrm/templates/book/book.html:341 #: bookwyrm/templates/book/cover_modal.html:31 #: bookwyrm/templates/lists/list.html:182 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 @@ -576,13 +607,6 @@ msgstr "這是已存在的作品的另一個版本嗎?" msgid "This is a new work" msgstr "這是一個新的作品。" -#: bookwyrm/templates/book/edit/edit_book.html:108 -#: bookwyrm/templates/groups/members.html:16 -#: bookwyrm/templates/landing/password_reset.html:42 -#: bookwyrm/templates/snippets/remove_from_group_button.html:16 -msgid "Confirm" -msgstr "確認" - #: bookwyrm/templates/book/edit/edit_book.html:110 #: bookwyrm/templates/feed/status.html:21 msgid "Back" @@ -782,6 +806,11 @@ msgstr "編輯閱讀日期" msgid "Delete these read dates" msgstr "刪除這些閱讀日期" +#: bookwyrm/templates/book/sync_modal.html:15 +#, python-format +msgid "Loading data will connect to %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten." +msgstr "" + #: bookwyrm/templates/components/inline_form.html:8 #: bookwyrm/templates/components/modal.html:11 #: bookwyrm/templates/components/tooltip.html:7 @@ -1096,6 +1125,25 @@ msgstr "如果你沒有請求重設密碼,你可以忽略這封郵件。" msgid "Reset your %(site_name)s password" msgstr "重置你在 %(site_name)s 的密碼" +#: bookwyrm/templates/embed-layout.html:21 bookwyrm/templates/layout.html:37 +#, python-format +msgid "%(site_name)s home page" +msgstr "" + +#: bookwyrm/templates/embed-layout.html:34 +#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230 +#, python-format +msgid "About %(site_name)s" +msgstr "關於 %(site_name)s" + +#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:234 +msgid "Contact site admin" +msgstr "聯絡網站管理員" + +#: bookwyrm/templates/embed-layout.html:46 +msgid "Join Bookwyrm" +msgstr "" + #: bookwyrm/templates/feed/direct_messages.html:8 #, python-format msgid "Direct Messages with %(username)s" @@ -1647,11 +1695,6 @@ msgstr "" msgid "Contact your admin or open an issue if you are seeing unexpected failed items." msgstr "" -#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:230 -#, python-format -msgid "About %(site_name)s" -msgstr "關於 %(site_name)s" - #: bookwyrm/templates/landing/about.html:10 #: bookwyrm/templates/landing/about.html:20 msgid "Code of Conduct" @@ -1823,10 +1866,6 @@ msgstr "" msgid "Error posting status" msgstr "" -#: bookwyrm/templates/layout.html:234 -msgid "Contact site admin" -msgstr "聯絡網站管理員" - #: bookwyrm/templates/layout.html:238 msgid "Documentation" msgstr "文件:" @@ -1893,6 +1932,21 @@ msgstr "" msgid "Edit List" msgstr "編輯列表" +#: bookwyrm/templates/lists/embed-list.html:7 +#, python-format +msgid "%(list_name)s, a list by %(owner)s" +msgstr "" + +#: bookwyrm/templates/lists/embed-list.html:17 +#, python-format +msgid "on %(site_name)s" +msgstr "" + +#: bookwyrm/templates/lists/embed-list.html:26 +#: bookwyrm/templates/lists/list.html:29 +msgid "This list is currently empty" +msgstr "此列表當前是空的" + #: bookwyrm/templates/lists/form.html:19 msgid "List curation:" msgstr "列表管理:" @@ -1958,10 +2012,6 @@ msgstr "你成功!向該列表推薦了一本書" msgid "You successfully added a book to this list!" msgstr "你成功在此列表新增了一本書!" -#: bookwyrm/templates/lists/list.html:29 -msgid "This list is currently empty" -msgstr "此列表當前是空的" - #: bookwyrm/templates/lists/list.html:67 #, python-format msgid "Added by %(username)s" @@ -2014,6 +2064,23 @@ msgstr "沒有符合 \"%(query)s\" 請求的書目" msgid "Suggest" msgstr "推薦" +#: bookwyrm/templates/lists/list.html:191 +msgid "Embed this list on a website" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +msgid "Copy embed code" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +msgid "Copied!" +msgstr "" + +#: bookwyrm/templates/lists/list.html:193 +#, python-format +msgid "%(list_name)s, a list by %(owner)s on %(site_name)s" +msgstr "" + #: bookwyrm/templates/lists/list_items.html:15 msgid "Saved" msgstr "" @@ -3376,6 +3443,7 @@ msgid "Posted by %(username)s" msgstr "由 %(username)s 釋出" #: bookwyrm/templates/snippets/authors.html:22 +#: bookwyrm/templates/snippets/trimmed_list.html:14 #, python-format msgid "and %(remainder_count_display)s other" msgid_plural "and %(remainder_count_display)s others" @@ -4053,7 +4121,7 @@ msgstr "" msgid "File exceeds maximum size: 10MB" msgstr "檔案超過了最大大小: 10MB" -#: bookwyrm/templatetags/utilities.py:34 +#: bookwyrm/templatetags/utilities.py:33 #, python-format msgid "%(title)s: %(subtitle)s" msgstr "" From cf275d0c5904bf040acf1026fb222a30b31ab3bb Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 9 Dec 2021 18:38:05 -0800 Subject: [PATCH 02/20] Removes unused groups view --- bookwyrm/tests/views/test_user.py | 39 +++++++++++++++++++++++++++++-- bookwyrm/views/user.py | 27 +++------------------ 2 files changed, 40 insertions(+), 26 deletions(-) diff --git a/bookwyrm/tests/views/test_user.py b/bookwyrm/tests/views/test_user.py index ddb029cc9..d1100f92c 100644 --- a/bookwyrm/tests/views/test_user.py +++ b/bookwyrm/tests/views/test_user.py @@ -51,6 +51,11 @@ class UserViews(TestCase): def test_user_page(self): """there are so many views, this just makes sure it LOADS""" + # extras that are rendered on the user page + models.AnnualGoal.objects.create( + user=self.local_user, goal=12, privacy="followers" + ) + view = views.User.as_view() request = self.factory.get("") request.user = self.local_user @@ -98,10 +103,16 @@ class UserViews(TestCase): validate_html(result.render()) self.assertEqual(result.status_code, 200) + def test_followers_page_anonymous(self): + """there are so many views, this just makes sure it LOADS""" + view = views.Followers.as_view() + request = self.factory.get("") + request.user = self.anonymous_user with patch("bookwyrm.views.user.is_api_request") as is_api: - is_api.return_value = True + is_api.return_value = False result = view(request, "mouse") - self.assertIsInstance(result, ActivitypubResponse) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) self.assertEqual(result.status_code, 200) @patch("bookwyrm.suggested_users.rerank_suggestions_task.delay") @@ -135,6 +146,18 @@ class UserViews(TestCase): self.assertIsInstance(result, ActivitypubResponse) self.assertEqual(result.status_code, 200) + def test_following_page_anonymous(self): + """there are so many views, this just makes sure it LOADS""" + view = views.Following.as_view() + request = self.factory.get("") + request.user = self.anonymous_user + with patch("bookwyrm.views.user.is_api_request") as is_api: + is_api.return_value = False + result = view(request, "mouse") + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + def test_following_page_blocked(self): """there are so many views, this just makes sure it LOADS""" view = views.Following.as_view() @@ -145,3 +168,15 @@ class UserViews(TestCase): is_api.return_value = False with self.assertRaises(Http404): view(request, "rat") + + def test_hide_suggestions(self): + """update suggestions settings""" + self.assertTrue(self.local_user.show_suggested_users) + request = self.factory.post("") + request.user = self.local_user + + result = views.hide_suggestions(request) + validate_html(result.render()) + + self.local_user.refresh_from_db() + self.assertFalse(self.local_user.show_suggested_users) diff --git a/bookwyrm/views/user.py b/bookwyrm/views/user.py index 082408f97..188f8e66e 100644 --- a/bookwyrm/views/user.py +++ b/bookwyrm/views/user.py @@ -34,11 +34,9 @@ class User(View): shelves = user.shelf_set is_self = request.user.id == user.id if not is_self: - follower = user.followers.filter(id=request.user.id).exists() - if follower: - shelves = shelves.filter(privacy__in=["public", "followers"]) - else: - shelves = shelves.filter(privacy="public") + shelves = models.Shelf.privacy_filter( + request.user, privacy_levels=["public", "followers"] + ).filter(user=user) for user_shelf in shelves.all(): if not user_shelf.books.count(): @@ -146,25 +144,6 @@ def annotate_if_follows(user, queryset): ).order_by("-request_user_follows", "-created_date") -class Groups(View): - """list of user's groups view""" - - def get(self, request, username): - """list of groups""" - user = get_user_from_username(request.user, username) - - paginated = Paginator( - models.Group.memberships.filter(user=user).order_by("-created_date"), - PAGE_LENGTH, - ) - data = { - "user": user, - "is_self": request.user.id == user.id, - "group_list": paginated.get_page(request.GET.get("page")), - } - return TemplateResponse(request, "user/groups.html", data) - - @require_POST @login_required def hide_suggestions(request): From b57aa4c9d32fa5c1c984a3e00df441701c1588fa Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 9 Dec 2021 18:42:09 -0800 Subject: [PATCH 03/20] Fixes redirect --- bookwyrm/tests/views/test_user.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/tests/views/test_user.py b/bookwyrm/tests/views/test_user.py index d1100f92c..c3c0992df 100644 --- a/bookwyrm/tests/views/test_user.py +++ b/bookwyrm/tests/views/test_user.py @@ -176,7 +176,7 @@ class UserViews(TestCase): request.user = self.local_user result = views.hide_suggestions(request) - validate_html(result.render()) + self.assertEqual(result.status_code, 302) self.local_user.refresh_from_db() self.assertFalse(self.local_user.show_suggested_users) From 23842f75012f8d6df307554dbbd3be9ac6310e1a Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 9 Dec 2021 18:46:24 -0800 Subject: [PATCH 04/20] Test for followers api view --- bookwyrm/tests/views/test_user.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bookwyrm/tests/views/test_user.py b/bookwyrm/tests/views/test_user.py index c3c0992df..d82b87a9b 100644 --- a/bookwyrm/tests/views/test_user.py +++ b/bookwyrm/tests/views/test_user.py @@ -103,6 +103,13 @@ class UserViews(TestCase): validate_html(result.render()) self.assertEqual(result.status_code, 200) + with patch("bookwyrm.views.user.is_api_request") as is_api: + is_api.return_value = True + result = view(request, "mouse") + self.assertIsInstance(result, ActivitypubResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + def test_followers_page_anonymous(self): """there are so many views, this just makes sure it LOADS""" view = views.Followers.as_view() From 9c86bb1bc31fc6c400785cfd95fd646a3677e75d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 9 Dec 2021 18:54:15 -0800 Subject: [PATCH 05/20] Removes invalid render --- bookwyrm/tests/views/test_user.py | 1 - 1 file changed, 1 deletion(-) diff --git a/bookwyrm/tests/views/test_user.py b/bookwyrm/tests/views/test_user.py index d82b87a9b..231ecec99 100644 --- a/bookwyrm/tests/views/test_user.py +++ b/bookwyrm/tests/views/test_user.py @@ -107,7 +107,6 @@ class UserViews(TestCase): is_api.return_value = True result = view(request, "mouse") self.assertIsInstance(result, ActivitypubResponse) - validate_html(result.render()) self.assertEqual(result.status_code, 200) def test_followers_page_anonymous(self): From 234d44b5c797a1055dc366a2dddc8671122c7abc Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 9 Dec 2021 19:00:48 -0800 Subject: [PATCH 06/20] Adds delete test --- bookwyrm/tests/views/test_group.py | 31 +++++++++++++++++++----------- bookwyrm/views/group.py | 1 - 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/bookwyrm/tests/views/test_group.py b/bookwyrm/tests/views/test_group.py index b18ce6b4f..069f87d3b 100644 --- a/bookwyrm/tests/views/test_group.py +++ b/bookwyrm/tests/views/test_group.py @@ -1,12 +1,11 @@ """ test for app action functionality """ from unittest.mock import patch -from django.contrib.auth import decorators from django.template.response import TemplateResponse from django.test import TestCase from django.test.client import RequestFactory -from bookwyrm import models, views, forms +from bookwyrm import models, views from bookwyrm.tests.validate_html import validate_html @@ -28,15 +27,15 @@ class GroupViews(TestCase): localname="mouse", ) - self.testgroup = models.Group.objects.create( - name="Test Group", - description="Initial description", - user=self.local_user, - privacy="public", - ) - self.membership = models.GroupMember.objects.create( - group=self.testgroup, user=self.local_user - ) + self.testgroup = models.Group.objects.create( + name="Test Group", + description="Initial description", + user=self.local_user, + privacy="public", + ) + self.membership = models.GroupMember.objects.create( + group=self.testgroup, user=self.local_user + ) models.SiteSettings.objects.create() @@ -117,3 +116,13 @@ class GroupViews(TestCase): self.assertEqual(self.testgroup.name, "Updated Group name") self.assertEqual(self.testgroup.description, "wow") self.assertEqual(self.testgroup.privacy, "direct") + + def test_delete_group(self, _): + """delete a group""" + request = self.factory.post("") + request.user = self.local_user + views.delete_group(request, self.testgroup.id) + self.assertFalse(models.Group.objects.exists()) + + def test_invite_member(self, _): + """invite a member to a group""" diff --git a/bookwyrm/views/group.py b/bookwyrm/views/group.py index 9ee99bffa..dd207a802 100644 --- a/bookwyrm/views/group.py +++ b/bookwyrm/views/group.py @@ -179,7 +179,6 @@ def delete_group(request, group_id): @login_required def invite_member(request): """invite a member to the group""" - group = get_object_or_404(models.Group, id=request.POST.get("group")) if not group: return HttpResponseBadRequest() From 936f04534492a28161c18ad954aeb8199b613c9f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 9 Dec 2021 19:36:12 -0800 Subject: [PATCH 07/20] Adds resolve book view test --- bookwyrm/tests/views/books/test_book.py | 26 +++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/bookwyrm/tests/views/books/test_book.py b/bookwyrm/tests/views/books/test_book.py index cb73e3813..90f686d5b 100644 --- a/bookwyrm/tests/views/books/test_book.py +++ b/bookwyrm/tests/views/books/test_book.py @@ -231,6 +231,32 @@ class BookViews(TestCase): views.update_book_from_remote(request, self.book.id, "openlibrary.org") self.assertEqual(mock.call_count, 1) + def test_resolve_book(self): + """load a book from search results""" + models.Connector.objects.create( + identifier="openlibrary.org", + name="OpenLibrary", + connector_file="openlibrary", + base_url="https://openlibrary.org", + books_url="https://openlibrary.org", + covers_url="https://covers.openlibrary.org", + search_url="https://openlibrary.org/search?q=", + isbn_search_url="https://openlibrary.org/isbn", + ) + request = self.factory.post( + "", {"remote_id": "https://openlibrary.org/book/123"} + ) + request.user = self.local_user + + with patch( + "bookwyrm.connectors.openlibrary.Connector.get_or_create_book" + ) as mock: + mock.return_value = self.book + result = views.resolve_book(request) + self.assertEqual(mock.call_count, 1) + self.assertEqual(mock.call_args[0][0], "https://openlibrary.org/book/123") + self.assertEqual(result.status_code, 302) + def _setup_cover_url(): """creates cover url mock""" From 7a547d9a1ac22bd46fb8b49a00e510acc3c85dd3 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 10 Dec 2021 11:21:11 -0800 Subject: [PATCH 08/20] Adds more groups tests --- bookwyrm/tests/views/test_group.py | 64 +++++++++++++++++++++++++++++- bookwyrm/views/group.py | 16 +------- 2 files changed, 64 insertions(+), 16 deletions(-) diff --git a/bookwyrm/tests/views/test_group.py b/bookwyrm/tests/views/test_group.py index 069f87d3b..5bdd3a6c0 100644 --- a/bookwyrm/tests/views/test_group.py +++ b/bookwyrm/tests/views/test_group.py @@ -26,6 +26,13 @@ class GroupViews(TestCase): local=True, localname="mouse", ) + self.rat = models.User.objects.create_user( + "rat@local.com", + "rat@rat.rat", + "password", + local=True, + localname="rat", + ) self.testgroup = models.Group.objects.create( name="Test Group", @@ -97,7 +104,6 @@ class GroupViews(TestCase): def test_group_edit(self, _): """test editing a "group" database entry""" - view = views.Group.as_view() request = self.factory.post( "", @@ -126,3 +132,59 @@ class GroupViews(TestCase): def test_invite_member(self, _): """invite a member to a group""" + request = self.factory.post( + "", + { + "group": self.testgroup.id, + "user": self.rat.localname, + }, + ) + request.user = self.local_user + result = views.invite_member(request) + self.assertEqual(result.status_code, 302) + + invite = models.GroupMemberInvitation.objects.get() + self.assertEqual(invite.user, self.rat) + self.assertEqual(invite.group, self.testgroup) + + def test_invite_member_twice(self, _): + """invite a member to a group again""" + request = self.factory.post( + "", + { + "group": self.testgroup.id, + "user": self.rat.localname, + }, + ) + request.user = self.local_user + result = views.invite_member(request) + self.assertEqual(result.status_code, 302) + result = views.invite_member(request) + self.assertEqual(result.status_code, 302) + + def test_remove_member_denied(self, _): + """remove member""" + request = self.factory.post( + "", + { + "group": self.testgroup.id, + "user": self.local_user.localname, + }, + ) + request.user = self.local_user + result = views.remove_member(request) + self.assertEqual(result.status_code, 400) + + def test_remove_member_non_member(self, _): + """remove member but wait, that's not a member""" + request = self.factory.post( + "", + { + "group": self.testgroup.id, + "user": self.rat.localname, + }, + ) + request.user = self.local_user + result = views.remove_member(request) + # nothing happens + self.assertEqual(result.status_code, 302) diff --git a/bookwyrm/views/group.py b/bookwyrm/views/group.py index dd207a802..7e610630a 100644 --- a/bookwyrm/views/group.py +++ b/bookwyrm/views/group.py @@ -180,19 +180,13 @@ def delete_group(request, group_id): def invite_member(request): """invite a member to the group""" group = get_object_or_404(models.Group, id=request.POST.get("group")) - if not group: - return HttpResponseBadRequest() - user = get_user_from_username(request.user, request.POST["user"]) - if not user: - return HttpResponseBadRequest() if not group.user == request.user: return HttpResponseBadRequest() try: models.GroupMemberInvitation.objects.create(user=user, group=group) - except IntegrityError: pass @@ -203,17 +197,11 @@ def invite_member(request): @login_required def remove_member(request): """remove a member from the group""" - group = get_object_or_404(models.Group, id=request.POST.get("group")) - if not group: - return HttpResponseBadRequest() - user = get_user_from_username(request.user, request.POST["user"]) - if not user: - return HttpResponseBadRequest() # you can't be removed from your own group - if request.POST["user"] == group.user: + if user == group.user: return HttpResponseBadRequest() is_member = models.GroupMember.objects.filter(group=group, user=user).exists() @@ -233,11 +221,9 @@ def remove_member(request): pass if is_member: - try: models.List.remove_from_group(group.user, user) models.GroupMember.remove(group.user, user) - except IntegrityError: pass From 10c74d0619b74cff74a8bc88e8b5b44e0ce9e9a7 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 10 Dec 2021 11:41:54 -0800 Subject: [PATCH 09/20] Additional import tests --- bookwyrm/tests/views/imports/test_import.py | 42 ++++++++++++++++++--- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/bookwyrm/tests/views/imports/test_import.py b/bookwyrm/tests/views/imports/test_import.py index b8b8b328d..42c6d8c9c 100644 --- a/bookwyrm/tests/views/imports/test_import.py +++ b/bookwyrm/tests/views/imports/test_import.py @@ -1,13 +1,14 @@ """ test for app action functionality """ import pathlib from unittest.mock import patch + from django.core.files.uploadedfile import SimpleUploadedFile from django.template.response import TemplateResponse from django.test import TestCase from django.test.client import RequestFactory -from bookwyrm.tests.validate_html import validate_html from bookwyrm import forms, models, views +from bookwyrm.tests.validate_html import validate_html class ImportViews(TestCase): @@ -44,15 +45,29 @@ class ImportViews(TestCase): import_job = models.ImportJob.objects.create(user=self.local_user, mappings={}) request = self.factory.get("") request.user = self.local_user - with patch("bookwyrm.tasks.app.AsyncResult") as async_result: - async_result.return_value = [] - result = view(request, import_job.id) + + result = view(request, import_job.id) + self.assertIsInstance(result, TemplateResponse) validate_html(result.render()) self.assertEqual(result.status_code, 200) + def test_import_status_reformat(self): + """there are so many views, this just makes sure it LOADS""" + view = views.ImportStatus.as_view() + import_job = models.ImportJob.objects.create(user=self.local_user, mappings={}) + request = self.factory.post("") + request.user = self.local_user + with patch( + "bookwyrm.importers.goodreads_import.GoodreadsImporter.update_legacy_job" + ) as mock: + result = view(request, import_job.id) + self.assertEqual(mock.call_args[0][0], import_job) + + self.assertEqual(result.status_code, 302) + def test_start_import(self): - """retry failed items""" + """start a job""" view = views.Import.as_view() form = forms.ImportForm() form.data["source"] = "Goodreads" @@ -74,3 +89,20 @@ class ImportViews(TestCase): job = models.ImportJob.objects.get() self.assertFalse(job.include_reviews) self.assertEqual(job.privacy, "public") + + def test_retry_item(self): + """try again on a single row""" + job = models.ImportJob.objects.create(user=self.local_user, mappings={}) + item = models.ImportItem.objects.create( + index=0, + job=job, + book_guess=self.book, + fail_reason="no match", + data={}, + normalized_data={}, + ) + request = self.factory.post("") + request.user = self.local_user + with patch("bookwyrm.importers.importer.import_item_task.delay") as mock: + views.retry_item(request, job.id, item.id) + self.assertEqual(mock.call_count, 1) From d546d9dce9e3df18c576cd4d34659e5a0ffa6204 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 10 Dec 2021 11:43:13 -0800 Subject: [PATCH 10/20] Changes spacing on import method --- bookwyrm/views/imports/import_data.py | 51 +++++++++++++-------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/bookwyrm/views/imports/import_data.py b/bookwyrm/views/imports/import_data.py index 7f6a4d13f..80386b3de 100644 --- a/bookwyrm/views/imports/import_data.py +++ b/bookwyrm/views/imports/import_data.py @@ -37,33 +37,32 @@ class Import(View): def post(self, request): """ingest a goodreads csv""" form = forms.ImportForm(request.POST, request.FILES) - if form.is_valid(): - include_reviews = request.POST.get("include_reviews") == "on" - privacy = request.POST.get("privacy") - source = request.POST.get("source") + if not form.is_valid(): + return HttpResponseBadRequest() - importer = None - if source == "LibraryThing": - importer = LibrarythingImporter() - elif source == "Storygraph": - importer = StorygraphImporter() - else: - # Default : Goodreads - importer = GoodreadsImporter() + include_reviews = request.POST.get("include_reviews") == "on" + privacy = request.POST.get("privacy") + source = request.POST.get("source") - try: - job = importer.create_job( - request.user, - TextIOWrapper( - request.FILES["csv_file"], encoding=importer.encoding - ), - include_reviews, - privacy, - ) - except (UnicodeDecodeError, ValueError, KeyError): - return HttpResponseBadRequest(_("Not a valid csv file")) + importer = None + if source == "LibraryThing": + importer = LibrarythingImporter() + elif source == "Storygraph": + importer = StorygraphImporter() + else: + # Default : Goodreads + importer = GoodreadsImporter() - importer.start_import(job) + try: + job = importer.create_job( + request.user, + TextIOWrapper(request.FILES["csv_file"], encoding=importer.encoding), + include_reviews, + privacy, + ) + except (UnicodeDecodeError, ValueError, KeyError): + return HttpResponseBadRequest(_("Not a valid csv file")) - return redirect(f"/import/{job.id}") - return HttpResponseBadRequest() + importer.start_import(job) + + return redirect(f"/import/{job.id}") From 3aebb54febf593550750f260dfbc899b87d5f171 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 10 Dec 2021 11:53:10 -0800 Subject: [PATCH 11/20] Adds remove member tests --- bookwyrm/tests/views/test_group.py | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/bookwyrm/tests/views/test_group.py b/bookwyrm/tests/views/test_group.py index 5bdd3a6c0..8b8825d5e 100644 --- a/bookwyrm/tests/views/test_group.py +++ b/bookwyrm/tests/views/test_group.py @@ -188,3 +188,44 @@ class GroupViews(TestCase): result = views.remove_member(request) # nothing happens self.assertEqual(result.status_code, 302) + + def test_remove_member_invited(self, _): + """remove an invited member""" + models.GroupMemberInvitation.objects.create( + user=self.rat, + group=self.testgroup, + ) + request = self.factory.post( + "", + { + "group": self.testgroup.id, + "user": self.rat.localname, + }, + ) + request.user = self.local_user + result = views.remove_member(request) + self.assertEqual(result.status_code, 302) + self.assertFalse(models.GroupMemberInvitation.objects.exists()) + + def test_remove_member_existing_member(self, _): + """remove an invited member""" + models.GroupMember.objects.create( + user=self.rat, + group=self.testgroup, + ) + request = self.factory.post( + "", + { + "group": self.testgroup.id, + "user": self.rat.localname, + }, + ) + request.user = self.local_user + result = views.remove_member(request) + self.assertEqual(result.status_code, 302) + self.assertEqual(models.GroupMember.objects.count(), 1) + self.assertEqual(models.GroupMember.objects.first().user, self.local_user) + notification = models.Notification.objects.get() + self.assertEqual(notification.user, self.rat) + self.assertEqual(notification.related_group, self.testgroup) + self.assertEqual(notification.notification_type, "REMOVE") From 08a8f37a0b18356e572cd3ae2d1f91001920e063 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 10 Dec 2021 12:02:57 -0800 Subject: [PATCH 12/20] Simpler error states for when model values aren't found --- bookwyrm/views/group.py | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/bookwyrm/views/group.py b/bookwyrm/views/group.py index 7e610630a..f375ac84f 100644 --- a/bookwyrm/views/group.py +++ b/bookwyrm/views/group.py @@ -256,18 +256,13 @@ def remove_member(request): @login_required def accept_membership(request): """accept an invitation to join a group""" - - group = models.Group.objects.get(id=request.POST["group"]) - if not group: - return HttpResponseBadRequest() - - invite = models.GroupMemberInvitation.objects.get(group=group, user=request.user) - if not invite: - return HttpResponseBadRequest() + group = get_object_or_404(models.Group, id=request.POST.get("group")) + invite = get_object_or_404( + models.GroupMemberInvitation, group=group, user=request.user + ) try: invite.accept() - except IntegrityError: pass @@ -278,19 +273,10 @@ def accept_membership(request): @login_required def reject_membership(request): """reject an invitation to join a group""" + group = get_object_or_404(models.Group, id=request.POST.get("group")) + invite = get_object_or_404( + models.GroupMemberInvitation, group=group, user=request.user + ) - group = models.Group.objects.get(id=request.POST["group"]) - if not group: - return HttpResponseBadRequest() - - invite = models.GroupMemberInvitation.objects.get(group=group, user=request.user) - if not invite: - return HttpResponseBadRequest() - - try: - invite.reject() - - except IntegrityError: - pass - + invite.reject() return redirect(request.user.local_path) From 73e09f8d187ce0fe33a231d8897f48ae78aa92b6 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 10 Dec 2021 12:03:18 -0800 Subject: [PATCH 13/20] Use transaction decorator on group accept --- bookwyrm/models/group.py | 41 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/bookwyrm/models/group.py b/bookwyrm/models/group.py index bd5b8d410..e92d333d5 100644 --- a/bookwyrm/models/group.py +++ b/bookwyrm/models/group.py @@ -150,31 +150,30 @@ class GroupMemberInvitation(models.Model): notification_type=notification_type, ) + @transaction.atomic def accept(self): """turn this request into the real deal""" + GroupMember.from_request(self) - with transaction.atomic(): - GroupMember.from_request(self) + model = apps.get_model("bookwyrm.Notification", require_ready=True) + # tell the group owner + model.objects.create( + user=self.group.user, + related_user=self.user, + related_group=self.group, + notification_type="ACCEPT", + ) - model = apps.get_model("bookwyrm.Notification", require_ready=True) - # tell the group owner - model.objects.create( - user=self.group.user, - related_user=self.user, - related_group=self.group, - notification_type="ACCEPT", - ) - - # let the other members know about it - for membership in self.group.memberships.all(): - member = membership.user - if member not in (self.user, self.group.user): - model.objects.create( - user=member, - related_user=self.user, - related_group=self.group, - notification_type="JOIN", - ) + # let the other members know about it + for membership in self.group.memberships.all(): + member = membership.user + if member not in (self.user, self.group.user): + model.objects.create( + user=member, + related_user=self.user, + related_group=self.group, + notification_type="JOIN", + ) def reject(self): """generate a Reject for this membership request""" From 5430e389d9904e862b8a71fc1f3ba3cc687e22e1 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 10 Dec 2021 12:03:32 -0800 Subject: [PATCH 14/20] Adds group accept and reject tests --- bookwyrm/tests/views/test_group.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/bookwyrm/tests/views/test_group.py b/bookwyrm/tests/views/test_group.py index 8b8825d5e..40f601f17 100644 --- a/bookwyrm/tests/views/test_group.py +++ b/bookwyrm/tests/views/test_group.py @@ -229,3 +229,30 @@ class GroupViews(TestCase): self.assertEqual(notification.user, self.rat) self.assertEqual(notification.related_group, self.testgroup) self.assertEqual(notification.notification_type, "REMOVE") + + def test_accept_membership(self, _): + """accept an invite""" + models.GroupMemberInvitation.objects.create( + user=self.rat, + group=self.testgroup, + ) + request = self.factory.post("", {"group": self.testgroup.id}) + request.user = self.rat + views.accept_membership(request) + + self.assertFalse(models.GroupMemberInvitation.objects.exists()) + self.assertTrue(self.rat in [m.user for m in self.testgroup.memberships.all()]) + + def test_reject_membership(self, _): + """reject an invite""" + models.GroupMemberInvitation.objects.create( + user=self.rat, + group=self.testgroup, + ) + request = self.factory.post("", {"group": self.testgroup.id}) + request.user = self.rat + views.reject_membership(request) + + self.testgroup.refresh_from_db() + self.assertFalse(models.GroupMemberInvitation.objects.exists()) + self.assertFalse(self.rat in [m.user for m in self.testgroup.memberships.all()]) From 00fdca681fe252b46f2eb9d8cb5baff7bb76962a Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 10 Dec 2021 12:16:33 -0800 Subject: [PATCH 15/20] Fixes retry test --- bookwyrm/tests/views/imports/test_import.py | 1 - 1 file changed, 1 deletion(-) diff --git a/bookwyrm/tests/views/imports/test_import.py b/bookwyrm/tests/views/imports/test_import.py index 42c6d8c9c..c1c5472f5 100644 --- a/bookwyrm/tests/views/imports/test_import.py +++ b/bookwyrm/tests/views/imports/test_import.py @@ -96,7 +96,6 @@ class ImportViews(TestCase): item = models.ImportItem.objects.create( index=0, job=job, - book_guess=self.book, fail_reason="no match", data={}, normalized_data={}, From cfd0d0d56a0f4858615730c37520f87d1077abe9 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 10 Dec 2021 12:30:18 -0800 Subject: [PATCH 16/20] Pylint changes for group model tests --- bookwyrm/tests/models/test_group.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/bookwyrm/tests/models/test_group.py b/bookwyrm/tests/models/test_group.py index 2dd3cee18..25bbaf424 100644 --- a/bookwyrm/tests/models/test_group.py +++ b/bookwyrm/tests/models/test_group.py @@ -2,7 +2,7 @@ from unittest.mock import patch from django.test import TestCase -from bookwyrm import models, settings +from bookwyrm import models @patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async") @@ -76,7 +76,8 @@ class Group(TestCase): models.GroupMember.objects.create(group=self.public_group, user=self.capybara) def test_group_members_can_see_private_groups(self, _): - """direct privacy group should not be excluded from group listings for group members viewing""" + """direct privacy group should not be excluded from group listings for group + members viewing""" rat_groups = models.Group.privacy_filter(self.rat).all() badger_groups = models.Group.privacy_filter(self.badger).all() @@ -85,7 +86,8 @@ class Group(TestCase): self.assertTrue(self.private_group in badger_groups) def test_group_members_can_see_followers_only_lists(self, _): - """follower-only group booklists should not be excluded from group booklist listing for group members who do not follower list owner""" + """follower-only group booklists should not be excluded from group booklist + listing for group members who do not follower list owner""" with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): followers_list = models.List.objects.create( @@ -105,7 +107,8 @@ class Group(TestCase): self.assertTrue(followers_list in capybara_lists) def test_group_members_can_see_private_lists(self, _): - """private group booklists should not be excluded from group booklist listing for group members""" + """private group booklists should not be excluded from group booklist listing + for group members""" with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): From a3d5acc70c5705c934521f20040e6cdab9581f92 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 10 Dec 2021 12:46:40 -0800 Subject: [PATCH 17/20] Model name in comment --- bookwyrm/models/group.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/models/group.py b/bookwyrm/models/group.py index e92d333d5..05ed39a27 100644 --- a/bookwyrm/models/group.py +++ b/bookwyrm/models/group.py @@ -73,7 +73,7 @@ class GroupMember(models.Model): ) ).exists(): raise IntegrityError() - # accepts and requests are handled by the GroupInvitation model + # accepts and requests are handled by the GroupMemberInvitation model super().save(*args, **kwargs) @classmethod From d28b22a361db02de835b2a020dadfdfeda407435 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 10 Dec 2021 13:15:46 -0800 Subject: [PATCH 18/20] Adds test for generated links in book model --- bookwyrm/tests/models/test_book_model.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/bookwyrm/tests/models/test_book_model.py b/bookwyrm/tests/models/test_book_model.py index cad00d43a..06d89ad3d 100644 --- a/bookwyrm/tests/models/test_book_model.py +++ b/bookwyrm/tests/models/test_book_model.py @@ -1,5 +1,7 @@ """ testing models """ from dateutil.parser import parse + +from imagekit.models import ImageSpecField from django.test import TestCase from django.utils import timezone @@ -26,11 +28,23 @@ class Book(TestCase): def test_remote_id(self): """fanciness with remote/origin ids""" - remote_id = "https://%s/book/%d" % (settings.DOMAIN, self.work.id) + remote_id = f"https://{settings.DOMAIN}/book/{self.work.id}" self.assertEqual(self.work.get_remote_id(), remote_id) self.assertEqual(self.work.remote_id, remote_id) - def test_create_book(self): + def test_generated_links(self): + """links produced from identifiers""" + book = models.Edition.objects.create( + title="ExEd", + parent_work=self.work, + openlibrary_key="OL123M", + inventaire_id="isbn:123", + ) + self.assertEqual(book.openlibrary_link, "https://openlibrary.org/books/OL213M") + self.assertEqual(book.inventaire_link, "https://inventaire.io/entity/isbn:123") + self.assertIsInstance(book.cover_bw_book_xsmall_webp, ImageSpecField) + + def test_create_book_invalid(self): """you shouldn't be able to create Books (only editions and works)""" self.assertRaises(ValueError, models.Book.objects.create, title="Invalid Book") From 3fb9d140ed36d51d5f86eb79ba298841edefdb55 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 10 Dec 2021 13:39:41 -0800 Subject: [PATCH 19/20] Fixes typo in test --- bookwyrm/tests/models/test_book_model.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/tests/models/test_book_model.py b/bookwyrm/tests/models/test_book_model.py index 06d89ad3d..3384e401a 100644 --- a/bookwyrm/tests/models/test_book_model.py +++ b/bookwyrm/tests/models/test_book_model.py @@ -40,7 +40,7 @@ class Book(TestCase): openlibrary_key="OL123M", inventaire_id="isbn:123", ) - self.assertEqual(book.openlibrary_link, "https://openlibrary.org/books/OL213M") + self.assertEqual(book.openlibrary_link, "https://openlibrary.org/books/OL123M") self.assertEqual(book.inventaire_link, "https://inventaire.io/entity/isbn:123") self.assertIsInstance(book.cover_bw_book_xsmall_webp, ImageSpecField) From 288c396c49056510f3bf773124d4ca4a0c1f1a93 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Fri, 10 Dec 2021 13:45:50 -0800 Subject: [PATCH 20/20] Removes test line --- bookwyrm/tests/models/test_book_model.py | 1 - 1 file changed, 1 deletion(-) diff --git a/bookwyrm/tests/models/test_book_model.py b/bookwyrm/tests/models/test_book_model.py index 3384e401a..d74fa4ca3 100644 --- a/bookwyrm/tests/models/test_book_model.py +++ b/bookwyrm/tests/models/test_book_model.py @@ -42,7 +42,6 @@ class Book(TestCase): ) self.assertEqual(book.openlibrary_link, "https://openlibrary.org/books/OL123M") self.assertEqual(book.inventaire_link, "https://inventaire.io/entity/isbn:123") - self.assertIsInstance(book.cover_bw_book_xsmall_webp, ImageSpecField) def test_create_book_invalid(self): """you shouldn't be able to create Books (only editions and works)"""