From cef46a1827258176cb2cde277291616c11f2fcdf Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 7 Oct 2021 16:53:39 -0700 Subject: [PATCH 001/170] Adds migration --- bookwyrm/forms.py | 3 + .../migrations/0107_auto_20211007_2253.py | 105 ++++++++++++++++++ bookwyrm/models/__init__.py | 1 + bookwyrm/models/book.py | 2 +- bookwyrm/models/link.py | 1 + bookwyrm/views/__init__.py | 1 - 6 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 bookwyrm/migrations/0107_auto_20211007_2253.py diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index c112186ae..25429fdac 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -195,6 +195,8 @@ class EditionForm(CustomForm): "shelves", "connector", "search_vector", + "links", + "file_links", ] @@ -207,6 +209,7 @@ class AuthorForm(CustomForm): "created_date", "updated_date", "search_vector", + "links", ] diff --git a/bookwyrm/migrations/0107_auto_20211007_2253.py b/bookwyrm/migrations/0107_auto_20211007_2253.py new file mode 100644 index 000000000..d5690e4fb --- /dev/null +++ b/bookwyrm/migrations/0107_auto_20211007_2253.py @@ -0,0 +1,105 @@ +# Generated by Django 3.2.5 on 2021-10-07 22:53 + +import bookwyrm.models.activitypub_mixin +import bookwyrm.models.fields +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0106_user_preferred_language"), + ] + + operations = [ + migrations.CreateModel( + name="Link", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("created_date", models.DateTimeField(auto_now_add=True)), + ("updated_date", models.DateTimeField(auto_now=True)), + ( + "remote_id", + bookwyrm.models.fields.RemoteIdField( + max_length=255, + null=True, + validators=[bookwyrm.models.fields.validate_remote_id], + ), + ), + ("url", bookwyrm.models.fields.CharField(max_length=255)), + ("name", bookwyrm.models.fields.CharField(max_length=255)), + ], + options={ + "abstract": False, + }, + bases=(bookwyrm.models.activitypub_mixin.CollectionItemMixin, models.Model), + ), + migrations.AlterField( + model_name="user", + name="preferred_language", + field=models.CharField( + blank=True, + choices=[ + ("en-us", "English"), + ("de-de", "Deutsch (German)"), + ("es", "Español (Spanish)"), + ("fr-fr", "Français (French)"), + ("zh-hans", "简体中文 (Simplified Chinese)"), + ("zh-hant", "繁體中文 (Traditional Chinese)"), + ], + max_length=255, + null=True, + ), + ), + migrations.CreateModel( + name="FileLink", + fields=[ + ( + "link_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="bookwyrm.link", + ), + ), + ("filetype", bookwyrm.models.fields.CharField(max_length=5)), + ( + "filetype_description", + bookwyrm.models.fields.CharField(max_length=100), + ), + ], + options={ + "abstract": False, + }, + bases=("bookwyrm.link",), + ), + migrations.AddField( + model_name="author", + name="links", + field=bookwyrm.models.fields.ManyToManyField(to="bookwyrm.Link"), + ), + migrations.AddField( + model_name="book", + name="links", + field=bookwyrm.models.fields.ManyToManyField(to="bookwyrm.Link"), + ), + migrations.AddField( + model_name="book", + name="file_links", + field=bookwyrm.models.fields.ManyToManyField( + related_name="editions", to="bookwyrm.FileLink" + ), + ), + ] diff --git a/bookwyrm/models/__init__.py b/bookwyrm/models/__init__.py index bffd62b45..6e7db5796 100644 --- a/bookwyrm/models/__init__.py +++ b/bookwyrm/models/__init__.py @@ -4,6 +4,7 @@ import sys from .book import Book, Work, Edition, BookDataModel from .author import Author +from .link import Link, FileLink from .connector import Connector from .shelf import Shelf, ShelfBook diff --git a/bookwyrm/models/book.py b/bookwyrm/models/book.py index 97969ccf0..8d0e72d40 100644 --- a/bookwyrm/models/book.py +++ b/bookwyrm/models/book.py @@ -105,7 +105,7 @@ class Book(BookDataModel): objects = InheritanceManager() field_tracker = FieldTracker(fields=["authors", "title", "subtitle", "cover"]) - file_links = fields.ManyToManyField("FileLink") + file_links = fields.ManyToManyField("FileLink", related_name="editions") if ENABLE_THUMBNAIL_GENERATION: cover_bw_book_xsmall_webp = ImageSpecField( diff --git a/bookwyrm/models/link.py b/bookwyrm/models/link.py index 47c65afd4..11ddfbde3 100644 --- a/bookwyrm/models/link.py +++ b/bookwyrm/models/link.py @@ -3,6 +3,7 @@ from .activitypub_mixin import CollectionItemMixin from .base_model import BookWyrmModel from . import fields + class Link(CollectionItemMixin, BookWyrmModel): """a link to a website""" diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index d664c6ff8..63c5c7686 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -48,7 +48,6 @@ from .isbn import Isbn from .landing import About, Home, Landing from .list import Lists, SavedLists, List, Curate, UserLists from .list import save_list, unsave_list, delete_list -from .link import Link, FileLink from .login import Login, Logout from .notifications import Notifications from .outbox import Outbox From c6bdc34499962bbacb1eb72550a8185a408a2549 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 15 Dec 2021 10:20:00 -0800 Subject: [PATCH 002/170] Updates migration --- ...007_2253.py => 0121_auto_20211215_1818.py} | 21 ++----------------- 1 file changed, 2 insertions(+), 19 deletions(-) rename bookwyrm/migrations/{0107_auto_20211007_2253.py => 0121_auto_20211215_1818.py} (79%) diff --git a/bookwyrm/migrations/0107_auto_20211007_2253.py b/bookwyrm/migrations/0121_auto_20211215_1818.py similarity index 79% rename from bookwyrm/migrations/0107_auto_20211007_2253.py rename to bookwyrm/migrations/0121_auto_20211215_1818.py index d5690e4fb..8b0221377 100644 --- a/bookwyrm/migrations/0107_auto_20211007_2253.py +++ b/bookwyrm/migrations/0121_auto_20211215_1818.py @@ -1,4 +1,4 @@ -# Generated by Django 3.2.5 on 2021-10-07 22:53 +# Generated by Django 3.2.5 on 2021-12-15 18:18 import bookwyrm.models.activitypub_mixin import bookwyrm.models.fields @@ -9,7 +9,7 @@ import django.db.models.deletion class Migration(migrations.Migration): dependencies = [ - ("bookwyrm", "0106_user_preferred_language"), + ("bookwyrm", "0120_list_embed_key"), ] operations = [ @@ -43,23 +43,6 @@ class Migration(migrations.Migration): }, bases=(bookwyrm.models.activitypub_mixin.CollectionItemMixin, models.Model), ), - migrations.AlterField( - model_name="user", - name="preferred_language", - field=models.CharField( - blank=True, - choices=[ - ("en-us", "English"), - ("de-de", "Deutsch (German)"), - ("es", "Español (Spanish)"), - ("fr-fr", "Français (French)"), - ("zh-hans", "简体中文 (Simplified Chinese)"), - ("zh-hant", "繁體中文 (Traditional Chinese)"), - ], - max_length=255, - null=True, - ), - ), migrations.CreateModel( name="FileLink", fields=[ From 40d1beee203d137a3134e9c88409afea34a9a12d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 15 Dec 2021 10:56:49 -0800 Subject: [PATCH 003/170] Adds links to activitypub spec --- bookwyrm/activitypub/book.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bookwyrm/activitypub/book.py b/bookwyrm/activitypub/book.py index d8599c4b3..2238e3a87 100644 --- a/bookwyrm/activitypub/book.py +++ b/bookwyrm/activitypub/book.py @@ -17,6 +17,8 @@ class BookData(ActivityObject): goodreadsKey: str = None bnfId: str = None lastEditedBy: str = None + links: List[str] = field(default_factory=lambda: []) + fileLinks: List[str] = field(default_factory=lambda: []) # pylint: disable=invalid-name From 1d6b200172e7fcf0648a83cedf311c5fe930dda8 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 15 Dec 2021 12:40:01 -0800 Subject: [PATCH 004/170] Modal to add link --- bookwyrm/templates/book/book.html | 19 +++++++++- bookwyrm/templates/book/file_links_modal.html | 37 +++++++++++++++++++ bookwyrm/views/__init__.py | 8 +++- bookwyrm/views/books/books.py | 22 ++++++++++- 4 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 bookwyrm/templates/book/file_links_modal.html diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 27d061a28..64daf3fa6 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -147,7 +147,7 @@ {% include 'snippets/toggle/open_button.html' with text=button_text controls_text="add_description" controls_uid=book.id focus="id_description" hide_active=True id="hide_description" %} diff --git a/bookwyrm/templates/book/file_links_modal.html b/bookwyrm/templates/book/file_links_modal.html new file mode 100644 index 000000000..a2f8d0cd6 --- /dev/null +++ b/bookwyrm/templates/book/file_links_modal.html @@ -0,0 +1,37 @@ +{% extends 'components/modal.html' %} +{% load i18n %} + +{% block modal-title %} +{% trans "Add file link" %} +{% endblock %} + +{% block modal-form-open %} + +{% endblock %} + +{% block modal-body %} +{% csrf_token %} +
+ + {{ file_link_form.name }} +
+ +
+
+ + +
+
+ + +
+
+ +{% endblock %} + +{% block modal-footer %} + +{% trans "Cancel" as button_text %} +{% include 'snippets/toggle/toggle_button.html' with text=button_text %} +{% endblock %} +{% block modal-form-close %}{% endblock %} diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index fb9db2105..71c300f7f 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -28,7 +28,13 @@ from .preferences.delete_user import DeleteUser from .preferences.block import Block, unblock # books -from .books.books import Book, upload_cover, add_description, resolve_book +from .books.books import ( + Book, + upload_cover, + add_description, + resolve_book, + add_file_link, +) from .books.books import update_book_from_remote from .books.edit_book import EditBook, ConfirmEditBook from .books.editions import Editions, switch_edition diff --git a/bookwyrm/views/books/books.py b/bookwyrm/views/books/books.py index 2d49ae30c..8edeffb3b 100644 --- a/bookwyrm/views/books/books.py +++ b/bookwyrm/views/books/books.py @@ -4,6 +4,7 @@ from uuid import uuid4 from django.contrib.auth.decorators import login_required, permission_required from django.core.files.base import ContentFile from django.core.paginator import Paginator +from django.db import transaction from django.db.models import Avg, Q from django.http import Http404 from django.shortcuts import get_object_or_404, redirect @@ -40,7 +41,7 @@ class Book(View): .filter(Q(id=book_id) | Q(parent_work__id=book_id)) .order_by("-edition_rank") .select_related("parent_work") - .prefetch_related("authors") + .prefetch_related("authors", "file_links") .first() ) @@ -84,6 +85,7 @@ class Book(View): } if request.user.is_authenticated: + data["file_link_form"] = forms.FileLinkForm() readthroughs = models.ReadThrough.objects.filter( user=request.user, book=book, @@ -194,3 +196,21 @@ def update_book_from_remote(request, book_id, connector_identifier): connector.update_book_from_remote(book) return redirect("book", book.id) + + +@login_required +@require_POST +@permission_required("bookwyrm.edit_book", raise_exception=True) +@transaction.atomic +def add_file_link(request, book_id): + """Add a link to a copy of the book you can read""" + book = get_object_or_404(models.Book.objects.select_subclasses(), id=book_id) + form = forms.FileLinkForm(request.POST) + if not form.is_valid(): + return redirect("book", book.id) + + link = form.save() + book.file_links.add(link) + book.last_edited_by = request.user + book.save() + return redirect("book", book.id) From 4f576b77a0073abcfe41b1934cdb6303ed1be53f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 15 Dec 2021 12:40:31 -0800 Subject: [PATCH 005/170] Use urlfield --- bookwyrm/forms.py | 6 ++++++ ...20211215_1818.py => 0121_auto_20211215_2038.py} | 10 +++------- bookwyrm/models/fields.py | 4 ++++ bookwyrm/models/link.py | 14 ++++++++++---- bookwyrm/templates/book/book.html | 5 ++++- bookwyrm/templates/book/file_links_modal.html | 2 +- bookwyrm/urls.py | 9 ++++++++- 7 files changed, 36 insertions(+), 14 deletions(-) rename bookwyrm/migrations/{0121_auto_20211215_1818.py => 0121_auto_20211215_2038.py} (87%) diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 05a6ce918..8c3785f8f 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -216,6 +216,12 @@ class CoverForm(CustomForm): help_texts = {f: None for f in fields} +class FileLinkForm(CustomForm): + class Meta: + model = models.FileLink + exclude = ["remote_id"] + + class EditionForm(CustomForm): class Meta: model = models.Edition diff --git a/bookwyrm/migrations/0121_auto_20211215_1818.py b/bookwyrm/migrations/0121_auto_20211215_2038.py similarity index 87% rename from bookwyrm/migrations/0121_auto_20211215_1818.py rename to bookwyrm/migrations/0121_auto_20211215_2038.py index 8b0221377..d55cb5fdd 100644 --- a/bookwyrm/migrations/0121_auto_20211215_1818.py +++ b/bookwyrm/migrations/0121_auto_20211215_2038.py @@ -1,4 +1,4 @@ -# Generated by Django 3.2.5 on 2021-12-15 18:18 +# Generated by Django 3.2.5 on 2021-12-15 20:38 import bookwyrm.models.activitypub_mixin import bookwyrm.models.fields @@ -35,13 +35,13 @@ class Migration(migrations.Migration): validators=[bookwyrm.models.fields.validate_remote_id], ), ), - ("url", bookwyrm.models.fields.CharField(max_length=255)), + ("url", bookwyrm.models.fields.URLField(max_length=255)), ("name", bookwyrm.models.fields.CharField(max_length=255)), ], options={ "abstract": False, }, - bases=(bookwyrm.models.activitypub_mixin.CollectionItemMixin, models.Model), + bases=(bookwyrm.models.activitypub_mixin.ActivitypubMixin, models.Model), ), migrations.CreateModel( name="FileLink", @@ -58,10 +58,6 @@ class Migration(migrations.Migration): ), ), ("filetype", bookwyrm.models.fields.CharField(max_length=5)), - ( - "filetype_description", - bookwyrm.models.fields.CharField(max_length=100), - ), ], options={ "abstract": False, diff --git a/bookwyrm/models/fields.py b/bookwyrm/models/fields.py index 7d14f88f9..397bced59 100644 --- a/bookwyrm/models/fields.py +++ b/bookwyrm/models/fields.py @@ -516,6 +516,10 @@ class CharField(ActivitypubFieldMixin, models.CharField): """activitypub-aware char field""" +class URLField(ActivitypubFieldMixin, models.URLField): + """activitypub-aware url field""" + + class TextField(ActivitypubFieldMixin, models.TextField): """activitypub-aware text field""" diff --git a/bookwyrm/models/link.py b/bookwyrm/models/link.py index 11ddfbde3..0a46c59c2 100644 --- a/bookwyrm/models/link.py +++ b/bookwyrm/models/link.py @@ -1,18 +1,24 @@ """ outlink data """ -from .activitypub_mixin import CollectionItemMixin +from .activitypub_mixin import ActivitypubMixin from .base_model import BookWyrmModel from . import fields -class Link(CollectionItemMixin, BookWyrmModel): +class Link(ActivitypubMixin, BookWyrmModel): """a link to a website""" - url = fields.CharField(max_length=255) + url = fields.URLField(max_length=255) name = fields.CharField(max_length=255) + def save(self, *args, **kwargs): + """create a link""" + # this is never broadcast, the owning model broadcasts an update + if "broadcast" in kwargs: + del kwargs["broadcast"] + return super().save(*args, **kwargs) + class FileLink(Link): """a link to a file""" filetype = fields.CharField(max_length=5) - filetype_description = fields.CharField(max_length=100) diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 64daf3fa6..6b96856a0 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -351,7 +351,10 @@ {% if book.file_links %} {% endif %} diff --git a/bookwyrm/templates/book/file_links_modal.html b/bookwyrm/templates/book/file_links_modal.html index a2f8d0cd6..5aca941c5 100644 --- a/bookwyrm/templates/book/file_links_modal.html +++ b/bookwyrm/templates/book/file_links_modal.html @@ -19,7 +19,7 @@
- +
diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 2829d2034..8ddf56e96 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -427,7 +427,14 @@ urlpatterns = [ re_path( r"^upload-cover/(?P\d+)/?$", views.upload_cover, name="upload-cover" ), - re_path(r"^add-description/(?P\d+)/?$", views.add_description), + re_path( + r"^add-description/(?P\d+)/?$", + views.add_description, + name="add-description", + ), + re_path( + r"^add-file-link/(?P\d+)/?$", views.add_file_link, name="add-file-link" + ), re_path(r"^resolve-book/?$", views.resolve_book, name="resolve-book"), re_path(r"^switch-edition/?$", views.switch_edition, name="switch-edition"), re_path( From cc3db31db9b53afc4522d9201c5cf0f628dfbf0b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 15 Dec 2021 13:11:49 -0800 Subject: [PATCH 006/170] Adds noscript fallback for links modal --- bookwyrm/templates/book/book.html | 5 +++-- ...e_links_modal.html => file_link_modal.html} | 4 ++-- bookwyrm/templates/book/file_link_page.html | 10 ++++++++++ bookwyrm/urls.py | 7 ++++++- bookwyrm/views/__init__.py | 2 +- bookwyrm/views/books/books.py | 18 ------------------ 6 files changed, 22 insertions(+), 24 deletions(-) rename bookwyrm/templates/book/{file_links_modal.html => file_link_modal.html} (88%) create mode 100644 bookwyrm/templates/book/file_link_page.html diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 6b96856a0..99bf8d70d 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -361,8 +361,9 @@ {% if can_edit_book %} {% trans "Add link to copy" as button_text %} - {% include 'snippets/toggle/toggle_button.html' with text=button_text controls_text="edit_file_links" controls_uid=book.id focus="modal_title_edit_file_links" class="is-small" icon_with_text="plus" %} - {% include 'book/file_links_modal.html' with book=book controls_text="edit_file_links" controls_uid=book.id %} + {% url 'file-link' book.id as fallback_url %} + {% include 'snippets/toggle/toggle_button.html' with text=button_text controls_text="edit_file_links" controls_uid=book.id focus="modal_title_edit_file_links" class="is-small" icon_with_text="plus" fallback_url=fallback_url %} + {% include 'book/file_link_modal.html' with book=book controls_text="edit_file_links" controls_uid=book.id %} {% endif %}
diff --git a/bookwyrm/templates/book/file_links_modal.html b/bookwyrm/templates/book/file_link_modal.html similarity index 88% rename from bookwyrm/templates/book/file_links_modal.html rename to bookwyrm/templates/book/file_link_modal.html index 5aca941c5..3870eb8e6 100644 --- a/bookwyrm/templates/book/file_links_modal.html +++ b/bookwyrm/templates/book/file_link_modal.html @@ -6,13 +6,13 @@ {% endblock %} {% block modal-form-open %} -
+ {% endblock %} {% block modal-body %} {% csrf_token %}
- + {{ file_link_form.name }}
diff --git a/bookwyrm/templates/book/file_link_page.html b/bookwyrm/templates/book/file_link_page.html new file mode 100644 index 000000000..ba1e61d0f --- /dev/null +++ b/bookwyrm/templates/book/file_link_page.html @@ -0,0 +1,10 @@ +{% extends 'layout.html' %} +{% load i18n %} + +{% block title %} +{% trans "File Links" %} +{% endblock %} + +{% block content %} +{% include "book/file_link_modal.html" with book=book active=True static=True %} +{% endblock %} diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 8ddf56e96..423094e3d 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -433,7 +433,12 @@ urlpatterns = [ name="add-description", ), re_path( - r"^add-file-link/(?P\d+)/?$", views.add_file_link, name="add-file-link" + rf"{BOOK_PATH}/file-link/?$", views.FileLink.as_view(), name="file-link" + ), + re_path( + rf"{BOOK_PATH}/file-link/(?P\d+)/?$", + views.FileLink.as_view(), + name="file-link" ), re_path(r"^resolve-book/?$", views.resolve_book, name="resolve-book"), re_path(r"^switch-edition/?$", views.switch_edition, name="switch-edition"), diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index 71c300f7f..b1de67be7 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -33,11 +33,11 @@ from .books.books import ( upload_cover, add_description, resolve_book, - add_file_link, ) from .books.books import update_book_from_remote from .books.edit_book import EditBook, ConfirmEditBook from .books.editions import Editions, switch_edition +from .books.links import FileLink # landing from .landing.landing import About, Home, Landing diff --git a/bookwyrm/views/books/books.py b/bookwyrm/views/books/books.py index 8edeffb3b..405a67c60 100644 --- a/bookwyrm/views/books/books.py +++ b/bookwyrm/views/books/books.py @@ -196,21 +196,3 @@ def update_book_from_remote(request, book_id, connector_identifier): connector.update_book_from_remote(book) return redirect("book", book.id) - - -@login_required -@require_POST -@permission_required("bookwyrm.edit_book", raise_exception=True) -@transaction.atomic -def add_file_link(request, book_id): - """Add a link to a copy of the book you can read""" - book = get_object_or_404(models.Book.objects.select_subclasses(), id=book_id) - form = forms.FileLinkForm(request.POST) - if not form.is_valid(): - return redirect("book", book.id) - - link = form.save() - book.file_links.add(link) - book.last_edited_by = request.user - book.save() - return redirect("book", book.id) From dcf5694b663b768758c5ffc581719d7e05064ed3 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 15 Dec 2021 13:15:51 -0800 Subject: [PATCH 007/170] Use class view --- bookwyrm/views/books/links.py | 43 +++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 bookwyrm/views/books/links.py diff --git a/bookwyrm/views/books/links.py b/bookwyrm/views/books/links.py new file mode 100644 index 000000000..722d0545a --- /dev/null +++ b/bookwyrm/views/books/links.py @@ -0,0 +1,43 @@ +""" the good stuff! the books! """ +from django.contrib.auth.decorators import login_required, permission_required +from django.db import transaction +from django.shortcuts import get_object_or_404, redirect +from django.template.response import TemplateResponse +from django.views import View +from django.utils.decorators import method_decorator + +from bookwyrm import forms, models + + +# pylint: disable=no-self-use +@method_decorator(login_required, name="dispatch") +@method_decorator( + permission_required("bookwyrm.edit_book", raise_exception=True), name="dispatch" +) +class FileLink(View): + """a book! this is the stuff""" + + def get(self, request, book_id, link_id=None): + """info about a book""" + book = get_object_or_404(models.Edition, id=book_id) + link = get_object_or_404(models.FileLink, id=link_id) if link_id else None + data = { + "file_link_form": forms.FileLinkForm(instance=link), + "book": book, + } + return TemplateResponse(request, "book/file_link_page.html", data) + + @transaction.atomic + def post(self, request, book_id): + """Add a link to a copy of the book you can read""" + book = get_object_or_404(models.Book.objects.select_subclasses(), id=book_id) + form = forms.FileLinkForm(request.POST) + if not form.is_valid(): + data = {"file_link_form": form, "book": book} + return TemplateResponse(request, "book/file_link_page.html", data) + + link = form.save() + book.file_links.add(link) + book.last_edited_by = request.user + book.save() + return redirect("book", book.id) From c8e038cd4e7fa3dffcce4a4f7011de86f4a69c42 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 15 Dec 2021 13:20:05 -0800 Subject: [PATCH 008/170] Adds form errors --- bookwyrm/templates/book/file_link_modal.html | 5 ++++- bookwyrm/views/books/links.py | 5 +++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/bookwyrm/templates/book/file_link_modal.html b/bookwyrm/templates/book/file_link_modal.html index 3870eb8e6..5ffe8ce80 100644 --- a/bookwyrm/templates/book/file_link_modal.html +++ b/bookwyrm/templates/book/file_link_modal.html @@ -14,16 +14,19 @@
{{ file_link_form.name }} + {% include 'snippets/form_errors.html' with errors_list=file_link_form.name.errors id="desc_name" %}
- + + {% include 'snippets/form_errors.html' with errors_list=file_link_form.url.errors id="desc_url" %}
+ {% include 'snippets/form_errors.html' with errors_list=file_link_form.filetype.errors id="desc_filetype" %}
diff --git a/bookwyrm/views/books/links.py b/bookwyrm/views/books/links.py index 722d0545a..949c807f5 100644 --- a/bookwyrm/views/books/links.py +++ b/bookwyrm/views/books/links.py @@ -28,10 +28,11 @@ class FileLink(View): return TemplateResponse(request, "book/file_link_page.html", data) @transaction.atomic - def post(self, request, book_id): + def post(self, request, book_id, link_id=None): """Add a link to a copy of the book you can read""" book = get_object_or_404(models.Book.objects.select_subclasses(), id=book_id) - form = forms.FileLinkForm(request.POST) + link = get_object_or_404(models.FileLink, id=link_id) if link_id else None + form = forms.FileLinkForm(request.POST, instance=link) if not form.is_valid(): data = {"file_link_form": form, "book": book} return TemplateResponse(request, "book/file_link_page.html", data) From 5ed5d5d2227408bdeb82fbbc01c0a99d36b5c60f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 15 Dec 2021 13:21:08 -0800 Subject: [PATCH 009/170] Don't show cancel button in static mode --- bookwyrm/templates/book/file_link_modal.html | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/book/file_link_modal.html b/bookwyrm/templates/book/file_link_modal.html index 5ffe8ce80..bb20960a6 100644 --- a/bookwyrm/templates/book/file_link_modal.html +++ b/bookwyrm/templates/book/file_link_modal.html @@ -34,7 +34,10 @@ {% block modal-footer %} -{% trans "Cancel" as button_text %} -{% include 'snippets/toggle/toggle_button.html' with text=button_text %} +{% if not static %} + {% trans "Cancel" as button_text %} + {% include 'snippets/toggle/toggle_button.html' with text=button_text %} +{% endif %} + {% endblock %} {% block modal-form-close %}{% endblock %} From d911e2c6db1cf8c7f8dec5b081aa533be483c650 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 15 Dec 2021 13:23:25 -0800 Subject: [PATCH 010/170] Cleans up sidebar html --- bookwyrm/templates/book/book.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 99bf8d70d..651f7b841 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -320,7 +320,7 @@

{% trans "Lists" %}

@@ -346,7 +346,7 @@ {% endif %} -
+

{% trans "Get a copy" %}

{% if book.file_links %}
    From 322bb909fc5181c058ad06f9aab8299eef0f0f5e Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 15 Dec 2021 13:35:10 -0800 Subject: [PATCH 011/170] Better mobile display --- bookwyrm/templates/book/book.html | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 651f7b841..b42648a71 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -291,7 +291,7 @@
-
+
{% if book.subjects %}

{% trans "Subjects" %}

@@ -316,7 +316,7 @@ {% endif %} {% if lists.exists or request.user.list_set.exists %} -
+

{% trans "Lists" %}

    {% for list in lists %} @@ -330,7 +330,7 @@
    -
    +
    {{ file_link_form.name }} diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index ee7b2b03c..c73436b06 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -432,9 +432,9 @@ urlpatterns = [ views.add_description, name="add-description", ), - re_path(rf"{BOOK_PATH}/file-link/?$", views.FileLink.as_view(), name="file-link"), + re_path(rf"{BOOK_PATH}/filelink/?$", views.FileLink.as_view(), name="file-link"), re_path( - rf"{BOOK_PATH}/file-link/(?P\d+)/?$", + rf"{BOOK_PATH}/filelink/(?P\d+)/?$", views.FileLink.as_view(), name="file-link", ), diff --git a/bookwyrm/views/books/links.py b/bookwyrm/views/books/links.py index 949c807f5..1b6818bae 100644 --- a/bookwyrm/views/books/links.py +++ b/bookwyrm/views/books/links.py @@ -7,6 +7,7 @@ from django.views import View from django.utils.decorators import method_decorator from bookwyrm import forms, models +from bookwyrm.activitypub import ActivitypubResponse # pylint: disable=no-self-use @@ -17,10 +18,13 @@ from bookwyrm import forms, models class FileLink(View): """a book! this is the stuff""" - def get(self, request, book_id, link_id=None): + def get(self, request, book_id=None, link_id=None): """info about a book""" - book = get_object_or_404(models.Edition, id=book_id) link = get_object_or_404(models.FileLink, id=link_id) if link_id else None + if not book_id: + return ActivitypubResponse(link.to_activity()) + + book = get_object_or_404(models.Edition, id=book_id) data = { "file_link_form": forms.FileLinkForm(instance=link), "book": book, From 5c99f142f9cf58f639c0bcbab95a3f01d3436942 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 15 Dec 2021 17:10:59 -0800 Subject: [PATCH 015/170] Serialize links for books --- bookwyrm/activitypub/base_activity.py | 48 ++++++++++++++++----------- bookwyrm/activitypub/person.py | 5 +++ bookwyrm/models/book.py | 7 +++- bookwyrm/models/link.py | 6 +++- bookwyrm/models/user.py | 9 +---- 5 files changed, 45 insertions(+), 30 deletions(-) diff --git a/bookwyrm/activitypub/base_activity.py b/bookwyrm/activitypub/base_activity.py index 7429dbe67..f1b3ad181 100644 --- a/bookwyrm/activitypub/base_activity.py +++ b/bookwyrm/activitypub/base_activity.py @@ -20,23 +20,6 @@ class ActivityEncoder(JSONEncoder): return o.__dict__ -@dataclass -class Link: - """for tagging a book in a status""" - - href: str - name: str - mediaType: str = None - type: str = "Link" - - -@dataclass -class Mention(Link): - """a subtype of Link for mentioning an actor""" - - type: str = "Mention" - - @dataclass # pylint: disable=invalid-name class Signature: @@ -199,8 +182,9 @@ class ActivityObject: ) return instance - def serialize(self): + def serialize(self, **kwargs): """convert to dictionary with context attr""" + omit = kwargs.get("omit", ()) data = self.__dict__.copy() # recursively serialize for (k, v) in data.items(): @@ -209,8 +193,9 @@ class ActivityObject: data[k] = v.serialize() except TypeError: pass - data = {k: v for (k, v) in data.items() if v is not None} - data["@context"] = "https://www.w3.org/ns/activitystreams" + data = {k: v for (k, v) in data.items() if v is not None and k not in omit} + if "@context" not in omit: + data["@context"] = "https://www.w3.org/ns/activitystreams" return data @@ -305,3 +290,26 @@ def resolve_remote_id( # if we're refreshing, "result" will be set and we'll update it return item.to_model(model=model, instance=result, save=save) + + +@dataclass(init=False) +class Link(ActivityObject): + """for tagging a book in a status""" + + href: str + name: str + mediaType: str = None + id: str = None + type: str = "Link" + + def serialize(self, **kwargs): + """remove fields""" + omit = ("id", "type", "@context") + return super().serialize(omit=omit) + + +@dataclass(init=False) +class Mention(Link): + """a subtype of Link for mentioning an actor""" + + type: str = "Mention" diff --git a/bookwyrm/activitypub/person.py b/bookwyrm/activitypub/person.py index 174ead616..576e7f9a6 100644 --- a/bookwyrm/activitypub/person.py +++ b/bookwyrm/activitypub/person.py @@ -15,6 +15,11 @@ class PublicKey(ActivityObject): publicKeyPem: str type: str = "PublicKey" + def serialize(self, **kwargs): + """remove fields""" + omit = ("type", "@context") + return super().serialize(omit=omit) + # pylint: disable=invalid-name @dataclass(init=False) diff --git a/bookwyrm/models/book.py b/bookwyrm/models/book.py index cb811a124..c850f78bd 100644 --- a/bookwyrm/models/book.py +++ b/bookwyrm/models/book.py @@ -234,7 +234,10 @@ class Work(OrderedCollectionPageMixin, Book): ) activity_serializer = activitypub.Work - serialize_reverse_fields = [("editions", "editions", "-edition_rank")] + serialize_reverse_fields = [ + ("editions", "editions", "-edition_rank"), + ("file_links", "fileLinks", "-created_date"), + ] deserialize_reverse_fields = [("editions", "editions"), ("file_links", "fileLinks")] @@ -289,6 +292,8 @@ class Edition(Book): activity_serializer = activitypub.Edition name_field = "title" + serialize_reverse_fields = [("file_links", "fileLinks", "-created_date")] + deserialize_reverse_fields = [("file_links", "fileLinks")] def get_rank(self): """calculate how complete the data is on this edition""" diff --git a/bookwyrm/models/link.py b/bookwyrm/models/link.py index 9c0d32222..8693775b5 100644 --- a/bookwyrm/models/link.py +++ b/bookwyrm/models/link.py @@ -23,11 +23,15 @@ class Link(ActivitypubMixin, BookWyrmModel): del kwargs["broadcast"] return super().save(*args, **kwargs) + def to_activity(self, omit=(), **kwargs): + """we don't need ALL the fields""" + return super().to_activity(omit=("@context", "id"), **kwargs) + class FileLink(Link): """a link to a file""" - book = fields.ForeignKey( + book = models.ForeignKey( "Book", on_delete=models.CASCADE, related_name="file_links", null=True ) filetype = fields.CharField(max_length=5, activitypub_field="mediaType") diff --git a/bookwyrm/models/user.py b/bookwyrm/models/user.py index 4d98f5c57..e13ccd038 100644 --- a/bookwyrm/models/user.py +++ b/bookwyrm/models/user.py @@ -344,6 +344,7 @@ class User(OrderedCollectionPageMixin, AbstractUser): def delete(self, *args, **kwargs): """deactivate rather than delete a user""" + # pylint: disable=attribute-defined-outside-init self.is_active = False # skip the logic in this class's save() super().save(*args, **kwargs) @@ -404,14 +405,6 @@ class KeyPair(ActivitypubMixin, BookWyrmModel): self.private_key, self.public_key = create_key_pair() return super().save(*args, **kwargs) - def to_activity(self, **kwargs): - """override default AP serializer to add context object - idk if this is the best way to go about this""" - activity_object = super().to_activity(**kwargs) - del activity_object["@context"] - del activity_object["type"] - return activity_object - class AnnualGoal(BookWyrmModel): """set a goal for how many books you read in a year""" From 0629fce17162880410b50f15a269809e6adbfa41 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 15 Dec 2021 17:25:20 -0800 Subject: [PATCH 016/170] Fixes post test --- bookwyrm/tests/views/books/test_links.py | 1 + 1 file changed, 1 insertion(+) diff --git a/bookwyrm/tests/views/books/test_links.py b/bookwyrm/tests/views/books/test_links.py index b6363848f..136a76066 100644 --- a/bookwyrm/tests/views/books/test_links.py +++ b/bookwyrm/tests/views/books/test_links.py @@ -66,6 +66,7 @@ class LinkViews(TestCase): form.data["name"] = "hi" form.data["url"] = "https://www.example.com" form.data["filetype"] = "HTML" + form.data["book"] = self.book.id request = self.factory.post("", form.data) request.user = self.local_user From 2f47284c775dcc93283d371538e3bcac47d5225d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 16 Dec 2021 09:12:00 -0800 Subject: [PATCH 017/170] Removes outdated code --- bookwyrm/forms.py | 2 +- bookwyrm/models/link.py | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 8c3785f8f..f031d85a5 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -219,7 +219,7 @@ class CoverForm(CustomForm): class FileLinkForm(CustomForm): class Meta: model = models.FileLink - exclude = ["remote_id"] + exclude = ["remote_id", "filetype"] class EditionForm(CustomForm): diff --git a/bookwyrm/models/link.py b/bookwyrm/models/link.py index 8693775b5..bc8f5ce3c 100644 --- a/bookwyrm/models/link.py +++ b/bookwyrm/models/link.py @@ -23,10 +23,6 @@ class Link(ActivitypubMixin, BookWyrmModel): del kwargs["broadcast"] return super().save(*args, **kwargs) - def to_activity(self, omit=(), **kwargs): - """we don't need ALL the fields""" - return super().to_activity(omit=("@context", "id"), **kwargs) - class FileLink(Link): """a link to a file""" From 400417c79f97600d25076e3e474d17ace2f918f6 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 16 Dec 2021 10:15:32 -0800 Subject: [PATCH 018/170] Fixes form --- bookwyrm/forms.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index f031d85a5..8c3785f8f 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -219,7 +219,7 @@ class CoverForm(CustomForm): class FileLinkForm(CustomForm): class Meta: model = models.FileLink - exclude = ["remote_id", "filetype"] + exclude = ["remote_id"] class EditionForm(CustomForm): From 5d47f339725749698f3932c220067bf96bcaa17f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 16 Dec 2021 10:29:08 -0800 Subject: [PATCH 019/170] Tick version number --- bookwyrm/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index e95ff96e2..5ea3b2c63 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -9,7 +9,7 @@ from django.utils.translation import gettext_lazy as _ env = Env() env.read_env() DOMAIN = env("DOMAIN") -VERSION = "0.1.0" +VERSION = "0.1.1" PAGE_LENGTH = env("PAGE_LENGTH", 15) DEFAULT_LANGUAGE = env("DEFAULT_LANGUAGE", "English") From e2d1c987b544e538f2dcdfe7ba897b792b1b7711 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 27 Dec 2021 12:41:27 -0800 Subject: [PATCH 020/170] Adds autocomplete scrip --- bookwyrm/static/js/autocomplete.js | 104 +++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 bookwyrm/static/js/autocomplete.js diff --git a/bookwyrm/static/js/autocomplete.js b/bookwyrm/static/js/autocomplete.js new file mode 100644 index 000000000..f75948078 --- /dev/null +++ b/bookwyrm/static/js/autocomplete.js @@ -0,0 +1,104 @@ +(function() { + 'use strict'; + + /** + * Suggest a completion as a user types + * + * Use `data-autocomplete=""`on the input field. + * specifying the trie to be used for autocomplete + * + * @example + * + * @param {Event} event + * @return {undefined} + */ + function autocomplete(event) { + const input = event.target; + + // Get suggestions + let suggestions = getSuggestions(input.value, mimetypeTrie); + + const boxId = input.id + "_suggestions"; + + // Create suggestion box, if needed + let suggestionsBox = document.getElementById(boxId); + + if (!suggestionsBox) { + suggestionsBox = document.createElement("ul"); + suggestionsBox.id = boxId; + suggestionsBox.classList.add("autocomplete-suggestions", "box"); + + input.insertAdjacentElement("afterend", suggestionsBox); + } + + // Clear existing suggestions + suggestionsBox.innerHTML = ""; + + // Populate suggestions box + suggestions.forEach(suggestion => { + const suggestionItem = document.createElement("li"); + + suggestionItem.textContent = suggestion; + suggestionsBox.appendChild(suggestionItem); + }); + } + + function getSuggestions(input, trie) { + // Follow the trie through the provided input + input.split("").forEach(letter => { + trie = trie[letter]; + + if (!trie) { + return; + } + }); + + if (!trie) { + return []; + } + + return searchTrie(input, trie); + } + + function searchTrie(output, trie) { + const options = Object.keys(trie); + + if (!options.length) { + return [output]; + } + + return options.map(option => { + const newTrie = trie[option]; + + if (!newTrie) { + return; + } + + return searchTrie(output + option, trie[option]); + }).reduce((prev, next) => prev.concat(next)); + } + + document + .querySelectorAll('[data-autocomplete]') + .forEach(input => { + input.addEventListener('input', autocomplete); + }); +})(); + +const mimetypeTrie = { + "p": { + "d": { + "f": { + "": {}, + "x": {}, + }, + }, + "n": { + "g": {} + }, + } +}; + From 3d07618b5fad61b44cad8b9a89055fe6ae45e9ce Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 27 Dec 2021 12:42:11 -0800 Subject: [PATCH 021/170] Styling for autocomplete box --- bookwyrm/static/css/bookwyrm.css | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bookwyrm/static/css/bookwyrm.css b/bookwyrm/static/css/bookwyrm.css index f385e6295..c98355c3e 100644 --- a/bookwyrm/static/css/bookwyrm.css +++ b/bookwyrm/static/css/bookwyrm.css @@ -410,6 +410,13 @@ summary::marker { right: 1em; } +/** Autocomplete suggestions + ******************************************************************************/ +.autocomplete-suggestions { + position: fixed; + z-index: 1; +} + /** Tooltips ******************************************************************************/ From 76694bb89127bae4aafaf422c2b8c407bb80f55d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 27 Dec 2021 12:42:24 -0800 Subject: [PATCH 022/170] Demo for file type --- bookwyrm/templates/book/file_link_modal.html | 3 ++- bookwyrm/templates/layout.html | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/bookwyrm/templates/book/file_link_modal.html b/bookwyrm/templates/book/file_link_modal.html index 6896fba81..87bda1a15 100644 --- a/bookwyrm/templates/book/file_link_modal.html +++ b/bookwyrm/templates/book/file_link_modal.html @@ -1,5 +1,6 @@ {% extends 'components/modal.html' %} {% load i18n %} +{% load static %} {% block modal-title %} {% trans "Add file link" %} @@ -26,7 +27,7 @@
    - + {% include 'snippets/form_errors.html' with errors_list=file_link_form.filetype.errors id="desc_filetype" %}
    diff --git a/bookwyrm/templates/layout.html b/bookwyrm/templates/layout.html index 25aaf1b6b..e41f661fe 100644 --- a/bookwyrm/templates/layout.html +++ b/bookwyrm/templates/layout.html @@ -265,6 +265,7 @@ + {% block scripts %}{% endblock %} From 2cca9fab2d880b6f16ae13d2923de89abe239270 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 8 Jan 2022 12:05:42 -0800 Subject: [PATCH 023/170] Cache user relationship for follow buttons --- .../templates/snippets/follow_button.html | 16 +++++++++---- bookwyrm/templatetags/interaction.py | 24 +++++++++++++++++++ 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/bookwyrm/templates/snippets/follow_button.html b/bookwyrm/templates/snippets/follow_button.html index f7025bbaa..0482bde0f 100644 --- a/bookwyrm/templates/snippets/follow_button.html +++ b/bookwyrm/templates/snippets/follow_button.html @@ -1,13 +1,18 @@ {% load i18n %} +{% load interaction %} {% if request.user == user or not request.user.is_authenticated %} -{% elif user in request.user.blocks.all %} +{# nothing to see here -- either it's yourself or your logged out #} +{% else %} + +{% get_relationship user as relationship %} +{% if relationship.is_blocked %} {% include 'snippets/block_button.html' with blocks=True %} {% else %}
    - -
    {% endif %}
    + +{% endif %} + {% endif %} diff --git a/bookwyrm/templatetags/interaction.py b/bookwyrm/templatetags/interaction.py index 90309aaf9..7aaaaca7e 100644 --- a/bookwyrm/templatetags/interaction.py +++ b/bookwyrm/templatetags/interaction.py @@ -32,3 +32,27 @@ def get_user_boosted(user, status): def get_user_saved_lists(user, book_list): """did the user save a list""" return user.saved_lists.filter(id=book_list.id).exists() + +@register.simple_tag(takes_context=True) +def get_relationship(context, user_object): + """caches the relationship between the logged in user and another user""" + user = context["request"].user + return cache.get(f"relationship-{user.id}-{user_object.id}") or cache.set( + get_relationship_name(user, user_object), + timeout=259200, + ) + +def get_relationship_name(user, user_object): + """returns the relationship type""" + types = { + "is_following": False, + "is_follow_pending": False, + "is_blocked": False, + } + if user_object in user.blocks.all(): + types["is_blocked"] = True + elif user_object in user.following.all(): + types["is_following"] = True + elif user_object in user.follower_requests.all(): + types["is_follow_pending"] = True + return types From f2f40cf3b9a53b3c2a7f4e506880daef8cbd1a84 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 8 Jan 2022 12:59:56 -0800 Subject: [PATCH 024/170] Creates custom get_or_set function --- bookwyrm/templatetags/interaction.py | 26 +++++++++++++++++--------- bookwyrm/utils/cache.py | 10 ++++++++++ 2 files changed, 27 insertions(+), 9 deletions(-) create mode 100644 bookwyrm/utils/cache.py diff --git a/bookwyrm/templatetags/interaction.py b/bookwyrm/templatetags/interaction.py index 7aaaaca7e..c9f08fb31 100644 --- a/bookwyrm/templatetags/interaction.py +++ b/bookwyrm/templatetags/interaction.py @@ -1,8 +1,8 @@ """ template filters for status interaction buttons """ from django import template -from django.core.cache import cache from bookwyrm import models +from bookwyrm.utils.cache import get_or_set register = template.Library() @@ -11,20 +11,23 @@ register = template.Library() @register.filter(name="liked") def get_user_liked(user, status): """did the given user fav a status?""" - return cache.get_or_set( + return get_or_set( f"fav-{user.id}-{status.id}", - models.Favorite.objects.filter(user=user, status=status).exists(), - 259200, + lambda u, s: models.Favorite.objects.filter(user=u, status=s).exists(), + user, + status, + timeout=259200 ) @register.filter(name="boosted") def get_user_boosted(user, status): """did the given user fav a status?""" - return cache.get_or_set( + return get_or_set( f"boost-{user.id}-{status.id}", - status.boosters.filter(user=user).exists(), - 259200, + lambda u: status.boosters.filter(user=u).exists(), + user, + timeout=259200, ) @@ -33,15 +36,20 @@ def get_user_saved_lists(user, book_list): """did the user save a list""" return user.saved_lists.filter(id=book_list.id).exists() + @register.simple_tag(takes_context=True) def get_relationship(context, user_object): """caches the relationship between the logged in user and another user""" user = context["request"].user - return cache.get(f"relationship-{user.id}-{user_object.id}") or cache.set( - get_relationship_name(user, user_object), + return get_or_set( + f"relationship-{user.id}-{user_object.id}", + get_relationship_name, + user, + user_object, timeout=259200, ) + def get_relationship_name(user, user_object): """returns the relationship type""" types = { diff --git a/bookwyrm/utils/cache.py b/bookwyrm/utils/cache.py new file mode 100644 index 000000000..2fca1264a --- /dev/null +++ b/bookwyrm/utils/cache.py @@ -0,0 +1,10 @@ +""" Custom handler for caching """ +from django.core.cache import cache + + +def get_or_set(cache_key, function, *args, timeout=None): + """Django's built-in get_or_set isn't cutting it""" + value = cache.get(cache_key) + if value is None: + cache.set(cache_key, function(*args), timeout=timeout) + return cache.get(cache_key) From c8220485092f8305e9825a84c6d866361a65aa9d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 8 Jan 2022 13:04:01 -0800 Subject: [PATCH 025/170] Invalidate template cache on relationship change --- bookwyrm/models/relationship.py | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/bookwyrm/models/relationship.py b/bookwyrm/models/relationship.py index 034174546..2b8f240db 100644 --- a/bookwyrm/models/relationship.py +++ b/bookwyrm/models/relationship.py @@ -1,7 +1,6 @@ """ defines relationships between users """ from django.apps import apps from django.core.cache import cache -from django.core.cache.utils import make_template_fragment_key from django.db import models, transaction, IntegrityError from django.db.models import Q @@ -41,15 +40,10 @@ class UserRelationship(BookWyrmModel): def save(self, *args, **kwargs): """clear the template cache""" # invalidate the template cache - cache_keys = [ - make_template_fragment_key( - "follow_button", [self.user_subject.id, self.user_object.id] - ), - make_template_fragment_key( - "follow_button", [self.user_object.id, self.user_subject.id] - ), - ] - cache.delete_many(cache_keys) + cache.delete_many([ + f"relationship-{self.user_subject.id}-{self.user_object.id}", + f"relationship-{self.user_object.id}-{self.user_subject.id}", + ]) super().save(*args, **kwargs) class Meta: From 82294909a8403e05e1d7b60407230f4ab956a588 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sat, 8 Jan 2022 16:38:52 -0800 Subject: [PATCH 026/170] Python formatting --- bookwyrm/models/readthrough.py | 2 ++ bookwyrm/models/relationship.py | 10 +++--- bookwyrm/templatetags/bookwyrm_tags.py | 45 +++++++++++++------------- bookwyrm/templatetags/interaction.py | 2 +- bookwyrm/views/reading.py | 14 ++++---- 5 files changed, 39 insertions(+), 34 deletions(-) diff --git a/bookwyrm/models/readthrough.py b/bookwyrm/models/readthrough.py index f75918ac1..ceb8e0b6e 100644 --- a/bookwyrm/models/readthrough.py +++ b/bookwyrm/models/readthrough.py @@ -1,5 +1,6 @@ """ progress in a book """ from django.core import validators +from django.core.cache import cache from django.db import models from django.db.models import F, Q @@ -30,6 +31,7 @@ class ReadThrough(BookWyrmModel): def save(self, *args, **kwargs): """update user active time""" + cache.delete(f"latest_read_through-{self.user.id}-{self.book.id}") self.user.update_active_date() # an active readthrough must have an unset finish date if self.finish_date: diff --git a/bookwyrm/models/relationship.py b/bookwyrm/models/relationship.py index 2b8f240db..e95c38fa5 100644 --- a/bookwyrm/models/relationship.py +++ b/bookwyrm/models/relationship.py @@ -40,10 +40,12 @@ class UserRelationship(BookWyrmModel): def save(self, *args, **kwargs): """clear the template cache""" # invalidate the template cache - cache.delete_many([ - f"relationship-{self.user_subject.id}-{self.user_object.id}", - f"relationship-{self.user_object.id}-{self.user_subject.id}", - ]) + cache.delete_many( + [ + f"relationship-{self.user_subject.id}-{self.user_object.id}", + f"relationship-{self.user_object.id}-{self.user_subject.id}", + ] + ) super().save(*args, **kwargs) class Meta: diff --git a/bookwyrm/templatetags/bookwyrm_tags.py b/bookwyrm/templatetags/bookwyrm_tags.py index f173e052c..22f4225b2 100644 --- a/bookwyrm/templatetags/bookwyrm_tags.py +++ b/bookwyrm/templatetags/bookwyrm_tags.py @@ -3,6 +3,7 @@ from django import template from django.db.models import Avg from bookwyrm import models +from bookwyrm.utils import cache from bookwyrm.views.feed import get_suggested_books @@ -79,35 +80,35 @@ def related_status(notification): @register.simple_tag(takes_context=True) def active_shelf(context, book): """check what shelf a user has a book on, if any""" - if hasattr(book, "current_shelves"): - read_shelves = [ - s - for s in book.current_shelves - if s.shelf.identifier in models.Shelf.READ_STATUS_IDENTIFIERS - ] - return read_shelves[0] if len(read_shelves) else {"book": book} - - shelf = ( - models.ShelfBook.objects.filter( - shelf__user=context["request"].user, - book__parent_work__editions=book, + user = context["request"].user + return cache.get_or_set( + f"active_shelf-{user.id}-{book.id}", + lambda u, b: ( + models.ShelfBook.objects.filter( + shelf__user=u, + book__parent_work__editions=b, + ).first() ) - .select_related("book", "shelf") - .first() + or {"book": book}, + user, + book, + timeout=15552000, ) - return shelf if shelf else {"book": book} @register.simple_tag(takes_context=False) def latest_read_through(book, user): """the most recent read activity""" - if hasattr(book, "active_readthroughs"): - return book.active_readthroughs[0] if len(book.active_readthroughs) else None - - return ( - models.ReadThrough.objects.filter(user=user, book=book, is_active=True) - .order_by("-start_date") - .first() + return cache.get_or_set( + f"latest_read_through-{user.id}-{book.id}", + lambda u, b: ( + models.ReadThrough.objects.filter(user=u, book=b, is_active=True) + .order_by("-start_date") + .first() + ), + user, + book, + timeout=15552000, ) diff --git a/bookwyrm/templatetags/interaction.py b/bookwyrm/templatetags/interaction.py index c9f08fb31..89a25420a 100644 --- a/bookwyrm/templatetags/interaction.py +++ b/bookwyrm/templatetags/interaction.py @@ -16,7 +16,7 @@ def get_user_liked(user, status): lambda u, s: models.Favorite.objects.filter(user=u, status=s).exists(), user, status, - timeout=259200 + timeout=259200, ) diff --git a/bookwyrm/views/reading.py b/bookwyrm/views/reading.py index c7eda10e1..77e527f39 100644 --- a/bookwyrm/views/reading.py +++ b/bookwyrm/views/reading.py @@ -1,7 +1,6 @@ """ the good stuff! the books! """ from django.contrib.auth.decorators import login_required from django.core.cache import cache -from django.core.cache.utils import make_template_fragment_key from django.db import transaction from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseNotFound from django.shortcuts import get_object_or_404, redirect @@ -46,12 +45,13 @@ class ReadingStatus(View): if not identifier: return HttpResponseBadRequest() - # invalidate the template cache - cache_keys = [ - make_template_fragment_key("shelve_button", [request.user.id, book_id]), - make_template_fragment_key("suggested_books", [request.user.id]), - ] - cache.delete_many(cache_keys) + # invalidate related caches + cache.delete_many( + [ + f"suggested_books-{request.user.id}", + f"active_shelf-{request.user.id}-{book_id}", + ] + ) desired_shelf = get_object_or_404( models.Shelf, identifier=identifier, user=request.user From 593d1638f969f0d872676a2ce3f294444896bc87 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 9 Jan 2022 12:04:45 -0800 Subject: [PATCH 027/170] Updates tests env --- pytest.ini | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pytest.ini b/pytest.ini index 9ef72449c..c5cdc35d1 100644 --- a/pytest.ini +++ b/pytest.ini @@ -6,13 +6,18 @@ markers = integration: marks tests as requiring external resources (deselect with '-m "not integration"') env = + SECRET_KEY = beepbeep DEBUG = false - USE_HTTPS=true + USE_HTTPS = true DOMAIN = your.domain.here BOOKWYRM_DATABASE_BACKEND = postgres MEDIA_ROOT = images/ CELERY_BROKER = "" REDIS_BROKER_PORT = 6379 + REDIS_BROKER_PASSWORD = beep + REDIS_ACTIVITY_PORT = 6379 + REDIS_ACTIVITY_PASSWORD = beep + USE_DUMMY_CACHE = true FLOWER_PORT = 8888 EMAIL_HOST = "smtp.mailgun.org" EMAIL_PORT = 587 @@ -20,4 +25,3 @@ env = EMAIL_HOST_PASSWORD = "" EMAIL_USE_TLS = true ENABLE_PREVIEW_IMAGES = false - USE_S3 = false From 556c9ea98fc8d7fd8e3c1afeab68cc3ee164a846 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 9 Jan 2022 12:16:01 -0800 Subject: [PATCH 028/170] Adjusts cache get_or_set to work with tests --- bookwyrm/utils/cache.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bookwyrm/utils/cache.py b/bookwyrm/utils/cache.py index 2fca1264a..aebb8e754 100644 --- a/bookwyrm/utils/cache.py +++ b/bookwyrm/utils/cache.py @@ -6,5 +6,6 @@ def get_or_set(cache_key, function, *args, timeout=None): """Django's built-in get_or_set isn't cutting it""" value = cache.get(cache_key) if value is None: - cache.set(cache_key, function(*args), timeout=timeout) - return cache.get(cache_key) + value = function(*args) + cache.set(cache_key, value, timeout=timeout) + return value From e8c830750a92c70f1bfca02caeceebc889d990d3 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 9 Jan 2022 13:00:02 -0800 Subject: [PATCH 029/170] No cache for suggested books --- bookwyrm/templates/landing/landing.html | 3 ++- bookwyrm/views/reading.py | 7 ++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/bookwyrm/templates/landing/landing.html b/bookwyrm/templates/landing/landing.html index 759e8c619..985a7c6db 100644 --- a/bookwyrm/templates/landing/landing.html +++ b/bookwyrm/templates/landing/landing.html @@ -7,7 +7,8 @@

    {% trans "Recent Books" %}

    -{% cache 60 * 60 %} +{% get_current_language as LANGUAGE_CODE %} +{% cache 60 * 60 LANGUAGE_CODE %}
    diff --git a/bookwyrm/views/reading.py b/bookwyrm/views/reading.py index 77e527f39..fd12dc0fe 100644 --- a/bookwyrm/views/reading.py +++ b/bookwyrm/views/reading.py @@ -46,11 +46,8 @@ class ReadingStatus(View): return HttpResponseBadRequest() # invalidate related caches - cache.delete_many( - [ - f"suggested_books-{request.user.id}", - f"active_shelf-{request.user.id}-{book_id}", - ] + cache.delete( + f"active_shelf-{request.user.id}-{book_id}", ) desired_shelf = get_object_or_404( From 0a182e81509694910d0d9aa3dde1cf3717f6a130 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 9 Jan 2022 13:04:41 -0800 Subject: [PATCH 030/170] Caches query for landing page books --- bookwyrm/templates/landing/landing.html | 3 +++ bookwyrm/templatetags/bookwyrm_tags.py | 18 ++++++++++++++++++ bookwyrm/views/admin/invite.py | 2 -- bookwyrm/views/helpers.py | 18 ------------------ bookwyrm/views/landing/landing.py | 2 -- 5 files changed, 21 insertions(+), 22 deletions(-) diff --git a/bookwyrm/templates/landing/landing.html b/bookwyrm/templates/landing/landing.html index 985a7c6db..c37717597 100644 --- a/bookwyrm/templates/landing/landing.html +++ b/bookwyrm/templates/landing/landing.html @@ -1,6 +1,8 @@ {% extends 'landing/layout.html' %} {% load i18n %} {% load cache %} +{% load bookwyrm_tags %} + {% block panel %}
    @@ -9,6 +11,7 @@ {% get_current_language as LANGUAGE_CODE %} {% cache 60 * 60 LANGUAGE_CODE %} +{% get_landing_books as books %}
    diff --git a/bookwyrm/templatetags/bookwyrm_tags.py b/bookwyrm/templatetags/bookwyrm_tags.py index 22f4225b2..68ba747dd 100644 --- a/bookwyrm/templatetags/bookwyrm_tags.py +++ b/bookwyrm/templatetags/bookwyrm_tags.py @@ -112,6 +112,24 @@ def latest_read_through(book, user): ) +@register.simple_tag(takes_context=False) +def get_landing_books(): + """list of books for the landing page""" + return list( + set( + models.Edition.objects.filter( + review__published_date__isnull=False, + review__deleted=False, + review__user__local=True, + review__privacy__in=["public", "unlisted"], + ) + .exclude(cover__exact="") + .distinct() + .order_by("-review__published_date")[:6] + ) + ) + + @register.simple_tag(takes_context=True) def mutuals_count(context, user): """how many users that you follow, follow them""" diff --git a/bookwyrm/views/admin/invite.py b/bookwyrm/views/admin/invite.py index 8fd68b705..322c5fcba 100644 --- a/bookwyrm/views/admin/invite.py +++ b/bookwyrm/views/admin/invite.py @@ -16,7 +16,6 @@ from django.views.decorators.http import require_POST from bookwyrm import emailing, forms, models from bookwyrm.settings import PAGE_LENGTH -from bookwyrm.views import helpers # pylint: disable= no-self-use @@ -174,7 +173,6 @@ class InviteRequest(View): data = { "request_form": form, "request_received": received, - "books": helpers.get_landing_books(), } return TemplateResponse(request, "landing/landing.html", data) diff --git a/bookwyrm/views/helpers.py b/bookwyrm/views/helpers.py index 8cc0aea81..74d867b66 100644 --- a/bookwyrm/views/helpers.py +++ b/bookwyrm/views/helpers.py @@ -153,24 +153,6 @@ def is_blocked(viewer, user): return False -def get_landing_books(): - """list of books for the landing page""" - - return list( - set( - models.Edition.objects.filter( - review__published_date__isnull=False, - review__deleted=False, - review__user__local=True, - review__privacy__in=["public", "unlisted"], - ) - .exclude(cover__exact="") - .distinct() - .order_by("-review__published_date")[:6] - ) - ) - - def load_date_in_user_tz_as_utc(date_str: str, user: models.User) -> datetime: """ensures that data is stored consistently in the UTC timezone""" if not date_str: diff --git a/bookwyrm/views/landing/landing.py b/bookwyrm/views/landing/landing.py index c8bba0664..4e9aba58a 100644 --- a/bookwyrm/views/landing/landing.py +++ b/bookwyrm/views/landing/landing.py @@ -3,7 +3,6 @@ from django.template.response import TemplateResponse from django.views import View from bookwyrm import forms -from bookwyrm.views import helpers from bookwyrm.views.feed import Feed @@ -36,6 +35,5 @@ class Landing(View): data = { "register_form": forms.RegisterForm(), "request_form": forms.InviteRequestForm(), - "books": helpers.get_landing_books(), } return TemplateResponse(request, "landing/landing.html", data) From bae355e8d2524825e6dba4be9f27ae85e9dd7c31 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 9 Jan 2022 13:19:29 -0800 Subject: [PATCH 031/170] Adds link domain table --- ...nk.py => 0126_filelink_link_linkdomain.py} | 48 +++++++++++++++++-- bookwyrm/models/link.py | 23 ++++++++- 2 files changed, 66 insertions(+), 5 deletions(-) rename bookwyrm/migrations/{0121_filelink_link.py => 0126_filelink_link_linkdomain.py} (58%) diff --git a/bookwyrm/migrations/0121_filelink_link.py b/bookwyrm/migrations/0126_filelink_link_linkdomain.py similarity index 58% rename from bookwyrm/migrations/0121_filelink_link.py rename to bookwyrm/migrations/0126_filelink_link_linkdomain.py index 716d56040..1235e81dc 100644 --- a/bookwyrm/migrations/0121_filelink_link.py +++ b/bookwyrm/migrations/0126_filelink_link_linkdomain.py @@ -1,4 +1,4 @@ -# Generated by Django 3.2.5 on 2021-12-16 00:20 +# Generated by Django 3.2.10 on 2022-01-09 21:16 import bookwyrm.models.activitypub_mixin import bookwyrm.models.fields @@ -9,7 +9,7 @@ import django.db.models.deletion class Migration(migrations.Migration): dependencies = [ - ("bookwyrm", "0120_list_embed_key"), + ("bookwyrm", "0125_alter_user_preferred_language"), ] operations = [ @@ -36,13 +36,53 @@ class Migration(migrations.Migration): ), ), ("url", bookwyrm.models.fields.URLField(max_length=255)), - ("name", bookwyrm.models.fields.CharField(max_length=255)), ], options={ "abstract": False, }, bases=(bookwyrm.models.activitypub_mixin.ActivitypubMixin, models.Model), ), + migrations.CreateModel( + name="LinkDomain", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("created_date", models.DateTimeField(auto_now_add=True)), + ("updated_date", models.DateTimeField(auto_now=True)), + ( + "remote_id", + bookwyrm.models.fields.RemoteIdField( + max_length=255, + null=True, + validators=[bookwyrm.models.fields.validate_remote_id], + ), + ), + ("domain", models.CharField(max_length=255)), + ( + "status", + models.CharField( + choices=[ + ("approved", "Approved"), + ("blocked", "Blocked"), + ("pending", "Pending"), + ], + default="pending", + max_length=50, + ), + ), + ("name", models.CharField(max_length=100)), + ], + options={ + "abstract": False, + }, + ), migrations.CreateModel( name="FileLink", fields=[ @@ -60,7 +100,7 @@ class Migration(migrations.Migration): ("filetype", bookwyrm.models.fields.CharField(max_length=5)), ( "book", - bookwyrm.models.fields.ForeignKey( + models.ForeignKey( null=True, on_delete=django.db.models.deletion.CASCADE, related_name="file_links", diff --git a/bookwyrm/models/link.py b/bookwyrm/models/link.py index bc8f5ce3c..12a5fae19 100644 --- a/bookwyrm/models/link.py +++ b/bookwyrm/models/link.py @@ -1,5 +1,6 @@ """ outlink data """ from django.db import models +from django.utils.translation import gettext_lazy as _ from bookwyrm import activitypub from .activitypub_mixin import ActivitypubMixin @@ -11,7 +12,6 @@ class Link(ActivitypubMixin, BookWyrmModel): """a link to a website""" url = fields.URLField(max_length=255, activitypub_field="href") - name = fields.CharField(max_length=255) activity_serializer = activitypub.Link reverse_unfurl = True @@ -31,3 +31,24 @@ class FileLink(Link): "Book", on_delete=models.CASCADE, related_name="file_links", null=True ) filetype = fields.CharField(max_length=5, activitypub_field="mediaType") + + +StatusChoices = [ + ("approved", _("Approved")), + ("blocked", _("Blocked")), + ("pending", _("Pending")), +] + + +class LinkDomain(BookWyrmModel): + """List of domains used in links""" + + domain = models.CharField(max_length=255) + status = models.CharField(max_length=50, choices=StatusChoices, default="pending") + name = models.CharField(max_length=100) + + def save(self, *args, **kwargs): + """set a default name""" + if not self.name: + self.name = self.domain + super().save(*args, **kwargs) From bae01e1ea59aaf9541b115c5087db6399a7b8d38 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 9 Jan 2022 13:27:47 -0800 Subject: [PATCH 032/170] Updates modal --- bookwyrm/templates/book/book.html | 11 ++++++++--- bookwyrm/templates/book/file_link_modal.html | 12 +++++------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 774b2b653..6467bb71a 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -389,9 +389,14 @@
    {% if can_edit_book %}
    - {% trans "Add link to copy" as button_text %} {% url 'file-link' book.id as fallback_url %} - {% include 'snippets/toggle/toggle_button.html' with text=button_text controls_text="edit_file_links" controls_uid=book.id focus="modal_title_edit_file_links" class="is-small" icon="plus" fallback_url=fallback_url %} +
    {% endif %} @@ -407,7 +412,7 @@ {% endif %} {% if can_edit_book %} - {% include 'book/file_link_modal.html' with book=book controls_text="edit_file_links" controls_uid=book.id %} + {% include 'book/file_link_modal.html' with book=book id="edit-links" %} {% endif %}
    diff --git a/bookwyrm/templates/book/file_link_modal.html b/bookwyrm/templates/book/file_link_modal.html index 6896fba81..04e215574 100644 --- a/bookwyrm/templates/book/file_link_modal.html +++ b/bookwyrm/templates/book/file_link_modal.html @@ -12,11 +12,10 @@ {% block modal-body %} {% csrf_token %} -
    - - {{ file_link_form.name }} - {% include 'snippets/form_errors.html' with errors_list=file_link_form.name.errors id="desc_name" %} -
    + +

    + {% trans "Links from unknown domains will need to be approved by a moderator before they are added." %} +

    @@ -36,8 +35,7 @@ {% block modal-footer %} {% if not static %} - {% trans "Cancel" as button_text %} - {% include 'snippets/toggle/toggle_button.html' with text=button_text %} + {% endif %} {% endblock %} From 63075a6fe92269c979f2e60fd1c5a03e24286405 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 9 Jan 2022 14:21:13 -0800 Subject: [PATCH 033/170] Updates models --- bookwyrm/forms.py | 2 +- .../0126_filelink_link_linkdomain.py | 93 ++++++++++--------- bookwyrm/models/__init__.py | 2 +- bookwyrm/models/link.py | 17 +++- bookwyrm/tests/models/test_link.py | 41 ++++++++ 5 files changed, 110 insertions(+), 45 deletions(-) create mode 100644 bookwyrm/tests/models/test_link.py diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 8c3785f8f..f73da6489 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -219,7 +219,7 @@ class CoverForm(CustomForm): class FileLinkForm(CustomForm): class Meta: model = models.FileLink - exclude = ["remote_id"] + fields = ["url", "filetype", "book"] class EditionForm(CustomForm): diff --git a/bookwyrm/migrations/0126_filelink_link_linkdomain.py b/bookwyrm/migrations/0126_filelink_link_linkdomain.py index 1235e81dc..52be86c5b 100644 --- a/bookwyrm/migrations/0126_filelink_link_linkdomain.py +++ b/bookwyrm/migrations/0126_filelink_link_linkdomain.py @@ -1,4 +1,4 @@ -# Generated by Django 3.2.10 on 2022-01-09 21:16 +# Generated by Django 3.2.10 on 2022-01-09 22:10 import bookwyrm.models.activitypub_mixin import bookwyrm.models.fields @@ -13,6 +13,47 @@ class Migration(migrations.Migration): ] operations = [ + migrations.CreateModel( + name="LinkDomain", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("created_date", models.DateTimeField(auto_now_add=True)), + ("updated_date", models.DateTimeField(auto_now=True)), + ( + "remote_id", + bookwyrm.models.fields.RemoteIdField( + max_length=255, + null=True, + validators=[bookwyrm.models.fields.validate_remote_id], + ), + ), + ("domain", models.CharField(max_length=255, unique=True)), + ( + "status", + models.CharField( + choices=[ + ("approved", "Approved"), + ("blocked", "Blocked"), + ("pending", "Pending"), + ], + default="pending", + max_length=50, + ), + ), + ("name", models.CharField(max_length=100)), + ], + options={ + "abstract": False, + }, + ), migrations.CreateModel( name="Link", fields=[ @@ -36,53 +77,21 @@ class Migration(migrations.Migration): ), ), ("url", bookwyrm.models.fields.URLField(max_length=255)), + ( + "domain", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.PROTECT, + to="bookwyrm.linkdomain", + ), + ), ], options={ "abstract": False, }, bases=(bookwyrm.models.activitypub_mixin.ActivitypubMixin, models.Model), ), - migrations.CreateModel( - name="LinkDomain", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("created_date", models.DateTimeField(auto_now_add=True)), - ("updated_date", models.DateTimeField(auto_now=True)), - ( - "remote_id", - bookwyrm.models.fields.RemoteIdField( - max_length=255, - null=True, - validators=[bookwyrm.models.fields.validate_remote_id], - ), - ), - ("domain", models.CharField(max_length=255)), - ( - "status", - models.CharField( - choices=[ - ("approved", "Approved"), - ("blocked", "Blocked"), - ("pending", "Pending"), - ], - default="pending", - max_length=50, - ), - ), - ("name", models.CharField(max_length=100)), - ], - options={ - "abstract": False, - }, - ), migrations.CreateModel( name="FileLink", fields=[ diff --git a/bookwyrm/models/__init__.py b/bookwyrm/models/__init__.py index 8063d5aa9..4c6305f99 100644 --- a/bookwyrm/models/__init__.py +++ b/bookwyrm/models/__init__.py @@ -4,7 +4,7 @@ import sys from .book import Book, Work, Edition, BookDataModel from .author import Author -from .link import Link, FileLink +from .link import Link, FileLink, LinkDomain from .connector import Connector from .shelf import Shelf, ShelfBook diff --git a/bookwyrm/models/link.py b/bookwyrm/models/link.py index 12a5fae19..e3c72b3f6 100644 --- a/bookwyrm/models/link.py +++ b/bookwyrm/models/link.py @@ -1,4 +1,6 @@ """ outlink data """ +from urllib.parse import urlparse + from django.db import models from django.utils.translation import gettext_lazy as _ @@ -12,12 +14,25 @@ class Link(ActivitypubMixin, BookWyrmModel): """a link to a website""" url = fields.URLField(max_length=255, activitypub_field="href") + domain = models.ForeignKey( + "LinkDomain", on_delete=models.PROTECT, null=True, blank=True + ) activity_serializer = activitypub.Link reverse_unfurl = True + @property + def name(self): + """link name via the assocaited domain""" + return self.domain.name + def save(self, *args, **kwargs): """create a link""" + # get or create the associated domain + if not self.domain: + domain = urlparse(self.url).netloc + self.domain, _ = LinkDomain.objects.get_or_create(domain=domain) + # this is never broadcast, the owning model broadcasts an update if "broadcast" in kwargs: del kwargs["broadcast"] @@ -43,7 +58,7 @@ StatusChoices = [ class LinkDomain(BookWyrmModel): """List of domains used in links""" - domain = models.CharField(max_length=255) + domain = models.CharField(max_length=255, unique=True) status = models.CharField(max_length=50, choices=StatusChoices, default="pending") name = models.CharField(max_length=100) diff --git a/bookwyrm/tests/models/test_link.py b/bookwyrm/tests/models/test_link.py new file mode 100644 index 000000000..8afecd6ce --- /dev/null +++ b/bookwyrm/tests/models/test_link.py @@ -0,0 +1,41 @@ +""" testing models """ +from unittest.mock import patch +from django.test import TestCase + +from bookwyrm import models + + +@patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async") +class Link(TestCase): + """some activitypub oddness ahead""" + + def setUp(self): + """look, a list""" + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ), patch("bookwyrm.lists_stream.populate_lists_task.delay"): + self.local_user = models.User.objects.create_user( + "mouse", "mouse@mouse.mouse", "mouseword", local=True, localname="mouse" + ) + work = models.Work.objects.create(title="hello") + self.book = models.Edition.objects.create(title="hi", parent_work=work) + + def test_create_domain(self, _): + """generated default name""" + domain = models.LinkDomain.objects.create(domain="beep.com") + self.assertEqual(domain.name, "beep.com") + self.assertEqual(domain.status, "pending") + + def test_create_link_new_domain(self, _): + """generates link and sets domain""" + link = models.Link.objects.create(url="https://www.hello.com/hi-there") + self.assertEqual(link.domain.domain, "www.hello.com") + self.assertEqual(link.name, "www.hello.com") + + def test_create_link_existing_domain(self, _): + """generate link with a known domain""" + domain = models.LinkDomain.objects.create(domain="www.hello.com", name="Hi") + + link = models.Link.objects.create(url="https://www.hello.com/hi-there") + self.assertEqual(link.domain, domain) + self.assertEqual(link.name, "Hi") From 70fe7e17afac1db7fb74144c6425b578deb406bd Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 9 Jan 2022 14:25:22 -0800 Subject: [PATCH 034/170] Removes name ap field --- bookwyrm/activitypub/base_activity.py | 1 - 1 file changed, 1 deletion(-) diff --git a/bookwyrm/activitypub/base_activity.py b/bookwyrm/activitypub/base_activity.py index f1b3ad181..90f7b0a53 100644 --- a/bookwyrm/activitypub/base_activity.py +++ b/bookwyrm/activitypub/base_activity.py @@ -297,7 +297,6 @@ class Link(ActivityObject): """for tagging a book in a status""" href: str - name: str mediaType: str = None id: str = None type: str = "Link" From aa9864a21ecb9b5f98f6baf47dd3e96134d1ce22 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 9 Jan 2022 20:30:23 -0800 Subject: [PATCH 035/170] Only show approved links --- .../0126_filelink_link_linkdomain.py | 2 +- bookwyrm/models/link.py | 2 +- bookwyrm/templates/book/book.html | 32 +---------------- bookwyrm/templates/book/links.html | 34 +++++++++++++++++++ bookwyrm/templatetags/bookwyrm_tags.py | 6 ++++ bookwyrm/tests/views/books/test_links.py | 3 +- 6 files changed, 44 insertions(+), 35 deletions(-) create mode 100644 bookwyrm/templates/book/links.html diff --git a/bookwyrm/migrations/0126_filelink_link_linkdomain.py b/bookwyrm/migrations/0126_filelink_link_linkdomain.py index 52be86c5b..bd261102e 100644 --- a/bookwyrm/migrations/0126_filelink_link_linkdomain.py +++ b/bookwyrm/migrations/0126_filelink_link_linkdomain.py @@ -82,7 +82,7 @@ class Migration(migrations.Migration): models.ForeignKey( blank=True, null=True, - on_delete=django.db.models.deletion.PROTECT, + on_delete=django.db.models.deletion.CASCADE, to="bookwyrm.linkdomain", ), ), diff --git a/bookwyrm/models/link.py b/bookwyrm/models/link.py index e3c72b3f6..f2b4108b6 100644 --- a/bookwyrm/models/link.py +++ b/bookwyrm/models/link.py @@ -15,7 +15,7 @@ class Link(ActivitypubMixin, BookWyrmModel): url = fields.URLField(max_length=255, activitypub_field="href") domain = models.ForeignKey( - "LinkDomain", on_delete=models.PROTECT, null=True, blank=True + "LinkDomain", on_delete=models.CASCADE, null=True, blank=True ) activity_serializer = activitypub.Link diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 6467bb71a..1060f0381 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -383,37 +383,7 @@ {% endif %}
    -
    -
    -

    {% trans "Get a copy" %}

    -
    - {% if can_edit_book %} -
    - {% url 'file-link' book.id as fallback_url %} - -
    - {% endif %} -
    - {% if book.file_links %} -
      - {% for link in book.file_links.all %} -
    • - {{ link.name }} - ({{ link.filetype }}) -
    • - {% endfor %} -
    - {% endif %} - - {% if can_edit_book %} - {% include 'book/file_link_modal.html' with book=book id="edit-links" %} - {% endif %} + {% include "book/links.html" %}
    diff --git a/bookwyrm/templates/book/links.html b/bookwyrm/templates/book/links.html new file mode 100644 index 000000000..6bce3c9ba --- /dev/null +++ b/bookwyrm/templates/book/links.html @@ -0,0 +1,34 @@ +{% load i18n %} +{% load bookwyrm_tags %} +{% get_book_file_links book as links %} +
    +
    +

    {% trans "Get a copy" %}

    +
    + {% if can_edit_book %} +
    + {% url 'file-link' book.id as fallback_url %} + +
    + {% endif %} +
    +{% if links %} +
      + {% for link in links.all %} +
    • + {{ link.name }} + ({{ link.filetype }}) +
    • + {% endfor %} +
    +{% endif %} + +{% if can_edit_book %} +{% include 'book/file_link_modal.html' with book=book id="edit-links" %} +{% endif %} diff --git a/bookwyrm/templatetags/bookwyrm_tags.py b/bookwyrm/templatetags/bookwyrm_tags.py index f24219d25..c6781f5af 100644 --- a/bookwyrm/templatetags/bookwyrm_tags.py +++ b/bookwyrm/templatetags/bookwyrm_tags.py @@ -177,3 +177,9 @@ def suggested_books(context): # this happens here instead of in the view so that the template snippet can # be cached in the template return get_suggested_books(context["request"].user) + + +@register.simple_tag(takes_context=False) +def get_book_file_links(book): + """links for a book""" + return book.file_links.filter(domain__status="approved") diff --git a/bookwyrm/tests/views/books/test_links.py b/bookwyrm/tests/views/books/test_links.py index 136a76066..1214e0e2e 100644 --- a/bookwyrm/tests/views/books/test_links.py +++ b/bookwyrm/tests/views/books/test_links.py @@ -63,7 +63,6 @@ class LinkViews(TestCase): """there are so many views, this just makes sure it LOADS""" view = views.FileLink.as_view() form = forms.FileLinkForm() - form.data["name"] = "hi" form.data["url"] = "https://www.example.com" form.data["filetype"] = "HTML" form.data["book"] = self.book.id @@ -81,7 +80,7 @@ class LinkViews(TestCase): self.assertEqual(activity["object"]["type"], "Edition") link = models.FileLink.objects.get() - self.assertEqual(link.name, "hi") + self.assertEqual(link.name, "www.example.com") self.assertEqual(link.url, "https://www.example.com") self.assertEqual(link.filetype, "HTML") From 0bfa15bb47cc6f87fc27217b04460225e6cfe1a7 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Sun, 9 Jan 2022 20:48:16 -0800 Subject: [PATCH 036/170] Adds id on static link edit view --- bookwyrm/templates/book/file_link_page.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/book/file_link_page.html b/bookwyrm/templates/book/file_link_page.html index ba1e61d0f..26a8d89d3 100644 --- a/bookwyrm/templates/book/file_link_page.html +++ b/bookwyrm/templates/book/file_link_page.html @@ -6,5 +6,5 @@ {% endblock %} {% block content %} -{% include "book/file_link_modal.html" with book=book active=True static=True %} +{% include "book/file_link_modal.html" with book=book active=True static=True id="file-link" %} {% endblock %} From af3c84cd8741334e723d09a895bf6576143deac1 Mon Sep 17 00:00:00 2001 From: Joel Bradshaw Date: Mon, 10 Jan 2022 06:43:43 +0000 Subject: [PATCH 037/170] Add basic logging config --- bookwyrm/settings.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index fe2f7467a..d56b569de 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -106,6 +106,27 @@ TEMPLATES = [ }, ] +LOGGING = { + 'version': 1, + 'disable_existing_loggers': False, + 'handlers': { + 'console': { + 'class': 'logging.StreamHandler', + }, + }, + 'root': { + 'handlers': ['console'], + 'level': 'WARNING', + }, + 'loggers': { + 'django': { + 'handlers': ['console'], + 'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'), + 'propagate': False, + }, + }, +} + WSGI_APPLICATION = "bookwyrm.wsgi.application" From 83851c29338ac269fefa7bc8971116e70b583e88 Mon Sep 17 00:00:00 2001 From: Joel Bradshaw Date: Mon, 10 Jan 2022 06:45:14 +0000 Subject: [PATCH 038/170] Add bookwyrm-specific logging --- bookwyrm/settings.py | 4 ++++ bookwyrm/views/inbox.py | 15 ++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index d56b569de..31ad75d8f 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -124,6 +124,10 @@ LOGGING = { 'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'), 'propagate': False, }, + 'bookwyrm': { + 'handlers': ['console'], + 'level': os.getenv('LOG_LEVEL', 'DEBUG' if DEBUG else 'INFO').upper(), + } }, } diff --git a/bookwyrm/views/inbox.py b/bookwyrm/views/inbox.py index 239824958..514cb685b 100644 --- a/bookwyrm/views/inbox.py +++ b/bookwyrm/views/inbox.py @@ -10,12 +10,14 @@ from django.utils.decorators import method_decorator from django.views import View from django.views.decorators.csrf import csrf_exempt import requests +import logging from bookwyrm import activitypub, models from bookwyrm.tasks import app from bookwyrm.signatures import Signature from bookwyrm.utils import regex +logger = logging.getLogger(__name__) @method_decorator(csrf_exempt, name="dispatch") # pylint: disable=no-self-use @@ -71,6 +73,7 @@ def raise_is_blocked_user_agent(request): return url = url.group() if models.FederatedServer.is_blocked(url): + logger.debug(f"{url} is blocked, denying request based on user agent") raise PermissionDenied() @@ -78,16 +81,18 @@ def raise_is_blocked_activity(activity_json): """get the sender out of activity json and check if it's blocked""" actor = activity_json.get("actor") - # check if the user is banned/deleted - existing = models.User.find_existing_by_remote_id(actor) - if existing and existing.deleted: - raise PermissionDenied() - if not actor: # well I guess it's not even a valid activity so who knows return + # check if the user is banned/deleted + existing = models.User.find_existing_by_remote_id(actor) + if existing and existing.deleted: + logger.debug(f"{actor} is banned/deleted, denying request based on actor") + raise PermissionDenied() + if models.FederatedServer.is_blocked(actor): + logger.debug(f"{actor} is blocked, denying request based on actor") raise PermissionDenied() From 085dd24a62df7f08608fea096dcfe198079f4c72 Mon Sep 17 00:00:00 2001 From: Joel Bradshaw Date: Sun, 9 Jan 2022 23:26:27 -0800 Subject: [PATCH 039/170] Simplify and explain our overrides This should also fix the 500s-in-prod issue, yay --- bookwyrm/settings.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 31ad75d8f..a3b0d48d6 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -106,27 +106,30 @@ TEMPLATES = [ }, ] +LOG_LEVEL = env('LOG_LEVEL', 'INFO').upper() +# Override aspects of the default handler to our taste +# See https://docs.djangoproject.com/en/3.2/topics/logging/#default-logging-configuration +# for a reference to the defaults we're overriding LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { + # Overrides the default handler, which does not log in prod 'console': { + 'level': LOG_LEVEL, 'class': 'logging.StreamHandler', }, }, - 'root': { - 'handlers': ['console'], - 'level': 'WARNING', - }, 'loggers': { + # Override the log level for the default logger 'django': { - 'handlers': ['console'], - 'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'), - 'propagate': False, + 'handlers': ['console', 'mail_admins'], + 'level': LOG_LEVEL, }, + # Add a bookwyrm-specific logger 'bookwyrm': { 'handlers': ['console'], - 'level': os.getenv('LOG_LEVEL', 'DEBUG' if DEBUG else 'INFO').upper(), + 'level': LOG_LEVEL, } }, } From 5cf1d8a30a50b67a15f1110538238b63eb114283 Mon Sep 17 00:00:00 2001 From: Joel Bradshaw Date: Sun, 9 Jan 2022 23:53:23 -0800 Subject: [PATCH 040/170] Make it black --- bookwyrm/settings.py | 30 +++++++++++++++--------------- bookwyrm/views/inbox.py | 1 + 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index a3b0d48d6..57a49df0b 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -106,31 +106,31 @@ TEMPLATES = [ }, ] -LOG_LEVEL = env('LOG_LEVEL', 'INFO').upper() +LOG_LEVEL = env("LOG_LEVEL", "INFO").upper() # Override aspects of the default handler to our taste # See https://docs.djangoproject.com/en/3.2/topics/logging/#default-logging-configuration # for a reference to the defaults we're overriding LOGGING = { - 'version': 1, - 'disable_existing_loggers': False, - 'handlers': { + "version": 1, + "disable_existing_loggers": False, + "handlers": { # Overrides the default handler, which does not log in prod - 'console': { - 'level': LOG_LEVEL, - 'class': 'logging.StreamHandler', + "console": { + "level": LOG_LEVEL, + "class": "logging.StreamHandler", }, }, - 'loggers': { + "loggers": { # Override the log level for the default logger - 'django': { - 'handlers': ['console', 'mail_admins'], - 'level': LOG_LEVEL, + "django": { + "handlers": ["console", "mail_admins"], + "level": LOG_LEVEL, }, # Add a bookwyrm-specific logger - 'bookwyrm': { - 'handlers': ['console'], - 'level': LOG_LEVEL, - } + "bookwyrm": { + "handlers": ["console"], + "level": LOG_LEVEL, + }, }, } diff --git a/bookwyrm/views/inbox.py b/bookwyrm/views/inbox.py index 514cb685b..1d2c303b4 100644 --- a/bookwyrm/views/inbox.py +++ b/bookwyrm/views/inbox.py @@ -19,6 +19,7 @@ from bookwyrm.utils import regex logger = logging.getLogger(__name__) + @method_decorator(csrf_exempt, name="dispatch") # pylint: disable=no-self-use class Inbox(View): From 32e3fdb438a2cfd66aa596b47ae43575c04dc214 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 10:11:00 -0800 Subject: [PATCH 041/170] Adds admin view --- bookwyrm/activitypub/base_activity.py | 1 + .../0126_filelink_link_linkdomain.py | 1 + bookwyrm/models/link.py | 2 +- bookwyrm/templates/settings/layout.html | 4 + .../settings/link_domains/link_domains.html | 95 +++++++++++++++++++ bookwyrm/urls.py | 10 +- bookwyrm/views/__init__.py | 1 + bookwyrm/views/admin/link_domains.py | 32 +++++++ 8 files changed, 140 insertions(+), 6 deletions(-) create mode 100644 bookwyrm/templates/settings/link_domains/link_domains.html create mode 100644 bookwyrm/views/admin/link_domains.py diff --git a/bookwyrm/activitypub/base_activity.py b/bookwyrm/activitypub/base_activity.py index 90f7b0a53..f1b3ad181 100644 --- a/bookwyrm/activitypub/base_activity.py +++ b/bookwyrm/activitypub/base_activity.py @@ -297,6 +297,7 @@ class Link(ActivityObject): """for tagging a book in a status""" href: str + name: str mediaType: str = None id: str = None type: str = "Link" diff --git a/bookwyrm/migrations/0126_filelink_link_linkdomain.py b/bookwyrm/migrations/0126_filelink_link_linkdomain.py index bd261102e..98d71cc26 100644 --- a/bookwyrm/migrations/0126_filelink_link_linkdomain.py +++ b/bookwyrm/migrations/0126_filelink_link_linkdomain.py @@ -83,6 +83,7 @@ class Migration(migrations.Migration): blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, + related_name="links", to="bookwyrm.linkdomain", ), ), diff --git a/bookwyrm/models/link.py b/bookwyrm/models/link.py index f2b4108b6..41760cc21 100644 --- a/bookwyrm/models/link.py +++ b/bookwyrm/models/link.py @@ -15,7 +15,7 @@ class Link(ActivitypubMixin, BookWyrmModel): url = fields.URLField(max_length=255, activitypub_field="href") domain = models.ForeignKey( - "LinkDomain", on_delete=models.CASCADE, null=True, blank=True + "LinkDomain", on_delete=models.CASCADE, null=True, blank=True, related_name="links" ) activity_serializer = activitypub.Link diff --git a/bookwyrm/templates/settings/layout.html b/bookwyrm/templates/settings/layout.html index d7a840af5..200164ba3 100644 --- a/bookwyrm/templates/settings/layout.html +++ b/bookwyrm/templates/settings/layout.html @@ -62,6 +62,10 @@ {% url 'settings-ip-blocks' as url %} {% trans "IP Address Blocklist" %} +
  • + {% url 'settings-link-domain' status='pending' as url %} + {% trans "Link Domains" %} +
{% endif %} {% if perms.bookwyrm.edit_instance_settings %} diff --git a/bookwyrm/templates/settings/link_domains/link_domains.html b/bookwyrm/templates/settings/link_domains/link_domains.html new file mode 100644 index 000000000..555a81a11 --- /dev/null +++ b/bookwyrm/templates/settings/link_domains/link_domains.html @@ -0,0 +1,95 @@ +{% extends 'settings/layout.html' %} +{% load humanize %} +{% load i18n %} + +{% block title %}{% trans "Link Domains" %}{% endblock %} + +{% block header %}{% trans "Link Domains" %}{% endblock %} + +{% block panel %} +

+ {% trans "Link domains must be approved before they are shown on book pages. Please make sure that the domains are not hosting spam, malicious code, or deceptive links before approving." %} +

+ +
+
+ +
+ + {% for domain in domains %} +
+
+
+

+ {{ domain.name }} + ({{ domain.domain }}) +

+
+
+ {% trans "Set name" as button_text %} + {% include 'snippets/toggle/open_button.html' with text=button_text icon_with_text="pencil" controls_text="edit_domain" controls_uid=domain.id focus="id_description" %} +
+
+
+
+ + + {% trans "View links" %} + ({{ domain.links.count }}) + + + + +
    + {% for link in domain.links.all|slice:10 %} +
  • + {{ link.url }} + {% if link.filelink.filetype %} + ({{ link.filelink.filetype }}) + {% endif %} +
  • + {% endfor %} +
+
+
+ + + {% csrf_token %} +
+
+ +
+
+ +
+
+ +
+ {% endfor %} + + {% if not domains.exists %} + {% if status == "approved" %} + {% trans "No domains currently approved" %} + {% elif status == "pending" %} + {% trans "No domains currently pending" %} + {% else %} + {% trans "No domains currently blocked" %} + {% endif %} + {% endif %} +
+ +{% endblock %} + diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 397a8a414..61ff7ffaa 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -96,11 +96,6 @@ urlpatterns = [ re_path( r"^settings/users/?$", views.UserAdminList.as_view(), name="settings-users" ), - re_path( - r"^settings/users/(?P\d+)/?$", - views.UserAdmin.as_view(), - name="settings-user", - ), re_path( r"^settings/federation/(?P(federated|blocked))?/?$", views.Federation.as_view(), @@ -158,6 +153,11 @@ urlpatterns = [ views.EmailBlocklist.as_view(), name="settings-email-blocks-delete", ), + re_path( + r"^setting/link-domains/(?P(pending|approved|blocked))/?", + views.LinkDomain.as_view(), + name="settings-link-domain", + ), re_path( r"^settings/ip-blocklist/?$", views.IPBlocklist.as_view(), diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index bc8ac2a3d..d3d807039 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -9,6 +9,7 @@ from .admin.email_blocklist import EmailBlocklist from .admin.ip_blocklist import IPBlocklist from .admin.invite import ManageInvites, Invite, InviteRequest from .admin.invite import ManageInviteRequests, ignore_invite_request +from .admin.link_domains import LinkDomain from .admin.reports import ( Report, Reports, diff --git a/bookwyrm/views/admin/link_domains.py b/bookwyrm/views/admin/link_domains.py new file mode 100644 index 000000000..0b662b850 --- /dev/null +++ b/bookwyrm/views/admin/link_domains.py @@ -0,0 +1,32 @@ +""" Manage link domains""" +from django.contrib.auth.decorators import login_required, permission_required +from django.template.response import TemplateResponse +from django.utils.decorators import method_decorator +from django.views import View + +from bookwyrm import forms, models + +# pylint: disable=no-self-use +@method_decorator(login_required, name="dispatch") +@method_decorator( + permission_required("bookwyrm.moderate_user", raise_exception=True), + name="dispatch", +) +class LinkDomain(View): + """Moderate links""" + + def get(self, request, status="pending"): + """view pending domains""" + data = { + "domains": models.LinkDomain.objects.filter( + status=status + ).prefetch_related("links"), + "form": forms.EmailBlocklistForm(), + "status": status, + } + return TemplateResponse( + request, "settings/link_domains/link_domains.html", data + ) + + def post(self, request): + """post?""" From f580a51f24dac593caa967430b430c89ad482342 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 10:38:05 -0800 Subject: [PATCH 042/170] Form to edit link domain display names --- bookwyrm/forms.py | 6 +++++ .../link_domains/edit_domain_modal.html | 25 +++++++++++++++++++ .../settings/link_domains/link_domains.html | 10 ++++++-- bookwyrm/urls.py | 7 +++++- 4 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 bookwyrm/templates/settings/link_domains/edit_domain_modal.html diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index f73da6489..12ebbff85 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -216,6 +216,12 @@ class CoverForm(CustomForm): help_texts = {f: None for f in fields} +class LinkDomainForm(CustomForm): + class Meta: + model = models.LinkDomain + fields = ["id", "name"] + + class FileLinkForm(CustomForm): class Meta: model = models.FileLink diff --git a/bookwyrm/templates/settings/link_domains/edit_domain_modal.html b/bookwyrm/templates/settings/link_domains/edit_domain_modal.html new file mode 100644 index 000000000..7b2a46e24 --- /dev/null +++ b/bookwyrm/templates/settings/link_domains/edit_domain_modal.html @@ -0,0 +1,25 @@ +{% extends 'components/modal.html' %} +{% load i18n %} + +{% block modal-title %} +{% blocktrans with url=domain.domain %}Set display name for {{ url }}{% endblocktrans %} +{% endblock %} + +{% block modal-form-open %} +
+{% endblock %} + +{% block modal-body %} +{% csrf_token %} + +
+ +
+{% endblock %} + +{% block modal-footer %} + + +{% endblock %} + +{% block modal-form-close %}
{% endblock %} diff --git a/bookwyrm/templates/settings/link_domains/link_domains.html b/bookwyrm/templates/settings/link_domains/link_domains.html index 555a81a11..3d89929dc 100644 --- a/bookwyrm/templates/settings/link_domains/link_domains.html +++ b/bookwyrm/templates/settings/link_domains/link_domains.html @@ -1,6 +1,7 @@ {% extends 'settings/layout.html' %} {% load humanize %} {% load i18n %} +{% load utilities %} {% block title %}{% trans "Link Domains" %}{% endblock %} @@ -30,6 +31,7 @@
{% for domain in domains %} + {% join "domain" domain.id as domain_modal %}
@@ -39,8 +41,10 @@
- {% trans "Set name" as button_text %} - {% include 'snippets/toggle/open_button.html' with text=button_text icon_with_text="pencil" controls_text="edit_domain" controls_uid=domain.id focus="id_description" %} +
@@ -66,6 +70,8 @@
+ {% include "settings/link_domains/edit_domain_modal.html" with domain=domain id=domain_modal %} +
{% csrf_token %}
diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 61ff7ffaa..781430dc1 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -154,7 +154,12 @@ urlpatterns = [ name="settings-email-blocks-delete", ), re_path( - r"^setting/link-domains/(?P(pending|approved|blocked))/?", + r"^setting/link-domains/(?P(pending|approved|blocked|))/?", + views.LinkDomain.as_view(), + name="settings-link-domain", + ), + re_path( + r"^setting/link-domains/?", views.LinkDomain.as_view(), name="settings-link-domain", ), From 3f280af715d800f8d8cb7ab610696abb226e8f41 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 10:48:27 -0800 Subject: [PATCH 043/170] Functionality to edit name --- bookwyrm/forms.py | 2 +- .../settings/link_domains/edit_domain_modal.html | 4 ++-- bookwyrm/urls.py | 4 ++-- bookwyrm/views/admin/link_domains.py | 11 ++++++++--- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 12ebbff85..5ad365011 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -219,7 +219,7 @@ class CoverForm(CustomForm): class LinkDomainForm(CustomForm): class Meta: model = models.LinkDomain - fields = ["id", "name"] + fields = ["name"] class FileLinkForm(CustomForm): diff --git a/bookwyrm/templates/settings/link_domains/edit_domain_modal.html b/bookwyrm/templates/settings/link_domains/edit_domain_modal.html index 7b2a46e24..984ad78d3 100644 --- a/bookwyrm/templates/settings/link_domains/edit_domain_modal.html +++ b/bookwyrm/templates/settings/link_domains/edit_domain_modal.html @@ -6,14 +6,14 @@ {% endblock %} {% block modal-form-open %} - + {% endblock %} {% block modal-body %} {% csrf_token %}
- +
{% endblock %} diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 781430dc1..0d41e4f5e 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -154,12 +154,12 @@ urlpatterns = [ name="settings-email-blocks-delete", ), re_path( - r"^setting/link-domains/(?P(pending|approved|blocked|))/?", + r"^setting/link-domains/(?P(pending|approved|blocked))/?$", views.LinkDomain.as_view(), name="settings-link-domain", ), re_path( - r"^setting/link-domains/?", + r"^setting/link-domains/(?P(pending|approved|blocked))/(?P\d+)/?$", views.LinkDomain.as_view(), name="settings-link-domain", ), diff --git a/bookwyrm/views/admin/link_domains.py b/bookwyrm/views/admin/link_domains.py index 0b662b850..4f11af117 100644 --- a/bookwyrm/views/admin/link_domains.py +++ b/bookwyrm/views/admin/link_domains.py @@ -1,5 +1,6 @@ """ Manage link domains""" from django.contrib.auth.decorators import login_required, permission_required +from django.shortcuts import get_object_or_404, redirect from django.template.response import TemplateResponse from django.utils.decorators import method_decorator from django.views import View @@ -15,7 +16,7 @@ from bookwyrm import forms, models class LinkDomain(View): """Moderate links""" - def get(self, request, status="pending"): + def get(self, request, status): """view pending domains""" data = { "domains": models.LinkDomain.objects.filter( @@ -28,5 +29,9 @@ class LinkDomain(View): request, "settings/link_domains/link_domains.html", data ) - def post(self, request): - """post?""" + def post(self, request, status, domain_id): + """Set display name""" + domain = get_object_or_404(models.LinkDomain, id=domain_id) + form = forms.LinkDomainForm(request.POST, instance=domain) + form.save() + return redirect('settings-link-domain', status=status) From 6b0967df39cc6ea7ca4d98448f7cb2057a0c952a Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 11:03:10 -0800 Subject: [PATCH 044/170] Show related books in links preview --- bookwyrm/settings.py | 2 +- .../settings/link_domains/link_domains.html | 43 +++++++++++++------ 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 77b1b30ad..24db4b18d 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -9,7 +9,7 @@ from django.utils.translation import gettext_lazy as _ env = Env() env.read_env() DOMAIN = env("DOMAIN") -VERSION = "0.1.2" +VERSION = "0.2.0" PAGE_LENGTH = env("PAGE_LENGTH", 15) DEFAULT_LANGUAGE = env("DEFAULT_LANGUAGE", "English") diff --git a/bookwyrm/templates/settings/link_domains/link_domains.html b/bookwyrm/templates/settings/link_domains/link_domains.html index 3d89929dc..4b300a355 100644 --- a/bookwyrm/templates/settings/link_domains/link_domains.html +++ b/bookwyrm/templates/settings/link_domains/link_domains.html @@ -35,10 +35,10 @@
-

+

{{ domain.name }} ({{ domain.domain }}) -

+
-
-
- -
-
- +
+ {% if status != "approved" %} +
+ {% csrf_token %} + +
+ {% endif %} + {% if status != "blocked" %} +
+ {% csrf_token %} + +
+ {% endif %} +
{% endfor %} diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 0d41e4f5e..0df259b3e 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -163,6 +163,11 @@ urlpatterns = [ views.LinkDomain.as_view(), name="settings-link-domain", ), + re_path( + r"^setting/link-domains/(?P\d+)/(?P(pending|approved|blocked))/?$", + views.update_domain_status, + name="settings-link-domain-status", + ), re_path( r"^settings/ip-blocklist/?$", views.IPBlocklist.as_view(), diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index d3d807039..87cbfc69e 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -9,7 +9,7 @@ from .admin.email_blocklist import EmailBlocklist from .admin.ip_blocklist import IPBlocklist from .admin.invite import ManageInvites, Invite, InviteRequest from .admin.invite import ManageInviteRequests, ignore_invite_request -from .admin.link_domains import LinkDomain +from .admin.link_domains import LinkDomain, update_domain_status from .admin.reports import ( Report, Reports, diff --git a/bookwyrm/views/admin/link_domains.py b/bookwyrm/views/admin/link_domains.py index 4f11af117..eca4421a9 100644 --- a/bookwyrm/views/admin/link_domains.py +++ b/bookwyrm/views/admin/link_domains.py @@ -4,6 +4,7 @@ from django.shortcuts import get_object_or_404, redirect from django.template.response import TemplateResponse from django.utils.decorators import method_decorator from django.views import View +from django.views.decorators.http import require_POST from bookwyrm import forms, models @@ -35,3 +36,15 @@ class LinkDomain(View): form = forms.LinkDomainForm(request.POST, instance=domain) form.save() return redirect('settings-link-domain', status=status) + + +@require_POST +@login_required +def update_domain_status(request, domain_id, status): + """This domain seems fine""" + domain = get_object_or_404(models.LinkDomain, id=domain_id) + domain.raise_not_editable(request.user) + + domain.status = status + domain.save() + return redirect('settings-link-domain', status="pending") From 4820a2f982f32584297a167e5f0fb5a31cd9719a Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 11:21:03 -0800 Subject: [PATCH 046/170] Python formatting --- bookwyrm/models/link.py | 6 +++++- bookwyrm/views/admin/link_domains.py | 10 +++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/bookwyrm/models/link.py b/bookwyrm/models/link.py index 7b7273df5..6e02c8d39 100644 --- a/bookwyrm/models/link.py +++ b/bookwyrm/models/link.py @@ -16,7 +16,11 @@ class Link(ActivitypubMixin, BookWyrmModel): url = fields.URLField(max_length=255, activitypub_field="href") domain = models.ForeignKey( - "LinkDomain", on_delete=models.CASCADE, null=True, blank=True, related_name="links" + "LinkDomain", + on_delete=models.CASCADE, + null=True, + blank=True, + related_name="links", ) activity_serializer = activitypub.Link diff --git a/bookwyrm/views/admin/link_domains.py b/bookwyrm/views/admin/link_domains.py index eca4421a9..0d7bfd251 100644 --- a/bookwyrm/views/admin/link_domains.py +++ b/bookwyrm/views/admin/link_domains.py @@ -20,9 +20,9 @@ class LinkDomain(View): def get(self, request, status): """view pending domains""" data = { - "domains": models.LinkDomain.objects.filter( - status=status - ).prefetch_related("links"), + "domains": models.LinkDomain.objects.filter(status=status).prefetch_related( + "links" + ), "form": forms.EmailBlocklistForm(), "status": status, } @@ -35,7 +35,7 @@ class LinkDomain(View): domain = get_object_or_404(models.LinkDomain, id=domain_id) form = forms.LinkDomainForm(request.POST, instance=domain) form.save() - return redirect('settings-link-domain', status=status) + return redirect("settings-link-domain", status=status) @require_POST @@ -47,4 +47,4 @@ def update_domain_status(request, domain_id, status): domain.status = status domain.save() - return redirect('settings-link-domain', status="pending") + return redirect("settings-link-domain", status="pending") From 4dfe9fd714d38a9d6fddd282558b3730a379618b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 11:21:43 -0800 Subject: [PATCH 047/170] Support links with no name --- bookwyrm/activitypub/base_activity.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/activitypub/base_activity.py b/bookwyrm/activitypub/base_activity.py index f1b3ad181..fcc4eccde 100644 --- a/bookwyrm/activitypub/base_activity.py +++ b/bookwyrm/activitypub/base_activity.py @@ -297,7 +297,7 @@ class Link(ActivityObject): """for tagging a book in a status""" href: str - name: str + name: str = None mediaType: str = None id: str = None type: str = "Link" From 8ba3a4ab00d40dcda805396f291e0ccfd14ce8df Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 11:47:52 -0800 Subject: [PATCH 048/170] Adds link confirmation modal --- bookwyrm/settings.py | 2 +- bookwyrm/static/js/bookwyrm.js | 2 +- .../book/link_verification_modal.html | 22 +++++++++++++++++++ bookwyrm/templates/book/links.html | 9 +++++++- 4 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 bookwyrm/templates/book/link_verification_modal.html diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 24db4b18d..122cae1b8 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -14,7 +14,7 @@ VERSION = "0.2.0" PAGE_LENGTH = env("PAGE_LENGTH", 15) DEFAULT_LANGUAGE = env("DEFAULT_LANGUAGE", "English") -JS_CACHE = "2d3181e1" +JS_CACHE = "a47cc2ca" # email EMAIL_BACKEND = env("EMAIL_BACKEND", "django.core.mail.backends.smtp.EmailBackend") diff --git a/bookwyrm/static/js/bookwyrm.js b/bookwyrm/static/js/bookwyrm.js index cf3944b35..94163787d 100644 --- a/bookwyrm/static/js/bookwyrm.js +++ b/bookwyrm/static/js/bookwyrm.js @@ -35,7 +35,7 @@ let BookWyrm = new (class { .forEach((node) => node.addEventListener("change", this.disableIfTooLarge.bind(this))); document - .querySelectorAll("button[data-modal-open]") + .querySelectorAll("[data-modal-open]") .forEach((node) => node.addEventListener("click", this.handleModalButton.bind(this))); document diff --git a/bookwyrm/templates/book/link_verification_modal.html b/bookwyrm/templates/book/link_verification_modal.html new file mode 100644 index 000000000..ed7dca8e6 --- /dev/null +++ b/bookwyrm/templates/book/link_verification_modal.html @@ -0,0 +1,22 @@ +{% extends 'components/modal.html' %} +{% load i18n %} + +{% block modal-title %} +{% trans "Leaving BookWyrm" %} +{% endblock %} + + +{% block modal-body %} + +{% blocktrans trimmed with link_url=link.url %} +This link is taking you to {{ link_url }}. Is that where you'd like to go? +{% endblocktrans %} + +{% endblock %} + + +{% block modal-footer %} +{% trans "Continue" %} + + +{% endblock %} diff --git a/bookwyrm/templates/book/links.html b/bookwyrm/templates/book/links.html index 6bce3c9ba..83d4f0534 100644 --- a/bookwyrm/templates/book/links.html +++ b/bookwyrm/templates/book/links.html @@ -1,5 +1,7 @@ {% load i18n %} {% load bookwyrm_tags %} +{% load utilities %} + {% get_book_file_links book as links %}
@@ -21,12 +23,17 @@ {% if links %} +{% for link in links.all %} +{% join "verify" link.id as verify_modal %} +{% include "book/link_verification_modal.html" with id=verify_modal %} +{% endfor %} {% endif %} {% if can_edit_book %} From d610115a5b894cdc8d31b8885489ef5dc40726e8 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 11:52:00 -0800 Subject: [PATCH 049/170] Null state for links --- bookwyrm/management/commands/initdb.py | 38 +++++++++++++++---- .../0126_filelink_link_linkdomain.py | 3 ++ bookwyrm/templates/book/links.html | 5 +++ .../settings/link_domains/link_domains.html | 6 +-- bookwyrm/views/admin/link_domains.py | 5 +++ 5 files changed, 47 insertions(+), 10 deletions(-) diff --git a/bookwyrm/management/commands/initdb.py b/bookwyrm/management/commands/initdb.py index d0ab648e0..53d6e8d49 100644 --- a/bookwyrm/management/commands/initdb.py +++ b/bookwyrm/management/commands/initdb.py @@ -3,7 +3,7 @@ from django.core.management.base import BaseCommand from django.contrib.auth.models import Group, Permission from django.contrib.contenttypes.models import ContentType -from bookwyrm.models import Connector, FederatedServer, SiteSettings, User +from bookwyrm import models def init_groups(): @@ -55,7 +55,7 @@ def init_permissions(): }, ] - content_type = ContentType.objects.get_for_model(User) + content_type = models.ContentType.objects.get_for_model(User) for permission in permissions: permission_obj = Permission.objects.create( codename=permission["codename"], @@ -72,7 +72,7 @@ def init_permissions(): def init_connectors(): """access book data sources""" - Connector.objects.create( + models.Connector.objects.create( identifier="bookwyrm.social", name="BookWyrm dot Social", connector_file="bookwyrm_connector", @@ -84,7 +84,7 @@ def init_connectors(): priority=2, ) - Connector.objects.create( + models.Connector.objects.create( identifier="inventaire.io", name="Inventaire", connector_file="inventaire", @@ -96,7 +96,7 @@ def init_connectors(): priority=3, ) - Connector.objects.create( + models.Connector.objects.create( identifier="openlibrary.org", name="OpenLibrary", connector_file="openlibrary", @@ -113,7 +113,7 @@ def init_federated_servers(): """big no to nazis""" built_in_blocks = ["gab.ai", "gab.com"] for server in built_in_blocks: - FederatedServer.objects.create( + models.FederatedServer.objects.create( server_name=server, status="blocked", ) @@ -121,12 +121,36 @@ def init_federated_servers(): def init_settings(): """info about the instance""" - SiteSettings.objects.create( + models.SiteSettings.objects.create( support_link="https://www.patreon.com/bookwyrm", support_title="Patreon", ) +def init_link_domains(*_): + """safe book links""" + models.LinkDomain.objects.create( + domain="www.gutenberg.org", + name="Project Gutenberg", + status="approved", + ) + models.LinkDomain.objects.create( + domain="archive.org", + name="Internet Archive", + status="approved", + ) + models.LinkDomain.objects.create( + domain="openlibrary.org", + name="Open Library", + status="approved", + ) + models.LinkDomain.objects.create( + domain="theanarchistlibrary.org", + name="The Anarchist Library", + status="approved", + ) + + class Command(BaseCommand): help = "Initializes the database with starter data" diff --git a/bookwyrm/migrations/0126_filelink_link_linkdomain.py b/bookwyrm/migrations/0126_filelink_link_linkdomain.py index 98d71cc26..1870030cd 100644 --- a/bookwyrm/migrations/0126_filelink_link_linkdomain.py +++ b/bookwyrm/migrations/0126_filelink_link_linkdomain.py @@ -5,6 +5,8 @@ import bookwyrm.models.fields from django.db import migrations, models import django.db.models.deletion +from bookwyrm.management.commands.initdb import init_link_domains + class Migration(migrations.Migration): @@ -123,4 +125,5 @@ class Migration(migrations.Migration): }, bases=("bookwyrm.link",), ), + migrations.RunPython(init_link_domains, reverse_code=migrations.RunPython.noop), ] diff --git a/bookwyrm/templates/book/links.html b/bookwyrm/templates/book/links.html index 83d4f0534..f87d56815 100644 --- a/bookwyrm/templates/book/links.html +++ b/bookwyrm/templates/book/links.html @@ -3,6 +3,7 @@ {% load utilities %} {% get_book_file_links book as links %} +{% if links.exists or request.user.is_authenticated %}

{% trans "Get a copy" %}

@@ -34,8 +35,12 @@ {% join "verify" link.id as verify_modal %} {% include "book/link_verification_modal.html" with id=verify_modal %} {% endfor %} +{% else %} +{% trans "No links available" %} {% endif %} {% if can_edit_book %} {% include 'book/file_link_modal.html' with book=book id="edit-links" %} {% endif %} + +{% endif %} diff --git a/bookwyrm/templates/settings/link_domains/link_domains.html b/bookwyrm/templates/settings/link_domains/link_domains.html index cb084967b..dc7fdbd49 100644 --- a/bookwyrm/templates/settings/link_domains/link_domains.html +++ b/bookwyrm/templates/settings/link_domains/link_domains.html @@ -17,15 +17,15 @@
diff --git a/bookwyrm/views/admin/link_domains.py b/bookwyrm/views/admin/link_domains.py index 0d7bfd251..aab6625c9 100644 --- a/bookwyrm/views/admin/link_domains.py +++ b/bookwyrm/views/admin/link_domains.py @@ -23,6 +23,11 @@ class LinkDomain(View): "domains": models.LinkDomain.objects.filter(status=status).prefetch_related( "links" ), + "counts": { + "pending": models.LinkDomain.objects.filter(status="pending").count(), + "approved": models.LinkDomain.objects.filter(status="approved").count(), + "blocked": models.LinkDomain.objects.filter(status="blocked").count(), + }, "form": forms.EmailBlocklistForm(), "status": status, } From 62f481c85949d625ea35eaeaadcf80610e1a592f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 12:21:36 -0800 Subject: [PATCH 050/170] Fixes urls --- .../templates/settings/link_domains/edit_domain_modal.html | 2 +- bookwyrm/urls.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/bookwyrm/templates/settings/link_domains/edit_domain_modal.html b/bookwyrm/templates/settings/link_domains/edit_domain_modal.html index 984ad78d3..135783e78 100644 --- a/bookwyrm/templates/settings/link_domains/edit_domain_modal.html +++ b/bookwyrm/templates/settings/link_domains/edit_domain_modal.html @@ -13,7 +13,7 @@ {% csrf_token %}
- +
{% endblock %} diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 0df259b3e..c9d4cb924 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -96,6 +96,11 @@ urlpatterns = [ re_path( r"^settings/users/?$", views.UserAdminList.as_view(), name="settings-users" ), + re_path( + r"^settings/users/(?P\d+)/?$", + views.UserAdmin.as_view(), + name="settings-user", + ), re_path( r"^settings/federation/(?P(federated|blocked))?/?$", views.Federation.as_view(), From eec1155bb8128413c46b7672284aebd7d5455e3f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 12:29:28 -0800 Subject: [PATCH 051/170] Adds admin view tests --- .../tests/views/admin/test_link_domains.py | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 bookwyrm/tests/views/admin/test_link_domains.py diff --git a/bookwyrm/tests/views/admin/test_link_domains.py b/bookwyrm/tests/views/admin/test_link_domains.py new file mode 100644 index 000000000..652c82c80 --- /dev/null +++ b/bookwyrm/tests/views/admin/test_link_domains.py @@ -0,0 +1,78 @@ +""" test for app action functionality """ +from unittest.mock import patch + +from django.template.response import TemplateResponse +from django.test import TestCase +from django.test.client import RequestFactory + +from bookwyrm import models, views +from bookwyrm.tests.validate_html import validate_html + + +class LinkDomainViews(TestCase): + """every response to a get request, html or json""" + + def setUp(self): + """we need basic test data and mocks""" + self.factory = RequestFactory() + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ), patch("bookwyrm.lists_stream.populate_lists_task.delay"): + self.local_user = models.User.objects.create_user( + "mouse@local.com", + "mouse@mouse.mouse", + "password", + local=True, + localname="mouse", + ) + self.book = models.Edition.objects.create(title="hello") + models.FileLink.objects.create( + book=self.book, + url="https://beep.com/book/1", + ) + + + models.SiteSettings.objects.create() + + def test_domain_page_get(self): + """there are so many views, this just makes sure it LOADS""" + view = views.LinkDomain.as_view() + request = self.factory.get("") + request.user = self.local_user + request.user.is_superuser = True + + result = view(request, "pending") + + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + + def test_domain_page_post(self): + """there are so many views, this just makes sure it LOADS""" + domain = models.LinkDomain.objects.get() + self.assertEqual(domain.name, "beep.com") + + view = views.LinkDomain.as_view() + request = self.factory.post("", {"name": "ugh"}) + request.user = self.local_user + request.user.is_superuser = True + + result = view(request, "pending", domain.id) + self.assertEqual(result.status_code, 301) + + self.assertEqual(domain.name, "ugh") + + def test_domain_page_set_status(self): + """there are so many views, this just makes sure it LOADS""" + domain = models.LinkDomain.objects.get() + self.assertEqual(domain.status, "pending") + + view = views.LinkDomain.as_view() + request = self.factory.post("") + request.user = self.local_user + request.user.is_superuser = True + + result = view(request, domain.id, "approved") + self.assertEqual(result.status_code, 301) + + self.assertEqual(domain.status, "approved") From 2880b311e1a6aa5ac226c6be798d9f159edd64de Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 12:30:24 -0800 Subject: [PATCH 052/170] HTML validity fix for summary tag --- bookwyrm/templates/settings/link_domains/link_domains.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/settings/link_domains/link_domains.html b/bookwyrm/templates/settings/link_domains/link_domains.html index dc7fdbd49..7859f3db1 100644 --- a/bookwyrm/templates/settings/link_domains/link_domains.html +++ b/bookwyrm/templates/settings/link_domains/link_domains.html @@ -50,10 +50,10 @@
-

+ {% trans "View links" %} ({{ domain.links.count }}) -

+
From 8928e8da26ed9172c105693361a6bcd30e6aac41 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 12:33:49 -0800 Subject: [PATCH 053/170] Corrects tests --- bookwyrm/tests/views/admin/test_link_domains.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/bookwyrm/tests/views/admin/test_link_domains.py b/bookwyrm/tests/views/admin/test_link_domains.py index 652c82c80..8c972ea10 100644 --- a/bookwyrm/tests/views/admin/test_link_domains.py +++ b/bookwyrm/tests/views/admin/test_link_domains.py @@ -31,7 +31,6 @@ class LinkDomainViews(TestCase): url="https://beep.com/book/1", ) - models.SiteSettings.objects.create() def test_domain_page_get(self): @@ -49,7 +48,7 @@ class LinkDomainViews(TestCase): def test_domain_page_post(self): """there are so many views, this just makes sure it LOADS""" - domain = models.LinkDomain.objects.get() + domain = models.LinkDomain.objects.get(domain="beep.com") self.assertEqual(domain.name, "beep.com") view = views.LinkDomain.as_view() @@ -58,21 +57,23 @@ class LinkDomainViews(TestCase): request.user.is_superuser = True result = view(request, "pending", domain.id) - self.assertEqual(result.status_code, 301) + self.assertEqual(result.status_code, 302) + domain.refresh_from_db() self.assertEqual(domain.name, "ugh") def test_domain_page_set_status(self): """there are so many views, this just makes sure it LOADS""" - domain = models.LinkDomain.objects.get() + domain = models.LinkDomain.objects.get(domain="beep.com") self.assertEqual(domain.status, "pending") - view = views.LinkDomain.as_view() + view = views.update_domain_status request = self.factory.post("") request.user = self.local_user request.user.is_superuser = True result = view(request, domain.id, "approved") - self.assertEqual(result.status_code, 301) + self.assertEqual(result.status_code, 302) + domain.refresh_from_db() self.assertEqual(domain.status, "approved") From dcf51020bc2ae2e9f2bccc7def1c29646e6e378e Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 13:05:08 -0800 Subject: [PATCH 054/170] Removes initialization from migration Just doesn't seem right --- bookwyrm/management/commands/initdb.py | 31 ++++++++++++++++--- .../commands/populate_lists_streams.py | 7 ----- .../0126_filelink_link_linkdomain.py | 3 -- bw-dev | 4 +-- 4 files changed, 28 insertions(+), 17 deletions(-) diff --git a/bookwyrm/management/commands/initdb.py b/bookwyrm/management/commands/initdb.py index 53d6e8d49..826a24e2e 100644 --- a/bookwyrm/management/commands/initdb.py +++ b/bookwyrm/management/commands/initdb.py @@ -154,9 +154,30 @@ def init_link_domains(*_): class Command(BaseCommand): help = "Initializes the database with starter data" + def add_arguments(self, parser): + parser.add_argument( + "--limit", + default=None, + help="Limit init to specific table", + ) + def handle(self, *args, **options): - init_groups() - init_permissions() - init_connectors() - init_federated_servers() - init_settings() + limit = options.get("limit") + tables = [ + "group", "permission", "connector", "federatedserver", "settings", "linkdomain" + ] + if limit not in tables: + raise Exception("Invalid table limit:", limit) + + if not limit or limit == "group": + init_groups() + if not limit or limit == "permission": + init_permissions() + if not limit or limit == "connector": + init_connectors() + if not limit or limit == "federatedserver": + init_federated_servers() + if not limit or limit == "settings": + init_settings() + if not limit or limit == "linkdomain": + init_link_domains() diff --git a/bookwyrm/management/commands/populate_lists_streams.py b/bookwyrm/management/commands/populate_lists_streams.py index e3c30baba..0a057401c 100644 --- a/bookwyrm/management/commands/populate_lists_streams.py +++ b/bookwyrm/management/commands/populate_lists_streams.py @@ -22,13 +22,6 @@ class Command(BaseCommand): help = "Populate list streams for all users" - def add_arguments(self, parser): - parser.add_argument( - "--stream", - default=None, - help="Specifies which time of stream to populate", - ) - # pylint: disable=no-self-use,unused-argument def handle(self, *args, **options): """run feed builder""" diff --git a/bookwyrm/migrations/0126_filelink_link_linkdomain.py b/bookwyrm/migrations/0126_filelink_link_linkdomain.py index 1870030cd..98d71cc26 100644 --- a/bookwyrm/migrations/0126_filelink_link_linkdomain.py +++ b/bookwyrm/migrations/0126_filelink_link_linkdomain.py @@ -5,8 +5,6 @@ import bookwyrm.models.fields from django.db import migrations, models import django.db.models.deletion -from bookwyrm.management.commands.initdb import init_link_domains - class Migration(migrations.Migration): @@ -125,5 +123,4 @@ class Migration(migrations.Migration): }, bases=("bookwyrm.link",), ), - migrations.RunPython(init_link_domains, reverse_code=migrations.RunPython.noop), ] diff --git a/bw-dev b/bw-dev index 6bf5a125e..c72a96ca2 100755 --- a/bw-dev +++ b/bw-dev @@ -31,7 +31,7 @@ function execweb { function initdb { execweb python manage.py migrate - execweb python manage.py initdb + execweb python manage.py initdb "$@" } function makeitblack { @@ -65,7 +65,7 @@ case "$CMD" in docker-compose run --rm --service-ports web ;; initdb) - initdb + initdb "$@" ;; resetdb) clean From 93fead47ef0efa5e50d422220cf5100b4a82646b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 13:13:28 -0800 Subject: [PATCH 055/170] Reformats init command and adds Standard EBooks --- bookwyrm/management/commands/initdb.py | 40 ++++++++++++-------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/bookwyrm/management/commands/initdb.py b/bookwyrm/management/commands/initdb.py index 826a24e2e..37dd66af4 100644 --- a/bookwyrm/management/commands/initdb.py +++ b/bookwyrm/management/commands/initdb.py @@ -129,26 +129,19 @@ def init_settings(): def init_link_domains(*_): """safe book links""" - models.LinkDomain.objects.create( - domain="www.gutenberg.org", - name="Project Gutenberg", - status="approved", - ) - models.LinkDomain.objects.create( - domain="archive.org", - name="Internet Archive", - status="approved", - ) - models.LinkDomain.objects.create( - domain="openlibrary.org", - name="Open Library", - status="approved", - ) - models.LinkDomain.objects.create( - domain="theanarchistlibrary.org", - name="The Anarchist Library", - status="approved", - ) + domains = [ + ("standardebooks.org", "Standard EBooks"), + ("www.gutenberg.org", "Project Gutenberg"), + ("archive.org", "Internet Archive"), + ("openlibrary.org", "Open Library"), + ("theanarchistlibrary.org", "The Anarchist Library"), + ] + for domain, name in domains: + models.LinkDomain.objects.create( + domain=domain, + name=name, + status="approved", + ) class Command(BaseCommand): @@ -164,7 +157,12 @@ class Command(BaseCommand): def handle(self, *args, **options): limit = options.get("limit") tables = [ - "group", "permission", "connector", "federatedserver", "settings", "linkdomain" + "group", + "permission", + "connector", + "federatedserver", + "settings", + "linkdomain", ] if limit not in tables: raise Exception("Invalid table limit:", limit) From 6c78a7b6ef5502b3233f467fda98222183d0e427 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 13:20:14 -0800 Subject: [PATCH 056/170] Add user attribution to links and domains --- bookwyrm/activitypub/base_activity.py | 1 + .../0126_filelink_link_linkdomain.py | 20 ++++++++++++++++++- bookwyrm/models/link.py | 6 ++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/bookwyrm/activitypub/base_activity.py b/bookwyrm/activitypub/base_activity.py index fcc4eccde..57244484a 100644 --- a/bookwyrm/activitypub/base_activity.py +++ b/bookwyrm/activitypub/base_activity.py @@ -300,6 +300,7 @@ class Link(ActivityObject): name: str = None mediaType: str = None id: str = None + attributedTo: str = None type: str = "Link" def serialize(self, **kwargs): diff --git a/bookwyrm/migrations/0126_filelink_link_linkdomain.py b/bookwyrm/migrations/0126_filelink_link_linkdomain.py index 98d71cc26..7e5186b6d 100644 --- a/bookwyrm/migrations/0126_filelink_link_linkdomain.py +++ b/bookwyrm/migrations/0126_filelink_link_linkdomain.py @@ -1,7 +1,8 @@ -# Generated by Django 3.2.10 on 2022-01-09 22:10 +# Generated by Django 3.2.10 on 2022-01-10 21:20 import bookwyrm.models.activitypub_mixin import bookwyrm.models.fields +from django.conf import settings from django.db import migrations, models import django.db.models.deletion @@ -49,6 +50,15 @@ class Migration(migrations.Migration): ), ), ("name", models.CharField(max_length=100)), + ( + "reported_by", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to=settings.AUTH_USER_MODEL, + ), + ), ], options={ "abstract": False, @@ -77,6 +87,14 @@ class Migration(migrations.Migration): ), ), ("url", bookwyrm.models.fields.URLField(max_length=255)), + ( + "added_by", + bookwyrm.models.fields.ForeignKey( + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to=settings.AUTH_USER_MODEL, + ), + ), ( "domain", models.ForeignKey( diff --git a/bookwyrm/models/link.py b/bookwyrm/models/link.py index 6e02c8d39..22241dddf 100644 --- a/bookwyrm/models/link.py +++ b/bookwyrm/models/link.py @@ -22,6 +22,9 @@ class Link(ActivitypubMixin, BookWyrmModel): blank=True, related_name="links", ) + added_by = fields.ForeignKey( + "User", on_delete=models.SET_NULL, null=True, activitypub_field="attributedTo" + ) activity_serializer = activitypub.Link reverse_unfurl = True @@ -66,6 +69,9 @@ class LinkDomain(BookWyrmModel): domain = models.CharField(max_length=255, unique=True) status = models.CharField(max_length=50, choices=StatusChoices, default="pending") name = models.CharField(max_length=100) + reported_by = models.ForeignKey( + "User", blank=True, null=True, on_delete=models.SET_NULL + ) def raise_not_editable(self, viewer): if viewer.has_perm("moderate_post"): From 34f375c53cd63795ace4821bd7a0bae3a780cffc Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 13:27:01 -0800 Subject: [PATCH 057/170] Store user that added link --- bookwyrm/forms.py | 2 +- bookwyrm/models/link.py | 9 ++++++--- bookwyrm/templates/book/file_link_modal.html | 1 + bookwyrm/tests/views/books/test_links.py | 1 + 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 5ad365011..e08f3a3a5 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -225,7 +225,7 @@ class LinkDomainForm(CustomForm): class FileLinkForm(CustomForm): class Meta: model = models.FileLink - fields = ["url", "filetype", "book"] + fields = ["url", "filetype", "book", "added_by"] class EditionForm(CustomForm): diff --git a/bookwyrm/models/link.py b/bookwyrm/models/link.py index 22241dddf..3e21642f2 100644 --- a/bookwyrm/models/link.py +++ b/bookwyrm/models/link.py @@ -15,6 +15,12 @@ class Link(ActivitypubMixin, BookWyrmModel): """a link to a website""" url = fields.URLField(max_length=255, activitypub_field="href") + added_by = fields.ForeignKey( + "User", + on_delete=models.SET_NULL, + null=True, + activitypub_field="attributedTo" + ) domain = models.ForeignKey( "LinkDomain", on_delete=models.CASCADE, @@ -22,9 +28,6 @@ class Link(ActivitypubMixin, BookWyrmModel): blank=True, related_name="links", ) - added_by = fields.ForeignKey( - "User", on_delete=models.SET_NULL, null=True, activitypub_field="attributedTo" - ) activity_serializer = activitypub.Link reverse_unfurl = True diff --git a/bookwyrm/templates/book/file_link_modal.html b/bookwyrm/templates/book/file_link_modal.html index 04e215574..379f1a077 100644 --- a/bookwyrm/templates/book/file_link_modal.html +++ b/bookwyrm/templates/book/file_link_modal.html @@ -12,6 +12,7 @@ {% block modal-body %} {% csrf_token %} +

{% trans "Links from unknown domains will need to be approved by a moderator before they are added." %} diff --git a/bookwyrm/tests/views/books/test_links.py b/bookwyrm/tests/views/books/test_links.py index 1214e0e2e..1961bde00 100644 --- a/bookwyrm/tests/views/books/test_links.py +++ b/bookwyrm/tests/views/books/test_links.py @@ -66,6 +66,7 @@ class LinkViews(TestCase): form.data["url"] = "https://www.example.com" form.data["filetype"] = "HTML" form.data["book"] = self.book.id + form.data["added_by"] = self.local_user request = self.factory.post("", form.data) request.user = self.local_user From 651d468b13c3157020e2217f1b89bfbc044b5243 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 13:33:22 -0800 Subject: [PATCH 058/170] Show who added the link in admin view --- bookwyrm/templates/settings/link_domains/link_domains.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bookwyrm/templates/settings/link_domains/link_domains.html b/bookwyrm/templates/settings/link_domains/link_domains.html index 7859f3db1..83190029c 100644 --- a/bookwyrm/templates/settings/link_domains/link_domains.html +++ b/bookwyrm/templates/settings/link_domains/link_domains.html @@ -61,6 +61,7 @@ + @@ -69,6 +70,9 @@ + + +{% endblock %} + +{% block additional_data %} + + +{% endblock %} diff --git a/bookwyrm/templates/settings/reports/report_preview.html b/bookwyrm/templates/settings/reports/report_preview.html index 363783d50..31bde0a1e 100644 --- a/bookwyrm/templates/settings/reports/report_preview.html +++ b/bookwyrm/templates/settings/reports/report_preview.html @@ -1,9 +1,13 @@ {% extends 'components/card.html' %} {% load i18n %} {% load humanize %} +{% load utilities %} + {% block card-header %}

- {% blocktrans with report_id=report.id username=report.user.username %}Report #{{ report_id }}: {{ username }}{% endblocktrans %} + + {% include "settings/reports/report_header.html" with report=report %} +

{% endblock %} @@ -17,7 +21,7 @@ {% block card-footer %} {% else %} -

{% trans "Actions" %}

+

{% trans "User Actions" %}

-
- {% if user.is_active %} -

- {% trans "Send direct message" %} -

- {% endif %} +
+
+ {% if user.is_active %} +

+ {% trans "Send direct message" %} +

+ {% endif %} - {% if user.is_active or user.deactivation_reason == "pending" %} -
- {% csrf_token %} - - - {% else %} -
- {% csrf_token %} - - + {% if user.is_active or user.deactivation_reason == "pending" %} +
+ {% csrf_token %} + + + {% else %} +
+ {% csrf_token %} + + + {% endif %} + + {% if user.local %} +
+ {% trans "Permanently delete user" as button_text %} + {% include "snippets/toggle/open_button.html" with controls_text="delete_user" text=button_text class="is-danger is-light" %} +
+ {% endif %} +
+ + {% if user.local %} +
+ {% include "settings/users/delete_user_form.html" with controls_text="delete_user" class="mt-2 mb-2" %} +
{% endif %} {% if user.local %}
- {% trans "Permanently delete user" as button_text %} - {% include "snippets/toggle/open_button.html" with controls_text="delete_user" text=button_text class="is-danger is-light" %} +
+ {% csrf_token %} + + {% if group_form.non_field_errors %} + {{ group_form.non_field_errors }} + {% endif %} + {% with group=user.groups.first %} +
+ +
+ + {% include 'snippets/form_errors.html' with errors_list=group_form.groups.errors id="desc_user_group" %} + {% endwith %} + +
- {% endif %} -
- - {% if user.local %} -
- {% include "settings/users/delete_user_form.html" with controls_text="delete_user" class="mt-2 mb-2" %} -
- {% endif %} - - {% if user.local %} -
-
- {% csrf_token %} - - {% if group_form.non_field_errors %} - {{ group_form.non_field_errors }} - {% endif %} - {% with group=user.groups.first %} -
- -
- - {% include 'snippets/form_errors.html' with errors_list=group_form.groups.errors id="desc_user_group" %} - {% endwith %} - -
{% endif %} diff --git a/bookwyrm/templates/snippets/report_button.html b/bookwyrm/templates/snippets/report_button.html index 6b4a3f253..9d94d2af1 100644 --- a/bookwyrm/templates/snippets/report_button.html +++ b/bookwyrm/templates/snippets/report_button.html @@ -12,6 +12,6 @@ > {% trans "Report" %} -{% include 'snippets/report_modal.html' with user=user reporter=request.user id=modal_id %} +{% include 'snippets/report_modal.html' with user=user id=modal_id status=status.id %} {% endwith %} diff --git a/bookwyrm/templates/snippets/report_modal.html b/bookwyrm/templates/snippets/report_modal.html index afd396448..7d2e52b64 100644 --- a/bookwyrm/templates/snippets/report_modal.html +++ b/bookwyrm/templates/snippets/report_modal.html @@ -1,9 +1,16 @@ {% extends 'components/modal.html' %} {% load i18n %} +{% load utilities %} {% load humanize %} {% block modal-title %} -{% blocktrans with username=user.username %}Report @{{ username }}{% endblocktrans %} +{% if status %} +{% blocktrans with username=user|username %}Report @{{ username }}'s status{% endblocktrans %} +{% elif link %} +{% blocktrans with domain=link.domain.domain %}Report {{ domain }} link{% endblocktrans %} +{% else %} +{% blocktrans with username=user|username %}Report @{{ username }}{% endblocktrans %} +{% endif %} {% endblock %} {% block modal-form-open %} @@ -13,14 +20,22 @@ {% block modal-body %} {% csrf_token %} - + {% if status %} - + +{% endif %} +{% if link %} + {% endif %}
-

{% blocktrans with site_name=site.name %}This report will be sent to {{ site_name }}'s moderators for review.{% endblocktrans %}

+

+ {% blocktrans with site_name=site.name %}This report will be sent to {{ site_name }}'s moderators for review.{% endblocktrans %} + {% if link %} + {% trans "Links from this domain will be removed until your report has been reviewed." %} + {% endif %} +

+ {% endif %}
- {% endif %} {% endif %} From dcf8a8dab91b7993c49713d436c90a950ac6194b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 15:27:33 -0800 Subject: [PATCH 062/170] Fixes settings tab highlighting --- bookwyrm/templates/settings/layout.html | 2 +- bookwyrm/urls.py | 5 +++++ bookwyrm/views/admin/link_domains.py | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/settings/layout.html b/bookwyrm/templates/settings/layout.html index 200164ba3..1addc8db7 100644 --- a/bookwyrm/templates/settings/layout.html +++ b/bookwyrm/templates/settings/layout.html @@ -63,7 +63,7 @@ {% trans "IP Address Blocklist" %}
  • - {% url 'settings-link-domain' status='pending' as url %} + {% url 'settings-link-domain' as url %} {% trans "Link Domains" %}
  • diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 48368038e..5ec072897 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -158,6 +158,11 @@ urlpatterns = [ views.EmailBlocklist.as_view(), name="settings-email-blocks-delete", ), + re_path( + r"^setting/link-domains/?$", + views.LinkDomain.as_view(), + name="settings-link-domain", + ), re_path( r"^setting/link-domains/(?P(pending|approved|blocked))/?$", views.LinkDomain.as_view(), diff --git a/bookwyrm/views/admin/link_domains.py b/bookwyrm/views/admin/link_domains.py index aab6625c9..564ea8966 100644 --- a/bookwyrm/views/admin/link_domains.py +++ b/bookwyrm/views/admin/link_domains.py @@ -17,7 +17,7 @@ from bookwyrm import forms, models class LinkDomain(View): """Moderate links""" - def get(self, request, status): + def get(self, request, status="pending"): """view pending domains""" data = { "domains": models.LinkDomain.objects.filter(status=status).prefetch_related( From 274631815281218bda31c322af70457eff1aac34 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 15:47:40 -0800 Subject: [PATCH 063/170] Uses datalist for autocomplete suggestions --- bookwyrm/static/css/bookwyrm.css | 7 ------- bookwyrm/static/js/autocomplete.js | 12 ++---------- bookwyrm/templates/book/file_link_modal.html | 3 ++- 3 files changed, 4 insertions(+), 18 deletions(-) diff --git a/bookwyrm/static/css/bookwyrm.css b/bookwyrm/static/css/bookwyrm.css index 72d39a7ec..92ddd294d 100644 --- a/bookwyrm/static/css/bookwyrm.css +++ b/bookwyrm/static/css/bookwyrm.css @@ -606,13 +606,6 @@ details[open].details-panel summary .details-close { right: 1em; } -/** Autocomplete suggestions - ******************************************************************************/ -.autocomplete-suggestions { - position: fixed; - z-index: 1; -} - /** Tooltips ******************************************************************************/ diff --git a/bookwyrm/static/js/autocomplete.js b/bookwyrm/static/js/autocomplete.js index f75948078..df5c890f7 100644 --- a/bookwyrm/static/js/autocomplete.js +++ b/bookwyrm/static/js/autocomplete.js @@ -21,25 +21,17 @@ // Get suggestions let suggestions = getSuggestions(input.value, mimetypeTrie); - const boxId = input.id + "_suggestions"; + const boxId = input.getAttribute("list"); // Create suggestion box, if needed let suggestionsBox = document.getElementById(boxId); - if (!suggestionsBox) { - suggestionsBox = document.createElement("ul"); - suggestionsBox.id = boxId; - suggestionsBox.classList.add("autocomplete-suggestions", "box"); - - input.insertAdjacentElement("afterend", suggestionsBox); - } - // Clear existing suggestions suggestionsBox.innerHTML = ""; // Populate suggestions box suggestions.forEach(suggestion => { - const suggestionItem = document.createElement("li"); + const suggestionItem = document.createElement("option"); suggestionItem.textContent = suggestion; suggestionsBox.appendChild(suggestionItem); diff --git a/bookwyrm/templates/book/file_link_modal.html b/bookwyrm/templates/book/file_link_modal.html index 87d358174..48921bb89 100644 --- a/bookwyrm/templates/book/file_link_modal.html +++ b/bookwyrm/templates/book/file_link_modal.html @@ -27,7 +27,8 @@
    - + + {% include 'snippets/form_errors.html' with errors_list=file_link_form.filetype.errors id="desc_filetype" %}
    From f6d6285009dde5eaf8bcd9766271773c48627df7 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 16:44:43 -0800 Subject: [PATCH 064/170] Updates trie function --- bookwyrm/static/js/autocomplete.js | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/bookwyrm/static/js/autocomplete.js b/bookwyrm/static/js/autocomplete.js index df5c890f7..b9877b924 100644 --- a/bookwyrm/static/js/autocomplete.js +++ b/bookwyrm/static/js/autocomplete.js @@ -52,24 +52,22 @@ return []; } - return searchTrie(input, trie); + return searchTrie(trie); } - function searchTrie(output, trie) { - const options = Object.keys(trie); + function searchTrie(trie) { + const options = Object.values(trie); if (!options.length) { - return [output]; + return; + } else if (typeof options[0] == 'string') { + return [options[0]]; } return options.map(option => { - const newTrie = trie[option]; + const newTrie = option; - if (!newTrie) { - return; - } - - return searchTrie(output + option, trie[option]); + return searchTrie(newTrie); }).reduce((prev, next) => prev.concat(next)); } @@ -83,14 +81,11 @@ const mimetypeTrie = { "p": { "d": { - "f": { - "": {}, - "x": {}, - }, + "f": "PDF", }, "n": { - "g": {} + "g": "PNG", }, - } + }, }; From 4202498442e582f85c62e352219ad6ce8a33a753 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 16:53:30 -0800 Subject: [PATCH 065/170] Fixes one option trie case --- bookwyrm/static/js/autocomplete.js | 35 ++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/bookwyrm/static/js/autocomplete.js b/bookwyrm/static/js/autocomplete.js index b9877b924..d2d66b4a6 100644 --- a/bookwyrm/static/js/autocomplete.js +++ b/bookwyrm/static/js/autocomplete.js @@ -58,15 +58,17 @@ function searchTrie(trie) { const options = Object.values(trie); - if (!options.length) { - return; - } else if (typeof options[0] == 'string') { - return [options[0]]; + if (typeof trie == 'string') { + return [trie]; } return options.map(option => { const newTrie = option; + if (typeof newTrie == 'string') { + return [newTrie]; + } + return searchTrie(newTrie); }).reduce((prev, next) => prev.concat(next)); } @@ -79,13 +81,32 @@ })(); const mimetypeTrie = { + "a": { + "a": { + "c": "AAC", + }, + "z": { + "w": "AZW", + } + }, + "d": "Daisy", + "e": "ePub", + "f": "FLAC", + "h": "HTML", + "m": { + "4": { + "a": "M4A", + "b": "M4B", + }, + "o": "MOBI", + "p": "MP3", + }, + "o": "OGG", "p": { "d": { "f": "PDF", }, - "n": { - "g": "PNG", - }, + "l": "Plaintext", }, }; From 60761b19ba94ae153c3e90fbd27760c9171bc692 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 16:55:30 -0800 Subject: [PATCH 066/170] Run prettier --- bookwyrm/static/js/autocomplete.js | 77 +++++++++++++++--------------- 1 file changed, 38 insertions(+), 39 deletions(-) diff --git a/bookwyrm/static/js/autocomplete.js b/bookwyrm/static/js/autocomplete.js index d2d66b4a6..f8a982358 100644 --- a/bookwyrm/static/js/autocomplete.js +++ b/bookwyrm/static/js/autocomplete.js @@ -1,5 +1,5 @@ -(function() { - 'use strict'; +(function () { + "use strict"; /** * Suggest a completion as a user types @@ -30,7 +30,7 @@ suggestionsBox.innerHTML = ""; // Populate suggestions box - suggestions.forEach(suggestion => { + suggestions.forEach((suggestion) => { const suggestionItem = document.createElement("option"); suggestionItem.textContent = suggestion; @@ -40,7 +40,7 @@ function getSuggestions(input, trie) { // Follow the trie through the provided input - input.split("").forEach(letter => { + input.split("").forEach((letter) => { trie = trie[letter]; if (!trie) { @@ -58,55 +58,54 @@ function searchTrie(trie) { const options = Object.values(trie); - if (typeof trie == 'string') { + if (typeof trie == "string") { return [trie]; } - return options.map(option => { - const newTrie = option; + return options + .map((option) => { + const newTrie = option; - if (typeof newTrie == 'string') { - return [newTrie]; - } + if (typeof newTrie == "string") { + return [newTrie]; + } - return searchTrie(newTrie); - }).reduce((prev, next) => prev.concat(next)); + return searchTrie(newTrie); + }) + .reduce((prev, next) => prev.concat(next)); } - document - .querySelectorAll('[data-autocomplete]') - .forEach(input => { - input.addEventListener('input', autocomplete); - }); + document.querySelectorAll("[data-autocomplete]").forEach((input) => { + input.addEventListener("input", autocomplete); + }); })(); const mimetypeTrie = { - "a": { - "a": { - "c": "AAC", + a: { + a: { + c: "AAC", + }, + z: { + w: "AZW", }, - "z": { - "w": "AZW", - } }, - "d": "Daisy", - "e": "ePub", - "f": "FLAC", - "h": "HTML", - "m": { - "4": { - "a": "M4A", - "b": "M4B", + d: "Daisy", + e: "ePub", + f: "FLAC", + h: "HTML", + m: { + 4: { + a: "M4A", + b: "M4B", }, - "o": "MOBI", - "p": "MP3", + o: "MOBI", + p: "MP3", }, - "o": "OGG", - "p": { - "d": { - "f": "PDF", + o: "OGG", + p: { + d: { + f: "PDF", }, - "l": "Plaintext", + l: "Plaintext", }, }; - From de1bace8f363ee57d15db8968c9af3efed79f48c Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 Jan 2022 08:06:52 -0800 Subject: [PATCH 067/170] Updates tests --- bookwyrm/tests/views/admin/test_link_domains.py | 1 + bookwyrm/tests/views/admin/test_reports.py | 10 +++++----- bookwyrm/tests/views/books/test_links.py | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/bookwyrm/tests/views/admin/test_link_domains.py b/bookwyrm/tests/views/admin/test_link_domains.py index 8c972ea10..5d440dc50 100644 --- a/bookwyrm/tests/views/admin/test_link_domains.py +++ b/bookwyrm/tests/views/admin/test_link_domains.py @@ -29,6 +29,7 @@ class LinkDomainViews(TestCase): models.FileLink.objects.create( book=self.book, url="https://beep.com/book/1", + added_by=self.local_user, ) models.SiteSettings.objects.create() diff --git a/bookwyrm/tests/views/admin/test_reports.py b/bookwyrm/tests/views/admin/test_reports.py index 137d17cb0..d0f2e9d91 100644 --- a/bookwyrm/tests/views/admin/test_reports.py +++ b/bookwyrm/tests/views/admin/test_reports.py @@ -37,7 +37,7 @@ class ReportViews(TestCase): def test_reports_page(self): """there are so many views, this just makes sure it LOADS""" - view = views.Reports.as_view() + view = views.ReportsAdmin.as_view() request = self.factory.get("") request.user = self.local_user request.user.is_superuser = True @@ -49,7 +49,7 @@ class ReportViews(TestCase): def test_reports_page_with_data(self): """there are so many views, this just makes sure it LOADS""" - view = views.Reports.as_view() + view = views.ReportsAdmin.as_view() request = self.factory.get("") request.user = self.local_user request.user.is_superuser = True @@ -62,7 +62,7 @@ class ReportViews(TestCase): def test_report_page(self): """there are so many views, this just makes sure it LOADS""" - view = views.Report.as_view() + view = views.ReportAdmin.as_view() request = self.factory.get("") request.user = self.local_user request.user.is_superuser = True @@ -76,7 +76,7 @@ class ReportViews(TestCase): def test_report_comment(self): """comment on a report""" - view = views.Report.as_view() + view = views.ReportAdmin.as_view() request = self.factory.post("", {"note": "hi"}) request.user = self.local_user request.user.is_superuser = True @@ -97,7 +97,7 @@ class ReportViews(TestCase): request = self.factory.post("", form.data) request.user = self.local_user - views.make_report(request) + views.Report.as_view()(request) report = models.Report.objects.get() self.assertEqual(report.reporter, self.local_user) diff --git a/bookwyrm/tests/views/books/test_links.py b/bookwyrm/tests/views/books/test_links.py index 1961bde00..bdd9aaf42 100644 --- a/bookwyrm/tests/views/books/test_links.py +++ b/bookwyrm/tests/views/books/test_links.py @@ -66,7 +66,7 @@ class LinkViews(TestCase): form.data["url"] = "https://www.example.com" form.data["filetype"] = "HTML" form.data["book"] = self.book.id - form.data["added_by"] = self.local_user + form.data["added_by"] = self.local_user.id request = self.factory.post("", form.data) request.user = self.local_user From 4faf3cf09ac0e86545df94870e5f1b6aedbc9d4d Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 Jan 2022 09:12:04 -0800 Subject: [PATCH 068/170] Fixes button on search page --- bookwyrm/templates/search/book.html | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/bookwyrm/templates/search/book.html b/bookwyrm/templates/search/book.html index 0ce436767..ab62d4734 100644 --- a/bookwyrm/templates/search/book.html +++ b/bookwyrm/templates/search/book.html @@ -75,9 +75,11 @@
    {% csrf_token %} - +
    + +
    From 048460aec29c472b4a83e2b2e18d569f2b74a2d5 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 Jan 2022 09:12:17 -0800 Subject: [PATCH 069/170] Don't show filters notice on paged feed --- bookwyrm/templates/snippets/filters_panel/filters_panel.html | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/bookwyrm/templates/snippets/filters_panel/filters_panel.html b/bookwyrm/templates/snippets/filters_panel/filters_panel.html index 80e868926..84b271633 100644 --- a/bookwyrm/templates/snippets/filters_panel/filters_panel.html +++ b/bookwyrm/templates/snippets/filters_panel/filters_panel.html @@ -3,16 +3,15 @@ {% trans "Filters" %} - {% if filters_applied %} - {{ _("Filters are applied") }} + {% trans "Filters are applied" %} {% endif %} - {% if request.GET %} + {% if method != "post" and request.GET %} {% trans "Filters are applied" %} From 0d2c6e63d18f591678c1ffc697b43fac69a324a0 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 Jan 2022 09:50:04 -0800 Subject: [PATCH 070/170] Converts create readthrough to modal --- bookwyrm/forms.py | 5 ++ .../templates/book/add_readthrough_modal.html | 28 ++++++++++ bookwyrm/templates/book/book.html | 24 +++----- .../templates/snippets/readthrough_form.html | 1 + bookwyrm/urls.py | 2 +- bookwyrm/views/__init__.py | 2 +- bookwyrm/views/reading.py | 55 +++++++++++-------- 7 files changed, 75 insertions(+), 42 deletions(-) create mode 100644 bookwyrm/templates/book/add_readthrough_modal.html diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 7ba7bd97b..37cb2e872 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -478,3 +478,8 @@ class SortListForm(forms.Form): ("descending", _("Descending")), ), ) + +class ReadThroughForm(CustomForm): + class Meta: + model = models.ReadThrough + fields = ["user", "book", "start_date", "finish_date"] diff --git a/bookwyrm/templates/book/add_readthrough_modal.html b/bookwyrm/templates/book/add_readthrough_modal.html new file mode 100644 index 000000000..45cbb2aa5 --- /dev/null +++ b/bookwyrm/templates/book/add_readthrough_modal.html @@ -0,0 +1,28 @@ +{% extends "components/modal.html" %} +{% load i18n %} +{% load utilities %} + +{% block modal-title %} +{% blocktrans trimmed with title=book|book_title %} +Add read dates for "{{ title }}" +{% endblocktrans %} +{% endblock %} + +{% block modal-form-open %} +
    +{% endblock %} + +{% block modal-body %} +{% include 'snippets/readthrough_form.html' with readthrough=None %} +{% endblock %} + +{% block modal-footer %} + +{% if not static %} + +{% endif %} +{% endblock %} + +{% block modal-form-close %} + +{% endblock %} diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 19dbccbd6..38dffd20a 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -237,24 +237,16 @@

    {% trans "Your reading activity" %}

    - {% trans "Add read dates" as button_text %} - {% include 'snippets/toggle/open_button.html' with text=button_text icon_with_text="plus" class="is-small" controls_text="add_readthrough" focus="add_readthrough_focus_" %} +
    - + {% include "book/add_readthrough_modal.html" with id="add-readthrough" %} + {% if not readthroughs.exists %}

    {% trans "You don't have any reading activity for this book." %}

    {% endif %} diff --git a/bookwyrm/templates/snippets/readthrough_form.html b/bookwyrm/templates/snippets/readthrough_form.html index 295ad7c6e..1558dada4 100644 --- a/bookwyrm/templates/snippets/readthrough_form.html +++ b/bookwyrm/templates/snippets/readthrough_form.html @@ -4,6 +4,7 @@ {% csrf_token %} +
    - {% include "book/add_readthrough_modal.html" with id="add-readthrough" %} + {% include "readthrough/add_readthrough_modal.html" with id="add-readthrough" %} {% if not readthroughs.exists %}

    {% trans "You don't have any reading activity for this book." %}

    {% endif %} {% for readthrough in readthroughs %} - {% include 'book/readthrough.html' with readthrough=readthrough %} + {% include 'readthrough/readthrough_list.html' with readthrough=readthrough %} {% endfor %} diff --git a/bookwyrm/templates/book/add_readthrough_modal.html b/bookwyrm/templates/readthrough/add_readthrough_modal.html similarity index 90% rename from bookwyrm/templates/book/add_readthrough_modal.html rename to bookwyrm/templates/readthrough/add_readthrough_modal.html index 45cbb2aa5..55d2198ce 100644 --- a/bookwyrm/templates/book/add_readthrough_modal.html +++ b/bookwyrm/templates/readthrough/add_readthrough_modal.html @@ -13,7 +13,7 @@ Add read dates for "{{ title }}" {% endblock %} {% block modal-body %} -{% include 'snippets/readthrough_form.html' with readthrough=None %} +{% include 'readthrough/readthrough_form.html' with readthrough=None %} {% endblock %} {% block modal-footer %} diff --git a/bookwyrm/templates/book/delete_readthrough_modal.html b/bookwyrm/templates/readthrough/delete_readthrough_modal.html similarity index 100% rename from bookwyrm/templates/book/delete_readthrough_modal.html rename to bookwyrm/templates/readthrough/delete_readthrough_modal.html diff --git a/bookwyrm/templates/snippets/readthrough_form.html b/bookwyrm/templates/readthrough/readthrough_form.html similarity index 100% rename from bookwyrm/templates/snippets/readthrough_form.html rename to bookwyrm/templates/readthrough/readthrough_form.html diff --git a/bookwyrm/templates/book/readthrough.html b/bookwyrm/templates/readthrough/readthrough_list.html similarity index 96% rename from bookwyrm/templates/book/readthrough.html rename to bookwyrm/templates/readthrough/readthrough_list.html index e711ecd00..21ce557cc 100644 --- a/bookwyrm/templates/book/readthrough.html +++ b/bookwyrm/templates/readthrough/readthrough_list.html @@ -77,7 +77,7 @@ - {% include "readthrough/add_readthrough_modal.html" with id="add-readthrough" %} + {% include "readthrough/readthrough_modal.html" with id="add-readthrough" %} {% if not readthroughs.exists %}

    {% trans "You don't have any reading activity for this book." %}

    diff --git a/bookwyrm/templates/readthrough/readthrough.html b/bookwyrm/templates/readthrough/readthrough.html index efd776834..bed59d29b 100644 --- a/bookwyrm/templates/readthrough/readthrough.html +++ b/bookwyrm/templates/readthrough/readthrough.html @@ -10,6 +10,6 @@ Add read dates for "{{ title }}" {% block content %} -{% include "readthrough/add_readthrough_modal.html" with book=book active=True static=True %} +{% include "readthrough/readthrough_modal.html" with book=book active=True static=True %} {% endblock %} diff --git a/bookwyrm/templates/readthrough/readthrough_list.html b/bookwyrm/templates/readthrough/readthrough_list.html index 21ce557cc..9f9db9a55 100644 --- a/bookwyrm/templates/readthrough/readthrough_list.html +++ b/bookwyrm/templates/readthrough/readthrough_list.html @@ -3,7 +3,7 @@ {% load tz %} {% load utilities %}
    -
    +
    {% trans "Progress Updates:" %} @@ -58,7 +58,11 @@
    {% trans "Edit read dates" as button_text %} - {% include 'snippets/toggle/toggle_button.html' with class="is-small" text=button_text icon="pencil" controls_text="edit_readthrough" controls_uid=readthrough.id focus="edit_readthrough" %} +
    {% trans "Delete these read dates" as button_text %} @@ -74,16 +78,7 @@
    - -{% join "delete_readthrough" readthrough.id as modal_id %} -{% include 'readthrough/delete_readthrough_modal.html' with id=modal_id %} +{% join "edit_readthrough" readthrough.id as edit_modal_id %} +{% include "readthrough/readthrough_modal.html" with readthrough=readthrough id=edit_modal_id %} +{% join "delete_readthrough" readthrough.id as delete_modal_id %} +{% include 'readthrough/delete_readthrough_modal.html' with id=delete_modal_id %} diff --git a/bookwyrm/templates/readthrough/add_readthrough_modal.html b/bookwyrm/templates/readthrough/readthrough_modal.html similarity index 100% rename from bookwyrm/templates/readthrough/add_readthrough_modal.html rename to bookwyrm/templates/readthrough/readthrough_modal.html From a412f87c641781e7fd671aabe962aaa8fa3f31d9 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 Jan 2022 10:29:11 -0800 Subject: [PATCH 074/170] Match wording to state --- .../templates/readthrough/readthrough_modal.html | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/readthrough/readthrough_modal.html b/bookwyrm/templates/readthrough/readthrough_modal.html index e177850e2..67a3b6201 100644 --- a/bookwyrm/templates/readthrough/readthrough_modal.html +++ b/bookwyrm/templates/readthrough/readthrough_modal.html @@ -3,9 +3,17 @@ {% load utilities %} {% block modal-title %} + +{% if readthrough %} {% blocktrans trimmed with title=book|book_title %} -Add read dates for "{{ title }}" + Update read dates for "{{ title }}" {% endblocktrans %} +{% else %} +{% blocktrans trimmed with title=book|book_title %} + Add read dates for "{{ title }}" +{% endblocktrans %} +{% endif %} + {% endblock %} {% block modal-form-open %} @@ -61,7 +69,7 @@ Add read dates for "{{ title }}" {% endblock %} {% block modal-footer %} - + {% if not static %} {% endif %} From 68d943fb26987388a0a41885a63227b3dfabff64 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 Jan 2022 10:33:58 -0800 Subject: [PATCH 075/170] Preserve readthrough id in edit --- bookwyrm/templates/readthrough/readthrough.html | 2 +- bookwyrm/views/reading.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/readthrough/readthrough.html b/bookwyrm/templates/readthrough/readthrough.html index bed59d29b..0b42017e6 100644 --- a/bookwyrm/templates/readthrough/readthrough.html +++ b/bookwyrm/templates/readthrough/readthrough.html @@ -4,7 +4,7 @@ {% block title %} {% blocktrans trimmed with title=book|book_title %} -Add read dates for "{{ title }}" +Update read dates for "{{ title }}" {% endblocktrans %} {% endblock %} diff --git a/bookwyrm/views/reading.py b/bookwyrm/views/reading.py index 7c2b6d0bd..22ee450ad 100644 --- a/bookwyrm/views/reading.py +++ b/bookwyrm/views/reading.py @@ -137,6 +137,10 @@ class CreateReadThrough(View): if not form.is_valid(): book = get_object_or_404(models.Edition, id=book_id) data = {"form": form, "book": book} + if request.POST.get("id"): + data["readthrough"] = get_object_or_404( + models.ReadThrough, id=request.POST.get("id") + ) return TemplateResponse( request, "readthrough/readthrough.html", data ) @@ -144,7 +148,6 @@ class CreateReadThrough(View): return redirect("book", book_id) - @transaction.atomic def update_readthrough_on_shelve( user, annotated_book, status, start_date=None, finish_date=None From 4ca90ca10f49602f98d7eb07227345925811f20b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 Jan 2022 10:40:32 -0800 Subject: [PATCH 076/170] Renames class view --- bookwyrm/forms.py | 1 + bookwyrm/urls.py | 2 +- bookwyrm/views/__init__.py | 2 +- bookwyrm/views/reading.py | 12 ++++++++++-- bookwyrm/views/status.py | 1 + 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 83f0d0534..b9ff59c2e 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -479,6 +479,7 @@ class SortListForm(forms.Form): ), ) + class ReadThroughForm(CustomForm): def clean(self): """make sure the email isn't in use by a registered user""" diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index f0851df2b..ae67c0920 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -457,7 +457,7 @@ urlpatterns = [ # reading progress re_path(r"^edit-readthrough/?$", views.edit_readthrough, name="edit-readthrough"), re_path(r"^delete-readthrough/?$", views.delete_readthrough), - re_path(r"^create-readthrough/?$", views.CreateReadThrough.as_view(), name="create-readthrough"), + re_path(r"^create-readthrough/?$", views.ReadThrough.as_view(), name="create-readthrough"), re_path(r"^delete-progressupdate/?$", views.delete_progressupdate), # shelve actions re_path( diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index 092d27a6b..4157e75b9 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -88,7 +88,7 @@ from .list import Lists, SavedLists, List, Curate, UserLists from .list import save_list, unsave_list, delete_list, unsafe_embed_list from .notifications import Notifications from .outbox import Outbox -from .reading import CreateReadThrough, delete_readthrough, delete_progressupdate +from .reading import ReadThrough, delete_readthrough, delete_progressupdate from .reading import ReadingStatus from .rss_feed import RssFeed from .search import Search diff --git a/bookwyrm/views/reading.py b/bookwyrm/views/reading.py index 22ee450ad..a5d69947e 100644 --- a/bookwyrm/views/reading.py +++ b/bookwyrm/views/reading.py @@ -116,10 +116,18 @@ class ReadingStatus(View): @method_decorator(login_required, name="dispatch") -class CreateReadThrough(View): +class ReadThrough(View): """Add new read dates""" - def get(self, request): + def get(self, request, book_id, readthrough_id=None): """standalone form in case of errors""" + book = get_object_or_404(models.Edition, id=book_id) + form = forms.ReadThroughForm() + data = {"form": form, "book": book} + if readthrough_id: + data["readthrough"] = get_object_or_404( + models.ReadThrough, id=readthrough_id + ) + return TemplateResponse(request, "readthrough/readthrough.html", data) def post(self, request): diff --git a/bookwyrm/views/status.py b/bookwyrm/views/status.py index bb69d30c0..5dc8e8fa0 100644 --- a/bookwyrm/views/status.py +++ b/bookwyrm/views/status.py @@ -159,6 +159,7 @@ def update_progress(request, book_id): # pylint: disable=unused-argument @require_POST def edit_readthrough(request): """can't use the form because the dates are too finnicky""" + # TODO: remove this, it duplicates the code in the ReadThrough view readthrough = get_object_or_404(models.ReadThrough, id=request.POST.get("id")) readthrough.raise_not_editable(request.user) From 0f9881365b4f0c150fb0d75f60ce5bc6354fd494 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 Jan 2022 10:41:33 -0800 Subject: [PATCH 077/170] Python formatting --- bookwyrm/urls.py | 6 +++++- bookwyrm/views/reading.py | 7 +++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index ae67c0920..7a95103df 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -457,7 +457,11 @@ urlpatterns = [ # reading progress re_path(r"^edit-readthrough/?$", views.edit_readthrough, name="edit-readthrough"), re_path(r"^delete-readthrough/?$", views.delete_readthrough), - re_path(r"^create-readthrough/?$", views.ReadThrough.as_view(), name="create-readthrough"), + re_path( + r"^create-readthrough/?$", + views.ReadThrough.as_view(), + name="create-readthrough", + ), re_path(r"^delete-progressupdate/?$", views.delete_progressupdate), # shelve actions re_path( diff --git a/bookwyrm/views/reading.py b/bookwyrm/views/reading.py index a5d69947e..d90c0e9dc 100644 --- a/bookwyrm/views/reading.py +++ b/bookwyrm/views/reading.py @@ -118,6 +118,7 @@ class ReadingStatus(View): @method_decorator(login_required, name="dispatch") class ReadThrough(View): """Add new read dates""" + def get(self, request, book_id, readthrough_id=None): """standalone form in case of errors""" book = get_object_or_404(models.Edition, id=book_id) @@ -129,7 +130,6 @@ class ReadThrough(View): ) return TemplateResponse(request, "readthrough/readthrough.html", data) - def post(self, request): """can't use the form normally because the dates are too finnicky""" book_id = request.POST.get("book") @@ -149,9 +149,7 @@ class ReadThrough(View): data["readthrough"] = get_object_or_404( models.ReadThrough, id=request.POST.get("id") ) - return TemplateResponse( - request, "readthrough/readthrough.html", data - ) + return TemplateResponse(request, "readthrough/readthrough.html", data) form.save() return redirect("book", book_id) @@ -196,6 +194,7 @@ def delete_readthrough(request): readthrough.delete() return redirect(request.headers.get("Referer", "/")) + @login_required @require_POST def delete_progressupdate(request): From 834eb95d9d02a74fd3c2a107e004e4eb415ad35f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 Jan 2022 10:43:17 -0800 Subject: [PATCH 078/170] Reformats readthrough view test --- bookwyrm/tests/views/test_readthrough.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/bookwyrm/tests/views/test_readthrough.py b/bookwyrm/tests/views/test_readthrough.py index 6697c0e07..f4ca3af61 100644 --- a/bookwyrm/tests/views/test_readthrough.py +++ b/bookwyrm/tests/views/test_readthrough.py @@ -41,10 +41,8 @@ class ReadThrough(TestCase): self.assertEqual(self.edition.readthrough_set.count(), 0) self.client.post( - "/reading-status/start/{}".format(self.edition.id), - { - "start_date": "2020-11-27", - }, + f"/reading-status/start/{self.edition.id}", + {"start_date": "2020-11-27"}, ) readthroughs = self.edition.readthrough_set.all() @@ -62,10 +60,8 @@ class ReadThrough(TestCase): self.assertEqual(self.edition.readthrough_set.count(), 0) self.client.post( - "/reading-status/start/{}".format(self.edition.id), - { - "start_date": "2020-11-27", - }, + f"/reading-status/start/{self.edition.id}", + {"start_date": "2020-11-27"}, ) readthroughs = self.edition.readthrough_set.all() From 9fdb75e2d3e338b33f1caf962b9d2025aa898303 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 Jan 2022 10:47:55 -0800 Subject: [PATCH 079/170] Renames item layout file --- bookwyrm/templates/notifications/items/accept.html | 2 +- bookwyrm/templates/notifications/items/add.html | 2 +- bookwyrm/templates/notifications/items/boost.html | 2 +- bookwyrm/templates/notifications/items/fav.html | 2 +- bookwyrm/templates/notifications/items/follow.html | 2 +- bookwyrm/templates/notifications/items/follow_request.html | 2 +- bookwyrm/templates/notifications/items/import.html | 2 +- bookwyrm/templates/notifications/items/invite.html | 2 +- bookwyrm/templates/notifications/items/join.html | 2 +- .../notifications/items/{item_layout.html => layout.html} | 0 bookwyrm/templates/notifications/items/leave.html | 2 +- bookwyrm/templates/notifications/items/mention.html | 2 +- bookwyrm/templates/notifications/items/remove.html | 2 +- bookwyrm/templates/notifications/items/reply.html | 2 +- bookwyrm/templates/notifications/items/report.html | 2 +- bookwyrm/templates/notifications/items/update.html | 2 +- 16 files changed, 15 insertions(+), 15 deletions(-) rename bookwyrm/templates/notifications/items/{item_layout.html => layout.html} (100%) diff --git a/bookwyrm/templates/notifications/items/accept.html b/bookwyrm/templates/notifications/items/accept.html index 045e23266..5f26008f4 100644 --- a/bookwyrm/templates/notifications/items/accept.html +++ b/bookwyrm/templates/notifications/items/accept.html @@ -1,4 +1,4 @@ -{% extends 'notifications/items/item_layout.html' %} +{% extends 'notifications/items/layout.html' %} {% load i18n %} {% load utilities %} diff --git a/bookwyrm/templates/notifications/items/add.html b/bookwyrm/templates/notifications/items/add.html index 0e653aeb8..6a0183ebe 100644 --- a/bookwyrm/templates/notifications/items/add.html +++ b/bookwyrm/templates/notifications/items/add.html @@ -1,4 +1,4 @@ -{% extends 'notifications/items/item_layout.html' %} +{% extends 'notifications/items/layout.html' %} {% load i18n %} {% load utilities %} diff --git a/bookwyrm/templates/notifications/items/boost.html b/bookwyrm/templates/notifications/items/boost.html index 5f8962b38..6bb373ef6 100644 --- a/bookwyrm/templates/notifications/items/boost.html +++ b/bookwyrm/templates/notifications/items/boost.html @@ -1,4 +1,4 @@ -{% extends 'notifications/items/item_layout.html' %} +{% extends 'notifications/items/layout.html' %} {% load i18n %} {% load utilities %} diff --git a/bookwyrm/templates/notifications/items/fav.html b/bookwyrm/templates/notifications/items/fav.html index fbb865e4f..58964d033 100644 --- a/bookwyrm/templates/notifications/items/fav.html +++ b/bookwyrm/templates/notifications/items/fav.html @@ -1,4 +1,4 @@ -{% extends 'notifications/items/item_layout.html' %} +{% extends 'notifications/items/layout.html' %} {% load i18n %} {% load utilities %} diff --git a/bookwyrm/templates/notifications/items/follow.html b/bookwyrm/templates/notifications/items/follow.html index 7220d5d17..3518e7b1b 100644 --- a/bookwyrm/templates/notifications/items/follow.html +++ b/bookwyrm/templates/notifications/items/follow.html @@ -1,4 +1,4 @@ -{% extends 'notifications/items/item_layout.html' %} +{% extends 'notifications/items/layout.html' %} {% load i18n %} {% load utilities %} diff --git a/bookwyrm/templates/notifications/items/follow_request.html b/bookwyrm/templates/notifications/items/follow_request.html index febb0a50e..9cec8116a 100644 --- a/bookwyrm/templates/notifications/items/follow_request.html +++ b/bookwyrm/templates/notifications/items/follow_request.html @@ -1,4 +1,4 @@ -{% extends 'notifications/items/item_layout.html' %} +{% extends 'notifications/items/layout.html' %} {% load i18n %} {% load utilities %} diff --git a/bookwyrm/templates/notifications/items/import.html b/bookwyrm/templates/notifications/items/import.html index f3c8b5c09..7f5994811 100644 --- a/bookwyrm/templates/notifications/items/import.html +++ b/bookwyrm/templates/notifications/items/import.html @@ -1,4 +1,4 @@ -{% extends 'notifications/items/item_layout.html' %} +{% extends 'notifications/items/layout.html' %} {% load i18n %} {% block primary_link %}{% spaceless %} diff --git a/bookwyrm/templates/notifications/items/invite.html b/bookwyrm/templates/notifications/items/invite.html index abb8cd02f..aff416b07 100644 --- a/bookwyrm/templates/notifications/items/invite.html +++ b/bookwyrm/templates/notifications/items/invite.html @@ -1,4 +1,4 @@ -{% extends 'notifications/items/item_layout.html' %} +{% extends 'notifications/items/layout.html' %} {% load i18n %} {% load utilities %} diff --git a/bookwyrm/templates/notifications/items/join.html b/bookwyrm/templates/notifications/items/join.html index c10def456..82f8a8c50 100644 --- a/bookwyrm/templates/notifications/items/join.html +++ b/bookwyrm/templates/notifications/items/join.html @@ -1,4 +1,4 @@ -{% extends 'notifications/items/item_layout.html' %} +{% extends 'notifications/items/layout.html' %} {% load i18n %} {% load utilities %} diff --git a/bookwyrm/templates/notifications/items/item_layout.html b/bookwyrm/templates/notifications/items/layout.html similarity index 100% rename from bookwyrm/templates/notifications/items/item_layout.html rename to bookwyrm/templates/notifications/items/layout.html diff --git a/bookwyrm/templates/notifications/items/leave.html b/bookwyrm/templates/notifications/items/leave.html index 422a31dea..c17a1986e 100644 --- a/bookwyrm/templates/notifications/items/leave.html +++ b/bookwyrm/templates/notifications/items/leave.html @@ -1,4 +1,4 @@ -{% extends 'notifications/items/item_layout.html' %} +{% extends 'notifications/items/layout.html' %} {% load i18n %} {% load utilities %} diff --git a/bookwyrm/templates/notifications/items/mention.html b/bookwyrm/templates/notifications/items/mention.html index cda77163e..ead3c8a6c 100644 --- a/bookwyrm/templates/notifications/items/mention.html +++ b/bookwyrm/templates/notifications/items/mention.html @@ -1,4 +1,4 @@ -{% extends 'notifications/items/item_layout.html' %} +{% extends 'notifications/items/layout.html' %} {% load i18n %} {% load utilities %} diff --git a/bookwyrm/templates/notifications/items/remove.html b/bookwyrm/templates/notifications/items/remove.html index eba18fd89..84160c7bd 100644 --- a/bookwyrm/templates/notifications/items/remove.html +++ b/bookwyrm/templates/notifications/items/remove.html @@ -1,4 +1,4 @@ -{% extends 'notifications/items/item_layout.html' %} +{% extends 'notifications/items/layout.html' %} {% load i18n %} {% load utilities %} diff --git a/bookwyrm/templates/notifications/items/reply.html b/bookwyrm/templates/notifications/items/reply.html index 883bbbb5b..0aa664ce4 100644 --- a/bookwyrm/templates/notifications/items/reply.html +++ b/bookwyrm/templates/notifications/items/reply.html @@ -1,4 +1,4 @@ -{% extends 'notifications/items/item_layout.html' %} +{% extends 'notifications/items/layout.html' %} {% load i18n %} {% load utilities %} diff --git a/bookwyrm/templates/notifications/items/report.html b/bookwyrm/templates/notifications/items/report.html index f537b5255..fdd5f0094 100644 --- a/bookwyrm/templates/notifications/items/report.html +++ b/bookwyrm/templates/notifications/items/report.html @@ -1,4 +1,4 @@ -{% extends 'notifications/items/item_layout.html' %} +{% extends 'notifications/items/layout.html' %} {% load i18n %} diff --git a/bookwyrm/templates/notifications/items/update.html b/bookwyrm/templates/notifications/items/update.html index be796b785..7fc52cef1 100644 --- a/bookwyrm/templates/notifications/items/update.html +++ b/bookwyrm/templates/notifications/items/update.html @@ -1,4 +1,4 @@ -{% extends 'notifications/items/item_layout.html' %} +{% extends 'notifications/items/layout.html' %} {% load i18n %} {% load utilities %} From 0d7801f6f4b4b40154d0cb06ad22b00e3a72040b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 Jan 2022 11:04:56 -0800 Subject: [PATCH 080/170] Show unread notifications color --- bookwyrm/settings.py | 2 +- bookwyrm/static/css/bookwyrm.css | 7 +++++++ bookwyrm/templates/notifications/items/layout.html | 8 ++++---- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index fe2f7467a..92ff7ecdd 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -14,7 +14,7 @@ VERSION = "0.1.1" PAGE_LENGTH = env("PAGE_LENGTH", 15) DEFAULT_LANGUAGE = env("DEFAULT_LANGUAGE", "English") -JS_CACHE = "2d3181e1" +JS_CACHE = "9b4cc1f7" # email EMAIL_BACKEND = env("EMAIL_BACKEND", "django.core.mail.backends.smtp.EmailBackend") diff --git a/bookwyrm/static/css/bookwyrm.css b/bookwyrm/static/css/bookwyrm.css index 4d960734e..cc87e5b81 100644 --- a/bookwyrm/static/css/bookwyrm.css +++ b/bookwyrm/static/css/bookwyrm.css @@ -751,6 +751,13 @@ ol.ordered-list li::before { padding: 0 0.75em; } +/* Notifications page + ******************************************************************************/ + +.notification a.icon { + text-decoration: none !important; +} + /* Breadcrumbs ******************************************************************************/ diff --git a/bookwyrm/templates/notifications/items/layout.html b/bookwyrm/templates/notifications/items/layout.html index 506bda8dd..6ddbdcc31 100644 --- a/bookwyrm/templates/notifications/items/layout.html +++ b/bookwyrm/templates/notifications/items/layout.html @@ -1,9 +1,9 @@ {% load bookwyrm_tags %} {% related_status notification as related_status %} -
    -
    -
    - +
    +
    + From c12aa1ef798cf0c6305efc80354c26ac27a3802f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 Jan 2022 11:38:26 -0800 Subject: [PATCH 081/170] Fixes test --- bookwyrm/tests/views/test_reading.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bookwyrm/tests/views/test_reading.py b/bookwyrm/tests/views/test_reading.py index 0d6c13aa3..759866947 100644 --- a/bookwyrm/tests/views/test_reading.py +++ b/bookwyrm/tests/views/test_reading.py @@ -231,11 +231,12 @@ class ReadingViews(TestCase): "finish_date": "2018-03-07", "book": self.book.id, "id": "", + "user": self.local_user.id, }, ) request.user = self.local_user - views.create_readthrough(request) + views.ReadThrough.as_view()(request) readthrough = models.ReadThrough.objects.get() self.assertEqual(readthrough.start_date.year, 2017) self.assertEqual(readthrough.start_date.month, 1) From f4b655f952494a2fc2c4f82eb828a0e4b4ca789b Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 Jan 2022 11:45:37 -0800 Subject: [PATCH 082/170] Makes form names unique in readthrough modal --- bookwyrm/templates/readthrough/readthrough_modal.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/readthrough/readthrough_modal.html b/bookwyrm/templates/readthrough/readthrough_modal.html index 67a3b6201..07d27b664 100644 --- a/bookwyrm/templates/readthrough/readthrough_modal.html +++ b/bookwyrm/templates/readthrough/readthrough_modal.html @@ -17,7 +17,7 @@ {% endblock %} {% block modal-form-open %} -
    + {% endblock %} {% block modal-body %} From 150756dbd050bd60a95205fa69fdd9e25ced98f1 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Tue, 11 Jan 2022 12:03:04 -0800 Subject: [PATCH 083/170] Adds breadcrumbs to shelf page --- bookwyrm/templates/shelf/shelf.html | 21 +++++++++++-------- .../snippets/translated_shelf_name.html | 12 +++++++++++ 2 files changed, 24 insertions(+), 9 deletions(-) create mode 100644 bookwyrm/templates/snippets/translated_shelf_name.html diff --git a/bookwyrm/templates/shelf/shelf.html b/bookwyrm/templates/shelf/shelf.html index 0184ab1d8..0e295a873 100644 --- a/bookwyrm/templates/shelf/shelf.html +++ b/bookwyrm/templates/shelf/shelf.html @@ -19,6 +19,17 @@ + +
    {% trans "URL" %}{% trans "Added by" %} {% trans "Filetype" %} {% trans "Book" %}
    {{ link.url }} + @{{ link.added_by|username }} + {% if link.filelink.filetype %} {{ link.filelink.filetype }} From 78dd5caf9f40517709daf64506bb18417e24ad19 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 10 Jan 2022 14:55:10 -0800 Subject: [PATCH 059/170] Allow users to report spam links --- bookwyrm/forms.py | 2 +- .../migrations/0127_auto_20220110_2211.py | 22 ++++ bookwyrm/models/link.py | 5 +- bookwyrm/models/report.py | 6 +- bookwyrm/static/css/bookwyrm.css | 4 + .../book/link_verification_modal.html | 9 +- bookwyrm/templates/report.html | 10 ++ .../settings/link_domains/link_domains.html | 35 +----- .../settings/link_domains/link_table.html | 36 ++++++ .../templates/settings/reports/report.html | 55 +++++---- .../settings/reports/report_header.html | 22 ++++ .../settings/reports/report_links_table.html | 20 +++ .../settings/reports/report_preview.html | 8 +- .../users/user_moderation_actions.html | 114 +++++++++--------- .../templates/snippets/report_button.html | 2 +- bookwyrm/templates/snippets/report_modal.html | 27 ++++- bookwyrm/urls.py | 19 ++- bookwyrm/views/__init__.py | 6 +- bookwyrm/views/admin/reports.py | 20 +-- bookwyrm/views/report.py | 39 ++++++ 20 files changed, 310 insertions(+), 151 deletions(-) create mode 100644 bookwyrm/migrations/0127_auto_20220110_2211.py create mode 100644 bookwyrm/templates/report.html create mode 100644 bookwyrm/templates/settings/link_domains/link_table.html create mode 100644 bookwyrm/templates/settings/reports/report_header.html create mode 100644 bookwyrm/templates/settings/reports/report_links_table.html create mode 100644 bookwyrm/views/report.py diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index e08f3a3a5..0d27fffef 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -453,7 +453,7 @@ class GroupForm(CustomForm): class ReportForm(CustomForm): class Meta: model = models.Report - fields = ["user", "reporter", "statuses", "note"] + fields = ["user", "reporter", "statuses", "links", "note"] class EmailBlocklistForm(CustomForm): diff --git a/bookwyrm/migrations/0127_auto_20220110_2211.py b/bookwyrm/migrations/0127_auto_20220110_2211.py new file mode 100644 index 000000000..e18be29e6 --- /dev/null +++ b/bookwyrm/migrations/0127_auto_20220110_2211.py @@ -0,0 +1,22 @@ +# Generated by Django 3.2.10 on 2022-01-10 22:11 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0126_filelink_link_linkdomain"), + ] + + operations = [ + migrations.RemoveConstraint( + model_name="report", + name="self_report", + ), + migrations.AddField( + model_name="report", + name="links", + field=models.ManyToManyField(blank=True, to="bookwyrm.Link"), + ), + ] diff --git a/bookwyrm/models/link.py b/bookwyrm/models/link.py index 3e21642f2..be7c104f0 100644 --- a/bookwyrm/models/link.py +++ b/bookwyrm/models/link.py @@ -16,10 +16,7 @@ class Link(ActivitypubMixin, BookWyrmModel): url = fields.URLField(max_length=255, activitypub_field="href") added_by = fields.ForeignKey( - "User", - on_delete=models.SET_NULL, - null=True, - activitypub_field="attributedTo" + "User", on_delete=models.SET_NULL, null=True, activitypub_field="attributedTo" ) domain = models.ForeignKey( "LinkDomain", diff --git a/bookwyrm/models/report.py b/bookwyrm/models/report.py index 636817cb2..4910a4e08 100644 --- a/bookwyrm/models/report.py +++ b/bookwyrm/models/report.py @@ -13,14 +13,12 @@ class Report(BookWyrmModel): note = models.TextField(null=True, blank=True) user = models.ForeignKey("User", on_delete=models.PROTECT) statuses = models.ManyToManyField("Status", blank=True) + links = models.ManyToManyField("Link", blank=True) resolved = models.BooleanField(default=False) class Meta: - """don't let users report themselves""" + """set order by default""" - constraints = [ - models.CheckConstraint(check=~Q(reporter=F("user")), name="self_report") - ] ordering = ("-created_date",) diff --git a/bookwyrm/static/css/bookwyrm.css b/bookwyrm/static/css/bookwyrm.css index 4d960734e..92ddd294d 100644 --- a/bookwyrm/static/css/bookwyrm.css +++ b/bookwyrm/static/css/bookwyrm.css @@ -720,6 +720,10 @@ ol.ordered-list li::before { } } +.overflow-wrap-anywhere { + overflow-wrap: anywhere; +} + /* Threads ******************************************************************************/ diff --git a/bookwyrm/templates/book/link_verification_modal.html b/bookwyrm/templates/book/link_verification_modal.html index ed7dca8e6..eab8987b8 100644 --- a/bookwyrm/templates/book/link_verification_modal.html +++ b/bookwyrm/templates/book/link_verification_modal.html @@ -9,7 +9,8 @@ {% block modal-body %} {% blocktrans trimmed with link_url=link.url %} -This link is taking you to {{ link_url }}. Is that where you'd like to go? +This link is taking you to: {{ link_url }}.
    +Is that where you'd like to go? {% endblocktrans %} {% endblock %} @@ -19,4 +20,10 @@ This link is taking you to {{ link_url }}. Is that where you'd like {% trans "Continue" %} +{% if request.user.is_authenticated %} + +{% endif %} + {% endblock %} diff --git a/bookwyrm/templates/report.html b/bookwyrm/templates/report.html new file mode 100644 index 000000000..686401ebe --- /dev/null +++ b/bookwyrm/templates/report.html @@ -0,0 +1,10 @@ +{% extends "layout.html" %} +{% load i18n %} + +{% block title %} +{% trans "Report" %} +{% endblock %} + +{% block content %} +{% include "snippets/report_modal.html" with user=user active=True static=True %} +{% endblock %} diff --git a/bookwyrm/templates/settings/link_domains/link_domains.html b/bookwyrm/templates/settings/link_domains/link_domains.html index 83190029c..3f2d60976 100644 --- a/bookwyrm/templates/settings/link_domains/link_domains.html +++ b/bookwyrm/templates/settings/link_domains/link_domains.html @@ -1,5 +1,4 @@ {% extends 'settings/layout.html' %} -{% load humanize %} {% load i18n %} {% load utilities %} @@ -32,7 +31,7 @@ {% for domain in domains %} {% join "domain" domain.id as domain_modal %} -
    +

    @@ -58,37 +57,7 @@
    - - - - - - - - {% for link in domain.links.all|slice:10 %} - - - - - - - - {% endfor %} -
    {% trans "URL" %}{% trans "Added by" %}{% trans "Filetype" %}{% trans "Book" %}
    - {{ link.url }} - - @{{ link.added_by|username }} - - {% if link.filelink.filetype %} - {{ link.filelink.filetype }} - {% endif %} - - {% if link.filelink.filetype %} - {% with book=link.filelink.book %} - {% include "snippets/book_titleby.html" with book=book %} - {% endwith %} - {% endif %} -
    + {% include "settings/link_domains/link_table.html" with links=domain.links.all|slice:10 %}

    diff --git a/bookwyrm/templates/settings/link_domains/link_table.html b/bookwyrm/templates/settings/link_domains/link_table.html new file mode 100644 index 000000000..680132fdf --- /dev/null +++ b/bookwyrm/templates/settings/link_domains/link_table.html @@ -0,0 +1,36 @@ +{% load i18n %} +{% load utilities %} + + + + + + + + {% block additional_headers %}{% endblock %} + + {% for link in links%} + + + + + + + {% block additional_data %}{% endblock %} + + {% endfor %} +
    {% trans "URL" %}{% trans "Added by" %}{% trans "Filetype" %}{% trans "Book" %}
    + {{ link.url }} + + @{{ link.added_by|username }} + + {% if link.filelink.filetype %} + {{ link.filelink.filetype }} + {% endif %} + + {% if link.filelink.filetype %} + {% with book=link.filelink.book %} + {% include "snippets/book_titleby.html" with book=book %} + {% endwith %} + {% endif %} +
    diff --git a/bookwyrm/templates/settings/reports/report.html b/bookwyrm/templates/settings/reports/report.html index 37593f3cc..84fafb143 100644 --- a/bookwyrm/templates/settings/reports/report.html +++ b/bookwyrm/templates/settings/reports/report.html @@ -2,10 +2,12 @@ {% load i18n %} {% load humanize %} -{% block title %}{% blocktrans with report_id=report.id username=report.user.username %}Report #{{ report_id }}: {{ username }}{% endblocktrans %}{% endblock %} +{% block title %} +{% include "settings/reports/report_header.html" with report=report %} +{% endblock %} {% block header %} -{% blocktrans with report_id=report.id username=report.user.username %}Report #{{ report_id }}: {{ username }}{% endblocktrans %} +{% include "settings/reports/report_header.html" with report=report %}
    {% trans "Back to reports" %} {% endblock %} @@ -15,6 +17,36 @@ {% include 'settings/reports/report_preview.html' with report=report %}
    +{% if report.statuses.exists %} +
    +

    {% trans "Reported statuses" %}

    +
      + {% for status in report.statuses.select_subclasses.all %} +
    • + {% if status.deleted %} + {% trans "Status has been deleted" %} + {% else %} + {% include 'snippets/status/status.html' with status=status moderation_mode=True %} + {% endif %} +
    • + {% endfor %} +
    +
    +{% endif %} + +{% if report.links.exists %} +
    +

    {% trans "Reported links" %}

    +
    +
    +
    + {% include "settings/reports/report_links_table.html" with links=report.links.all %} +
    +
    +
    +
    +{% endif %} + {% include 'settings/users/user_info.html' with user=report.user %} {% include 'settings/users/user_moderation_actions.html' with user=report.user %} @@ -41,23 +73,4 @@
    - -
    -

    {% trans "Reported statuses" %}

    - {% if not report.statuses.exists %} - {% trans "No statuses reported" %} - {% else %} -
      - {% for status in report.statuses.select_subclasses.all %} -
    • - {% if status.deleted %} - {% trans "Status has been deleted" %} - {% else %} - {% include 'snippets/status/status.html' with status=status moderation_mode=True %} - {% endif %} -
    • - {% endfor %} -
    - {% endif %} -
    {% endblock %} diff --git a/bookwyrm/templates/settings/reports/report_header.html b/bookwyrm/templates/settings/reports/report_header.html new file mode 100644 index 000000000..d76db1048 --- /dev/null +++ b/bookwyrm/templates/settings/reports/report_header.html @@ -0,0 +1,22 @@ +{% load i18n %} +{% load utilities %} + +{% if report.statuses.exists %} + +{% blocktrans trimmed with report_id=report.id username=report.user|username %} +Report #{{ report_id }}: Status posted by @{{ username }} +{% endblocktrans %} + +{% elif report.links.exists %} + +{% blocktrans trimmed with report_id=report.id username=report.user|username %} +Report #{{ report_id }}: Link added by @{{ username }} +{% endblocktrans %} + +{% else %} + +{% blocktrans trimmed with report_id=report.id username=report.user|username %} +Report #{{ report_id }}: User @{{ username }} +{% endblocktrans %} + +{% endif %} diff --git a/bookwyrm/templates/settings/reports/report_links_table.html b/bookwyrm/templates/settings/reports/report_links_table.html new file mode 100644 index 000000000..b0ebf73a5 --- /dev/null +++ b/bookwyrm/templates/settings/reports/report_links_table.html @@ -0,0 +1,20 @@ +{% extends "settings/link_domains/link_table.html" %} +{% load i18n %} + +{% block additional_headers %} +
    {% trans "Domain" %}{% trans "Actions" %} + + {{ link.domain.domain }} + + +
    + +
    +
    + + + + + + + + {% for link in book.file_links.all %} + + + + + + + + {% endfor %} + {% if not book.file_links.exists %} + + + + {% endif %} +
    {% trans "URL" %}{% trans "Added by" %}{% trans "Filetype" %}{% trans "Domain" %}{% trans "Actions" %}
    + {{ link.url }} + + {{ link.added_by.display_name }} + + {{ link.filelink.filetype }} + + {{ link.domain.name }} ({{ link.domain.get_status_display }}) +

    + {% trans "Report spam" %} +

    +
    + +
    {% trans "No links available for this book." %}
    +

    + + +{% endblock %} diff --git a/bookwyrm/templates/book/file_link_modal.html b/bookwyrm/templates/book/file_link_modal.html index 379f1a077..fc8b90597 100644 --- a/bookwyrm/templates/book/file_link_modal.html +++ b/bookwyrm/templates/book/file_link_modal.html @@ -6,7 +6,7 @@ {% endblock %} {% block modal-form-open %} -
    + {% endblock %} {% block modal-body %} diff --git a/bookwyrm/templates/book/link_verification_modal.html b/bookwyrm/templates/book/link_verification_modal.html index eab8987b8..1d53c1ef2 100644 --- a/bookwyrm/templates/book/link_verification_modal.html +++ b/bookwyrm/templates/book/link_verification_modal.html @@ -22,7 +22,7 @@ Is that where you'd like to go? {% if request.user.is_authenticated %} {% endif %} diff --git a/bookwyrm/templates/book/links.html b/bookwyrm/templates/book/links.html index f87d56815..ef2c0a402 100644 --- a/bookwyrm/templates/book/links.html +++ b/bookwyrm/templates/book/links.html @@ -10,8 +10,8 @@
    {% if can_edit_book %}
    - {% url 'file-link' book.id as fallback_url %} - + + {% csrf_token %} + + {% endfor %} @@ -64,6 +67,16 @@ {% endif %}
    + + {% url 'file-link-add' book.id as fallback_url %} +
    + +
    {% endblock %} diff --git a/bookwyrm/templates/book/links.html b/bookwyrm/templates/book/links.html index ef2c0a402..c77e21464 100644 --- a/bookwyrm/templates/book/links.html +++ b/bookwyrm/templates/book/links.html @@ -11,13 +11,15 @@ {% if can_edit_book %}
    {% url 'file-link-add' book.id as fallback_url %} - + +
    {% endif %}
    diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index ace7f2d02..990601490 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -469,8 +469,19 @@ urlpatterns = [ views.add_description, name="add-description", ), - re_path(rf"{BOOK_PATH}/filelink/?$", views.BookFileLinks.as_view(), name="file-link"), - re_path(rf"{BOOK_PATH}/filelink/add/?$", views.AddFileLink.as_view(), name="file-link-add"), + re_path( + rf"{BOOK_PATH}/filelink/?$", views.BookFileLinks.as_view(), name="file-link" + ), + re_path( + rf"{BOOK_PATH}/filelink/(?P\d+)/delete/?$", + views.BookFileLinks.as_view(), + name="file-link", + ), + re_path( + rf"{BOOK_PATH}/filelink/add/?$", + views.AddFileLink.as_view(), + name="file-link-add", + ), re_path(r"^resolve-book/?$", views.resolve_book, name="resolve-book"), re_path(r"^switch-edition/?$", views.switch_edition, name="switch-edition"), re_path( diff --git a/bookwyrm/views/books/links.py b/bookwyrm/views/books/links.py index da4fa5edf..e10e87512 100644 --- a/bookwyrm/views/books/links.py +++ b/bookwyrm/views/books/links.py @@ -18,6 +18,12 @@ class BookFileLinks(View): book = get_object_or_404(models.Edition, id=book_id) return TemplateResponse(request, "book/edit_links.html", {"book": book}) + def post(self, request, book_id, link_id): + """delete link""" + link = get_object_or_404(models.FileLink, id=link_id, book=book_id) + link.delete() + return self.get(request, book_id) + @method_decorator(login_required, name="dispatch") @method_decorator( From e452ec87d345371049fac11f3f583a6ee7792bc6 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 10:15:26 -0800 Subject: [PATCH 091/170] Link to book title in pure activitypub serialization of review --- .../snippets/generated_status/review_pure_name.html | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/bookwyrm/templates/snippets/generated_status/review_pure_name.html b/bookwyrm/templates/snippets/generated_status/review_pure_name.html index e54a818eb..d666979d4 100644 --- a/bookwyrm/templates/snippets/generated_status/review_pure_name.html +++ b/bookwyrm/templates/snippets/generated_status/review_pure_name.html @@ -1,10 +1,16 @@ {% load i18n %} {% if rating %} -{% blocktrans with book_title=book.title|safe display_rating=rating|floatformat:"-1" review_title=name|safe count counter=rating %}Review of "{{ book_title }}" ({{ display_rating }} star): {{ review_title }}{% plural %}Review of "{{ book_title }}" ({{ display_rating }} stars): {{ review_title }}{% endblocktrans %} +{% blocktrans trimmed with book_title=book.title|safe book_path=book.local_path display_rating=rating|floatformat:"-1" review_title=name|safe count counter=rating %} +Review of "{{ book_title }}" ({{ display_rating }} star): {{ review_title }} +{% plural %} +Review of "{{ book_title }}" ({{ display_rating }} stars): {{ review_title }} +{% endblocktrans %} {% else %} -{% blocktrans with book_title=book.title|safe review_title=name|safe %}Review of "{{ book_title }}": {{ review_title }}{% endblocktrans %} +{% blocktrans trimmed with book_title=book.title|safe review_title=name|safe %} +Review of "{{ book_title }}": {{ review_title } +{% endblocktrans %} {% endif %} From 5da2ce6427e5c3364faae4a42d4cbc4196048cb1 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 10:35:02 -0800 Subject: [PATCH 092/170] Include author in content status headers --- .../snippets/status/headers/comment.html | 22 +++++++++++++++++-- .../snippets/status/headers/quotation.html | 22 +++++++++++++++++-- .../snippets/status/headers/read.html | 16 +++++++++++++- .../snippets/status/headers/reading.html | 16 +++++++++++++- .../snippets/status/headers/review.html | 21 ++++++++++++++++-- .../snippets/status/headers/to_read.html | 16 +++++++++++++- 6 files changed, 104 insertions(+), 9 deletions(-) diff --git a/bookwyrm/templates/snippets/status/headers/comment.html b/bookwyrm/templates/snippets/status/headers/comment.html index 88ba30ca6..e3e2ec40b 100644 --- a/bookwyrm/templates/snippets/status/headers/comment.html +++ b/bookwyrm/templates/snippets/status/headers/comment.html @@ -1,2 +1,20 @@ -{% load i18n %}{% load utilities %} -{% blocktrans with book_path=status.book.local_path book=status.book|book_title %}commented on {{ book }}{% endblocktrans %} +{% load i18n %} +{% load utilities %} + +{% with book=status.book %} +{% if book.authors.exists %} + +{% with author=book.authors.first %} +{% blocktrans trimmed with book_path=book.local_path book=book|book_title author_name=author.name author_path=author.local_path %} +commented on {{ book }} by {{ author_name }} +{% endblocktrans %} +{% endwith %} + +{% else %} + +{% blocktrans trimmed with book_path=book.local_path book=book|book_title %} +commented on {{ book }} +{% endblocktrans %} + +{% endif %} +{% endwith %} diff --git a/bookwyrm/templates/snippets/status/headers/quotation.html b/bookwyrm/templates/snippets/status/headers/quotation.html index a0cbd71b0..2cdd5a991 100644 --- a/bookwyrm/templates/snippets/status/headers/quotation.html +++ b/bookwyrm/templates/snippets/status/headers/quotation.html @@ -1,2 +1,20 @@ -{% load i18n %}{% load utilities %} -{% blocktrans with book_path=status.book.local_path book=status.book|book_title %}quoted {{ book }}{% endblocktrans %} +{% load i18n %} +{% load utilities %} + +{% with book=status.book %} +{% if book.authors.exists %} + +{% with author=book.authors.first %} +{% blocktrans trimmed with book_path=book.local_path book=book|book_title author_name=author.name author_path=author.local_path %} +quoted {{ book }} by {{ author_name }} +{% endblocktrans %} +{% endwith %} + +{% else %} + +{% blocktrans trimmed with book_path=book.local_path book=book|book_title %} +quoted {{ book }} +{% endblocktrans %} + +{% endif %} +{% endwith %} diff --git a/bookwyrm/templates/snippets/status/headers/read.html b/bookwyrm/templates/snippets/status/headers/read.html index bc6147dfe..a59a3544e 100644 --- a/bookwyrm/templates/snippets/status/headers/read.html +++ b/bookwyrm/templates/snippets/status/headers/read.html @@ -4,5 +4,19 @@ {% load status_display %} {% load_book status as book %} -{% blocktrans with book_path=book.remote_id book=book|book_title %}finished reading {{ book }}{% endblocktrans %} +{% if book.authors.exists %} + +{% with author=book.authors.first %} +{% blocktrans trimmed with book_path=book.local_path book=book|book_title author_name=author.name author_path=author.local_path %} +finished reading {{ book }} by {{ author_name }} +{% endblocktrans %} +{% endwith %} + +{% else %} + +{% blocktrans trimmed with book_path=book.local_path book=book|book_title %} +finished reading {{ book }} +{% endblocktrans %} + +{% endif %} {% endspaceless %} diff --git a/bookwyrm/templates/snippets/status/headers/reading.html b/bookwyrm/templates/snippets/status/headers/reading.html index e8b51f7ba..886158f29 100644 --- a/bookwyrm/templates/snippets/status/headers/reading.html +++ b/bookwyrm/templates/snippets/status/headers/reading.html @@ -4,5 +4,19 @@ {% load status_display %} {% load_book status as book %} -{% blocktrans with book_path=book.remote_id book=book|book_title %}started reading {{ book }}{% endblocktrans %} +{% if book.authors.exists %} + +{% with author=book.authors.first %} +{% blocktrans trimmed with book_path=book.local_path book=book|book_title author_name=author.name author_path=author.local_path %} +started reading {{ book }} by {{ author_name }} +{% endblocktrans %} +{% endwith %} + +{% else %} + +{% blocktrans trimmed with book_path=book.local_path book=book|book_title %} +started reading {{ book }} +{% endblocktrans %} + +{% endif %} {% endspaceless %} diff --git a/bookwyrm/templates/snippets/status/headers/review.html b/bookwyrm/templates/snippets/status/headers/review.html index 6be356be7..a2168b948 100644 --- a/bookwyrm/templates/snippets/status/headers/review.html +++ b/bookwyrm/templates/snippets/status/headers/review.html @@ -1,3 +1,20 @@ -{% load i18n %}{% load utilities %} +{% load i18n %} +{% load utilities %} -{% blocktrans with book_path=status.book.local_path book=status.book|book_title %}reviewed {{ book }}{% endblocktrans %} +{% with book=status.book %} +{% if book.authors.exists %} + +{% with author=book.authors.first %} +{% blocktrans trimmed with book_path=book.local_path book=book|book_title author_name=author.name author_path=author.local_path %} +reviewed {{ book }} by {{ author_name }} +{% endblocktrans %} +{% endwith %} + +{% else %} + +{% blocktrans trimmed with book_path=book.local_path book=book|book_title %} +reviewed {{ book }} +{% endblocktrans %} + +{% endif %} +{% endwith %} diff --git a/bookwyrm/templates/snippets/status/headers/to_read.html b/bookwyrm/templates/snippets/status/headers/to_read.html index c252e71d6..2abdde17b 100644 --- a/bookwyrm/templates/snippets/status/headers/to_read.html +++ b/bookwyrm/templates/snippets/status/headers/to_read.html @@ -4,5 +4,19 @@ {% load status_display %} {% load_book status as book %} -{% blocktrans with book_path=book.remote_id book=book|book_title %}{{ username }} wants to read {{ book }}{% endblocktrans %} +{% if book.authors.exists %} + +{% with author=book.authors.first %} +{% blocktrans trimmed with book_path=book.local_path book=book|book_title author_name=author.name author_path=author.local_path %} +wants to read {{ book }} by {{ author_name }} +{% endblocktrans %} +{% endwith %} + +{% else %} + +{% blocktrans trimmed with book_path=book.local_path book=book|book_title %} +wants to read {{ book }} +{% endblocktrans %} + +{% endif %} {% endspaceless %} From 7f23e8c11282dfc2d95b5450af616f71ccc98719 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 10:37:26 -0800 Subject: [PATCH 093/170] Updates locales --- locale/de_DE/LC_MESSAGES/django.mo | Bin 69838 -> 71660 bytes locale/de_DE/LC_MESSAGES/django.po | 38 +-- locale/en_US/LC_MESSAGES/django.po | 388 +++++++++++++++------------ locale/es_ES/LC_MESSAGES/django.mo | Bin 77755 -> 77754 bytes locale/es_ES/LC_MESSAGES/django.po | 10 +- locale/fr_FR/LC_MESSAGES/django.mo | Bin 79659 -> 79665 bytes locale/fr_FR/LC_MESSAGES/django.po | 8 +- locale/gl_ES/LC_MESSAGES/django.mo | Bin 72642 -> 76022 bytes locale/gl_ES/LC_MESSAGES/django.po | 40 +-- locale/it_IT/LC_MESSAGES/django.mo | Bin 75062 -> 76932 bytes locale/it_IT/LC_MESSAGES/django.po | 30 ++- locale/lt_LT/LC_MESSAGES/django.mo | Bin 75790 -> 75790 bytes locale/lt_LT/LC_MESSAGES/django.po | 6 +- locale/no_NO/LC_MESSAGES/django.mo | Bin 74551 -> 73976 bytes locale/no_NO/LC_MESSAGES/django.po | 8 +- locale/pt_BR/LC_MESSAGES/django.mo | Bin 72972 -> 76384 bytes locale/pt_BR/LC_MESSAGES/django.po | 39 +-- locale/pt_PT/LC_MESSAGES/django.mo | Bin 72875 -> 74424 bytes locale/pt_PT/LC_MESSAGES/django.po | 40 +-- locale/zh_Hans/LC_MESSAGES/django.mo | Bin 67722 -> 67722 bytes locale/zh_Hans/LC_MESSAGES/django.po | 6 +- locale/zh_Hant/LC_MESSAGES/django.mo | Bin 37037 -> 37037 bytes locale/zh_Hant/LC_MESSAGES/django.po | 6 +- 23 files changed, 332 insertions(+), 287 deletions(-) diff --git a/locale/de_DE/LC_MESSAGES/django.mo b/locale/de_DE/LC_MESSAGES/django.mo index fb95dcacd52b949329e7f4a53de8d64455093550..d9950bb3efd24d1ead8eceb7197829022a6ae202 100644 GIT binary patch delta 20717 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 G3j7bw0s3$N delta 18997 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\n" "Language-Team: German\n" "Language: de\n" @@ -268,8 +268,8 @@ msgstr "Willkommen auf %(site_name)s!" #: bookwyrm/templates/about/about.html:22 #, python-format -msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seemlessly with users anywhere in the BookWyrm network, this community is unique." -msgstr "%(site_name)s ist Teil von BookWyrm, einem Netzwerk von unabhängigen, selbst verwalteten Communities von Bücherfreunden. Obwohl du nahtlos mit anderen Nutzern überall im BookWyrm Netzwerk interagieren kannst, ist die Community hier einzigartig." +msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." +msgstr "%(site_name)s ist Teil von BookWyrm, ein Netzwerk unabhängiger, selbst verwalteter Communities von Bücherfreunden. Obwohl du dich nahtlos mit anderen Benutzern irgendwo im Netzwerk von BookWyrm austauschen kannst, ist jede Community einzigartig." #: bookwyrm/templates/about/about.html:39 #, python-format @@ -366,7 +366,7 @@ msgstr "%(display_name)s’s Jahr mit Büchern" #: bookwyrm/templates/annual_summary/layout.html:53 msgid "Share this page" -msgstr "Teile diese Seite" +msgstr "Teile diese Seite mit Anderen" #: bookwyrm/templates/annual_summary/layout.html:67 msgid "Copy address" @@ -379,11 +379,11 @@ msgstr "Kopiert!" #: bookwyrm/templates/annual_summary/layout.html:77 msgid "Sharing status: public with key" -msgstr "" +msgstr "Freigabestatus: öffentlich mit Schlüssel" #: bookwyrm/templates/annual_summary/layout.html:78 msgid "The page can be seen by anyone with the complete address." -msgstr "Diese Seite kann jeder sehen der die vollständige Adresse kennt." +msgstr "Diese Seite kann jeder sehen, der die vollständige Adresse kennt." #: bookwyrm/templates/annual_summary/layout.html:83 msgid "Make page private" @@ -391,7 +391,7 @@ msgstr "Seite auf privat stellen" #: bookwyrm/templates/annual_summary/layout.html:89 msgid "Sharing status: private" -msgstr "" +msgstr "Freigabestatus: private" #: bookwyrm/templates/annual_summary/layout.html:90 msgid "The page is private, only you can see it." @@ -399,11 +399,11 @@ msgstr "Diese Seite ist privat, nur du kannst sie sehen." #: bookwyrm/templates/annual_summary/layout.html:95 msgid "Make page public" -msgstr "" +msgstr "Seite öffentlich machen" #: bookwyrm/templates/annual_summary/layout.html:99 msgid "When you make your page private, the old key won’t give access to the page anymore. A new key will be created if the page is once again made public." -msgstr "" +msgstr "Wenn du diese Seite auf privat stellen wird der alte Schlüssel ungültig. Ein neuer Schlüssel wird erzeugt solltest du die Seite erneut freigeben." #: bookwyrm/templates/annual_summary/layout.html:112 #, python-format @@ -414,8 +414,8 @@ msgstr "Leider hat %(display_name)s keine Bücher in %(year)s zu Ende gelesen" #, python-format msgid "In %(year)s, %(display_name)s read %(books_total)s book
    for a total of %(pages_total)s pages!" msgid_plural "In %(year)s, %(display_name)s read %(books_total)s books
    for a total of %(pages_total)s pages!" -msgstr[0] "Im Jahr %(year)s, lass %(display_name)s %(books_total)s Buch
    mit %(pages_total)s Seiten!" -msgstr[1] "Im Jahr %(year)s lass %(display_name)s %(books_total)s Bücher
    mit zusammen %(pages_total)s Seiten!" +msgstr[0] "Im Jahr %(year)s las %(display_name)s %(books_total)s Buch
    mit %(pages_total)s Seiten!" +msgstr[1] "Im Jahr %(year)s las %(display_name)s %(books_total)s Bücher
    mit zusammen %(pages_total)s Seiten!" #: bookwyrm/templates/annual_summary/layout.html:124 msgid "That’s great!" @@ -424,7 +424,7 @@ msgstr "Großartig!" #: bookwyrm/templates/annual_summary/layout.html:127 #, python-format msgid "That makes an average of %(pages)s pages per book." -msgstr "Im Durschnitt waren das %(pages)s Seiten pro Buch." +msgstr "Im Durchschnitt waren das %(pages)s Seiten pro Buch." #: bookwyrm/templates/annual_summary/layout.html:132 #, python-format @@ -482,7 +482,7 @@ msgstr "Ihre oder Seine bestbewertete Rezension" #: bookwyrm/templates/annual_summary/layout.html:251 #, python-format msgid "Their rating: %(rating)s" -msgstr "" +msgstr "Ihre Bewertung: %(rating)s" #: bookwyrm/templates/annual_summary/layout.html:268 #, python-format @@ -528,7 +528,7 @@ msgstr "ISNI-Datensatz anzeigen" #: bookwyrm/templates/book/book.html:122 #: bookwyrm/templates/book/sync_modal.html:5 msgid "Load data" -msgstr "" +msgstr "Lade Daten" #: bookwyrm/templates/author/author.html:92 #: bookwyrm/templates/book/book.html:126 @@ -666,7 +666,7 @@ 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 "" +msgstr "Das Nachladen von Daten wird eine Verbindung zu %(source_name)s aufbauen und überprüfen ob Informationen über den Autor ergänzt werden konnten die hier noch nicht vorliegen. Bestehende Informationen werden nicht überschrieben." #: bookwyrm/templates/author/sync_modal.html:22 #: bookwyrm/templates/book/edit/edit_book.html:108 @@ -1100,7 +1100,7 @@ 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 "" +msgstr "Das Nachladen von Daten wird eine Verbindung zu %(source_name)s aufbauen und überprüfen ob Informationen über das Buch ergänzt werden konnten die hier noch nicht vorliegen. Bestehende Informationen werden nicht überschrieben." #: bookwyrm/templates/components/tooltip.html:3 msgid "Help" @@ -2515,7 +2515,7 @@ msgstr "Du bist auf dem neusten Stand!" #: bookwyrm/templates/ostatus/error.html:7 #, python-format msgid "%(account)s is not a valid username" -msgstr "" +msgstr "%(account)s ist kein gültiger Benutzername" #: bookwyrm/templates/ostatus/error.html:8 #: bookwyrm/templates/ostatus/error.html:13 @@ -3822,7 +3822,7 @@ msgstr "Favorisierung zurücknehmen" #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:5 msgid "Filters" -msgstr "" +msgstr "Filter" #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:11 #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:18 diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index 4b257797c..bea77ca0e 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: 2022-01-09 19:19+0000\n" +"POT-Creation-Date: 2022-01-12 18:37+0000\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -55,8 +55,8 @@ msgstr "" msgid "Book Title" msgstr "" -#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:152 -#: bookwyrm/templates/shelf/shelf.html:184 +#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:33 msgid "Rating" msgstr "" @@ -73,6 +73,10 @@ msgstr "" msgid "Descending" msgstr "" +#: bookwyrm/forms.py:491 +msgid "Reading finish date cannot be before start date." +msgstr "" + #: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167 msgid "Error loading book" msgstr "" @@ -154,7 +158,7 @@ msgstr "" msgid "A user with that username already exists." msgstr "" -#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:280 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "" @@ -632,11 +636,11 @@ msgstr "" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/readthrough.html:82 #: bookwyrm/templates/groups/form.html:30 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:124 +#: bookwyrm/templates/readthrough/readthrough_modal.html:72 #: bookwyrm/templates/settings/announcements/announcement_form.html:76 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 @@ -649,15 +653,15 @@ msgstr "" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 -#: bookwyrm/templates/book/book.html:194 bookwyrm/templates/book/book.html:252 +#: bookwyrm/templates/book/book.html:194 #: bookwyrm/templates/book/cover_add_modal.html:32 -#: bookwyrm/templates/book/delete_readthrough_modal.html:23 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 -#: bookwyrm/templates/book/readthrough.html:83 #: bookwyrm/templates/book/sync_modal.html:23 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:18 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/federation/instance.html:88 #: bookwyrm/templates/snippets/report_modal.html:38 msgid "Cancel" @@ -728,39 +732,35 @@ msgstr "" msgid "Your reading activity" msgstr "" -#: bookwyrm/templates/book/book.html:240 +#: bookwyrm/templates/book/book.html:243 msgid "Add read dates" msgstr "" -#: bookwyrm/templates/book/book.html:249 -msgid "Create" -msgstr "" - -#: bookwyrm/templates/book/book.html:259 +#: bookwyrm/templates/book/book.html:251 msgid "You don't have any reading activity for this book." msgstr "" -#: bookwyrm/templates/book/book.html:285 +#: bookwyrm/templates/book/book.html:277 msgid "Your reviews" msgstr "" -#: bookwyrm/templates/book/book.html:291 +#: bookwyrm/templates/book/book.html:283 msgid "Your comments" msgstr "" -#: bookwyrm/templates/book/book.html:297 +#: bookwyrm/templates/book/book.html:289 msgid "Your quotes" msgstr "" -#: bookwyrm/templates/book/book.html:333 +#: bookwyrm/templates/book/book.html:325 msgid "Subjects" msgstr "" -#: bookwyrm/templates/book/book.html:345 +#: bookwyrm/templates/book/book.html:337 msgid "Places" msgstr "" -#: bookwyrm/templates/book/book.html:356 +#: bookwyrm/templates/book/book.html:348 #: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74 #: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 @@ -770,11 +770,11 @@ msgstr "" msgid "Lists" msgstr "" -#: bookwyrm/templates/book/book.html:367 +#: bookwyrm/templates/book/book.html:359 msgid "Add to list" msgstr "" -#: bookwyrm/templates/book/book.html:377 +#: bookwyrm/templates/book/book.html:369 #: bookwyrm/templates/book/cover_add_modal.html:31 #: bookwyrm/templates/lists/list.html:208 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 @@ -819,39 +819,13 @@ msgstr "" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:65 +#: bookwyrm/templates/feed/suggested_books.html:62 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 #: bookwyrm/templates/snippets/announcement.html:18 msgid "Close" msgstr "" -#: bookwyrm/templates/book/delete_readthrough_modal.html:4 -msgid "Delete these read dates?" -msgstr "" - -#: bookwyrm/templates/book/delete_readthrough_modal.html:8 -#, python-format -msgid "You are deleting this readthrough and its %(count)s associated progress updates." -msgstr "" - -#: bookwyrm/templates/book/delete_readthrough_modal.html:12 -#: bookwyrm/templates/groups/delete_group_modal.html:7 -#: bookwyrm/templates/lists/delete_list_modal.html:7 -msgid "This action cannot be un-done" -msgstr "" - -#: bookwyrm/templates/book/delete_readthrough_modal.html:21 -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/settings/announcements/announcement.html:20 -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 -#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 -#: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 -msgid "Delete" -msgstr "" - #: bookwyrm/templates/book/edit/edit_book.html:6 #: bookwyrm/templates/book/edit/edit_book.html:12 #, python-format @@ -973,7 +947,7 @@ msgid "Add Another Author" msgstr "" #: bookwyrm/templates/book/edit/edit_book_form.html:160 -#: bookwyrm/templates/shelf/shelf.html:143 +#: bookwyrm/templates/shelf/shelf.html:146 msgid "Cover" msgstr "" @@ -1068,35 +1042,6 @@ msgstr "" msgid "rated it" msgstr "" -#: bookwyrm/templates/book/readthrough.html:9 -msgid "Progress Updates:" -msgstr "" - -#: bookwyrm/templates/book/readthrough.html:14 -msgid "finished" -msgstr "" - -#: bookwyrm/templates/book/readthrough.html:25 -msgid "Show all updates" -msgstr "" - -#: bookwyrm/templates/book/readthrough.html:41 -msgid "Delete this progress update" -msgstr "" - -#: bookwyrm/templates/book/readthrough.html:53 -msgid "started" -msgstr "" - -#: bookwyrm/templates/book/readthrough.html:60 -#: bookwyrm/templates/book/readthrough.html:78 -msgid "Edit read dates" -msgstr "" - -#: bookwyrm/templates/book/readthrough.html:64 -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." @@ -1478,39 +1423,6 @@ msgstr "" msgid "There are no books here right now! Try searching for a book to get started" msgstr "" -#: bookwyrm/templates/feed/suggested_books.html:19 -#: bookwyrm/templates/get_started/book_preview.html:10 -#: bookwyrm/templates/shelf/shelf.html:38 -#: bookwyrm/templates/shelf/shelf.html:83 -#: bookwyrm/templates/snippets/shelf_selector.html:28 -#: bookwyrm/templates/user/books_header.html:4 -#: bookwyrm/templates/user/user.html:33 -msgid "To Read" -msgstr "" - -#: bookwyrm/templates/feed/suggested_books.html:20 -#: bookwyrm/templates/get_started/book_preview.html:11 -#: bookwyrm/templates/shelf/shelf.html:40 -#: bookwyrm/templates/shelf/shelf.html:84 -#: bookwyrm/templates/snippets/shelf_selector.html:29 -#: bookwyrm/templates/user/books_header.html:6 -#: bookwyrm/templates/user/user.html:34 -msgid "Currently Reading" -msgstr "" - -#: bookwyrm/templates/feed/suggested_books.html:21 -#: bookwyrm/templates/get_started/book_preview.html:12 -#: bookwyrm/templates/shelf/shelf.html:42 -#: bookwyrm/templates/shelf/shelf.html:85 -#: bookwyrm/templates/snippets/shelf_selector.html:30 -#: bookwyrm/templates/snippets/shelf_selector.html:49 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 -#: bookwyrm/templates/user/books_header.html:8 -#: bookwyrm/templates/user/user.html:35 -msgid "Read" -msgstr "" - #: bookwyrm/templates/feed/suggested_users.html:5 #: bookwyrm/templates/get_started/users.html:6 msgid "Who to follow" @@ -1542,6 +1454,30 @@ msgstr "" msgid "Add to your books" msgstr "" +#: bookwyrm/templates/get_started/book_preview.html:10 +#: bookwyrm/templates/shelf/shelf.html:86 +#: bookwyrm/templates/snippets/translated_shelf_name.html:5 +#: bookwyrm/templates/user/user.html:33 +msgid "To Read" +msgstr "" + +#: bookwyrm/templates/get_started/book_preview.html:11 +#: bookwyrm/templates/shelf/shelf.html:87 +#: bookwyrm/templates/snippets/translated_shelf_name.html:7 +#: bookwyrm/templates/user/user.html:34 +msgid "Currently Reading" +msgstr "" + +#: bookwyrm/templates/get_started/book_preview.html:12 +#: bookwyrm/templates/shelf/shelf.html:88 +#: bookwyrm/templates/snippets/shelf_selector.html:47 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 +#: bookwyrm/templates/snippets/translated_shelf_name.html:9 +#: bookwyrm/templates/user/user.html:35 +msgid "Read" +msgstr "" + #: bookwyrm/templates/get_started/books.html:6 msgid "What are you reading?" msgstr "" @@ -1675,6 +1611,23 @@ msgstr "" msgid "Delete this group?" msgstr "" +#: bookwyrm/templates/groups/delete_group_modal.html:7 +#: bookwyrm/templates/lists/delete_list_modal.html:7 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:12 +msgid "This action cannot be un-done" +msgstr "" + +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/delete_list_modal.html:15 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/settings/announcements/announcement.html:20 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 +#: bookwyrm/templates/snippets/follow_request_buttons.html:12 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +msgid "Delete" +msgstr "" + #: bookwyrm/templates/groups/edit_form.html:5 msgid "Edit Group" msgstr "" @@ -1755,7 +1708,7 @@ msgstr "" #: bookwyrm/templates/import/import.html:5 #: bookwyrm/templates/import/import.html:9 -#: bookwyrm/templates/shelf/shelf.html:61 +#: bookwyrm/templates/shelf/shelf.html:64 msgid "Import Books" msgstr "" @@ -1843,8 +1796,8 @@ msgid "Row" msgstr "" #: bookwyrm/templates/import/import_status.html:103 -#: bookwyrm/templates/shelf/shelf.html:144 -#: bookwyrm/templates/shelf/shelf.html:166 +#: bookwyrm/templates/shelf/shelf.html:147 +#: bookwyrm/templates/shelf/shelf.html:169 msgid "Title" msgstr "" @@ -1857,8 +1810,8 @@ msgid "Openlibrary key" msgstr "" #: bookwyrm/templates/import/import_status.html:114 -#: bookwyrm/templates/shelf/shelf.html:145 -#: bookwyrm/templates/shelf/shelf.html:169 +#: bookwyrm/templates/shelf/shelf.html:148 +#: bookwyrm/templates/shelf/shelf.html:172 msgid "Author" msgstr "" @@ -1978,7 +1931,7 @@ msgstr "" msgid "Sorry! This invite code is no longer valid." msgstr "" -#: bookwyrm/templates/landing/landing.html:7 +#: bookwyrm/templates/landing/landing.html:9 msgid "Recent Books" msgstr "" @@ -2737,23 +2690,89 @@ msgstr "" msgid "Want to Read \"%(book_title)s\"" msgstr "" +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:4 +msgid "Delete these read dates?" +msgstr "" + +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:8 +#, python-format +msgid "You are deleting this readthrough and its %(count)s associated progress updates." +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough.html:6 +#: bookwyrm/templates/readthrough/readthrough_modal.html:8 +#, python-format +msgid "Update read dates for \"%(title)s\"" +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough_form.html:10 +#: bookwyrm/templates/readthrough/readthrough_modal.html:31 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 +#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 +msgid "Started reading" +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough_form.html:18 +#: bookwyrm/templates/readthrough/readthrough_modal.html:49 +msgid "Progress" +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough_form.html:24 +#: bookwyrm/templates/readthrough/readthrough_modal.html:56 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 +msgid "Finished reading" +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough_list.html:9 +msgid "Progress Updates:" +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough_list.html:14 +msgid "finished" +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough_list.html:25 +msgid "Show all updates" +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough_list.html:41 +msgid "Delete this progress update" +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough_list.html:53 +msgid "started" +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough_list.html:60 +msgid "Edit read dates" +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough_list.html:68 +msgid "Delete these read dates" +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough_modal.html:12 +#, python-format +msgid "Add read dates for \"%(title)s\"" +msgstr "" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "" -#: bookwyrm/templates/search/book.html:79 +#: bookwyrm/templates/search/book.html:80 msgid "Import book" msgstr "" -#: bookwyrm/templates/search/book.html:104 +#: bookwyrm/templates/search/book.html:106 msgid "Load results from other catalogues" msgstr "" -#: bookwyrm/templates/search/book.html:108 +#: bookwyrm/templates/search/book.html:110 msgid "Manually add book" msgstr "" -#: bookwyrm/templates/search/book.html:113 +#: bookwyrm/templates/search/book.html:115 msgid "Log in to import or add books." msgstr "" @@ -3620,50 +3639,56 @@ msgstr "" msgid "Edit Shelf" msgstr "" -#: bookwyrm/templates/shelf/shelf.html:28 bookwyrm/views/shelf/shelf.py:53 +#: bookwyrm/templates/shelf/shelf.html:24 +msgid "User profile" +msgstr "" + +#: bookwyrm/templates/shelf/shelf.html:39 +#: bookwyrm/templates/snippets/translated_shelf_name.html:3 +#: bookwyrm/views/shelf/shelf.py:53 msgid "All books" msgstr "" -#: bookwyrm/templates/shelf/shelf.html:69 +#: bookwyrm/templates/shelf/shelf.html:72 msgid "Create shelf" msgstr "" -#: bookwyrm/templates/shelf/shelf.html:93 +#: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" msgid_plural "%(formatted_count)s books" msgstr[0] "" msgstr[1] "" -#: bookwyrm/templates/shelf/shelf.html:100 +#: bookwyrm/templates/shelf/shelf.html:103 #, python-format msgid "(showing %(start)s-%(end)s)" msgstr "" -#: bookwyrm/templates/shelf/shelf.html:112 +#: bookwyrm/templates/shelf/shelf.html:115 msgid "Edit shelf" msgstr "" -#: bookwyrm/templates/shelf/shelf.html:120 +#: bookwyrm/templates/shelf/shelf.html:123 msgid "Delete shelf" msgstr "" -#: bookwyrm/templates/shelf/shelf.html:148 -#: bookwyrm/templates/shelf/shelf.html:174 +#: bookwyrm/templates/shelf/shelf.html:151 +#: bookwyrm/templates/shelf/shelf.html:177 msgid "Shelved" msgstr "" -#: bookwyrm/templates/shelf/shelf.html:149 -#: bookwyrm/templates/shelf/shelf.html:177 +#: bookwyrm/templates/shelf/shelf.html:152 +#: bookwyrm/templates/shelf/shelf.html:180 msgid "Started" msgstr "" -#: bookwyrm/templates/shelf/shelf.html:150 -#: bookwyrm/templates/shelf/shelf.html:180 +#: bookwyrm/templates/shelf/shelf.html:153 +#: bookwyrm/templates/shelf/shelf.html:183 msgid "Finished" msgstr "" -#: bookwyrm/templates/shelf/shelf.html:206 +#: bookwyrm/templates/shelf/shelf.html:209 msgid "This shelf is empty." msgstr "" @@ -3824,38 +3849,38 @@ msgstr "" msgid "Filters" msgstr "" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:11 -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:18 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:10 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:17 msgid "Filters are applied" msgstr "" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:21 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:20 msgid "Clear filters" msgstr "" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 msgid "Apply filters" msgstr "" -#: bookwyrm/templates/snippets/follow_button.html:15 +#: bookwyrm/templates/snippets/follow_button.html:20 #, python-format msgid "Follow @%(username)s" msgstr "" -#: bookwyrm/templates/snippets/follow_button.html:17 +#: bookwyrm/templates/snippets/follow_button.html:22 msgid "Follow" msgstr "" -#: bookwyrm/templates/snippets/follow_button.html:26 +#: bookwyrm/templates/snippets/follow_button.html:31 msgid "Undo follow request" msgstr "" -#: bookwyrm/templates/snippets/follow_button.html:31 +#: bookwyrm/templates/snippets/follow_button.html:36 #, python-format msgid "Unfollow @%(username)s" msgstr "" -#: bookwyrm/templates/snippets/follow_button.html:33 +#: bookwyrm/templates/snippets/follow_button.html:38 msgid "Unfollow" msgstr "" @@ -3900,14 +3925,14 @@ msgstr[1] "" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" msgstr[0] "" msgstr[1] "" -#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:8 +#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": %(review_title)s" +msgid "Review of \"%(book_title)s\": {{ review_title }" msgstr "" #: bookwyrm/templates/snippets/goal_form.html:4 @@ -4011,17 +4036,6 @@ msgstr "" msgid "Finish \"%(book_title)s\"" msgstr "" -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 -#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 -#: bookwyrm/templates/snippets/readthrough_form.html:9 -msgid "Started reading" -msgstr "" - -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 -#: bookwyrm/templates/snippets/readthrough_form.html:23 -msgid "Finished reading" -msgstr "" - #: bookwyrm/templates/snippets/reading_modals/form.html:9 msgid "(Optional)" msgstr "" @@ -4041,10 +4055,6 @@ msgstr "" msgid "Want to Read \"%(book_title)s\"" msgstr "" -#: bookwyrm/templates/snippets/readthrough_form.html:17 -msgid "Progress" -msgstr "" - #: bookwyrm/templates/snippets/register_form.html:30 msgid "Sign Up" msgstr "" @@ -4071,13 +4081,13 @@ msgstr "" msgid "Move book" msgstr "" -#: bookwyrm/templates/snippets/shelf_selector.html:42 +#: bookwyrm/templates/snippets/shelf_selector.html:39 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:17 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:24 msgid "Start reading" msgstr "" -#: bookwyrm/templates/snippets/shelf_selector.html:55 +#: bookwyrm/templates/snippets/shelf_selector.html:54 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:31 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:38 msgid "Want to read" @@ -4132,7 +4142,12 @@ msgstr "" msgid "edited %(date)s" msgstr "" -#: bookwyrm/templates/snippets/status/headers/comment.html:2 +#: bookwyrm/templates/snippets/status/headers/comment.html:8 +#, python-format +msgid "commented on %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/comment.html:15 #, python-format msgid "commented on %(book)s" msgstr "" @@ -4142,7 +4157,12 @@ msgstr "" msgid "replied to %(username)s's status" msgstr "" -#: bookwyrm/templates/snippets/status/headers/quotation.html:2 +#: bookwyrm/templates/snippets/status/headers/quotation.html:8 +#, python-format +msgid "quoted %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/quotation.html:15 #, python-format msgid "quoted %(book)s" msgstr "" @@ -4152,24 +4172,44 @@ msgstr "" msgid "rated %(book)s:" msgstr "" -#: bookwyrm/templates/snippets/status/headers/read.html:7 +#: bookwyrm/templates/snippets/status/headers/read.html:10 +#, python-format +msgid "finished reading %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/read.html:17 #, python-format msgid "finished reading %(book)s" msgstr "" -#: bookwyrm/templates/snippets/status/headers/reading.html:7 +#: bookwyrm/templates/snippets/status/headers/reading.html:10 +#, python-format +msgid "started reading %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/reading.html:17 #, python-format msgid "started reading %(book)s" msgstr "" -#: bookwyrm/templates/snippets/status/headers/review.html:3 +#: bookwyrm/templates/snippets/status/headers/review.html:8 +#, python-format +msgid "reviewed %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/review.html:15 #, python-format msgid "reviewed %(book)s" msgstr "" -#: bookwyrm/templates/snippets/status/headers/to_read.html:7 +#: bookwyrm/templates/snippets/status/headers/to_read.html:10 #, python-format -msgid "%(username)s wants to read %(book)s" +msgid "wants to read %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/to_read.html:17 +#, python-format +msgid "wants to read %(book)s" msgstr "" #: bookwyrm/templates/snippets/status/layout.html:24 @@ -4216,11 +4256,11 @@ msgstr "" msgid "Show less" msgstr "" -#: bookwyrm/templates/user/books_header.html:10 +#: bookwyrm/templates/user/books_header.html:4 msgid "Your books" msgstr "" -#: bookwyrm/templates/user/books_header.html:15 +#: bookwyrm/templates/user/books_header.html:9 #, python-format msgid "%(username)s's books" msgstr "" diff --git a/locale/es_ES/LC_MESSAGES/django.mo b/locale/es_ES/LC_MESSAGES/django.mo index 7fe4afcc4e6b63471c3664a5fd2cd0b15f3cfcd6..bb9967a77b3952cab7d43de309048334dc75b2da 100644 GIT binary patch delta 7409 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 diff --git a/locale/es_ES/LC_MESSAGES/django.po b/locale/es_ES/LC_MESSAGES/django.po index bcac2edd1..47f966134 100644 --- a/locale/es_ES/LC_MESSAGES/django.po +++ b/locale/es_ES/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-09 00:54+0000\n" -"PO-Revision-Date: 2022-01-09 14:07\n" +"POT-Creation-Date: 2022-01-09 19:01+0000\n" +"PO-Revision-Date: 2022-01-11 17:29\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Spanish\n" "Language: es\n" @@ -175,7 +175,7 @@ msgstr "Línea de tiempo principal" #: bookwyrm/settings.py:120 msgid "Home" -msgstr "Hogar" +msgstr "Inicio" #: bookwyrm/settings.py:121 msgid "Books Timeline" @@ -268,8 +268,8 @@ msgstr "¡Bienvenido a %(site_name)s!" #: bookwyrm/templates/about/about.html:22 #, python-format -msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seemlessly with users anywhere in the BookWyrm network, this community is unique." -msgstr "%(site_name)s es parte de BookWyrm, una red de comunidades independientes y autocontroladas para lectores. Aunque puedes interactuar directamente con los usuarios de cualquier parte de la red de BookWyrm, esta comunidad es única." +msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." +msgstr "%(site_name)s es parte de BookWyrm, una red de comunidades independientes y autogestionadas para lectores. Aunque puedes interactuar sin problemas con los usuarios de cualquier parte de la red BookWyrm, esta comunidad es única." #: bookwyrm/templates/about/about.html:39 #, python-format diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo index c1abc8c20db0cfce6cdbc0b74e4d96bef2e73e2e..6916175465fb179a1317f7ec1cf4732a2ae579f3 100644 GIT binary patch delta 7394 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 delta 7388 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 diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po index 9481dd3e1..c1c67dccc 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: 2022-01-09 00:54+0000\n" -"PO-Revision-Date: 2022-01-09 12:56\n" +"POT-Creation-Date: 2022-01-09 19:01+0000\n" +"PO-Revision-Date: 2022-01-09 21:14\n" "Last-Translator: Mouse Reeve \n" "Language-Team: French\n" "Language: fr\n" @@ -268,8 +268,8 @@ msgstr "Bienvenue sur %(site_name)s !" #: bookwyrm/templates/about/about.html:22 #, python-format -msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seemlessly with users anywhere in the BookWyrm network, this community is unique." -msgstr "%(site_name)s fait partie de BookWyrm, un réseau de communautés indépendantes et autogérées pour les lecteurs. Bien que vous puissiez interagir apparemment avec les utilisateurs n'importe où dans le réseau BookWyrm, cette communauté est unique." +msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." +msgstr "%(site_name)s fait partie de BookWyrm, un réseau de communautés indépendantes et autogérées, à destination des lecteurs. Bien que vous puissiez interagir apparemment avec les comptes n'importe où dans le réseau BookWyrm, cette communauté est unique." #: bookwyrm/templates/about/about.html:39 #, python-format diff --git a/locale/gl_ES/LC_MESSAGES/django.mo b/locale/gl_ES/LC_MESSAGES/django.mo index cbec027ef68764a4e2f5f940b348388d6e512961..753fba6d6cbffae3c58e51ef20a225b7f7829a1b 100644 GIT binary patch delta 22987 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 delta 19790 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 diff --git a/locale/gl_ES/LC_MESSAGES/django.po b/locale/gl_ES/LC_MESSAGES/django.po index 23af540e3..522ec3d2d 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: 2022-01-09 00:54+0000\n" -"PO-Revision-Date: 2022-01-09 02:52\n" +"POT-Creation-Date: 2022-01-09 19:01+0000\n" +"PO-Revision-Date: 2022-01-11 08:47\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Galician\n" "Language: gl\n" @@ -205,7 +205,7 @@ msgstr "Galego (Galician)" #: bookwyrm/settings.py:199 msgid "Italiano (Italian)" -msgstr "" +msgstr "Italiano (Italian)" #: bookwyrm/settings.py:200 msgid "Français (French)" @@ -217,7 +217,7 @@ msgstr "Lietuvių (Lithuanian)" #: bookwyrm/settings.py:202 msgid "Norsk (Norwegian)" -msgstr "" +msgstr "Noruegués (Norwegian)" #: bookwyrm/settings.py:203 msgid "Português do Brasil (Brazilian Portuguese)" @@ -258,7 +258,7 @@ msgstr "Algo fallou! Lamentámolo." #: bookwyrm/templates/about/about.html:9 #: bookwyrm/templates/about/layout.html:35 msgid "About" -msgstr "" +msgstr "Acerca de" #: bookwyrm/templates/about/about.html:18 #: bookwyrm/templates/get_started/layout.html:20 @@ -268,42 +268,44 @@ msgstr "Sexas ben vida a %(site_name)s!" #: bookwyrm/templates/about/about.html:22 #, python-format -msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seemlessly with users anywhere in the BookWyrm network, this community is unique." -msgstr "" +msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." +msgstr "%(site_name)s é parte de BookWyrm, unha rede independente, auto-xestionada por comunidades de persoas lectoras. Aínda que podes interactuar con outras usuarias da rede BookWyrm, esta comunidade é única." #: bookwyrm/templates/about/about.html:39 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." -msgstr "" +msgstr "%(title)s é o libro máis querido de %(site_name)s, cunha valoración media de %(rating)s sobre 5." #: bookwyrm/templates/about/about.html:58 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." -msgstr "" +msgstr "%(title)s é o libro que máis queren ler as usuarias de %(site_name)s." #: bookwyrm/templates/about/about.html:77 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." -msgstr "" +msgstr "%(title)s é o libro con valoracións máis diverxentes en %(site_name)s." #: bookwyrm/templates/about/about.html:88 msgid "Track your reading, talk about books, write reviews, and discover what to read next. Always ad-free, anti-corporate, and community-oriented, BookWyrm is human-scale software, designed to stay small and personal. If you have feature requests, bug reports, or grand dreams, reach out and make yourself heard." -msgstr "" +msgstr "Rexistra as túas lecturas, conversa acerca dos libros, escribe recensións e descubre próximas lecturas. Sempre sen publicidade, anti-corporacións e orientado á comunidade, BookWyrm é software a escala humana, deseñado para ser pequeno e persoal. Se queres propoñer novas ferramentas, informar de fallos, ou colaborar, contacta con nós e deixa oír a túa voz." #: bookwyrm/templates/about/about.html:95 msgid "Meet your admins" -msgstr "" +msgstr "Contacta coa administración" #: bookwyrm/templates/about/about.html:98 #, python-format msgid "\n" " %(site_name)s's moderators and administrators keep the site up and running, enforce the code of conduct, and respond when users report spam and bad behavior.\n" " " -msgstr "" +msgstr "\n" +"A moderación e administración de %(site_name)s coidan e xestionan o sitio web, fan cumprir co código de conducta e responden ás denuncias das usuarias sobre spam e mal comportamento.\n" +" " #: bookwyrm/templates/about/about.html:112 msgid "Moderator" -msgstr "" +msgstr "Moderación" #: bookwyrm/templates/about/about.html:114 bookwyrm/templates/layout.html:131 msgid "Admin" @@ -324,15 +326,15 @@ msgstr "Código de Conduta" #: bookwyrm/templates/about/layout.html:11 msgid "Active users:" -msgstr "" +msgstr "Usuarias activas:" #: bookwyrm/templates/about/layout.html:15 msgid "Statuses posted:" -msgstr "" +msgstr "Estados publicados:" #: bookwyrm/templates/about/layout.html:19 msgid "Software version:" -msgstr "" +msgstr "Versión do software:" #: bookwyrm/templates/about/layout.html:30 #: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:229 @@ -406,7 +408,7 @@ msgstr "Cando fas privada unha páxina, a chave antiga non dará acceso á mesma #: bookwyrm/templates/annual_summary/layout.html:112 #, python-format msgid "Sadly %(display_name)s didn’t finish any books in %(year)s" -msgstr "" +msgstr "%(display_name)s non rematou de ler ningún libro en %(year)s" #: bookwyrm/templates/annual_summary/layout.html:118 #, python-format @@ -1691,7 +1693,7 @@ msgstr "Eliminar grupo" #: bookwyrm/templates/groups/group.html:22 msgid "Members of this group can create group-curated lists." -msgstr "" +msgstr "Os membros deste grupo poden crear listas xestionadas comunitariamente." #: bookwyrm/templates/groups/group.html:27 #: bookwyrm/templates/lists/create_form.html:5 diff --git a/locale/it_IT/LC_MESSAGES/django.mo b/locale/it_IT/LC_MESSAGES/django.mo index e9ef6d57d4cd190945dd98616bebaf159d6f59f5..decc06e9aef4d33bbb4849f3a032d920e1e2cdb1 100644 GIT binary patch delta 21808 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 delta 19940 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 YCDX1v-X7h(6CU5mv#U^mNALXq2l`s`^8f$< diff --git a/locale/it_IT/LC_MESSAGES/django.po b/locale/it_IT/LC_MESSAGES/django.po index 99da6e4ea..5a703727e 100644 --- a/locale/it_IT/LC_MESSAGES/django.po +++ b/locale/it_IT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-09 00:54+0000\n" -"PO-Revision-Date: 2022-01-09 12:56\n" +"POT-Creation-Date: 2022-01-09 19:01+0000\n" +"PO-Revision-Date: 2022-01-10 17:22\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Italian\n" "Language: it\n" @@ -268,7 +268,7 @@ msgstr "Benvenuto su %(site_name)s!" #: bookwyrm/templates/about/about.html:22 #, python-format -msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seemlessly with users anywhere in the BookWyrm network, this community is unique." +msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." msgstr "%(site_name)s fa parte di BookWyrm, una rete di comunità indipendenti e autogestite per i lettori. Mentre puoi interagire apparentemente con gli utenti ovunque nella rete di BookWyrm, questa comunità è unica." #: bookwyrm/templates/about/about.html:39 @@ -288,22 +288,24 @@ msgstr "%(title)s ha le valutazioni più #: bookwyrm/templates/about/about.html:88 msgid "Track your reading, talk about books, write reviews, and discover what to read next. Always ad-free, anti-corporate, and community-oriented, BookWyrm is human-scale software, designed to stay small and personal. If you have feature requests, bug reports, or grand dreams, reach out and make yourself heard." -msgstr "" +msgstr "Traccia la tue letture, parla di libri, scrivi recensioni, e scopri cosa leggere dopo. BookWyrm, sempre libero, anti-corporate, orientato alla comunità, è un software a misura d'uomo, progettato per rimanere piccolo e personale. Se hai richieste di funzionalità, segnalazioni di bug o grandi sogni, contatta e fai sentire la tua voce." #: bookwyrm/templates/about/about.html:95 msgid "Meet your admins" -msgstr "" +msgstr "Incontra gli amministratori" #: bookwyrm/templates/about/about.html:98 #, python-format msgid "\n" " %(site_name)s's moderators and administrators keep the site up and running, enforce the code of conduct, and respond when users report spam and bad behavior.\n" " " -msgstr "" +msgstr "\n" +"I moderatori e gli amministratori di %(site_name)s mantengono il sito attivo e funzionante, applicano il codice di condotta, e rispondono quando gli utenti segnalano spam o comportamenti non adeguati.\n" +" " #: bookwyrm/templates/about/about.html:112 msgid "Moderator" -msgstr "" +msgstr "Moderatori" #: bookwyrm/templates/about/about.html:114 bookwyrm/templates/layout.html:131 msgid "Admin" @@ -324,15 +326,15 @@ msgstr "Codice di comportamento" #: bookwyrm/templates/about/layout.html:11 msgid "Active users:" -msgstr "" +msgstr "Utenti Attivi:" #: bookwyrm/templates/about/layout.html:15 msgid "Statuses posted:" -msgstr "" +msgstr "Stati pubblicati:" #: bookwyrm/templates/about/layout.html:19 msgid "Software version:" -msgstr "" +msgstr "Versione del software:" #: bookwyrm/templates/about/layout.html:30 #: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:229 @@ -406,7 +408,7 @@ msgstr "Quando rendi la tua pagina privata, la vecchia chiave non darà più acc #: bookwyrm/templates/annual_summary/layout.html:112 #, python-format msgid "Sadly %(display_name)s didn’t finish any books in %(year)s" -msgstr "" +msgstr "Purtroppo %(display_name)s non ha completato nessun libro nel %(year)s" #: bookwyrm/templates/annual_summary/layout.html:118 #, python-format @@ -1172,7 +1174,7 @@ msgstr "Comunità federata" #: bookwyrm/templates/directory/directory.html:9 #: bookwyrm/templates/layout.html:100 msgid "Directory" -msgstr "Cartella" +msgstr "Directory" #: bookwyrm/templates/directory/directory.html:17 msgid "Make your profile discoverable to other BookWyrm users." @@ -1180,7 +1182,7 @@ msgstr "Rendi il tuo profilo visibile ad altri utenti di BookWyrm." #: bookwyrm/templates/directory/directory.html:21 msgid "Join Directory" -msgstr "Entra nella Cartella" +msgstr "Iscriviti alla Directory" #: bookwyrm/templates/directory/directory.html:24 #, python-format @@ -1691,7 +1693,7 @@ msgstr "Elimina gruppo" #: bookwyrm/templates/groups/group.html:22 msgid "Members of this group can create group-curated lists." -msgstr "" +msgstr "I membri di questo gruppo possono creare liste curate dal gruppo." #: bookwyrm/templates/groups/group.html:27 #: bookwyrm/templates/lists/create_form.html:5 diff --git a/locale/lt_LT/LC_MESSAGES/django.mo b/locale/lt_LT/LC_MESSAGES/django.mo index 71f60a0d0f2543907f5c2f5104a8383cb88cc248..7a6c1559667bcd681fb9ad49cd3a9b4f8cdd688b 100644 GIT binary patch delta 20 ccmeCXz|wbtWy6EDtVRY_29}$juGOpp0AS$=^Z)<= delta 20 ccmeCXz|wbtWy6EDtOiC_rbe5euGOpp0ASb%@&Et; diff --git a/locale/lt_LT/LC_MESSAGES/django.po b/locale/lt_LT/LC_MESSAGES/django.po index 331dfb8c4..64b22bd3f 100644 --- a/locale/lt_LT/LC_MESSAGES/django.po +++ b/locale/lt_LT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-09 00:54+0000\n" -"PO-Revision-Date: 2022-01-09 02:52\n" +"POT-Creation-Date: 2022-01-09 19:01+0000\n" +"PO-Revision-Date: 2022-01-09 20:09\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Lithuanian\n" "Language: lt\n" @@ -268,7 +268,7 @@ msgstr "Sveiki atvykę į %(site_name)s!" #: bookwyrm/templates/about/about.html:22 #, python-format -msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seemlessly with users anywhere in the BookWyrm network, this community is unique." +msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." msgstr "" #: bookwyrm/templates/about/about.html:39 diff --git a/locale/no_NO/LC_MESSAGES/django.mo b/locale/no_NO/LC_MESSAGES/django.mo index c6b14d2a3af267393300a6f19f6cc9bae146d3ca..e3a02856c230d8583af437153d9846a011f926d8 100644 GIT binary patch delta 20005 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 delta 20508 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 F{{T~#hspo| diff --git a/locale/no_NO/LC_MESSAGES/django.po b/locale/no_NO/LC_MESSAGES/django.po index 9f917de62..9f66f938e 100644 --- a/locale/no_NO/LC_MESSAGES/django.po +++ b/locale/no_NO/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-09 00:54+0000\n" -"PO-Revision-Date: 2022-01-09 11:36\n" +"POT-Creation-Date: 2022-01-09 19:01+0000\n" +"PO-Revision-Date: 2022-01-09 20:09\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Norwegian\n" "Language: no\n" @@ -268,8 +268,8 @@ msgstr "Velkommen til %(site_name)s!" #: bookwyrm/templates/about/about.html:22 #, python-format -msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seemlessly with users anywhere in the BookWyrm network, this community is unique." -msgstr "%(site_name)s er en del av BookWyrm, et nettverk av selvstendige, selvstyrte samfunn for lesere. Du kan kommunisere sømløst med brukere hvor som helst i BookWyrm nettverket, men hvert samfunn er unikt." +msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." +msgstr "" #: bookwyrm/templates/about/about.html:39 #, python-format diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo index 213050886bc53e40a48b8b7690b7d37d705f970d..c9f04b2275a17fc81cb9bbfab635159d7467d959 100644 GIT binary patch delta 23009 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 E01w#Z!~g&Q delta 19783 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 F@qZ4>?1TUS diff --git a/locale/pt_BR/LC_MESSAGES/django.po b/locale/pt_BR/LC_MESSAGES/django.po index 0c6698a4a..db9559dee 100644 --- a/locale/pt_BR/LC_MESSAGES/django.po +++ b/locale/pt_BR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-09 00:54+0000\n" -"PO-Revision-Date: 2022-01-09 02:53\n" +"POT-Creation-Date: 2022-01-09 19:01+0000\n" +"PO-Revision-Date: 2022-01-09 23:27\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt\n" @@ -205,7 +205,7 @@ msgstr "Galego (Galego)" #: bookwyrm/settings.py:199 msgid "Italiano (Italian)" -msgstr "" +msgstr "Italiano (Italiano)" #: bookwyrm/settings.py:200 msgid "Français (French)" @@ -217,7 +217,7 @@ msgstr "Lietuvių (Lituano)" #: bookwyrm/settings.py:202 msgid "Norsk (Norwegian)" -msgstr "" +msgstr "Norsk (Norueguês)" #: bookwyrm/settings.py:203 msgid "Português do Brasil (Brazilian Portuguese)" @@ -258,7 +258,7 @@ msgstr "Algo deu errado! Foi mal." #: bookwyrm/templates/about/about.html:9 #: bookwyrm/templates/about/layout.html:35 msgid "About" -msgstr "" +msgstr "Sobre" #: bookwyrm/templates/about/about.html:18 #: bookwyrm/templates/get_started/layout.html:20 @@ -268,42 +268,43 @@ msgstr "Bem-vindol(a) a %(site_name)s!" #: bookwyrm/templates/about/about.html:22 #, python-format -msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seemlessly with users anywhere in the BookWyrm network, this community is unique." -msgstr "" +msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." +msgstr "%(site_name)s é parte da BookWyrm, uma rede independente e autogestionada para leitores. Apesar de você poder interagir diretamente com usuários de toda a rede BookWyrm, esta comunidade é única." #: bookwyrm/templates/about/about.html:39 #, python-format msgid "%(title)s is %(site_name)s's most beloved book, with an average rating of %(rating)s out of 5." -msgstr "" +msgstr "%(title)s é o livro favorito da instância %(site_name)s, com uma avaliação média de %(rating)s em 5." #: bookwyrm/templates/about/about.html:58 #, python-format msgid "More %(site_name)s users want to read %(title)s than any other book." -msgstr "" +msgstr "O livro mais desejado de toda a instância %(site_name)s é %(title)s." #: bookwyrm/templates/about/about.html:77 #, python-format msgid "%(title)s has the most divisive ratings of any book on %(site_name)s." -msgstr "" +msgstr "%(title)s tem a avaliação mais polêmica de toda a instância %(site_name)s." #: bookwyrm/templates/about/about.html:88 msgid "Track your reading, talk about books, write reviews, and discover what to read next. Always ad-free, anti-corporate, and community-oriented, BookWyrm is human-scale software, designed to stay small and personal. If you have feature requests, bug reports, or grand dreams, reach out and make yourself heard." -msgstr "" +msgstr "Registre o andamento de suas leituras, fale sobre livros, escreva resenhas e ache o que ler em seguida. Sempre sem propagandas, anticorporativa e voltada à comunidade, a BookWyrm é um software em escala humana desenvolvido para permanecer pequeno e pessoal. Se você tem sugestões de funções, avisos sobre bugs ou grandes sonhos para o projeto, fale conosco e faça sua voz ser ouvida." #: bookwyrm/templates/about/about.html:95 msgid "Meet your admins" -msgstr "" +msgstr "Conheça a administração" #: bookwyrm/templates/about/about.html:98 #, python-format msgid "\n" " %(site_name)s's moderators and administrators keep the site up and running, enforce the code of conduct, and respond when users report spam and bad behavior.\n" " " -msgstr "" +msgstr "\n" +" Moderadores/as e administradores/as da instância %(site_name)s mantêm o site em funcionamento, aplicam o código de conduta e respondem às denúncias de spam e mau comportamento na rede. " #: bookwyrm/templates/about/about.html:112 msgid "Moderator" -msgstr "" +msgstr "Moderador/a" #: bookwyrm/templates/about/about.html:114 bookwyrm/templates/layout.html:131 msgid "Admin" @@ -324,15 +325,15 @@ msgstr "Código de conduta" #: bookwyrm/templates/about/layout.html:11 msgid "Active users:" -msgstr "" +msgstr "Usuários ativos:" #: bookwyrm/templates/about/layout.html:15 msgid "Statuses posted:" -msgstr "" +msgstr "Publicações:" #: bookwyrm/templates/about/layout.html:19 msgid "Software version:" -msgstr "" +msgstr "Versão do software:" #: bookwyrm/templates/about/layout.html:30 #: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:229 @@ -406,7 +407,7 @@ msgstr "Ao tornar a página particular, a chave antiga passa a não funcionar ma #: bookwyrm/templates/annual_summary/layout.html:112 #, python-format msgid "Sadly %(display_name)s didn’t finish any books in %(year)s" -msgstr "" +msgstr "Infelizmente %(display_name)s não terminou de ler nenhum livro em %(year)s" #: bookwyrm/templates/annual_summary/layout.html:118 #, python-format @@ -1691,7 +1692,7 @@ msgstr "Excluir grupo" #: bookwyrm/templates/groups/group.html:22 msgid "Members of this group can create group-curated lists." -msgstr "" +msgstr "Membros deste grupo podem criar listas organizadas coletivamente." #: bookwyrm/templates/groups/group.html:27 #: bookwyrm/templates/lists/create_form.html:5 diff --git a/locale/pt_PT/LC_MESSAGES/django.mo b/locale/pt_PT/LC_MESSAGES/django.mo index e68701c89c6190f3aa3a161b63173c77d9cbb38c..9240a04508a82d7eed8ed41db4272ef91c9fc123 100644 GIT binary patch delta 21210 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 delta 19744 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 diff --git a/locale/pt_PT/LC_MESSAGES/django.po b/locale/pt_PT/LC_MESSAGES/django.po index 2d5e9432c..abc3ff8df 100644 --- a/locale/pt_PT/LC_MESSAGES/django.po +++ b/locale/pt_PT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-09 00:54+0000\n" -"PO-Revision-Date: 2022-01-09 02:52\n" +"POT-Creation-Date: 2022-01-09 19:01+0000\n" +"PO-Revision-Date: 2022-01-09 21:14\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Portuguese\n" "Language: pt\n" @@ -205,7 +205,7 @@ msgstr "Galego (Galician)" #: bookwyrm/settings.py:199 msgid "Italiano (Italian)" -msgstr "" +msgstr "Italiano (Italiano)" #: bookwyrm/settings.py:200 msgid "Français (French)" @@ -217,15 +217,15 @@ msgstr "Lietuvių (lituano)" #: bookwyrm/settings.py:202 msgid "Norsk (Norwegian)" -msgstr "" +msgstr "Norsk (Norueguês)" #: bookwyrm/settings.py:203 msgid "Português do Brasil (Brazilian Portuguese)" -msgstr "" +msgstr "Português do Brasil (Português brasileiro)" #: bookwyrm/settings.py:204 msgid "Português Europeu (European Portuguese)" -msgstr "" +msgstr "Português (Português Europeu)" #: bookwyrm/settings.py:205 msgid "简体中文 (Simplified Chinese)" @@ -258,7 +258,7 @@ msgstr "Ocorreu um erro! Pedimos desculpa por isto." #: bookwyrm/templates/about/about.html:9 #: bookwyrm/templates/about/layout.html:35 msgid "About" -msgstr "" +msgstr "Sobre" #: bookwyrm/templates/about/about.html:18 #: bookwyrm/templates/get_started/layout.html:20 @@ -268,8 +268,8 @@ msgstr "Bem-vindo(a) ao %(site_name)s!" #: bookwyrm/templates/about/about.html:22 #, python-format -msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seemlessly with users anywhere in the BookWyrm network, this community is unique." -msgstr "" +msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." +msgstr "%(site_name)s faz parte do BookWyrm, uma rede de comunidades independentes, focada nos leitores. Enquanto podes interagir continuamente com utilizadores por todo o lado na Rede Boomwyrm, esta comunidade é única." #: bookwyrm/templates/about/about.html:39 #, python-format @@ -292,7 +292,7 @@ msgstr "" #: bookwyrm/templates/about/about.html:95 msgid "Meet your admins" -msgstr "" +msgstr "Conheça os nossos administradores" #: bookwyrm/templates/about/about.html:98 #, python-format @@ -303,7 +303,7 @@ msgstr "" #: bookwyrm/templates/about/about.html:112 msgid "Moderator" -msgstr "" +msgstr "Moderador" #: bookwyrm/templates/about/about.html:114 bookwyrm/templates/layout.html:131 msgid "Admin" @@ -324,15 +324,15 @@ msgstr "Código de Conduta" #: bookwyrm/templates/about/layout.html:11 msgid "Active users:" -msgstr "" +msgstr "Utilizadores ativos:" #: bookwyrm/templates/about/layout.html:15 msgid "Statuses posted:" -msgstr "" +msgstr "Estados publicados:" #: bookwyrm/templates/about/layout.html:19 msgid "Software version:" -msgstr "" +msgstr "Versão do software:" #: bookwyrm/templates/about/layout.html:30 #: bookwyrm/templates/embed-layout.html:34 bookwyrm/templates/layout.html:229 @@ -464,7 +464,7 @@ msgstr[1] "" #: bookwyrm/templates/annual_summary/layout.html:209 msgid "Way to go!" -msgstr "" +msgstr "Assim é que é!" #: bookwyrm/templates/annual_summary/layout.html:224 #, python-format @@ -1691,7 +1691,7 @@ msgstr "Apagar grupo" #: bookwyrm/templates/groups/group.html:22 msgid "Members of this group can create group-curated lists." -msgstr "" +msgstr "Os membros deste grupo podem criar listas administradas apenas pelo grupo." #: bookwyrm/templates/groups/group.html:27 #: bookwyrm/templates/lists/create_form.html:5 @@ -3820,12 +3820,12 @@ msgstr "Desgostar" #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:5 msgid "Filters" -msgstr "" +msgstr "Filtros" #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:11 #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:18 msgid "Filters are applied" -msgstr "" +msgstr "Filtros aplicados" #: bookwyrm/templates/snippets/filters_panel/filters_panel.html:21 msgid "Clear filters" @@ -3886,8 +3886,8 @@ msgstr[1] "%(rating)s estrelas" #, python-format msgid "set a goal to read %(counter)s book in %(year)s" msgid_plural "set a goal to read %(counter)s books in %(year)s" -msgstr[0] "defina a meta para ler %(counter)s livro em %(year)s" -msgstr[1] "defina a meta para ler %(counter)s livros em %(year)s" +msgstr[0] "definou a meta de ler %(counter)s livro em %(year)s" +msgstr[1] "definou a meta de ler %(counter)s livros em %(year)s" #: bookwyrm/templates/snippets/generated_status/rating.html:3 #, python-format diff --git a/locale/zh_Hans/LC_MESSAGES/django.mo b/locale/zh_Hans/LC_MESSAGES/django.mo index c832a8a43aecc7c78dcf5a44f74d0c829d66d071..721c8c20dc3174146b5298980bdd19fa8a8f3923 100644 GIT binary patch delta 20 bcmeC0$kH{DWkd05RwDx|1Ix`7tA%0#PzncJ delta 20 bcmeC0$kH{DWkd05Rs$m|Q=`oltA%0#Pyq*8 diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index d51a72bff..91cc02892 100644 --- a/locale/zh_Hans/LC_MESSAGES/django.po +++ b/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-09 00:54+0000\n" -"PO-Revision-Date: 2022-01-09 02:52\n" +"POT-Creation-Date: 2022-01-09 19:01+0000\n" +"PO-Revision-Date: 2022-01-09 20:09\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Simplified\n" "Language: zh\n" @@ -268,7 +268,7 @@ msgstr "欢迎来到 %(site_name)s!" #: bookwyrm/templates/about/about.html:22 #, python-format -msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seemlessly with users anywhere in the BookWyrm network, this community is unique." +msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." msgstr "" #: bookwyrm/templates/about/about.html:39 diff --git a/locale/zh_Hant/LC_MESSAGES/django.mo b/locale/zh_Hant/LC_MESSAGES/django.mo index 359de873cc302a7d9afa6431a208d28fbfd4dd2d..07742b9927f25b6cf8ab3f2acc8e7411606fb17d 100644 GIT binary patch delta 20 ccmZ3xkZJ8grVSV3S&a;=3@kTajlW?409qdic>n+a delta 20 ccmZ3xkZJ8grVSV3Sq+S=OpP{QjlW?409qCZcK`qY diff --git a/locale/zh_Hant/LC_MESSAGES/django.po b/locale/zh_Hant/LC_MESSAGES/django.po index 1459c1e48..30a553867 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: 2022-01-09 00:54+0000\n" -"PO-Revision-Date: 2022-01-09 02:52\n" +"POT-Creation-Date: 2022-01-09 19:01+0000\n" +"PO-Revision-Date: 2022-01-09 20:09\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Traditional\n" "Language: zh\n" @@ -268,7 +268,7 @@ msgstr "歡迎來到 %(site_name)s!" #: bookwyrm/templates/about/about.html:22 #, python-format -msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seemlessly with users anywhere in the BookWyrm network, this community is unique." +msgid "%(site_name)s is part of BookWyrm, a network of independent, self-directed communities for readers. While you can interact seamlessly with users anywhere in the BookWyrm network, this community is unique." msgstr "" #: bookwyrm/templates/about/about.html:39 From 581e3d17e047710604d11052ea0c7e6f8e5e7070 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 10:41:48 -0800 Subject: [PATCH 094/170] Fixes nested quotes --- .../snippets/generated_status/review_pure_name.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bookwyrm/templates/snippets/generated_status/review_pure_name.html b/bookwyrm/templates/snippets/generated_status/review_pure_name.html index d666979d4..39483a222 100644 --- a/bookwyrm/templates/snippets/generated_status/review_pure_name.html +++ b/bookwyrm/templates/snippets/generated_status/review_pure_name.html @@ -2,15 +2,15 @@ {% if rating %} {% blocktrans trimmed with book_title=book.title|safe book_path=book.local_path display_rating=rating|floatformat:"-1" review_title=name|safe count counter=rating %} -Review of "{{ book_title }}" ({{ display_rating }} star): {{ review_title }} +Review of "{{ book_title }}" ({{ display_rating }} star): {{ review_title }} {% plural %} -Review of "{{ book_title }}" ({{ display_rating }} stars): {{ review_title }} +Review of "{{ book_title }}" ({{ display_rating }} stars): {{ review_title }} {% endblocktrans %} {% else %} {% blocktrans trimmed with book_title=book.title|safe review_title=name|safe %} -Review of "{{ book_title }}": {{ review_title } +Review of "{{ book_title }}": {{ review_title } {% endblocktrans %} {% endif %} From 4a7013f1045dcd66bdd4f481165973d135026981 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 10:42:27 -0800 Subject: [PATCH 095/170] Adds book path variable --- .../templates/snippets/generated_status/review_pure_name.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/snippets/generated_status/review_pure_name.html b/bookwyrm/templates/snippets/generated_status/review_pure_name.html index 39483a222..afaad53f0 100644 --- a/bookwyrm/templates/snippets/generated_status/review_pure_name.html +++ b/bookwyrm/templates/snippets/generated_status/review_pure_name.html @@ -9,7 +9,7 @@ Review of "{{ book_title }}" ({{ display_rating }} {% else %} -{% blocktrans trimmed with book_title=book.title|safe review_title=name|safe %} +{% blocktrans trimmed with book_title=book.title|safe book_path=book.local_path review_title=name|safe %} Review of "{{ book_title }}": {{ review_title } {% endblocktrans %} From 9c86132701ff45fe0e0c8c791f35aad9f042a6b8 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 10:43:40 -0800 Subject: [PATCH 096/170] Adds missing bracket --- .../templates/snippets/generated_status/review_pure_name.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/snippets/generated_status/review_pure_name.html b/bookwyrm/templates/snippets/generated_status/review_pure_name.html index afaad53f0..d67fd0180 100644 --- a/bookwyrm/templates/snippets/generated_status/review_pure_name.html +++ b/bookwyrm/templates/snippets/generated_status/review_pure_name.html @@ -10,7 +10,7 @@ Review of "{{ book_title }}" ({{ display_rating }} {% else %} {% blocktrans trimmed with book_title=book.title|safe book_path=book.local_path review_title=name|safe %} -Review of "{{ book_title }}": {{ review_title } +Review of "{{ book_title }}": {{ review_title }} {% endblocktrans %} {% endif %} From 24045685e11184ec8c6d63c4b0a17a336dada1d6 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 11:03:04 -0800 Subject: [PATCH 097/170] Updates tests --- bookwyrm/tests/models/test_status_model.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bookwyrm/tests/models/test_status_model.py b/bookwyrm/tests/models/test_status_model.py index 6520094c1..4b9a76875 100644 --- a/bookwyrm/tests/models/test_status_model.py +++ b/bookwyrm/tests/models/test_status_model.py @@ -301,7 +301,7 @@ class Status(TestCase): self.assertEqual(activity["type"], "Article") self.assertEqual( activity["name"], - f'Review of "{self.book.title}" (3 stars): Review\'s name', + f'Review of "{self.book.title}" (3 stars): Review\'s name', ) self.assertEqual(activity["content"], "test content") self.assertEqual(activity["attachment"][0].type, "Document") @@ -325,7 +325,8 @@ class Status(TestCase): self.assertEqual(activity["id"], status.remote_id) self.assertEqual(activity["type"], "Article") self.assertEqual( - activity["name"], f'Review of "{self.book.title}": Review name' + activity["name"], + f'Review of "{self.book.title}": Review name', ) self.assertEqual(activity["content"], "test content") self.assertEqual(activity["attachment"][0].type, "Document") From 57a05e239b6d60278c6cf6d33aa685651a3230cf Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 11:17:30 -0800 Subject: [PATCH 098/170] Python formatting --- bookwyrm/tests/models/test_status_model.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bookwyrm/tests/models/test_status_model.py b/bookwyrm/tests/models/test_status_model.py index 4b9a76875..69895d9ba 100644 --- a/bookwyrm/tests/models/test_status_model.py +++ b/bookwyrm/tests/models/test_status_model.py @@ -301,7 +301,7 @@ class Status(TestCase): self.assertEqual(activity["type"], "Article") self.assertEqual( activity["name"], - f'Review of "{self.book.title}" (3 stars): Review\'s name', + f"Review of \"{self.book.title}\" (3 stars): Review's name", ) self.assertEqual(activity["content"], "test content") self.assertEqual(activity["attachment"][0].type, "Document") @@ -326,7 +326,7 @@ class Status(TestCase): self.assertEqual(activity["type"], "Article") self.assertEqual( activity["name"], - f'Review of "{self.book.title}": Review name', + f"Review of \"{self.book.title}\": Review name", ) self.assertEqual(activity["content"], "test content") self.assertEqual(activity["attachment"][0].type, "Document") From c08b9e61c428bcf8adcff5cbcc0eff6630ec16ec Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 11:34:44 -0800 Subject: [PATCH 099/170] Fixes book link in table --- bookwyrm/templates/settings/link_domains/link_table.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/settings/link_domains/link_table.html b/bookwyrm/templates/settings/link_domains/link_table.html index 0c7763b65..62fa17ee2 100644 --- a/bookwyrm/templates/settings/link_domains/link_table.html +++ b/bookwyrm/templates/settings/link_domains/link_table.html @@ -26,7 +26,7 @@ {% if link.filelink.book %} {% with book=link.filelink.book %} - {% include "snippets/book_titleby.html" with book=book %} + {% include "snippets/book_titleby.html" with book=book %} {% endwith %} {% endif %} From 8b2335c52ca101fab0b9cc7cdb4a36befd731892 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 15:25:49 -0800 Subject: [PATCH 100/170] Build-in translations to privacy choices dropdwon --- .../migrations/0126_auto_20220112_2315.py | 55 +++++++++++++++++++ bookwyrm/models/fields.py | 13 +++-- bookwyrm/models/import_job.py | 4 +- bookwyrm/models/user.py | 4 +- bookwyrm/templates/preferences/edit_user.html | 8 +-- 5 files changed, 69 insertions(+), 15 deletions(-) create mode 100644 bookwyrm/migrations/0126_auto_20220112_2315.py diff --git a/bookwyrm/migrations/0126_auto_20220112_2315.py b/bookwyrm/migrations/0126_auto_20220112_2315.py new file mode 100644 index 000000000..23645d967 --- /dev/null +++ b/bookwyrm/migrations/0126_auto_20220112_2315.py @@ -0,0 +1,55 @@ +# Generated by Django 3.2.10 on 2022-01-12 23:15 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0125_alter_user_preferred_language"), + ] + + operations = [ + migrations.AlterField( + model_name="annualgoal", + name="privacy", + field=models.CharField( + choices=[ + ("public", "Public"), + ("unlisted", "Unlisted"), + ("followers", "Followers"), + ("direct", "Private"), + ], + default="public", + max_length=255, + ), + ), + migrations.AlterField( + model_name="importjob", + name="privacy", + field=models.CharField( + choices=[ + ("public", "Public"), + ("unlisted", "Unlisted"), + ("followers", "Followers"), + ("direct", "Private"), + ], + default="public", + max_length=255, + ), + ), + migrations.AlterField( + model_name="user", + name="default_post_privacy", + field=models.CharField( + choices=[ + ("public", "Public"), + ("unlisted", "Unlisted"), + ("followers", "Followers"), + ("direct", "Private"), + ], + default="public", + max_length=255, + ), + ), + ] diff --git a/bookwyrm/models/fields.py b/bookwyrm/models/fields.py index 7d14f88f9..0edcd8fda 100644 --- a/bookwyrm/models/fields.py +++ b/bookwyrm/models/fields.py @@ -203,9 +203,12 @@ class UsernameField(ActivitypubFieldMixin, models.CharField): return value.split("@")[0] -PrivacyLevels = models.TextChoices( - "Privacy", ["public", "unlisted", "followers", "direct"] -) +PrivacyLevels = [ + ("public", _("Public")), + ("unlisted", _("Unlisted")), + ("followers", _("Followers")), + ("direct", _("Private")), +] class PrivacyField(ActivitypubFieldMixin, models.CharField): @@ -214,9 +217,7 @@ class PrivacyField(ActivitypubFieldMixin, models.CharField): public = "https://www.w3.org/ns/activitystreams#Public" def __init__(self, *args, **kwargs): - super().__init__( - *args, max_length=255, choices=PrivacyLevels.choices, default="public" - ) + super().__init__(*args, max_length=255, choices=PrivacyLevels, default="public") # pylint: disable=invalid-name def set_field_from_activity(self, instance, data, overwrite=True): diff --git a/bookwyrm/models/import_job.py b/bookwyrm/models/import_job.py index 919bbf0db..bcba391b6 100644 --- a/bookwyrm/models/import_job.py +++ b/bookwyrm/models/import_job.py @@ -40,9 +40,7 @@ class ImportJob(models.Model): mappings = models.JSONField() complete = models.BooleanField(default=False) source = models.CharField(max_length=100) - privacy = models.CharField( - max_length=255, default="public", choices=PrivacyLevels.choices - ) + privacy = models.CharField(max_length=255, default="public", choices=PrivacyLevels) retry = models.BooleanField(default=False) @property diff --git a/bookwyrm/models/user.py b/bookwyrm/models/user.py index bd340b01d..a63d3f155 100644 --- a/bookwyrm/models/user.py +++ b/bookwyrm/models/user.py @@ -129,7 +129,7 @@ class User(OrderedCollectionPageMixin, AbstractUser): related_name="favorite_statuses", ) default_post_privacy = models.CharField( - max_length=255, default="public", choices=fields.PrivacyLevels.choices + max_length=255, default="public", choices=fields.PrivacyLevels ) remote_id = fields.RemoteIdField(null=True, unique=True, activitypub_field="id") created_date = models.DateTimeField(auto_now_add=True) @@ -427,7 +427,7 @@ class AnnualGoal(BookWyrmModel): goal = models.IntegerField(validators=[MinValueValidator(1)]) year = models.IntegerField(default=get_current_year) privacy = models.CharField( - max_length=255, default="public", choices=fields.PrivacyLevels.choices + max_length=255, default="public", choices=fields.PrivacyLevels ) class Meta: diff --git a/bookwyrm/templates/preferences/edit_user.html b/bookwyrm/templates/preferences/edit_user.html index b18eb4e98..642d177cb 100644 --- a/bookwyrm/templates/preferences/edit_user.html +++ b/bookwyrm/templates/preferences/edit_user.html @@ -34,26 +34,26 @@
    {{ form.avatar }} - {% include 'snippets/form_errors.html' with errors_list=form.avatar.errors id="desc_avatar" %} + {% include 'snippets/form_errors.html' with errors_list=form.avatar.errors id="desc_avatar" %}
    {{ form.name }} - {% include 'snippets/form_errors.html' with errors_list=form.name.errors id="desc_name" %} + {% include 'snippets/form_errors.html' with errors_list=form.name.errors id="desc_name" %}
    {{ form.summary }} - {% include 'snippets/form_errors.html' with errors_list=form.summary.errors id="desc_summary" %} + {% include 'snippets/form_errors.html' with errors_list=form.summary.errors id="desc_summary" %}
    {{ form.email }} - {% include 'snippets/form_errors.html' with errors_list=form.email.errors id="desc_email" %} + {% include 'snippets/form_errors.html' with errors_list=form.email.errors id="desc_email" %}
    From 84575cef9adf55ee1b3c378bf64275f3eab3dac8 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 15:29:40 -0800 Subject: [PATCH 101/170] Use site name as shortname for opensearch --- bookwyrm/templates/opensearch.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/opensearch.xml b/bookwyrm/templates/opensearch.xml index 651958ab4..3d5f124b3 100644 --- a/bookwyrm/templates/opensearch.xml +++ b/bookwyrm/templates/opensearch.xml @@ -3,7 +3,7 @@ xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/" > - BW + {{ site_name }} {% blocktrans trimmed with site_name=site.name %} {{ site_name }} search {% endblocktrans %} From dedcbda2d808cfa9495760373fdd03a0931b57c2 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 15:40:42 -0800 Subject: [PATCH 102/170] Adds inbox test --- .../tests/views/inbox/test_inbox_update.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/bookwyrm/tests/views/inbox/test_inbox_update.py b/bookwyrm/tests/views/inbox/test_inbox_update.py index 052b47c4b..43b18946b 100644 --- a/bookwyrm/tests/views/inbox/test_inbox_update.py +++ b/bookwyrm/tests/views/inbox/test_inbox_update.py @@ -6,6 +6,7 @@ from unittest.mock import patch from django.test import TestCase from bookwyrm import models, views +from bookwyrm.activitypub.base_activity import set_related_field # pylint: disable=too-many-public-methods @@ -147,6 +148,46 @@ class InboxUpdate(TestCase): self.assertEqual(book.title, "Piranesi") self.assertEqual(book.last_edited_by, self.remote_user) + def test_update_edition_links(self): + """add links to edition""" + datafile = pathlib.Path(__file__).parent.joinpath("../../data/bw_edition.json") + bookdata = json.loads(datafile.read_bytes()) + del bookdata["authors"] + # pylint: disable=line-too-long + link_data = { + "href": "https://openlibrary.org/books/OL11645413M/Queen_Victoria/daisy", + "mediaType": "Daisy", + "attributedTo": self.remote_user.remote_id + } + bookdata["fileLinks"] = [link_data] + + models.Work.objects.create( + title="Test Work", remote_id="https://bookwyrm.social/book/5988" + ) + book = models.Edition.objects.create( + title="Test Book", remote_id="https://bookwyrm.social/book/5989" + ) + self.assertFalse(book.file_links.exists()) + + with patch("bookwyrm.activitypub.base_activity.set_related_field.delay") as mock: + views.inbox.activity_task( + { + "type": "Update", + "to": [], + "cc": [], + "actor": "hi", + "id": "sdkjf", + "object": bookdata, + } + ) + args = mock.call_args[0] + self.assertEqual(args[0], "FileLink") + self.assertEqual(args[1], "Edition") + self.assertEqual(args[2], "book") + self.assertEqual(args[3], book.remote_id) + self.assertEqual(args[4], link_data) + # idk how to test that related name works, because of the transaction + def test_update_work(self): """update an existing edition""" datafile = pathlib.Path(__file__).parent.joinpath("../../data/bw_work.json") From 5fcdc284cea75f4ef69fd144acd4accb036a4aef Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 16:41:23 -0800 Subject: [PATCH 103/170] Removes duplicate atomic block --- bookwyrm/activitypub/base_activity.py | 51 +++++++++++++-------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/bookwyrm/activitypub/base_activity.py b/bookwyrm/activitypub/base_activity.py index 57244484a..4894452de 100644 --- a/bookwyrm/activitypub/base_activity.py +++ b/bookwyrm/activitypub/base_activity.py @@ -208,35 +208,34 @@ def set_related_field( model = apps.get_model(f"bookwyrm.{model_name}", require_ready=True) origin_model = apps.get_model(f"bookwyrm.{origin_model_name}", require_ready=True) - with transaction.atomic(): - if isinstance(data, str): - existing = model.find_existing_by_remote_id(data) - if existing: - data = existing.to_activity() - else: - data = get_data(data) - activity = model.activity_serializer(**data) + if isinstance(data, str): + existing = model.find_existing_by_remote_id(data) + if existing: + data = existing.to_activity() + else: + data = get_data(data) + activity = model.activity_serializer(**data) - # this must exist because it's the object that triggered this function - instance = origin_model.find_existing_by_remote_id(related_remote_id) - if not instance: - raise ValueError(f"Invalid related remote id: {related_remote_id}") + # this must exist because it's the object that triggered this function + instance = origin_model.find_existing_by_remote_id(related_remote_id) + if not instance: + raise ValueError(f"Invalid related remote id: {related_remote_id}") - # set the origin's remote id on the activity so it will be there when - # the model instance is created - # edition.parentWork = instance, for example - model_field = getattr(model, related_field_name) - if hasattr(model_field, "activitypub_field"): - setattr( - activity, getattr(model_field, "activitypub_field"), instance.remote_id - ) - item = activity.to_model() + # set the origin's remote id on the activity so it will be there when + # the model instance is created + # edition.parentWork = instance, for example + model_field = getattr(model, related_field_name) + if hasattr(model_field, "activitypub_field"): + setattr( + activity, getattr(model_field, "activitypub_field"), instance.remote_id + ) + item = activity.to_model() - # if the related field isn't serialized (attachments on Status), then - # we have to set it post-creation - if not hasattr(model_field, "activitypub_field"): - setattr(item, related_field_name, instance) - item.save() + # if the related field isn't serialized (attachments on Status), then + # we have to set it post-creation + if not hasattr(model_field, "activitypub_field"): + setattr(item, related_field_name, instance) + item.save() def get_model_from_type(activity_type): From 262e641c792ba6d123bf925ce74de9dabb7837c4 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 16:46:14 -0800 Subject: [PATCH 104/170] Creates link template subdirectory --- bookwyrm/templates/book/book.html | 2 +- .../add_link_modal.html} | 0 bookwyrm/templates/book/{ => file_links}/edit_links.html | 0 .../templates/book/{ => file_links}/file_link_page.html | 2 +- bookwyrm/templates/book/{ => file_links}/links.html | 4 ++-- .../verification_modal.html} | 0 bookwyrm/views/books/links.py | 6 +++--- 7 files changed, 7 insertions(+), 7 deletions(-) rename bookwyrm/templates/book/{file_link_modal.html => file_links/add_link_modal.html} (100%) rename bookwyrm/templates/book/{ => file_links}/edit_links.html (100%) rename bookwyrm/templates/book/{ => file_links}/file_link_page.html (56%) rename bookwyrm/templates/book/{ => file_links}/links.html (90%) rename bookwyrm/templates/book/{link_verification_modal.html => file_links/verification_modal.html} (100%) diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 6d81290e1..c8c78e0e9 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -375,7 +375,7 @@ {% endif %}
    - {% include "book/links.html" %} + {% include "book/file_links/links.html" %}
    diff --git a/bookwyrm/templates/book/file_link_modal.html b/bookwyrm/templates/book/file_links/add_link_modal.html similarity index 100% rename from bookwyrm/templates/book/file_link_modal.html rename to bookwyrm/templates/book/file_links/add_link_modal.html diff --git a/bookwyrm/templates/book/edit_links.html b/bookwyrm/templates/book/file_links/edit_links.html similarity index 100% rename from bookwyrm/templates/book/edit_links.html rename to bookwyrm/templates/book/file_links/edit_links.html diff --git a/bookwyrm/templates/book/file_link_page.html b/bookwyrm/templates/book/file_links/file_link_page.html similarity index 56% rename from bookwyrm/templates/book/file_link_page.html rename to bookwyrm/templates/book/file_links/file_link_page.html index 26a8d89d3..902057af2 100644 --- a/bookwyrm/templates/book/file_link_page.html +++ b/bookwyrm/templates/book/file_links/file_link_page.html @@ -6,5 +6,5 @@ {% endblock %} {% block content %} -{% include "book/file_link_modal.html" with book=book active=True static=True id="file-link" %} +{% include "book/file_links/add_link_modal.html" with book=book active=True static=True id="file-link" %} {% endblock %} diff --git a/bookwyrm/templates/book/links.html b/bookwyrm/templates/book/file_links/links.html similarity index 90% rename from bookwyrm/templates/book/links.html rename to bookwyrm/templates/book/file_links/links.html index c77e21464..10a6da2f2 100644 --- a/bookwyrm/templates/book/links.html +++ b/bookwyrm/templates/book/file_links/links.html @@ -35,7 +35,7 @@ {% for link in links.all %} {% join "verify" link.id as verify_modal %} -{% include "book/link_verification_modal.html" with id=verify_modal %} +{% include "book/file_links/verification_modal.html" with id=verify_modal %} {% endfor %} {% else %} {% trans "No links available" %} @@ -46,7 +46,7 @@ {% trans "Edit links" %} -{% include 'book/file_link_modal.html' with book=book id="add-links" %} +{% include 'book/file_links/add_link_modal.html' with book=book id="add-links" %} {% endif %} {% endif %} diff --git a/bookwyrm/templates/book/link_verification_modal.html b/bookwyrm/templates/book/file_links/verification_modal.html similarity index 100% rename from bookwyrm/templates/book/link_verification_modal.html rename to bookwyrm/templates/book/file_links/verification_modal.html diff --git a/bookwyrm/views/books/links.py b/bookwyrm/views/books/links.py index e10e87512..9dca41e46 100644 --- a/bookwyrm/views/books/links.py +++ b/bookwyrm/views/books/links.py @@ -16,7 +16,7 @@ class BookFileLinks(View): def get(self, request, book_id): """view links""" book = get_object_or_404(models.Edition, id=book_id) - return TemplateResponse(request, "book/edit_links.html", {"book": book}) + return TemplateResponse(request, "book/file_links/edit_links.html", {"book": book}) def post(self, request, book_id, link_id): """delete link""" @@ -39,7 +39,7 @@ class AddFileLink(View): "file_link_form": forms.FileLinkForm(), "book": book, } - return TemplateResponse(request, "book/file_link_page.html", data) + return TemplateResponse(request, "book/file_links/file_link_page.html", data) @transaction.atomic def post(self, request, book_id, link_id=None): @@ -49,7 +49,7 @@ class AddFileLink(View): form = forms.FileLinkForm(request.POST, instance=link) if not form.is_valid(): data = {"file_link_form": form, "book": book} - return TemplateResponse(request, "book/file_link_page.html", data) + return TemplateResponse(request, "book/file_links/file_link_page.html", data) link = form.save() book.file_links.add(link) From 34635b0c3fad836df0d044aa3ad777f4e4e41d16 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 17:02:30 -0800 Subject: [PATCH 105/170] Select trie based on data attr --- bookwyrm/static/js/autocomplete.js | 101 +++++++++++++----- .../book/file_links/add_link_modal.html | 13 ++- 2 files changed, 89 insertions(+), 25 deletions(-) diff --git a/bookwyrm/static/js/autocomplete.js b/bookwyrm/static/js/autocomplete.js index f8a982358..bb15f6220 100644 --- a/bookwyrm/static/js/autocomplete.js +++ b/bookwyrm/static/js/autocomplete.js @@ -19,7 +19,9 @@ const input = event.target; // Get suggestions - let suggestions = getSuggestions(input.value, mimetypeTrie); + let trie = tries[input.getAttribute("data-autocomplete")]; + + let suggestions = getSuggestions(input.value, trie); const boxId = input.getAttribute("list"); @@ -80,32 +82,83 @@ }); })(); -const mimetypeTrie = { - a: { +const tries = {"mimetype": { a: { - c: "AAC", + a: { + c: "AAC", + }, + z: { + w: "AZW", + }, }, - z: { - w: "AZW", - }, - }, - d: "Daisy", - e: "ePub", - f: "FLAC", - h: "HTML", - m: { - 4: { - a: "M4A", - b: "M4B", - }, - o: "MOBI", - p: "MP3", - }, - o: "OGG", - p: { d: { - f: "PDF", + a: { + i: { + s: { + y: "Daisy", + }, + }, + }, + }, + e: { + p: { + u: { + b: "ePub", + }, + }, + }, + f: { + l: { + a: { + c: "FLAC", + }, + }, + }, + h: { + t: { + m: { + l: "HTML", + }, + }, + }, + m: { + 4: { + a: "M4A", + b: "M4B", + }, + o: { + b: { + i: "MOBI", + }, + }, + p: { + 3: "MP3", + }, + }, + o: { + g: { + g: "OGG", + }, + }, + p: { + d: { + f: "PDF", + }, + l: { + a: { + i: { + n: { + t: { + e: { + x: { + t: "Plaintext", + }, + }, + }, + }, + }, + }, + }, }, - l: "Plaintext", }, }; diff --git a/bookwyrm/templates/book/file_links/add_link_modal.html b/bookwyrm/templates/book/file_links/add_link_modal.html index 2965142bd..dfc222ee9 100644 --- a/bookwyrm/templates/book/file_links/add_link_modal.html +++ b/bookwyrm/templates/book/file_links/add_link_modal.html @@ -27,7 +27,18 @@
    - + {% include 'snippets/form_errors.html' with errors_list=file_link_form.filetype.errors id="desc_filetype" %}
    From 80efd5888165dc2ec733e68f8d3cd2d04dddc34a Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 17:06:36 -0800 Subject: [PATCH 106/170] Javascript file in correct template --- bookwyrm/templates/book/book.html | 1 + bookwyrm/templates/book/file_links/file_link_page.html | 5 +++++ bookwyrm/templates/layout.html | 1 - 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index c8c78e0e9..f6d9929dd 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -386,4 +386,5 @@ {% block scripts %} + {% endblock %} diff --git a/bookwyrm/templates/book/file_links/file_link_page.html b/bookwyrm/templates/book/file_links/file_link_page.html index 902057af2..00efe5089 100644 --- a/bookwyrm/templates/book/file_links/file_link_page.html +++ b/bookwyrm/templates/book/file_links/file_link_page.html @@ -1,5 +1,6 @@ {% extends 'layout.html' %} {% load i18n %} +{% load static %} {% block title %} {% trans "File Links" %} @@ -8,3 +9,7 @@ {% block content %} {% include "book/file_links/add_link_modal.html" with book=book active=True static=True id="file-link" %} {% endblock %} + +{% block scripts %} + +{% endblock %} diff --git a/bookwyrm/templates/layout.html b/bookwyrm/templates/layout.html index fd9e43b86..43e8eb227 100644 --- a/bookwyrm/templates/layout.html +++ b/bookwyrm/templates/layout.html @@ -264,7 +264,6 @@ - {% block scripts %}{% endblock %} From fc06f0cdd122c7ce003bb85b8e42b68a76b6a112 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 17:08:10 -0800 Subject: [PATCH 107/170] Avoid console error --- bookwyrm/static/js/autocomplete.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bookwyrm/static/js/autocomplete.js b/bookwyrm/static/js/autocomplete.js index bb15f6220..0ba3e2172 100644 --- a/bookwyrm/static/js/autocomplete.js +++ b/bookwyrm/static/js/autocomplete.js @@ -43,11 +43,11 @@ function getSuggestions(input, trie) { // Follow the trie through the provided input input.split("").forEach((letter) => { - trie = trie[letter]; - if (!trie) { return; } + + trie = trie[letter]; }); if (!trie) { From d1183fd00335a4013ca6ce80fec5649f4aa632ee Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 17:11:24 -0800 Subject: [PATCH 108/170] Python formatting --- bookwyrm/activitypub/base_activity.py | 4 +--- bookwyrm/tests/views/inbox/test_inbox_update.py | 6 ++++-- bookwyrm/views/books/links.py | 8 ++++++-- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/bookwyrm/activitypub/base_activity.py b/bookwyrm/activitypub/base_activity.py index 4894452de..15ca5a938 100644 --- a/bookwyrm/activitypub/base_activity.py +++ b/bookwyrm/activitypub/base_activity.py @@ -226,9 +226,7 @@ def set_related_field( # edition.parentWork = instance, for example model_field = getattr(model, related_field_name) if hasattr(model_field, "activitypub_field"): - setattr( - activity, getattr(model_field, "activitypub_field"), instance.remote_id - ) + setattr(activity, getattr(model_field, "activitypub_field"), instance.remote_id) item = activity.to_model() # if the related field isn't serialized (attachments on Status), then diff --git a/bookwyrm/tests/views/inbox/test_inbox_update.py b/bookwyrm/tests/views/inbox/test_inbox_update.py index 43b18946b..963742c83 100644 --- a/bookwyrm/tests/views/inbox/test_inbox_update.py +++ b/bookwyrm/tests/views/inbox/test_inbox_update.py @@ -157,7 +157,7 @@ class InboxUpdate(TestCase): link_data = { "href": "https://openlibrary.org/books/OL11645413M/Queen_Victoria/daisy", "mediaType": "Daisy", - "attributedTo": self.remote_user.remote_id + "attributedTo": self.remote_user.remote_id, } bookdata["fileLinks"] = [link_data] @@ -169,7 +169,9 @@ class InboxUpdate(TestCase): ) self.assertFalse(book.file_links.exists()) - with patch("bookwyrm.activitypub.base_activity.set_related_field.delay") as mock: + with patch( + "bookwyrm.activitypub.base_activity.set_related_field.delay" + ) as mock: views.inbox.activity_task( { "type": "Update", diff --git a/bookwyrm/views/books/links.py b/bookwyrm/views/books/links.py index 9dca41e46..989ca9c49 100644 --- a/bookwyrm/views/books/links.py +++ b/bookwyrm/views/books/links.py @@ -16,7 +16,9 @@ class BookFileLinks(View): def get(self, request, book_id): """view links""" book = get_object_or_404(models.Edition, id=book_id) - return TemplateResponse(request, "book/file_links/edit_links.html", {"book": book}) + return TemplateResponse( + request, "book/file_links/edit_links.html", {"book": book} + ) def post(self, request, book_id, link_id): """delete link""" @@ -49,7 +51,9 @@ class AddFileLink(View): form = forms.FileLinkForm(request.POST, instance=link) if not form.is_valid(): data = {"file_link_form": form, "book": book} - return TemplateResponse(request, "book/file_links/file_link_page.html", data) + return TemplateResponse( + request, "book/file_links/file_link_page.html", data + ) link = form.save() book.file_links.add(link) From e6355f76de415d832d6773043307e7b7b01180c6 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 17:14:59 -0800 Subject: [PATCH 109/170] Adds merge migration --- ...26_auto_20220112_2315_0127_auto_20220110_2211.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 bookwyrm/migrations/0128_merge_0126_auto_20220112_2315_0127_auto_20220110_2211.py diff --git a/bookwyrm/migrations/0128_merge_0126_auto_20220112_2315_0127_auto_20220110_2211.py b/bookwyrm/migrations/0128_merge_0126_auto_20220112_2315_0127_auto_20220110_2211.py new file mode 100644 index 000000000..dc700e99c --- /dev/null +++ b/bookwyrm/migrations/0128_merge_0126_auto_20220112_2315_0127_auto_20220110_2211.py @@ -0,0 +1,13 @@ +# Generated by Django 3.2.10 on 2022-01-13 01:14 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0126_auto_20220112_2315"), + ("bookwyrm", "0127_auto_20220110_2211"), + ] + + operations = [] From 2fbbdbc06a08a2b89f98ca4e7fd20362ffd52f59 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Wed, 12 Jan 2022 17:19:34 -0800 Subject: [PATCH 110/170] Runs prettier --- bookwyrm/static/js/autocomplete.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bookwyrm/static/js/autocomplete.js b/bookwyrm/static/js/autocomplete.js index 0ba3e2172..896100832 100644 --- a/bookwyrm/static/js/autocomplete.js +++ b/bookwyrm/static/js/autocomplete.js @@ -82,7 +82,8 @@ }); })(); -const tries = {"mimetype": { +const tries = { + mimetype: { a: { a: { c: "AAC", From 3638e1884448403e0f8db915b6ef0c3d3b0688ac Mon Sep 17 00:00:00 2001 From: Jade Meskill Date: Wed, 12 Jan 2022 19:44:11 -0700 Subject: [PATCH 111/170] add support for different redis db --- bookwyrm/management/commands/erase_streams.py | 2 +- bookwyrm/redis_store.py | 2 +- bookwyrm/settings.py | 3 ++- celerywyrm/settings.py | 5 +++-- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/bookwyrm/management/commands/erase_streams.py b/bookwyrm/management/commands/erase_streams.py index 1d34b1bb6..cb732079d 100644 --- a/bookwyrm/management/commands/erase_streams.py +++ b/bookwyrm/management/commands/erase_streams.py @@ -5,7 +5,7 @@ import redis from bookwyrm import settings r = redis.Redis( - host=settings.REDIS_ACTIVITY_HOST, port=settings.REDIS_ACTIVITY_PORT, db=0 + host=settings.REDIS_ACTIVITY_HOST, port=settings.REDIS_ACTIVITY_PORT, db=settings.REDIS_ACTIVITY_DB ) diff --git a/bookwyrm/redis_store.py b/bookwyrm/redis_store.py index 964409e89..560527c92 100644 --- a/bookwyrm/redis_store.py +++ b/bookwyrm/redis_store.py @@ -8,7 +8,7 @@ r = redis.Redis( host=settings.REDIS_ACTIVITY_HOST, port=settings.REDIS_ACTIVITY_PORT, password=settings.REDIS_ACTIVITY_PASSWORD, - db=0, + db=settings.REDIS_ACTIVITY_DB, ) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 92ff7ecdd..22717f783 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -113,6 +113,7 @@ WSGI_APPLICATION = "bookwyrm.wsgi.application" REDIS_ACTIVITY_HOST = env("REDIS_ACTIVITY_HOST", "localhost") REDIS_ACTIVITY_PORT = env("REDIS_ACTIVITY_PORT", 6379) REDIS_ACTIVITY_PASSWORD = env("REDIS_ACTIVITY_PASSWORD", None) +REDIS_ACTIVITY_DB = env("REDIS_ACTIVITY_DB", 0) MAX_STREAM_LENGTH = int(env("MAX_STREAM_LENGTH", 200)) @@ -139,7 +140,7 @@ else: CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", - "LOCATION": f"redis://:{REDIS_ACTIVITY_PASSWORD}@{REDIS_ACTIVITY_HOST}:{REDIS_ACTIVITY_PORT}/0", + "LOCATION": f"redis://:{REDIS_ACTIVITY_PASSWORD}@{REDIS_ACTIVITY_HOST}:{REDIS_ACTIVITY_PORT}/{REDIS_ACTIVITY_DB}", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", }, diff --git a/celerywyrm/settings.py b/celerywyrm/settings.py index 24729345b..7016d4aa1 100644 --- a/celerywyrm/settings.py +++ b/celerywyrm/settings.py @@ -6,12 +6,13 @@ from bookwyrm.settings import * REDIS_BROKER_PASSWORD = requests.utils.quote(env("REDIS_BROKER_PASSWORD", None)) REDIS_BROKER_HOST = env("REDIS_BROKER_HOST", "redis_broker") REDIS_BROKER_PORT = env("REDIS_BROKER_PORT", 6379) +REDIS_BROKER_DB = env("REDIS_BROKER_DB", 0) CELERY_BROKER_URL = ( - f"redis://:{REDIS_BROKER_PASSWORD}@{REDIS_BROKER_HOST}:{REDIS_BROKER_PORT}/0" + f"redis://:{REDIS_BROKER_PASSWORD}@{REDIS_BROKER_HOST}:{REDIS_BROKER_PORT}/{REDIS_BROKER_DB}" ) CELERY_RESULT_BACKEND = ( - f"redis://:{REDIS_BROKER_PASSWORD}@{REDIS_BROKER_HOST}:{REDIS_BROKER_PORT}/0" + f"redis://:{REDIS_BROKER_PASSWORD}@{REDIS_BROKER_HOST}:{REDIS_BROKER_PORT}/{REDIS_BROKER_DB}" ) CELERY_DEFAULT_QUEUE = "low_priority" From 6490c1ededae4284823fc84b9073c0e77da80985 Mon Sep 17 00:00:00 2001 From: Jade Meskill Date: Wed, 12 Jan 2022 21:49:57 -0700 Subject: [PATCH 112/170] use correct environment variable for EMAIL_SENDER_DOMAIN --- bookwyrm/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 92ff7ecdd..b4ea0cac6 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -25,7 +25,7 @@ EMAIL_HOST_PASSWORD = env("EMAIL_HOST_PASSWORD") EMAIL_USE_TLS = env.bool("EMAIL_USE_TLS", True) EMAIL_USE_SSL = env.bool("EMAIL_USE_SSL", False) EMAIL_SENDER_NAME = env("EMAIL_SENDER_NAME", "admin") -EMAIL_SENDER_DOMAIN = env("EMAIL_SENDER_NAME", DOMAIN) +EMAIL_SENDER_DOMAIN = env("EMAIL_SENDER_DOMAIN", DOMAIN) EMAIL_SENDER = f"{EMAIL_SENDER_NAME}@{EMAIL_SENDER_DOMAIN}" # Build paths inside the project like this: os.path.join(BASE_DIR, ...) From 5a3d108c6211d83269ab0e3224f079bd96250b81 Mon Sep 17 00:00:00 2001 From: Jade Meskill Date: Wed, 12 Jan 2022 22:46:51 -0700 Subject: [PATCH 113/170] update fomatting to pass automated checks --- bookwyrm/management/commands/erase_streams.py | 4 +++- celerywyrm/settings.py | 8 ++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/bookwyrm/management/commands/erase_streams.py b/bookwyrm/management/commands/erase_streams.py index cb732079d..ed9987c49 100644 --- a/bookwyrm/management/commands/erase_streams.py +++ b/bookwyrm/management/commands/erase_streams.py @@ -5,7 +5,9 @@ import redis from bookwyrm import settings r = redis.Redis( - host=settings.REDIS_ACTIVITY_HOST, port=settings.REDIS_ACTIVITY_PORT, db=settings.REDIS_ACTIVITY_DB + host=settings.REDIS_ACTIVITY_HOST, + port=settings.REDIS_ACTIVITY_PORT, + db=settings.REDIS_ACTIVITY_DB, ) diff --git a/celerywyrm/settings.py b/celerywyrm/settings.py index 7016d4aa1..11f3acf45 100644 --- a/celerywyrm/settings.py +++ b/celerywyrm/settings.py @@ -8,12 +8,8 @@ REDIS_BROKER_HOST = env("REDIS_BROKER_HOST", "redis_broker") REDIS_BROKER_PORT = env("REDIS_BROKER_PORT", 6379) REDIS_BROKER_DB = env("REDIS_BROKER_DB", 0) -CELERY_BROKER_URL = ( - f"redis://:{REDIS_BROKER_PASSWORD}@{REDIS_BROKER_HOST}:{REDIS_BROKER_PORT}/{REDIS_BROKER_DB}" -) -CELERY_RESULT_BACKEND = ( - f"redis://:{REDIS_BROKER_PASSWORD}@{REDIS_BROKER_HOST}:{REDIS_BROKER_PORT}/{REDIS_BROKER_DB}" -) +CELERY_BROKER_URL = f"redis://:{REDIS_BROKER_PASSWORD}@{REDIS_BROKER_HOST}:{REDIS_BROKER_PORT}/{REDIS_BROKER_DB}" +CELERY_RESULT_BACKEND = f"redis://:{REDIS_BROKER_PASSWORD}@{REDIS_BROKER_HOST}:{REDIS_BROKER_PORT}/{REDIS_BROKER_DB}" CELERY_DEFAULT_QUEUE = "low_priority" From 900937ee5f1d4a63191ecc9994351eea8e888f47 Mon Sep 17 00:00:00 2001 From: Jade Meskill Date: Thu, 13 Jan 2022 09:15:24 -0700 Subject: [PATCH 114/170] use REDIS_x_DB_INDEX instead of REDIS_x_DB, add optional setting to example env file --- .env.example | 4 ++++ bookwyrm/management/commands/erase_streams.py | 2 +- bookwyrm/redis_store.py | 2 +- bookwyrm/settings.py | 4 ++-- celerywyrm/settings.py | 6 +++--- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/.env.example b/.env.example index 3c935287e..2000a7165 100644 --- a/.env.example +++ b/.env.example @@ -28,10 +28,14 @@ MAX_STREAM_LENGTH=200 REDIS_ACTIVITY_HOST=redis_activity REDIS_ACTIVITY_PORT=6379 REDIS_ACTIVITY_PASSWORD=redispassword345 +# Optional, use a different redis database (defaults to 0) +# REDIS_ACTIVITY_DB_INDEX=0 # Redis as celery broker REDIS_BROKER_PORT=6379 REDIS_BROKER_PASSWORD=redispassword123 +# Optional, use a different redis database (defaults to 0) +# REDIS_BROKER_DB_INDEX=0 # Monitoring for celery FLOWER_PORT=8888 diff --git a/bookwyrm/management/commands/erase_streams.py b/bookwyrm/management/commands/erase_streams.py index ed9987c49..7b8074029 100644 --- a/bookwyrm/management/commands/erase_streams.py +++ b/bookwyrm/management/commands/erase_streams.py @@ -7,7 +7,7 @@ from bookwyrm import settings r = redis.Redis( host=settings.REDIS_ACTIVITY_HOST, port=settings.REDIS_ACTIVITY_PORT, - db=settings.REDIS_ACTIVITY_DB, + db=settings.REDIS_ACTIVITY_DB_INDEX, ) diff --git a/bookwyrm/redis_store.py b/bookwyrm/redis_store.py index 560527c92..ae50db2ee 100644 --- a/bookwyrm/redis_store.py +++ b/bookwyrm/redis_store.py @@ -8,7 +8,7 @@ r = redis.Redis( host=settings.REDIS_ACTIVITY_HOST, port=settings.REDIS_ACTIVITY_PORT, password=settings.REDIS_ACTIVITY_PASSWORD, - db=settings.REDIS_ACTIVITY_DB, + db=settings.REDIS_ACTIVITY_DB_INDEX, ) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 22717f783..a91630efa 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -113,7 +113,7 @@ WSGI_APPLICATION = "bookwyrm.wsgi.application" REDIS_ACTIVITY_HOST = env("REDIS_ACTIVITY_HOST", "localhost") REDIS_ACTIVITY_PORT = env("REDIS_ACTIVITY_PORT", 6379) REDIS_ACTIVITY_PASSWORD = env("REDIS_ACTIVITY_PASSWORD", None) -REDIS_ACTIVITY_DB = env("REDIS_ACTIVITY_DB", 0) +REDIS_ACTIVITY_DB_INDEX = env("REDIS_ACTIVITY_DB_INDEX", 0) MAX_STREAM_LENGTH = int(env("MAX_STREAM_LENGTH", 200)) @@ -140,7 +140,7 @@ else: CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", - "LOCATION": f"redis://:{REDIS_ACTIVITY_PASSWORD}@{REDIS_ACTIVITY_HOST}:{REDIS_ACTIVITY_PORT}/{REDIS_ACTIVITY_DB}", + "LOCATION": f"redis://:{REDIS_ACTIVITY_PASSWORD}@{REDIS_ACTIVITY_HOST}:{REDIS_ACTIVITY_PORT}/{REDIS_ACTIVITY_DB_INDEX}", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", }, diff --git a/celerywyrm/settings.py b/celerywyrm/settings.py index 11f3acf45..bd7805e51 100644 --- a/celerywyrm/settings.py +++ b/celerywyrm/settings.py @@ -6,10 +6,10 @@ from bookwyrm.settings import * REDIS_BROKER_PASSWORD = requests.utils.quote(env("REDIS_BROKER_PASSWORD", None)) REDIS_BROKER_HOST = env("REDIS_BROKER_HOST", "redis_broker") REDIS_BROKER_PORT = env("REDIS_BROKER_PORT", 6379) -REDIS_BROKER_DB = env("REDIS_BROKER_DB", 0) +REDIS_BROKER_DB_INDEX = env("REDIS_BROKER_DB_INDEX", 0) -CELERY_BROKER_URL = f"redis://:{REDIS_BROKER_PASSWORD}@{REDIS_BROKER_HOST}:{REDIS_BROKER_PORT}/{REDIS_BROKER_DB}" -CELERY_RESULT_BACKEND = f"redis://:{REDIS_BROKER_PASSWORD}@{REDIS_BROKER_HOST}:{REDIS_BROKER_PORT}/{REDIS_BROKER_DB}" +CELERY_BROKER_URL = f"redis://:{REDIS_BROKER_PASSWORD}@{REDIS_BROKER_HOST}:{REDIS_BROKER_PORT}/{REDIS_BROKER_DB_INDEX}" +CELERY_RESULT_BACKEND = f"redis://:{REDIS_BROKER_PASSWORD}@{REDIS_BROKER_HOST}:{REDIS_BROKER_PORT}/{REDIS_BROKER_DB_INDEX}" CELERY_DEFAULT_QUEUE = "low_priority" From c7b2b303da70aa4d962859b7623e4e780e60ebe2 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 13 Jan 2022 08:36:36 -0800 Subject: [PATCH 115/170] Fixes searching for users in group view, with test --- bookwyrm/tests/views/test_group.py | 12 ++++++++++++ bookwyrm/views/group.py | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/bookwyrm/tests/views/test_group.py b/bookwyrm/tests/views/test_group.py index 7c82b4758..e43b040ac 100644 --- a/bookwyrm/tests/views/test_group.py +++ b/bookwyrm/tests/views/test_group.py @@ -92,6 +92,18 @@ class GroupViews(TestCase): validate_html(result.render()) self.assertEqual(result.status_code, 200) + def test_findusers_get_with_query(self, _): + """there are so many views, this just makes sure it LOADS""" + view = views.FindUsers.as_view() + request = self.factory.get("", {"user_query": "rat"}) + request.user = self.local_user + with patch("bookwyrm.suggested_users.SuggestedUsers.get_suggestions") as mock: + mock.return_value = models.User.objects.all() + result = view(request, group_id=self.testgroup.id) + self.assertIsInstance(result, TemplateResponse) + validate_html(result.render()) + self.assertEqual(result.status_code, 200) + def test_group_create(self, _): """create group view""" view = views.UserGroups.as_view() diff --git a/bookwyrm/views/group.py b/bookwyrm/views/group.py index cbdae0d2c..893929856 100644 --- a/bookwyrm/views/group.py +++ b/bookwyrm/views/group.py @@ -151,8 +151,8 @@ class FindUsers(View): no_results = not user_results if user_results.count() < 5: - user_results = list(user_results) + suggested_users.get_suggestions( - request.user, local=True + user_results = list(user_results) + list( + suggested_users.get_suggestions(request.user, local=True) ) data = { From b76cb0a22f950628349a65ad049855b0b3069d92 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 13 Jan 2022 08:52:22 -0800 Subject: [PATCH 116/170] Adds update command to main for bw-dev --- bw-dev | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bw-dev b/bw-dev index 6bf5a125e..ede068ef8 100755 --- a/bw-dev +++ b/bw-dev @@ -136,6 +136,13 @@ case "$CMD" in prettier) npx prettier --write bookwyrm/static/js/*.js ;; + update) + git pull + docker-compose build + runweb python manage.py migrate + runweb python manage.py collectstatic --no-input + docker-compose up -d + ;; populate_streams) runweb python manage.py populate_streams "$@" ;; From a06fb777d764808b5d4df2ab69a34123550db7dd Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 13 Jan 2022 09:00:02 -0800 Subject: [PATCH 117/170] Updates locales --- locale/de_DE/LC_MESSAGES/django.mo | Bin 71660 -> 73501 bytes locale/de_DE/LC_MESSAGES/django.po | 408 +++++++++++++++------------ locale/en_US/LC_MESSAGES/django.po | 100 +++---- locale/es_ES/LC_MESSAGES/django.mo | Bin 77754 -> 79545 bytes locale/es_ES/LC_MESSAGES/django.po | 398 ++++++++++++++------------ locale/fr_FR/LC_MESSAGES/django.mo | Bin 79665 -> 79004 bytes locale/fr_FR/LC_MESSAGES/django.po | 400 ++++++++++++++------------ locale/gl_ES/LC_MESSAGES/django.mo | Bin 76022 -> 77786 bytes locale/gl_ES/LC_MESSAGES/django.po | 398 ++++++++++++++------------ locale/it_IT/LC_MESSAGES/django.mo | Bin 76932 -> 76233 bytes locale/it_IT/LC_MESSAGES/django.po | 398 ++++++++++++++------------ locale/lt_LT/LC_MESSAGES/django.mo | Bin 75790 -> 74891 bytes locale/lt_LT/LC_MESSAGES/django.po | 402 ++++++++++++++------------ locale/no_NO/LC_MESSAGES/django.mo | Bin 73976 -> 75705 bytes locale/no_NO/LC_MESSAGES/django.po | 398 ++++++++++++++------------ locale/pt_BR/LC_MESSAGES/django.mo | Bin 76384 -> 78148 bytes locale/pt_BR/LC_MESSAGES/django.po | 398 ++++++++++++++------------ locale/pt_PT/LC_MESSAGES/django.mo | Bin 74424 -> 73743 bytes locale/pt_PT/LC_MESSAGES/django.po | 398 ++++++++++++++------------ locale/zh_Hans/LC_MESSAGES/django.mo | Bin 67722 -> 67101 bytes locale/zh_Hans/LC_MESSAGES/django.po | 396 ++++++++++++++------------ locale/zh_Hant/LC_MESSAGES/django.mo | Bin 37037 -> 36669 bytes locale/zh_Hant/LC_MESSAGES/django.po | 394 ++++++++++++++------------ 23 files changed, 2466 insertions(+), 2022 deletions(-) diff --git a/locale/de_DE/LC_MESSAGES/django.mo b/locale/de_DE/LC_MESSAGES/django.mo index d9950bb3efd24d1ead8eceb7197829022a6ae202..881c71b46c35dd243df3d8605f1169d14eaef23b 100644 GIT binary patch delta 20519 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 G%>MzwSSnxu delta 19279 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 diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po index 6ff7a27c9..8343ef5b8 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: 2022-01-09 19:01+0000\n" -"PO-Revision-Date: 2022-01-10 18:18\n" +"POT-Creation-Date: 2022-01-12 18:37+0000\n" +"PO-Revision-Date: 2022-01-13 07:16\n" "Last-Translator: Mouse Reeve \n" "Language-Team: German\n" "Language: de\n" @@ -54,8 +54,8 @@ msgstr "Reihenfolge der Liste" msgid "Book Title" msgstr "Buchtitel" -#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:152 -#: bookwyrm/templates/shelf/shelf.html:184 +#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:33 msgid "Rating" msgstr "Bewertung" @@ -72,6 +72,10 @@ msgstr "Aufsteigend" msgid "Descending" msgstr "Absteigend" +#: bookwyrm/forms.py:491 +msgid "Reading finish date cannot be before start date." +msgstr "Du kannst das Buch nicht abgeschlossen haben bevor du es begonnen hast." + #: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167 msgid "Error loading book" msgstr "Fehler beim Laden des Buches" @@ -153,7 +157,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:280 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Besprechungen" @@ -632,11 +636,11 @@ msgstr "" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/readthrough.html:82 #: bookwyrm/templates/groups/form.html:30 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:124 +#: bookwyrm/templates/readthrough/readthrough_modal.html:72 #: bookwyrm/templates/settings/announcements/announcement_form.html:76 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 @@ -649,15 +653,15 @@ msgstr "Speichern" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 -#: bookwyrm/templates/book/book.html:194 bookwyrm/templates/book/book.html:252 +#: bookwyrm/templates/book/book.html:194 #: bookwyrm/templates/book/cover_add_modal.html:32 -#: bookwyrm/templates/book/delete_readthrough_modal.html:23 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 -#: bookwyrm/templates/book/readthrough.html:83 #: bookwyrm/templates/book/sync_modal.html:23 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:18 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/federation/instance.html:88 #: bookwyrm/templates/snippets/report_modal.html:38 msgid "Cancel" @@ -728,39 +732,35 @@ msgstr "Eine andere Ausgabe dieses Buches befindet msgid "Your reading activity" msgstr "Deine Leseaktivität" -#: bookwyrm/templates/book/book.html:240 +#: bookwyrm/templates/book/book.html:243 msgid "Add read dates" msgstr "Lesedaten hinzufügen" -#: bookwyrm/templates/book/book.html:249 -msgid "Create" -msgstr "Erstellen" - -#: bookwyrm/templates/book/book.html:259 +#: bookwyrm/templates/book/book.html:251 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:285 +#: bookwyrm/templates/book/book.html:277 msgid "Your reviews" msgstr "Deine Besprechungen" -#: bookwyrm/templates/book/book.html:291 +#: bookwyrm/templates/book/book.html:283 msgid "Your comments" msgstr "Deine Kommentare" -#: bookwyrm/templates/book/book.html:297 +#: bookwyrm/templates/book/book.html:289 msgid "Your quotes" msgstr "Deine Zitate" -#: bookwyrm/templates/book/book.html:333 +#: bookwyrm/templates/book/book.html:325 msgid "Subjects" msgstr "Themen" -#: bookwyrm/templates/book/book.html:345 +#: bookwyrm/templates/book/book.html:337 msgid "Places" msgstr "Orte" -#: bookwyrm/templates/book/book.html:356 +#: bookwyrm/templates/book/book.html:348 #: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74 #: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 @@ -770,11 +770,11 @@ msgstr "Orte" msgid "Lists" msgstr "Listen" -#: bookwyrm/templates/book/book.html:367 +#: bookwyrm/templates/book/book.html:359 msgid "Add to list" msgstr "Zur Liste hinzufügen" -#: bookwyrm/templates/book/book.html:377 +#: bookwyrm/templates/book/book.html:369 #: bookwyrm/templates/book/cover_add_modal.html:31 #: bookwyrm/templates/lists/list.html:208 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 @@ -819,39 +819,13 @@ msgstr "Vorschau auf das Cover" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:65 +#: bookwyrm/templates/feed/suggested_books.html:62 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 #: bookwyrm/templates/snippets/announcement.html:18 msgid "Close" msgstr "Schließen" -#: bookwyrm/templates/book/delete_readthrough_modal.html:4 -msgid "Delete these read dates?" -msgstr "Diese Lesedaten löschen?" - -#: bookwyrm/templates/book/delete_readthrough_modal.html:8 -#, python-format -msgid "You are deleting this readthrough and its %(count)s associated progress updates." -msgstr "Du löscht diesen Leseforschritt und %(count)s zugehörige Zwischenstände." - -#: bookwyrm/templates/book/delete_readthrough_modal.html:12 -#: bookwyrm/templates/groups/delete_group_modal.html:7 -#: bookwyrm/templates/lists/delete_list_modal.html:7 -msgid "This action cannot be un-done" -msgstr "Diese Aktion kann nicht rückgängig gemacht werden" - -#: bookwyrm/templates/book/delete_readthrough_modal.html:21 -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/settings/announcements/announcement.html:20 -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 -#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 -#: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 -msgid "Delete" -msgstr "Löschen" - #: bookwyrm/templates/book/edit/edit_book.html:6 #: bookwyrm/templates/book/edit/edit_book.html:12 #, python-format @@ -973,7 +947,7 @@ msgid "Add Another Author" msgstr "Weiteren Autor hinzufügen" #: bookwyrm/templates/book/edit/edit_book_form.html:160 -#: bookwyrm/templates/shelf/shelf.html:143 +#: bookwyrm/templates/shelf/shelf.html:146 msgid "Cover" msgstr "Titelbild" @@ -1068,35 +1042,6 @@ msgstr "Veröffentlicht von %(publisher)s." msgid "rated it" msgstr "bewertet" -#: bookwyrm/templates/book/readthrough.html:9 -msgid "Progress Updates:" -msgstr "Zwischenstände:" - -#: bookwyrm/templates/book/readthrough.html:14 -msgid "finished" -msgstr "abgeschlossen" - -#: bookwyrm/templates/book/readthrough.html:25 -msgid "Show all updates" -msgstr "Zeige alle Zwischenstände" - -#: bookwyrm/templates/book/readthrough.html:41 -msgid "Delete this progress update" -msgstr "Diesen Zwischenstand löschen" - -#: bookwyrm/templates/book/readthrough.html:53 -msgid "started" -msgstr "angefangen" - -#: bookwyrm/templates/book/readthrough.html:60 -#: bookwyrm/templates/book/readthrough.html:78 -msgid "Edit read dates" -msgstr "Lesedaten bearbeiten" - -#: bookwyrm/templates/book/readthrough.html:64 -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." @@ -1378,12 +1323,12 @@ msgstr "" #: bookwyrm/templates/email/moderation_report/html_content.html:9 #: bookwyrm/templates/email/moderation_report/text_content.html:7 msgid "View report" -msgstr "" +msgstr "Bericht anzeigen" #: bookwyrm/templates/email/moderation_report/subject.html:2 #, python-format msgid "New report for %(site_name)s" -msgstr "" +msgstr "Neuer Bericht für %(site_name)s" #: bookwyrm/templates/email/password_reset/html_content.html:6 #: bookwyrm/templates/email/password_reset/text_content.html:4 @@ -1478,39 +1423,6 @@ msgstr "Deine Bücher" msgid "There are no books here right now! Try searching for a book to get started" msgstr "Hier sind noch keine Bücher! Versuche, nach Büchern zu suchen, um loszulegen" -#: bookwyrm/templates/feed/suggested_books.html:19 -#: bookwyrm/templates/get_started/book_preview.html:10 -#: bookwyrm/templates/shelf/shelf.html:38 -#: bookwyrm/templates/shelf/shelf.html:83 -#: bookwyrm/templates/snippets/shelf_selector.html:28 -#: bookwyrm/templates/user/books_header.html:4 -#: bookwyrm/templates/user/user.html:33 -msgid "To Read" -msgstr "Zu lesen" - -#: bookwyrm/templates/feed/suggested_books.html:20 -#: bookwyrm/templates/get_started/book_preview.html:11 -#: bookwyrm/templates/shelf/shelf.html:40 -#: bookwyrm/templates/shelf/shelf.html:84 -#: bookwyrm/templates/snippets/shelf_selector.html:29 -#: bookwyrm/templates/user/books_header.html:6 -#: bookwyrm/templates/user/user.html:34 -msgid "Currently Reading" -msgstr "Aktuell lesend" - -#: bookwyrm/templates/feed/suggested_books.html:21 -#: bookwyrm/templates/get_started/book_preview.html:12 -#: bookwyrm/templates/shelf/shelf.html:42 -#: bookwyrm/templates/shelf/shelf.html:85 -#: bookwyrm/templates/snippets/shelf_selector.html:30 -#: bookwyrm/templates/snippets/shelf_selector.html:49 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 -#: bookwyrm/templates/user/books_header.html:8 -#: bookwyrm/templates/user/user.html:35 -msgid "Read" -msgstr "Gelesen" - #: bookwyrm/templates/feed/suggested_users.html:5 #: bookwyrm/templates/get_started/users.html:6 msgid "Who to follow" @@ -1542,6 +1454,30 @@ msgstr "Hast du %(book_title)s gelesen?" msgid "Add to your books" msgstr "Zu deinen Büchern hinzufügen" +#: bookwyrm/templates/get_started/book_preview.html:10 +#: bookwyrm/templates/shelf/shelf.html:86 +#: bookwyrm/templates/snippets/translated_shelf_name.html:5 +#: bookwyrm/templates/user/user.html:33 +msgid "To Read" +msgstr "Zu lesen" + +#: bookwyrm/templates/get_started/book_preview.html:11 +#: bookwyrm/templates/shelf/shelf.html:87 +#: bookwyrm/templates/snippets/translated_shelf_name.html:7 +#: bookwyrm/templates/user/user.html:34 +msgid "Currently Reading" +msgstr "Aktuell lesend" + +#: bookwyrm/templates/get_started/book_preview.html:12 +#: bookwyrm/templates/shelf/shelf.html:88 +#: bookwyrm/templates/snippets/shelf_selector.html:47 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 +#: bookwyrm/templates/snippets/translated_shelf_name.html:9 +#: bookwyrm/templates/user/user.html:35 +msgid "Read" +msgstr "Gelesen" + #: bookwyrm/templates/get_started/books.html:6 msgid "What are you reading?" msgstr "Was liest du gerade?" @@ -1675,6 +1611,23 @@ msgstr "Verwaltet von %(username)s" msgid "Delete this group?" msgstr "Diesen Lesezirkel löschen?" +#: bookwyrm/templates/groups/delete_group_modal.html:7 +#: bookwyrm/templates/lists/delete_list_modal.html:7 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:12 +msgid "This action cannot be un-done" +msgstr "Diese Aktion kann nicht rückgängig gemacht werden" + +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/delete_list_modal.html:15 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/settings/announcements/announcement.html:20 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 +#: bookwyrm/templates/snippets/follow_request_buttons.html:12 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +msgid "Delete" +msgstr "Löschen" + #: bookwyrm/templates/groups/edit_form.html:5 msgid "Edit Group" msgstr "Lesezirkel bearbeiten" @@ -1755,7 +1708,7 @@ msgstr "Verwalter*in" #: bookwyrm/templates/import/import.html:5 #: bookwyrm/templates/import/import.html:9 -#: bookwyrm/templates/shelf/shelf.html:61 +#: bookwyrm/templates/shelf/shelf.html:64 msgid "Import Books" msgstr "Bücher importieren" @@ -1843,8 +1796,8 @@ msgid "Row" msgstr "" #: bookwyrm/templates/import/import_status.html:103 -#: bookwyrm/templates/shelf/shelf.html:144 -#: bookwyrm/templates/shelf/shelf.html:166 +#: bookwyrm/templates/shelf/shelf.html:147 +#: bookwyrm/templates/shelf/shelf.html:169 msgid "Title" msgstr "Titel" @@ -1857,8 +1810,8 @@ msgid "Openlibrary key" msgstr "" #: bookwyrm/templates/import/import_status.html:114 -#: bookwyrm/templates/shelf/shelf.html:145 -#: bookwyrm/templates/shelf/shelf.html:169 +#: bookwyrm/templates/shelf/shelf.html:148 +#: bookwyrm/templates/shelf/shelf.html:172 msgid "Author" msgstr "Autor*in" @@ -1978,7 +1931,7 @@ msgstr "Zugiff verweigert" msgid "Sorry! This invite code is no longer valid." msgstr "Tut uns leid! Dieser Einladungscode ist mehr gültig." -#: bookwyrm/templates/landing/landing.html:7 +#: bookwyrm/templates/landing/landing.html:9 msgid "Recent Books" msgstr "Zuletzt aktive Bücher" @@ -2737,23 +2690,89 @@ msgstr "„%(book_title)s“ beginnen" msgid "Want to Read \"%(book_title)s\"" msgstr "„%(book_title)s“ auf Leseliste setzen" +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:4 +msgid "Delete these read dates?" +msgstr "Diese Lesedaten löschen?" + +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:8 +#, python-format +msgid "You are deleting this readthrough and its %(count)s associated progress updates." +msgstr "Du löscht diesen Leseforschritt und %(count)s zugehörige Zwischenstände." + +#: bookwyrm/templates/readthrough/readthrough.html:6 +#: bookwyrm/templates/readthrough/readthrough_modal.html:8 +#, python-format +msgid "Update read dates for \"%(title)s\"" +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough_form.html:10 +#: bookwyrm/templates/readthrough/readthrough_modal.html:31 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 +#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 +msgid "Started reading" +msgstr "Zu lesen angefangen" + +#: bookwyrm/templates/readthrough/readthrough_form.html:18 +#: bookwyrm/templates/readthrough/readthrough_modal.html:49 +msgid "Progress" +msgstr "Fortschritt" + +#: bookwyrm/templates/readthrough/readthrough_form.html:24 +#: bookwyrm/templates/readthrough/readthrough_modal.html:56 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 +msgid "Finished reading" +msgstr "Lesen abgeschlossen" + +#: bookwyrm/templates/readthrough/readthrough_list.html:9 +msgid "Progress Updates:" +msgstr "Zwischenstände:" + +#: bookwyrm/templates/readthrough/readthrough_list.html:14 +msgid "finished" +msgstr "abgeschlossen" + +#: bookwyrm/templates/readthrough/readthrough_list.html:25 +msgid "Show all updates" +msgstr "Zeige alle Zwischenstände" + +#: bookwyrm/templates/readthrough/readthrough_list.html:41 +msgid "Delete this progress update" +msgstr "Diesen Zwischenstand löschen" + +#: bookwyrm/templates/readthrough/readthrough_list.html:53 +msgid "started" +msgstr "angefangen" + +#: bookwyrm/templates/readthrough/readthrough_list.html:60 +msgid "Edit read dates" +msgstr "Lesedaten bearbeiten" + +#: bookwyrm/templates/readthrough/readthrough_list.html:68 +msgid "Delete these read dates" +msgstr "Diese Lesedaten löschen" + +#: bookwyrm/templates/readthrough/readthrough_modal.html:12 +#, python-format +msgid "Add read dates for \"%(title)s\"" +msgstr "" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "" -#: bookwyrm/templates/search/book.html:79 +#: bookwyrm/templates/search/book.html:80 msgid "Import book" msgstr "Buch importieren" -#: bookwyrm/templates/search/book.html:104 +#: bookwyrm/templates/search/book.html:106 msgid "Load results from other catalogues" msgstr "Ergebnisse aus anderen Katalogen laden" -#: bookwyrm/templates/search/book.html:108 +#: bookwyrm/templates/search/book.html:110 msgid "Manually add book" msgstr "Buch manuell hinzufügen" -#: bookwyrm/templates/search/book.html:113 +#: bookwyrm/templates/search/book.html:115 msgid "Log in to import or add books." msgstr "Melde dich an, um Bücher zu importieren oder hinzuzufügen." @@ -3620,50 +3639,56 @@ msgstr "Regal erstellen" msgid "Edit Shelf" msgstr "Regal bearbeiten" -#: bookwyrm/templates/shelf/shelf.html:28 bookwyrm/views/shelf/shelf.py:53 +#: bookwyrm/templates/shelf/shelf.html:24 +msgid "User profile" +msgstr "Benutzerprofil" + +#: bookwyrm/templates/shelf/shelf.html:39 +#: bookwyrm/templates/snippets/translated_shelf_name.html:3 +#: bookwyrm/views/shelf/shelf.py:53 msgid "All books" msgstr "Alle Bücher" -#: bookwyrm/templates/shelf/shelf.html:69 +#: bookwyrm/templates/shelf/shelf.html:72 msgid "Create shelf" msgstr "Regal erstellen" -#: bookwyrm/templates/shelf/shelf.html:93 +#: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" msgid_plural "%(formatted_count)s books" msgstr[0] "%(formatted_count)s Buch" msgstr[1] "%(formatted_count)s Bücher" -#: bookwyrm/templates/shelf/shelf.html:100 +#: bookwyrm/templates/shelf/shelf.html:103 #, python-format msgid "(showing %(start)s-%(end)s)" msgstr "(Anzeige: %(start)s&endash;%(end)s)" -#: bookwyrm/templates/shelf/shelf.html:112 +#: bookwyrm/templates/shelf/shelf.html:115 msgid "Edit shelf" msgstr "Regal bearbeiten" -#: bookwyrm/templates/shelf/shelf.html:120 +#: bookwyrm/templates/shelf/shelf.html:123 msgid "Delete shelf" msgstr "Regal löschen" -#: bookwyrm/templates/shelf/shelf.html:148 -#: bookwyrm/templates/shelf/shelf.html:174 +#: bookwyrm/templates/shelf/shelf.html:151 +#: bookwyrm/templates/shelf/shelf.html:177 msgid "Shelved" msgstr "Ins Regal gestellt" -#: bookwyrm/templates/shelf/shelf.html:149 -#: bookwyrm/templates/shelf/shelf.html:177 +#: bookwyrm/templates/shelf/shelf.html:152 +#: bookwyrm/templates/shelf/shelf.html:180 msgid "Started" msgstr "Gestartet" -#: bookwyrm/templates/shelf/shelf.html:150 -#: bookwyrm/templates/shelf/shelf.html:180 +#: bookwyrm/templates/shelf/shelf.html:153 +#: bookwyrm/templates/shelf/shelf.html:183 msgid "Finished" msgstr "Abgeschlossen" -#: bookwyrm/templates/shelf/shelf.html:206 +#: bookwyrm/templates/shelf/shelf.html:209 msgid "This shelf is empty." msgstr "Dieses Regal ist leer." @@ -3824,38 +3849,38 @@ msgstr "Favorisierung zurücknehmen" msgid "Filters" msgstr "Filter" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:11 -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:18 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:10 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:17 msgid "Filters are applied" -msgstr "" +msgstr "Filter werden angewendet" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:21 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:20 msgid "Clear filters" msgstr "Filter zurücksetzen" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 msgid "Apply filters" msgstr "Filter anwenden" -#: bookwyrm/templates/snippets/follow_button.html:15 +#: bookwyrm/templates/snippets/follow_button.html:20 #, python-format msgid "Follow @%(username)s" msgstr "@%(username)s folgen" -#: bookwyrm/templates/snippets/follow_button.html:17 +#: bookwyrm/templates/snippets/follow_button.html:22 msgid "Follow" msgstr "Folgen" -#: bookwyrm/templates/snippets/follow_button.html:26 +#: bookwyrm/templates/snippets/follow_button.html:31 msgid "Undo follow request" msgstr "Folgeanfrage zurücknehmen" -#: bookwyrm/templates/snippets/follow_button.html:31 +#: bookwyrm/templates/snippets/follow_button.html:36 #, python-format msgid "Unfollow @%(username)s" msgstr "@%(username)s entfolgen" -#: bookwyrm/templates/snippets/follow_button.html:33 +#: bookwyrm/templates/snippets/follow_button.html:38 msgid "Unfollow" msgstr "Entfolgen" @@ -3900,15 +3925,15 @@ msgstr[1] "hat %(title)s mit %(display_rating) #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Besprechung von „%(book_title)s“ (%(display_rating)s Stern): %(review_title)s" -msgstr[1] "Besprechung von „%(book_title)s“ (%(display_rating)s Sterne): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "Rezension von \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgstr[1] "Rezension von \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:8 +#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": %(review_title)s" -msgstr "Besprechung von „%(book_title)s“: %(review_title)s" +msgid "Review of \"%(book_title)s\": {{ review_title }" +msgstr "Rezension von \"%(book_title)s\": {{ review_title }" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -4011,17 +4036,6 @@ msgstr "Bewerten" msgid "Finish \"%(book_title)s\"" msgstr "„%(book_title)s“ abschließen" -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 -#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 -#: bookwyrm/templates/snippets/readthrough_form.html:9 -msgid "Started reading" -msgstr "Zu lesen angefangen" - -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 -#: bookwyrm/templates/snippets/readthrough_form.html:23 -msgid "Finished reading" -msgstr "Lesen abgeschlossen" - #: bookwyrm/templates/snippets/reading_modals/form.html:9 msgid "(Optional)" msgstr "(Optional)" @@ -4041,10 +4055,6 @@ msgstr "„%(book_title)s“ beginnen" msgid "Want to Read \"%(book_title)s\"" msgstr "„%(book_title)s“ auf Leseliste setzen" -#: bookwyrm/templates/snippets/readthrough_form.html:17 -msgid "Progress" -msgstr "Fortschritt" - #: bookwyrm/templates/snippets/register_form.html:30 msgid "Sign Up" msgstr "Registrieren" @@ -4071,13 +4081,13 @@ msgstr "Weitere Angaben zu dieser Meldung:" msgid "Move book" msgstr "Buch verschieben" -#: bookwyrm/templates/snippets/shelf_selector.html:42 +#: bookwyrm/templates/snippets/shelf_selector.html:39 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:17 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:24 msgid "Start reading" msgstr "Zu lesen beginnen" -#: bookwyrm/templates/snippets/shelf_selector.html:55 +#: bookwyrm/templates/snippets/shelf_selector.html:54 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:31 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:38 msgid "Want to read" @@ -4086,7 +4096,7 @@ msgstr "Auf Leseliste setzen" #: bookwyrm/templates/snippets/shelf_selector.html:74 #: bookwyrm/templates/snippets/shelf_selector.html:86 msgid "Remove from" -msgstr "" +msgstr "Entfernen aus" #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown.html:5 msgid "More shelves" @@ -4132,7 +4142,12 @@ msgstr "Status ausblenden" msgid "edited %(date)s" msgstr "%(date)s bearbeitet" -#: bookwyrm/templates/snippets/status/headers/comment.html:2 +#: bookwyrm/templates/snippets/status/headers/comment.html:8 +#, python-format +msgid "commented on %(book)s by %(author_name)s" +msgstr "Kommentar zu %(book)s von %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/comment.html:15 #, python-format msgid "commented on %(book)s" msgstr "hat %(book)s kommentiert" @@ -4142,7 +4157,12 @@ msgstr "hat %(book)s kommentiert" msgid "replied to %(username)s's status" msgstr "hat auf die Statusmeldung von %(username)s geantwortet" -#: bookwyrm/templates/snippets/status/headers/quotation.html:2 +#: bookwyrm/templates/snippets/status/headers/quotation.html:8 +#, python-format +msgid "quoted %(book)s by %(author_name)s" +msgstr "zitiert aus %(book)s durch %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/quotation.html:15 #, python-format msgid "quoted %(book)s" msgstr "hat %(book)s zitiert" @@ -4152,25 +4172,45 @@ msgstr "hat %(book)s zitiert" msgid "rated %(book)s:" msgstr "hat %(book)s bewertet:" -#: bookwyrm/templates/snippets/status/headers/read.html:7 +#: bookwyrm/templates/snippets/status/headers/read.html:10 +#, python-format +msgid "finished reading %(book)s by %(author_name)s" +msgstr "%(book)s abgeschlossen von %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/read.html:17 #, python-format msgid "finished reading %(book)s" msgstr "hat %(book)s abgeschlossen" -#: bookwyrm/templates/snippets/status/headers/reading.html:7 +#: bookwyrm/templates/snippets/status/headers/reading.html:10 +#, python-format +msgid "started reading %(book)s by %(author_name)s" +msgstr "%(author_name)s beginnt %(book)s zu lesen" + +#: bookwyrm/templates/snippets/status/headers/reading.html:17 #, python-format msgid "started reading %(book)s" msgstr "hat angefangen, %(book)s zu lesen" -#: bookwyrm/templates/snippets/status/headers/review.html:3 +#: bookwyrm/templates/snippets/status/headers/review.html:8 +#, python-format +msgid "reviewed %(book)s by %(author_name)s" +msgstr "%(author_name)s hat %(book)s rezensiert" + +#: bookwyrm/templates/snippets/status/headers/review.html:15 #, python-format msgid "reviewed %(book)s" msgstr "hat %(book)s besprochen" -#: bookwyrm/templates/snippets/status/headers/to_read.html:7 +#: bookwyrm/templates/snippets/status/headers/to_read.html:10 #, python-format -msgid "%(username)s wants to read %(book)s" -msgstr "%(username)s hat %(book)s auf die Leseliste gesetzt" +msgid "wants to read %(book)s by %(author_name)s" +msgstr "%(author_name)s will %(book)s lesen" + +#: bookwyrm/templates/snippets/status/headers/to_read.html:17 +#, python-format +msgid "wants to read %(book)s" +msgstr "will %(book)s lesen" #: bookwyrm/templates/snippets/status/layout.html:24 #: bookwyrm/templates/snippets/status/status_options.html:17 @@ -4216,11 +4256,11 @@ msgstr "Mehr anzeigen" msgid "Show less" msgstr "Weniger anzeigen" -#: bookwyrm/templates/user/books_header.html:10 +#: bookwyrm/templates/user/books_header.html:4 msgid "Your books" msgstr "Deine Bücher" -#: bookwyrm/templates/user/books_header.html:15 +#: bookwyrm/templates/user/books_header.html:9 #, python-format msgid "%(username)s's books" msgstr "Bücher von %(username)s" @@ -4318,7 +4358,7 @@ msgstr "Alle Bücher anzeigen" #: bookwyrm/templates/user/user.html:58 #, python-format msgid "%(current_year)s Reading Goal" -msgstr "" +msgstr "Leseziel %(current_year)s" #: bookwyrm/templates/user/user.html:65 msgid "User Activity" diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index bea77ca0e..0752ba9ed 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: 2022-01-12 18:37+0000\n" +"POT-Creation-Date: 2022-01-13 16:54+0000\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -158,6 +158,38 @@ msgstr "" msgid "A user with that username already exists." msgstr "" +#: bookwyrm/models/fields.py:207 +#: bookwyrm/templates/snippets/privacy-icons.html:3 +#: bookwyrm/templates/snippets/privacy-icons.html:4 +#: bookwyrm/templates/snippets/privacy_select.html:11 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 +msgid "Public" +msgstr "" + +#: bookwyrm/models/fields.py:208 +#: bookwyrm/templates/snippets/privacy-icons.html:7 +#: bookwyrm/templates/snippets/privacy-icons.html:8 +#: bookwyrm/templates/snippets/privacy_select.html:14 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 +msgid "Unlisted" +msgstr "" + +#: bookwyrm/models/fields.py:209 +#: bookwyrm/templates/snippets/privacy_select.html:17 +#: bookwyrm/templates/user/relationships/followers.html:6 +#: bookwyrm/templates/user/relationships/layout.html:11 +msgid "Followers" +msgstr "" + +#: bookwyrm/models/fields.py:210 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/privacy-icons.html:15 +#: bookwyrm/templates/snippets/privacy-icons.html:16 +#: bookwyrm/templates/snippets/privacy_select.html:20 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 +msgid "Private" +msgstr "" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "" @@ -174,69 +206,69 @@ msgstr "" msgid "Everything else" msgstr "" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home Timeline" msgstr "" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home" msgstr "" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:122 msgid "Books Timeline" msgstr "" -#: bookwyrm/settings.py:121 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "" -#: bookwyrm/settings.py:195 +#: bookwyrm/settings.py:196 msgid "English" msgstr "" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:197 msgid "Deutsch (German)" msgstr "" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:198 msgid "Español (Spanish)" msgstr "" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:199 msgid "Galego (Galician)" msgstr "" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:200 msgid "Italiano (Italian)" msgstr "" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:201 msgid "Français (French)" msgstr "" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:202 msgid "Lietuvių (Lithuanian)" msgstr "" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:203 msgid "Norsk (Norwegian)" msgstr "" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:204 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:205 msgid "Português Europeu (European Portuguese)" msgstr "" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:206 msgid "简体中文 (Simplified Chinese)" msgstr "" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:207 msgid "繁體中文 (Traditional Chinese)" msgstr "" @@ -3793,14 +3825,6 @@ msgstr "" msgid "Comment:" msgstr "" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 -#: bookwyrm/templates/snippets/privacy-icons.html:15 -#: bookwyrm/templates/snippets/privacy-icons.html:16 -#: bookwyrm/templates/snippets/privacy_select.html:20 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 -msgid "Private" -msgstr "" - #: bookwyrm/templates/snippets/create_status/post_options_block.html:21 msgid "Post" msgstr "" @@ -3925,14 +3949,14 @@ msgstr[1] "" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" msgstr[0] "" msgstr[1] "" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": {{ review_title }" +msgid "Review of \"%(book_title)s\": %(review_title)s" msgstr "" #: bookwyrm/templates/snippets/goal_form.html:4 @@ -3994,20 +4018,6 @@ msgstr "" msgid "Next" msgstr "" -#: bookwyrm/templates/snippets/privacy-icons.html:3 -#: bookwyrm/templates/snippets/privacy-icons.html:4 -#: bookwyrm/templates/snippets/privacy_select.html:11 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 -msgid "Public" -msgstr "" - -#: bookwyrm/templates/snippets/privacy-icons.html:7 -#: bookwyrm/templates/snippets/privacy-icons.html:8 -#: bookwyrm/templates/snippets/privacy_select.html:14 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 -msgid "Unlisted" -msgstr "" - #: bookwyrm/templates/snippets/privacy-icons.html:12 msgid "Followers-only" msgstr "" @@ -4017,12 +4027,6 @@ msgstr "" msgid "Post privacy" msgstr "" -#: bookwyrm/templates/snippets/privacy_select.html:17 -#: bookwyrm/templates/user/relationships/followers.html:6 -#: bookwyrm/templates/user/relationships/layout.html:11 -msgid "Followers" -msgstr "" - #: bookwyrm/templates/snippets/rate_action.html:4 msgid "Leave a rating" msgstr "" diff --git a/locale/es_ES/LC_MESSAGES/django.mo b/locale/es_ES/LC_MESSAGES/django.mo index bb9967a77b3952cab7d43de309048334dc75b2da..c5333e390d50034e67532984dc4e70af7de1c8cf 100644 GIT binary patch delta 21468 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 delta 20343 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\n" "Language-Team: Spanish\n" "Language: es\n" @@ -54,8 +54,8 @@ msgstr "Orden de la lista" msgid "Book Title" msgstr "Título" -#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:152 -#: bookwyrm/templates/shelf/shelf.html:184 +#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:33 msgid "Rating" msgstr "Valoración" @@ -72,6 +72,10 @@ msgstr "Ascendente" msgid "Descending" msgstr "Descendente" +#: bookwyrm/forms.py:491 +msgid "Reading finish date cannot be before start date." +msgstr "La fecha final de lectura no puede ser anterior a la fecha de inicio." + #: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167 msgid "Error loading book" msgstr "Error en cargar libro" @@ -153,7 +157,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:280 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Reseñas" @@ -632,11 +636,11 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/readthrough.html:82 #: bookwyrm/templates/groups/form.html:30 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:124 +#: bookwyrm/templates/readthrough/readthrough_modal.html:72 #: bookwyrm/templates/settings/announcements/announcement_form.html:76 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 @@ -649,15 +653,15 @@ msgstr "Guardar" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 -#: bookwyrm/templates/book/book.html:194 bookwyrm/templates/book/book.html:252 +#: bookwyrm/templates/book/book.html:194 #: bookwyrm/templates/book/cover_add_modal.html:32 -#: bookwyrm/templates/book/delete_readthrough_modal.html:23 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 -#: bookwyrm/templates/book/readthrough.html:83 #: bookwyrm/templates/book/sync_modal.html:23 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:18 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/federation/instance.html:88 #: bookwyrm/templates/snippets/report_modal.html:38 msgid "Cancel" @@ -728,39 +732,35 @@ msgstr "Una edición diferente de este libro está msgid "Your reading activity" msgstr "Tu actividad de lectura" -#: bookwyrm/templates/book/book.html:240 +#: bookwyrm/templates/book/book.html:243 msgid "Add read dates" msgstr "Agregar fechas de lectura" -#: bookwyrm/templates/book/book.html:249 -msgid "Create" -msgstr "Crear" - -#: bookwyrm/templates/book/book.html:259 +#: bookwyrm/templates/book/book.html:251 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:285 +#: bookwyrm/templates/book/book.html:277 msgid "Your reviews" msgstr "Tus reseñas" -#: bookwyrm/templates/book/book.html:291 +#: bookwyrm/templates/book/book.html:283 msgid "Your comments" msgstr "Tus comentarios" -#: bookwyrm/templates/book/book.html:297 +#: bookwyrm/templates/book/book.html:289 msgid "Your quotes" msgstr "Tus citas" -#: bookwyrm/templates/book/book.html:333 +#: bookwyrm/templates/book/book.html:325 msgid "Subjects" msgstr "Sujetos" -#: bookwyrm/templates/book/book.html:345 +#: bookwyrm/templates/book/book.html:337 msgid "Places" msgstr "Lugares" -#: bookwyrm/templates/book/book.html:356 +#: bookwyrm/templates/book/book.html:348 #: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74 #: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 @@ -770,11 +770,11 @@ msgstr "Lugares" msgid "Lists" msgstr "Listas" -#: bookwyrm/templates/book/book.html:367 +#: bookwyrm/templates/book/book.html:359 msgid "Add to list" msgstr "Agregar a lista" -#: bookwyrm/templates/book/book.html:377 +#: bookwyrm/templates/book/book.html:369 #: bookwyrm/templates/book/cover_add_modal.html:31 #: bookwyrm/templates/lists/list.html:208 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 @@ -819,39 +819,13 @@ msgstr "Vista previa de la portada del libro" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:65 +#: bookwyrm/templates/feed/suggested_books.html:62 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 #: bookwyrm/templates/snippets/announcement.html:18 msgid "Close" msgstr "Cerrar" -#: bookwyrm/templates/book/delete_readthrough_modal.html:4 -msgid "Delete these read dates?" -msgstr "¿Eliminar estas fechas de lectura?" - -#: bookwyrm/templates/book/delete_readthrough_modal.html:8 -#, python-format -msgid "You are deleting this readthrough and its %(count)s associated progress updates." -msgstr "Estás eliminando esta lectura y sus %(count)s actualizaciones de progreso asociados." - -#: bookwyrm/templates/book/delete_readthrough_modal.html:12 -#: bookwyrm/templates/groups/delete_group_modal.html:7 -#: bookwyrm/templates/lists/delete_list_modal.html:7 -msgid "This action cannot be un-done" -msgstr "Esta acción no se puede deshacer" - -#: bookwyrm/templates/book/delete_readthrough_modal.html:21 -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/settings/announcements/announcement.html:20 -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 -#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 -#: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 -msgid "Delete" -msgstr "Eliminar" - #: bookwyrm/templates/book/edit/edit_book.html:6 #: bookwyrm/templates/book/edit/edit_book.html:12 #, python-format @@ -973,7 +947,7 @@ msgid "Add Another Author" msgstr "Añadir Otro Autor" #: bookwyrm/templates/book/edit/edit_book_form.html:160 -#: bookwyrm/templates/shelf/shelf.html:143 +#: bookwyrm/templates/shelf/shelf.html:146 msgid "Cover" msgstr "Portada" @@ -1068,35 +1042,6 @@ msgstr "Publicado por %(publisher)s." msgid "rated it" msgstr "lo valoró con" -#: bookwyrm/templates/book/readthrough.html:9 -msgid "Progress Updates:" -msgstr "Actualizaciones de progreso:" - -#: bookwyrm/templates/book/readthrough.html:14 -msgid "finished" -msgstr "terminado" - -#: bookwyrm/templates/book/readthrough.html:25 -msgid "Show all updates" -msgstr "Mostrar todas las actualizaciones" - -#: bookwyrm/templates/book/readthrough.html:41 -msgid "Delete this progress update" -msgstr "Eliminar esta actualización de progreso" - -#: bookwyrm/templates/book/readthrough.html:53 -msgid "started" -msgstr "empezado" - -#: bookwyrm/templates/book/readthrough.html:60 -#: bookwyrm/templates/book/readthrough.html:78 -msgid "Edit read dates" -msgstr "Editar fechas de lectura" - -#: bookwyrm/templates/book/readthrough.html:64 -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." @@ -1478,39 +1423,6 @@ msgstr "Tus libros" msgid "There are no books here right now! Try searching for a book to get started" msgstr "¡No hay ningún libro aquí ahorita! Busca a un libro para empezar" -#: bookwyrm/templates/feed/suggested_books.html:19 -#: bookwyrm/templates/get_started/book_preview.html:10 -#: bookwyrm/templates/shelf/shelf.html:38 -#: bookwyrm/templates/shelf/shelf.html:83 -#: bookwyrm/templates/snippets/shelf_selector.html:28 -#: bookwyrm/templates/user/books_header.html:4 -#: bookwyrm/templates/user/user.html:33 -msgid "To Read" -msgstr "Para leer" - -#: bookwyrm/templates/feed/suggested_books.html:20 -#: bookwyrm/templates/get_started/book_preview.html:11 -#: bookwyrm/templates/shelf/shelf.html:40 -#: bookwyrm/templates/shelf/shelf.html:84 -#: bookwyrm/templates/snippets/shelf_selector.html:29 -#: bookwyrm/templates/user/books_header.html:6 -#: bookwyrm/templates/user/user.html:34 -msgid "Currently Reading" -msgstr "Leyendo actualmente" - -#: bookwyrm/templates/feed/suggested_books.html:21 -#: bookwyrm/templates/get_started/book_preview.html:12 -#: bookwyrm/templates/shelf/shelf.html:42 -#: bookwyrm/templates/shelf/shelf.html:85 -#: bookwyrm/templates/snippets/shelf_selector.html:30 -#: bookwyrm/templates/snippets/shelf_selector.html:49 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 -#: bookwyrm/templates/user/books_header.html:8 -#: bookwyrm/templates/user/user.html:35 -msgid "Read" -msgstr "Leído" - #: bookwyrm/templates/feed/suggested_users.html:5 #: bookwyrm/templates/get_started/users.html:6 msgid "Who to follow" @@ -1542,6 +1454,30 @@ msgstr "¿Has leído %(book_title)s?" msgid "Add to your books" msgstr "Añadir a tus libros" +#: bookwyrm/templates/get_started/book_preview.html:10 +#: bookwyrm/templates/shelf/shelf.html:86 +#: bookwyrm/templates/snippets/translated_shelf_name.html:5 +#: bookwyrm/templates/user/user.html:33 +msgid "To Read" +msgstr "Para leer" + +#: bookwyrm/templates/get_started/book_preview.html:11 +#: bookwyrm/templates/shelf/shelf.html:87 +#: bookwyrm/templates/snippets/translated_shelf_name.html:7 +#: bookwyrm/templates/user/user.html:34 +msgid "Currently Reading" +msgstr "Leyendo actualmente" + +#: bookwyrm/templates/get_started/book_preview.html:12 +#: bookwyrm/templates/shelf/shelf.html:88 +#: bookwyrm/templates/snippets/shelf_selector.html:47 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 +#: bookwyrm/templates/snippets/translated_shelf_name.html:9 +#: bookwyrm/templates/user/user.html:35 +msgid "Read" +msgstr "Leído" + #: bookwyrm/templates/get_started/books.html:6 msgid "What are you reading?" msgstr "¿Qué estás leyendo?" @@ -1675,6 +1611,23 @@ msgstr "Gestionado por %(username)s" msgid "Delete this group?" msgstr "¿Eliminar este grupo?" +#: bookwyrm/templates/groups/delete_group_modal.html:7 +#: bookwyrm/templates/lists/delete_list_modal.html:7 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:12 +msgid "This action cannot be un-done" +msgstr "Esta acción no se puede deshacer" + +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/delete_list_modal.html:15 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/settings/announcements/announcement.html:20 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 +#: bookwyrm/templates/snippets/follow_request_buttons.html:12 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +msgid "Delete" +msgstr "Eliminar" + #: bookwyrm/templates/groups/edit_form.html:5 msgid "Edit Group" msgstr "Editar Grupo" @@ -1755,7 +1708,7 @@ msgstr "Gestor" #: bookwyrm/templates/import/import.html:5 #: bookwyrm/templates/import/import.html:9 -#: bookwyrm/templates/shelf/shelf.html:61 +#: bookwyrm/templates/shelf/shelf.html:64 msgid "Import Books" msgstr "Importar libros" @@ -1843,8 +1796,8 @@ msgid "Row" msgstr "Fila" #: bookwyrm/templates/import/import_status.html:103 -#: bookwyrm/templates/shelf/shelf.html:144 -#: bookwyrm/templates/shelf/shelf.html:166 +#: bookwyrm/templates/shelf/shelf.html:147 +#: bookwyrm/templates/shelf/shelf.html:169 msgid "Title" msgstr "Título" @@ -1857,8 +1810,8 @@ msgid "Openlibrary key" msgstr "Clave de OpenLibrary" #: bookwyrm/templates/import/import_status.html:114 -#: bookwyrm/templates/shelf/shelf.html:145 -#: bookwyrm/templates/shelf/shelf.html:169 +#: bookwyrm/templates/shelf/shelf.html:148 +#: bookwyrm/templates/shelf/shelf.html:172 msgid "Author" msgstr "Autor/Autora" @@ -1978,7 +1931,7 @@ msgstr "Permiso denegado" msgid "Sorry! This invite code is no longer valid." msgstr "¡Disculpa! Este código de invitación no queda válido." -#: bookwyrm/templates/landing/landing.html:7 +#: bookwyrm/templates/landing/landing.html:9 msgid "Recent Books" msgstr "Libros recientes" @@ -2737,23 +2690,89 @@ msgstr "Empezar \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "Quiero leer \"%(book_title)s\"" +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:4 +msgid "Delete these read dates?" +msgstr "¿Eliminar estas fechas de lectura?" + +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:8 +#, python-format +msgid "You are deleting this readthrough and its %(count)s associated progress updates." +msgstr "Estás eliminando esta lectura y sus %(count)s actualizaciones de progreso asociados." + +#: bookwyrm/templates/readthrough/readthrough.html:6 +#: bookwyrm/templates/readthrough/readthrough_modal.html:8 +#, python-format +msgid "Update read dates for \"%(title)s\"" +msgstr "Actualizar fechas de lectura de «%(title)s»" + +#: bookwyrm/templates/readthrough/readthrough_form.html:10 +#: bookwyrm/templates/readthrough/readthrough_modal.html:31 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 +#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 +msgid "Started reading" +msgstr "Lectura se empezó" + +#: bookwyrm/templates/readthrough/readthrough_form.html:18 +#: bookwyrm/templates/readthrough/readthrough_modal.html:49 +msgid "Progress" +msgstr "Progreso" + +#: bookwyrm/templates/readthrough/readthrough_form.html:24 +#: bookwyrm/templates/readthrough/readthrough_modal.html:56 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 +msgid "Finished reading" +msgstr "Lectura se terminó" + +#: bookwyrm/templates/readthrough/readthrough_list.html:9 +msgid "Progress Updates:" +msgstr "Actualizaciones de progreso:" + +#: bookwyrm/templates/readthrough/readthrough_list.html:14 +msgid "finished" +msgstr "terminado" + +#: bookwyrm/templates/readthrough/readthrough_list.html:25 +msgid "Show all updates" +msgstr "Mostrar todas las actualizaciones" + +#: bookwyrm/templates/readthrough/readthrough_list.html:41 +msgid "Delete this progress update" +msgstr "Eliminar esta actualización de progreso" + +#: bookwyrm/templates/readthrough/readthrough_list.html:53 +msgid "started" +msgstr "empezado" + +#: bookwyrm/templates/readthrough/readthrough_list.html:60 +msgid "Edit read dates" +msgstr "Editar fechas de lectura" + +#: bookwyrm/templates/readthrough/readthrough_list.html:68 +msgid "Delete these read dates" +msgstr "Eliminar estas fechas de lectura" + +#: bookwyrm/templates/readthrough/readthrough_modal.html:12 +#, python-format +msgid "Add read dates for \"%(title)s\"" +msgstr "Añadir fechas de lectura de «%(title)s»" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "Resultados de" -#: bookwyrm/templates/search/book.html:79 +#: bookwyrm/templates/search/book.html:80 msgid "Import book" msgstr "Importar libro" -#: bookwyrm/templates/search/book.html:104 +#: bookwyrm/templates/search/book.html:106 msgid "Load results from other catalogues" msgstr "Cargar resultados de otros catálogos" -#: bookwyrm/templates/search/book.html:108 +#: bookwyrm/templates/search/book.html:110 msgid "Manually add book" msgstr "Agregar libro a mano" -#: bookwyrm/templates/search/book.html:113 +#: bookwyrm/templates/search/book.html:115 msgid "Log in to import or add books." msgstr "Iniciar una sesión para importar o agregar libros." @@ -3620,50 +3639,56 @@ msgstr "Crear Estantería" msgid "Edit Shelf" msgstr "Editar Estantería" -#: bookwyrm/templates/shelf/shelf.html:28 bookwyrm/views/shelf/shelf.py:53 +#: bookwyrm/templates/shelf/shelf.html:24 +msgid "User profile" +msgstr "Perfil de usuario" + +#: bookwyrm/templates/shelf/shelf.html:39 +#: bookwyrm/templates/snippets/translated_shelf_name.html:3 +#: bookwyrm/views/shelf/shelf.py:53 msgid "All books" msgstr "Todos los libros" -#: bookwyrm/templates/shelf/shelf.html:69 +#: bookwyrm/templates/shelf/shelf.html:72 msgid "Create shelf" msgstr "Crear estantería" -#: bookwyrm/templates/shelf/shelf.html:93 +#: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" msgid_plural "%(formatted_count)s books" msgstr[0] "%(formatted_count)s libro" msgstr[1] "%(formatted_count)s libros" -#: bookwyrm/templates/shelf/shelf.html:100 +#: bookwyrm/templates/shelf/shelf.html:103 #, python-format msgid "(showing %(start)s-%(end)s)" msgstr "(mostrando %(start)s-%(end)s)" -#: bookwyrm/templates/shelf/shelf.html:112 +#: bookwyrm/templates/shelf/shelf.html:115 msgid "Edit shelf" msgstr "Editar estantería" -#: bookwyrm/templates/shelf/shelf.html:120 +#: bookwyrm/templates/shelf/shelf.html:123 msgid "Delete shelf" msgstr "Eliminar estantería" -#: bookwyrm/templates/shelf/shelf.html:148 -#: bookwyrm/templates/shelf/shelf.html:174 +#: bookwyrm/templates/shelf/shelf.html:151 +#: bookwyrm/templates/shelf/shelf.html:177 msgid "Shelved" msgstr "Archivado" -#: bookwyrm/templates/shelf/shelf.html:149 -#: bookwyrm/templates/shelf/shelf.html:177 +#: bookwyrm/templates/shelf/shelf.html:152 +#: bookwyrm/templates/shelf/shelf.html:180 msgid "Started" msgstr "Empezado" -#: bookwyrm/templates/shelf/shelf.html:150 -#: bookwyrm/templates/shelf/shelf.html:180 +#: bookwyrm/templates/shelf/shelf.html:153 +#: bookwyrm/templates/shelf/shelf.html:183 msgid "Finished" msgstr "Terminado" -#: bookwyrm/templates/shelf/shelf.html:206 +#: bookwyrm/templates/shelf/shelf.html:209 msgid "This shelf is empty." msgstr "Esta estantería está vacía." @@ -3824,38 +3849,38 @@ msgstr "Quitar me gusta" msgid "Filters" msgstr "Filtros" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:11 -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:18 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:10 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:17 msgid "Filters are applied" msgstr "Filtros aplicados" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:21 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:20 msgid "Clear filters" msgstr "Borrar filtros" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 msgid "Apply filters" msgstr "Aplicar filtros" -#: bookwyrm/templates/snippets/follow_button.html:15 +#: bookwyrm/templates/snippets/follow_button.html:20 #, python-format msgid "Follow @%(username)s" msgstr "Seguir a @%(username)s" -#: bookwyrm/templates/snippets/follow_button.html:17 +#: bookwyrm/templates/snippets/follow_button.html:22 msgid "Follow" msgstr "Seguir" -#: bookwyrm/templates/snippets/follow_button.html:26 +#: bookwyrm/templates/snippets/follow_button.html:31 msgid "Undo follow request" msgstr "Cancelar solicitud de seguimiento" -#: bookwyrm/templates/snippets/follow_button.html:31 +#: bookwyrm/templates/snippets/follow_button.html:36 #, python-format msgid "Unfollow @%(username)s" msgstr "Dejar de seguir a @%(username)s" -#: bookwyrm/templates/snippets/follow_button.html:33 +#: bookwyrm/templates/snippets/follow_button.html:38 msgid "Unfollow" msgstr "Dejar de seguir" @@ -3900,15 +3925,15 @@ msgstr[1] "valoró %(title)s: %(display_rating #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Reseña de \"%(book_title)s\" (%(display_rating)s estrella): %(review_title)s" -msgstr[1] "Reseña de \"%(book_title)s\" (%(display_rating)s estrellas): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "Reseña de «%(book_title)s» (%(display_rating)s estrella): %(review_title)s" +msgstr[1] "Reseña de «%(book_title)s» (%(display_rating)s estrellas): %(review_title)s" -#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:8 +#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": %(review_title)s" -msgstr "Reseña de \"%(book_title)s\": %(review_title)s" +msgid "Review of \"%(book_title)s\": {{ review_title }" +msgstr "Reseña de «%(book_title)s»: {{ review_title }" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -4011,17 +4036,6 @@ msgstr "Valorar" msgid "Finish \"%(book_title)s\"" msgstr "Terminar \"%(book_title)s\"" -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 -#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 -#: bookwyrm/templates/snippets/readthrough_form.html:9 -msgid "Started reading" -msgstr "Lectura se empezó" - -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 -#: bookwyrm/templates/snippets/readthrough_form.html:23 -msgid "Finished reading" -msgstr "Lectura se terminó" - #: bookwyrm/templates/snippets/reading_modals/form.html:9 msgid "(Optional)" msgstr "(Opcional)" @@ -4041,10 +4055,6 @@ msgstr "Empezar \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "Quiero leer \"%(book_title)s\"" -#: bookwyrm/templates/snippets/readthrough_form.html:17 -msgid "Progress" -msgstr "Progreso" - #: bookwyrm/templates/snippets/register_form.html:30 msgid "Sign Up" msgstr "Inscribirse" @@ -4071,13 +4081,13 @@ msgstr "Más información sobre este informe:" msgid "Move book" msgstr "Mover libro" -#: bookwyrm/templates/snippets/shelf_selector.html:42 +#: bookwyrm/templates/snippets/shelf_selector.html:39 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:17 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:24 msgid "Start reading" msgstr "Empezar a leer" -#: bookwyrm/templates/snippets/shelf_selector.html:55 +#: bookwyrm/templates/snippets/shelf_selector.html:54 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:31 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:38 msgid "Want to read" @@ -4132,7 +4142,12 @@ msgstr "Ocultar estado" msgid "edited %(date)s" msgstr "editado %(date)s" -#: bookwyrm/templates/snippets/status/headers/comment.html:2 +#: bookwyrm/templates/snippets/status/headers/comment.html:8 +#, python-format +msgid "commented on %(book)s by %(author_name)s" +msgstr "comentó acerca de %(book)s de %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/comment.html:15 #, python-format msgid "commented on %(book)s" msgstr "comentó en \"%(book)s\"" @@ -4142,7 +4157,12 @@ msgstr "comentó en \"%(book)s\"" msgid "replied to %(username)s's status" msgstr "respondió al estado de %(username)s" -#: bookwyrm/templates/snippets/status/headers/quotation.html:2 +#: bookwyrm/templates/snippets/status/headers/quotation.html:8 +#, python-format +msgid "quoted %(book)s by %(author_name)s" +msgstr "citó %(book)s de %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/quotation.html:15 #, python-format msgid "quoted %(book)s" msgstr "citó a %(book)s" @@ -4152,25 +4172,45 @@ msgstr "citó a %(book)s" msgid "rated %(book)s:" msgstr "valoró %(book)s:" -#: bookwyrm/templates/snippets/status/headers/read.html:7 +#: bookwyrm/templates/snippets/status/headers/read.html:10 +#, python-format +msgid "finished reading %(book)s by %(author_name)s" +msgstr "terminó de leer %(book)s de %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/read.html:17 #, python-format msgid "finished reading %(book)s" msgstr "terminó de leer %(book)s" -#: bookwyrm/templates/snippets/status/headers/reading.html:7 +#: bookwyrm/templates/snippets/status/headers/reading.html:10 +#, python-format +msgid "started reading %(book)s by %(author_name)s" +msgstr "empezó a leer %(book)s de %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/reading.html:17 #, python-format msgid "started reading %(book)s" msgstr "empezó a leer %(book)s" -#: bookwyrm/templates/snippets/status/headers/review.html:3 +#: bookwyrm/templates/snippets/status/headers/review.html:8 +#, python-format +msgid "reviewed %(book)s by %(author_name)s" +msgstr "reseñó %(book)s de %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/review.html:15 #, python-format msgid "reviewed %(book)s" msgstr "reseñó a %(book)s" -#: bookwyrm/templates/snippets/status/headers/to_read.html:7 +#: bookwyrm/templates/snippets/status/headers/to_read.html:10 #, python-format -msgid "%(username)s wants to read %(book)s" -msgstr "%(username)s quiere leer %(book)s" +msgid "wants to read %(book)s by %(author_name)s" +msgstr "quiere leer %(book)s de %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/to_read.html:17 +#, python-format +msgid "wants to read %(book)s" +msgstr "quiere leer %(book)s" #: bookwyrm/templates/snippets/status/layout.html:24 #: bookwyrm/templates/snippets/status/status_options.html:17 @@ -4216,11 +4256,11 @@ msgstr "Mostrar más" msgid "Show less" msgstr "Mostrar menos" -#: bookwyrm/templates/user/books_header.html:10 +#: bookwyrm/templates/user/books_header.html:4 msgid "Your books" msgstr "Tus libros" -#: bookwyrm/templates/user/books_header.html:15 +#: bookwyrm/templates/user/books_header.html:9 #, python-format msgid "%(username)s's books" msgstr "Los libros de %(username)s" diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo index 6916175465fb179a1317f7ec1cf4732a2ae579f3..4a2eb71156218b4902da0b2aeeca989bd051bb62 100644 GIT binary patch delta 20079 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\n" "Language-Team: French\n" "Language: fr\n" @@ -54,8 +54,8 @@ msgstr "Ordre de la liste" msgid "Book Title" msgstr "Titre du livre" -#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:152 -#: bookwyrm/templates/shelf/shelf.html:184 +#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:33 msgid "Rating" msgstr "Note" @@ -72,6 +72,10 @@ msgstr "Ordre croissant" msgid "Descending" msgstr "Ordre décroissant" +#: bookwyrm/forms.py:491 +msgid "Reading finish date cannot be before start date." +msgstr "" + #: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167 msgid "Error loading book" msgstr "Erreur lors du chargement du livre" @@ -153,7 +157,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:280 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Critiques" @@ -375,7 +379,7 @@ msgstr "Copier l’adresse" #: bookwyrm/templates/annual_summary/layout.html:68 #: bookwyrm/templates/lists/list.html:230 msgid "Copied!" -msgstr "Copié!" +msgstr "Copié !" #: bookwyrm/templates/annual_summary/layout.html:77 msgid "Sharing status: public with key" @@ -632,11 +636,11 @@ msgstr "ISNI :" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/readthrough.html:82 #: bookwyrm/templates/groups/form.html:30 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:124 +#: bookwyrm/templates/readthrough/readthrough_modal.html:72 #: bookwyrm/templates/settings/announcements/announcement_form.html:76 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 @@ -649,15 +653,15 @@ msgstr "Enregistrer" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 -#: bookwyrm/templates/book/book.html:194 bookwyrm/templates/book/book.html:252 +#: bookwyrm/templates/book/book.html:194 #: bookwyrm/templates/book/cover_add_modal.html:32 -#: bookwyrm/templates/book/delete_readthrough_modal.html:23 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 -#: bookwyrm/templates/book/readthrough.html:83 #: bookwyrm/templates/book/sync_modal.html:23 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:18 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/federation/instance.html:88 #: bookwyrm/templates/snippets/report_modal.html:38 msgid "Cancel" @@ -728,39 +732,35 @@ msgstr "Une édition différente de ce livre exist msgid "Your reading activity" msgstr "Votre activité de lecture" -#: bookwyrm/templates/book/book.html:240 +#: bookwyrm/templates/book/book.html:243 msgid "Add read dates" msgstr "Ajouter des dates de lecture" -#: bookwyrm/templates/book/book.html:249 -msgid "Create" -msgstr "Créer" - -#: bookwyrm/templates/book/book.html:259 +#: bookwyrm/templates/book/book.html:251 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:285 +#: bookwyrm/templates/book/book.html:277 msgid "Your reviews" msgstr "Vos critiques" -#: bookwyrm/templates/book/book.html:291 +#: bookwyrm/templates/book/book.html:283 msgid "Your comments" msgstr "Vos commentaires" -#: bookwyrm/templates/book/book.html:297 +#: bookwyrm/templates/book/book.html:289 msgid "Your quotes" msgstr "Vos citations" -#: bookwyrm/templates/book/book.html:333 +#: bookwyrm/templates/book/book.html:325 msgid "Subjects" msgstr "Sujets" -#: bookwyrm/templates/book/book.html:345 +#: bookwyrm/templates/book/book.html:337 msgid "Places" msgstr "Lieux" -#: bookwyrm/templates/book/book.html:356 +#: bookwyrm/templates/book/book.html:348 #: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74 #: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 @@ -770,11 +770,11 @@ msgstr "Lieux" msgid "Lists" msgstr "Listes" -#: bookwyrm/templates/book/book.html:367 +#: bookwyrm/templates/book/book.html:359 msgid "Add to list" msgstr "Ajouter à la liste" -#: bookwyrm/templates/book/book.html:377 +#: bookwyrm/templates/book/book.html:369 #: bookwyrm/templates/book/cover_add_modal.html:31 #: bookwyrm/templates/lists/list.html:208 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 @@ -819,39 +819,13 @@ msgstr "Aperçu de la couverture" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:65 +#: bookwyrm/templates/feed/suggested_books.html:62 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 #: bookwyrm/templates/snippets/announcement.html:18 msgid "Close" msgstr "Fermer" -#: bookwyrm/templates/book/delete_readthrough_modal.html:4 -msgid "Delete these read dates?" -msgstr "Supprimer ces dates de lecture ?" - -#: bookwyrm/templates/book/delete_readthrough_modal.html:8 -#, python-format -msgid "You are deleting this readthrough and its %(count)s associated progress updates." -msgstr "Vous avez supprimé ce résumé et ses %(count)s progressions associées." - -#: bookwyrm/templates/book/delete_readthrough_modal.html:12 -#: bookwyrm/templates/groups/delete_group_modal.html:7 -#: bookwyrm/templates/lists/delete_list_modal.html:7 -msgid "This action cannot be un-done" -msgstr "Cette action ne peut pas être annulée" - -#: bookwyrm/templates/book/delete_readthrough_modal.html:21 -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/settings/announcements/announcement.html:20 -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 -#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 -#: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 -msgid "Delete" -msgstr "Supprimer" - #: bookwyrm/templates/book/edit/edit_book.html:6 #: bookwyrm/templates/book/edit/edit_book.html:12 #, python-format @@ -973,7 +947,7 @@ msgid "Add Another Author" msgstr "Ajouter un autre auteur ou autrice" #: bookwyrm/templates/book/edit/edit_book_form.html:160 -#: bookwyrm/templates/shelf/shelf.html:143 +#: bookwyrm/templates/shelf/shelf.html:146 msgid "Cover" msgstr "Couverture" @@ -1068,35 +1042,6 @@ msgstr "Publié par %(publisher)s." msgid "rated it" msgstr "l’a noté" -#: bookwyrm/templates/book/readthrough.html:9 -msgid "Progress Updates:" -msgstr "Progression :" - -#: bookwyrm/templates/book/readthrough.html:14 -msgid "finished" -msgstr "terminé" - -#: bookwyrm/templates/book/readthrough.html:25 -msgid "Show all updates" -msgstr "Montrer toutes les progressions" - -#: bookwyrm/templates/book/readthrough.html:41 -msgid "Delete this progress update" -msgstr "Supprimer cette mise à jour" - -#: bookwyrm/templates/book/readthrough.html:53 -msgid "started" -msgstr "commencé" - -#: bookwyrm/templates/book/readthrough.html:60 -#: bookwyrm/templates/book/readthrough.html:78 -msgid "Edit read dates" -msgstr "Modifier les date de lecture" - -#: bookwyrm/templates/book/readthrough.html:64 -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." @@ -1478,39 +1423,6 @@ msgstr "Vos Livres" msgid "There are no books here right now! Try searching for a book to get started" msgstr "Aucun livre ici pour l’instant ! Cherchez un livre pour commencer" -#: bookwyrm/templates/feed/suggested_books.html:19 -#: bookwyrm/templates/get_started/book_preview.html:10 -#: bookwyrm/templates/shelf/shelf.html:38 -#: bookwyrm/templates/shelf/shelf.html:83 -#: bookwyrm/templates/snippets/shelf_selector.html:28 -#: bookwyrm/templates/user/books_header.html:4 -#: bookwyrm/templates/user/user.html:33 -msgid "To Read" -msgstr "À lire" - -#: bookwyrm/templates/feed/suggested_books.html:20 -#: bookwyrm/templates/get_started/book_preview.html:11 -#: bookwyrm/templates/shelf/shelf.html:40 -#: bookwyrm/templates/shelf/shelf.html:84 -#: bookwyrm/templates/snippets/shelf_selector.html:29 -#: bookwyrm/templates/user/books_header.html:6 -#: bookwyrm/templates/user/user.html:34 -msgid "Currently Reading" -msgstr "Lectures en cours" - -#: bookwyrm/templates/feed/suggested_books.html:21 -#: bookwyrm/templates/get_started/book_preview.html:12 -#: bookwyrm/templates/shelf/shelf.html:42 -#: bookwyrm/templates/shelf/shelf.html:85 -#: bookwyrm/templates/snippets/shelf_selector.html:30 -#: bookwyrm/templates/snippets/shelf_selector.html:49 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 -#: bookwyrm/templates/user/books_header.html:8 -#: bookwyrm/templates/user/user.html:35 -msgid "Read" -msgstr "Lu" - #: bookwyrm/templates/feed/suggested_users.html:5 #: bookwyrm/templates/get_started/users.html:6 msgid "Who to follow" @@ -1542,6 +1454,30 @@ msgstr "Avez‑vous lu « %(book_title)s » ?" msgid "Add to your books" msgstr "Ajouter à vos livres" +#: bookwyrm/templates/get_started/book_preview.html:10 +#: bookwyrm/templates/shelf/shelf.html:86 +#: bookwyrm/templates/snippets/translated_shelf_name.html:5 +#: bookwyrm/templates/user/user.html:33 +msgid "To Read" +msgstr "À lire" + +#: bookwyrm/templates/get_started/book_preview.html:11 +#: bookwyrm/templates/shelf/shelf.html:87 +#: bookwyrm/templates/snippets/translated_shelf_name.html:7 +#: bookwyrm/templates/user/user.html:34 +msgid "Currently Reading" +msgstr "Lectures en cours" + +#: bookwyrm/templates/get_started/book_preview.html:12 +#: bookwyrm/templates/shelf/shelf.html:88 +#: bookwyrm/templates/snippets/shelf_selector.html:47 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 +#: bookwyrm/templates/snippets/translated_shelf_name.html:9 +#: bookwyrm/templates/user/user.html:35 +msgid "Read" +msgstr "Lu" + #: bookwyrm/templates/get_started/books.html:6 msgid "What are you reading?" msgstr "Que lisez‑vous ?" @@ -1675,6 +1611,23 @@ msgstr "Géré par %(username)s" msgid "Delete this group?" msgstr "Supprimer ce groupe ?" +#: bookwyrm/templates/groups/delete_group_modal.html:7 +#: bookwyrm/templates/lists/delete_list_modal.html:7 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:12 +msgid "This action cannot be un-done" +msgstr "Cette action ne peut pas être annulée" + +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/delete_list_modal.html:15 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/settings/announcements/announcement.html:20 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 +#: bookwyrm/templates/snippets/follow_request_buttons.html:12 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +msgid "Delete" +msgstr "Supprimer" + #: bookwyrm/templates/groups/edit_form.html:5 msgid "Edit Group" msgstr "Modifier le Groupe" @@ -1755,7 +1708,7 @@ msgstr "Responsable" #: bookwyrm/templates/import/import.html:5 #: bookwyrm/templates/import/import.html:9 -#: bookwyrm/templates/shelf/shelf.html:61 +#: bookwyrm/templates/shelf/shelf.html:64 msgid "Import Books" msgstr "Importer des livres" @@ -1843,8 +1796,8 @@ msgid "Row" msgstr "Ligne" #: bookwyrm/templates/import/import_status.html:103 -#: bookwyrm/templates/shelf/shelf.html:144 -#: bookwyrm/templates/shelf/shelf.html:166 +#: bookwyrm/templates/shelf/shelf.html:147 +#: bookwyrm/templates/shelf/shelf.html:169 msgid "Title" msgstr "Titre" @@ -1857,8 +1810,8 @@ msgid "Openlibrary key" msgstr "Clé Openlibrary" #: bookwyrm/templates/import/import_status.html:114 -#: bookwyrm/templates/shelf/shelf.html:145 -#: bookwyrm/templates/shelf/shelf.html:169 +#: bookwyrm/templates/shelf/shelf.html:148 +#: bookwyrm/templates/shelf/shelf.html:172 msgid "Author" msgstr "Auteur/autrice" @@ -1978,7 +1931,7 @@ msgstr "Autorisation refusée" msgid "Sorry! This invite code is no longer valid." msgstr "Cette invitation n’est plus valide ; désolé !" -#: bookwyrm/templates/landing/landing.html:7 +#: bookwyrm/templates/landing/landing.html:9 msgid "Recent Books" msgstr "Livres récents" @@ -2737,23 +2690,89 @@ msgstr "Commencer \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "Je veux lire \"%(book_title)s\"" +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:4 +msgid "Delete these read dates?" +msgstr "Supprimer ces dates de lecture ?" + +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:8 +#, python-format +msgid "You are deleting this readthrough and its %(count)s associated progress updates." +msgstr "Vous avez supprimé ce résumé et ses %(count)s progressions associées." + +#: bookwyrm/templates/readthrough/readthrough.html:6 +#: bookwyrm/templates/readthrough/readthrough_modal.html:8 +#, python-format +msgid "Update read dates for \"%(title)s\"" +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough_form.html:10 +#: bookwyrm/templates/readthrough/readthrough_modal.html:31 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 +#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 +msgid "Started reading" +msgstr "Lecture commencée le" + +#: bookwyrm/templates/readthrough/readthrough_form.html:18 +#: bookwyrm/templates/readthrough/readthrough_modal.html:49 +msgid "Progress" +msgstr "Progression" + +#: bookwyrm/templates/readthrough/readthrough_form.html:24 +#: bookwyrm/templates/readthrough/readthrough_modal.html:56 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 +msgid "Finished reading" +msgstr "Lecture terminée le" + +#: bookwyrm/templates/readthrough/readthrough_list.html:9 +msgid "Progress Updates:" +msgstr "Progression :" + +#: bookwyrm/templates/readthrough/readthrough_list.html:14 +msgid "finished" +msgstr "terminé" + +#: bookwyrm/templates/readthrough/readthrough_list.html:25 +msgid "Show all updates" +msgstr "Montrer toutes les progressions" + +#: bookwyrm/templates/readthrough/readthrough_list.html:41 +msgid "Delete this progress update" +msgstr "Supprimer cette mise à jour" + +#: bookwyrm/templates/readthrough/readthrough_list.html:53 +msgid "started" +msgstr "commencé" + +#: bookwyrm/templates/readthrough/readthrough_list.html:60 +msgid "Edit read dates" +msgstr "Modifier les date de lecture" + +#: bookwyrm/templates/readthrough/readthrough_list.html:68 +msgid "Delete these read dates" +msgstr "Supprimer ces dates de lecture" + +#: bookwyrm/templates/readthrough/readthrough_modal.html:12 +#, python-format +msgid "Add read dates for \"%(title)s\"" +msgstr "" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "Résultats de" -#: bookwyrm/templates/search/book.html:79 +#: bookwyrm/templates/search/book.html:80 msgid "Import book" msgstr "Importer le livre" -#: bookwyrm/templates/search/book.html:104 +#: bookwyrm/templates/search/book.html:106 msgid "Load results from other catalogues" msgstr "Charger les résultats d’autres catalogues" -#: bookwyrm/templates/search/book.html:108 +#: bookwyrm/templates/search/book.html:110 msgid "Manually add book" msgstr "Ajouter un livre manuellement" -#: bookwyrm/templates/search/book.html:113 +#: bookwyrm/templates/search/book.html:115 msgid "Log in to import or add books." msgstr "Authentifiez-vous pour importer ou ajouter des livres." @@ -3620,50 +3639,56 @@ msgstr "Créer une étagère" msgid "Edit Shelf" msgstr "Modifier l’étagère" -#: bookwyrm/templates/shelf/shelf.html:28 bookwyrm/views/shelf/shelf.py:53 +#: bookwyrm/templates/shelf/shelf.html:24 +msgid "User profile" +msgstr "Profil utilisateur·rice" + +#: bookwyrm/templates/shelf/shelf.html:39 +#: bookwyrm/templates/snippets/translated_shelf_name.html:3 +#: bookwyrm/views/shelf/shelf.py:53 msgid "All books" msgstr "Tous les livres" -#: bookwyrm/templates/shelf/shelf.html:69 +#: bookwyrm/templates/shelf/shelf.html:72 msgid "Create shelf" msgstr "Créer une étagère" -#: bookwyrm/templates/shelf/shelf.html:93 +#: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" msgid_plural "%(formatted_count)s books" msgstr[0] "%(formatted_count)s livre" msgstr[1] "%(formatted_count)s livres" -#: bookwyrm/templates/shelf/shelf.html:100 +#: bookwyrm/templates/shelf/shelf.html:103 #, python-format msgid "(showing %(start)s-%(end)s)" msgstr "(affichage de %(start)s-%(end)s)" -#: bookwyrm/templates/shelf/shelf.html:112 +#: bookwyrm/templates/shelf/shelf.html:115 msgid "Edit shelf" msgstr "Modifier l’étagère" -#: bookwyrm/templates/shelf/shelf.html:120 +#: bookwyrm/templates/shelf/shelf.html:123 msgid "Delete shelf" msgstr "Supprimer l’étagère" -#: bookwyrm/templates/shelf/shelf.html:148 -#: bookwyrm/templates/shelf/shelf.html:174 +#: bookwyrm/templates/shelf/shelf.html:151 +#: bookwyrm/templates/shelf/shelf.html:177 msgid "Shelved" msgstr "Date d’ajout" -#: bookwyrm/templates/shelf/shelf.html:149 -#: bookwyrm/templates/shelf/shelf.html:177 +#: bookwyrm/templates/shelf/shelf.html:152 +#: bookwyrm/templates/shelf/shelf.html:180 msgid "Started" msgstr "Commencé" -#: bookwyrm/templates/shelf/shelf.html:150 -#: bookwyrm/templates/shelf/shelf.html:180 +#: bookwyrm/templates/shelf/shelf.html:153 +#: bookwyrm/templates/shelf/shelf.html:183 msgid "Finished" msgstr "Terminé" -#: bookwyrm/templates/shelf/shelf.html:206 +#: bookwyrm/templates/shelf/shelf.html:209 msgid "This shelf is empty." msgstr "Cette étagère est vide" @@ -3824,38 +3849,38 @@ msgstr "Retirer des favoris" msgid "Filters" msgstr "Filtres" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:11 -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:18 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:10 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:17 msgid "Filters are applied" msgstr "Des filtres sont appliqués" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:21 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:20 msgid "Clear filters" msgstr "Annuler les filtres" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 msgid "Apply filters" msgstr "Appliquer les filtres" -#: bookwyrm/templates/snippets/follow_button.html:15 +#: bookwyrm/templates/snippets/follow_button.html:20 #, python-format msgid "Follow @%(username)s" msgstr "S'abonner à @%(username)s" -#: bookwyrm/templates/snippets/follow_button.html:17 +#: bookwyrm/templates/snippets/follow_button.html:22 msgid "Follow" msgstr "S’abonner" -#: bookwyrm/templates/snippets/follow_button.html:26 +#: bookwyrm/templates/snippets/follow_button.html:31 msgid "Undo follow request" msgstr "Annuler la demande d’abonnement" -#: bookwyrm/templates/snippets/follow_button.html:31 +#: bookwyrm/templates/snippets/follow_button.html:36 #, python-format msgid "Unfollow @%(username)s" msgstr "Se désabonner de @%(username)s" -#: bookwyrm/templates/snippets/follow_button.html:33 +#: bookwyrm/templates/snippets/follow_button.html:38 msgid "Unfollow" msgstr "Se désabonner" @@ -3900,15 +3925,15 @@ msgstr[1] "a noté %(title)s : %(display_ratin #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Critique de « %(book_title)s » (%(display_rating)s star): %(review_title)s" -msgstr[1] "Critique de « %(book_title)s » (%(display_rating)s stars) : %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:8 +#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": %(review_title)s" -msgstr "Critique de « %(book_title)s » : %(review_title)s" +msgid "Review of \"%(book_title)s\": {{ review_title }" +msgstr "" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -4011,17 +4036,6 @@ msgstr "Noter" msgid "Finish \"%(book_title)s\"" msgstr "Terminer « %(book_title)s »" -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 -#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 -#: bookwyrm/templates/snippets/readthrough_form.html:9 -msgid "Started reading" -msgstr "Lecture commencée le" - -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 -#: bookwyrm/templates/snippets/readthrough_form.html:23 -msgid "Finished reading" -msgstr "Lecture terminée le" - #: bookwyrm/templates/snippets/reading_modals/form.html:9 msgid "(Optional)" msgstr "(Facultatif)" @@ -4041,10 +4055,6 @@ msgstr "Commencer « %(book_title)s »" msgid "Want to Read \"%(book_title)s\"" msgstr "Ajouter « %(book_title)s » aux envies de lecture" -#: bookwyrm/templates/snippets/readthrough_form.html:17 -msgid "Progress" -msgstr "Progression" - #: bookwyrm/templates/snippets/register_form.html:30 msgid "Sign Up" msgstr "S’enregistrer" @@ -4071,13 +4081,13 @@ msgstr "En savoir plus sur ce signalement :" msgid "Move book" msgstr "Déplacer le livre" -#: bookwyrm/templates/snippets/shelf_selector.html:42 +#: bookwyrm/templates/snippets/shelf_selector.html:39 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:17 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:24 msgid "Start reading" msgstr "Commencer la lecture" -#: bookwyrm/templates/snippets/shelf_selector.html:55 +#: bookwyrm/templates/snippets/shelf_selector.html:54 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:31 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:38 msgid "Want to read" @@ -4132,7 +4142,12 @@ msgstr "Masquer le statut" msgid "edited %(date)s" msgstr "modifié le %(date)s" -#: bookwyrm/templates/snippets/status/headers/comment.html:2 +#: bookwyrm/templates/snippets/status/headers/comment.html:8 +#, python-format +msgid "commented on %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/comment.html:15 #, python-format msgid "commented on %(book)s" msgstr "a commenté %(book)s" @@ -4142,7 +4157,12 @@ msgstr "a commenté %(book)s" msgid "replied to %(username)s's status" msgstr "a répondu au statut de %(username)s" -#: bookwyrm/templates/snippets/status/headers/quotation.html:2 +#: bookwyrm/templates/snippets/status/headers/quotation.html:8 +#, python-format +msgid "quoted %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/quotation.html:15 #, python-format msgid "quoted %(book)s" msgstr "a cité un passage de %(book)s" @@ -4152,25 +4172,45 @@ msgstr "a cité un passage de %(book)s" msgid "rated %(book)s:" msgstr "a noté %(book)s :" -#: bookwyrm/templates/snippets/status/headers/read.html:7 +#: bookwyrm/templates/snippets/status/headers/read.html:10 +#, python-format +msgid "finished reading %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/read.html:17 #, python-format msgid "finished reading %(book)s" msgstr "a terminé %(book)s" -#: bookwyrm/templates/snippets/status/headers/reading.html:7 +#: bookwyrm/templates/snippets/status/headers/reading.html:10 +#, python-format +msgid "started reading %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/reading.html:17 #, python-format msgid "started reading %(book)s" msgstr "a commencé %(book)s" -#: bookwyrm/templates/snippets/status/headers/review.html:3 +#: bookwyrm/templates/snippets/status/headers/review.html:8 +#, python-format +msgid "reviewed %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/review.html:15 #, python-format msgid "reviewed %(book)s" msgstr "a critiqué %(book)s" -#: bookwyrm/templates/snippets/status/headers/to_read.html:7 +#: bookwyrm/templates/snippets/status/headers/to_read.html:10 #, python-format -msgid "%(username)s wants to read %(book)s" -msgstr "%(username)s veut lire %(book)s" +msgid "wants to read %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/to_read.html:17 +#, python-format +msgid "wants to read %(book)s" +msgstr "" #: bookwyrm/templates/snippets/status/layout.html:24 #: bookwyrm/templates/snippets/status/status_options.html:17 @@ -4216,11 +4256,11 @@ msgstr "Déplier" msgid "Show less" msgstr "Replier" -#: bookwyrm/templates/user/books_header.html:10 +#: bookwyrm/templates/user/books_header.html:4 msgid "Your books" msgstr "Vos livres" -#: bookwyrm/templates/user/books_header.html:15 +#: bookwyrm/templates/user/books_header.html:9 #, python-format msgid "%(username)s's books" msgstr "Livres de %(username)s" diff --git a/locale/gl_ES/LC_MESSAGES/django.mo b/locale/gl_ES/LC_MESSAGES/django.mo index 753fba6d6cbffae3c58e51ef20a225b7f7829a1b..89d3d0d89905359ce49836389ebe2f7d11c1368c 100644 GIT binary patch delta 21402 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 delta 20328 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 diff --git a/locale/gl_ES/LC_MESSAGES/django.po b/locale/gl_ES/LC_MESSAGES/django.po index 522ec3d2d..7b2fc3475 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: 2022-01-09 19:01+0000\n" -"PO-Revision-Date: 2022-01-11 08:47\n" +"POT-Creation-Date: 2022-01-12 18:37+0000\n" +"PO-Revision-Date: 2022-01-13 04:45\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Galician\n" "Language: gl\n" @@ -54,8 +54,8 @@ msgstr "Orde da listaxe" msgid "Book Title" msgstr "Título do libro" -#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:152 -#: bookwyrm/templates/shelf/shelf.html:184 +#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:33 msgid "Rating" msgstr "Puntuación" @@ -72,6 +72,10 @@ msgstr "Ascendente" msgid "Descending" msgstr "Descendente" +#: bookwyrm/forms.py:491 +msgid "Reading finish date cannot be before start date." +msgstr "A data final da lectura non pode ser anterior á de inicio." + #: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167 msgid "Error loading book" msgstr "Erro ao cargar o libro" @@ -153,7 +157,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:280 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Recensións" @@ -632,11 +636,11 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/readthrough.html:82 #: bookwyrm/templates/groups/form.html:30 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:124 +#: bookwyrm/templates/readthrough/readthrough_modal.html:72 #: bookwyrm/templates/settings/announcements/announcement_form.html:76 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 @@ -649,15 +653,15 @@ msgstr "Gardar" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 -#: bookwyrm/templates/book/book.html:194 bookwyrm/templates/book/book.html:252 +#: bookwyrm/templates/book/book.html:194 #: bookwyrm/templates/book/cover_add_modal.html:32 -#: bookwyrm/templates/book/delete_readthrough_modal.html:23 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 -#: bookwyrm/templates/book/readthrough.html:83 #: bookwyrm/templates/book/sync_modal.html:23 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:18 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/federation/instance.html:88 #: bookwyrm/templates/snippets/report_modal.html:38 msgid "Cancel" @@ -728,39 +732,35 @@ msgstr "Hai unha edición diferente deste libro no msgid "Your reading activity" msgstr "Actividade lectora" -#: bookwyrm/templates/book/book.html:240 +#: bookwyrm/templates/book/book.html:243 msgid "Add read dates" msgstr "Engadir datas de lectura" -#: bookwyrm/templates/book/book.html:249 -msgid "Create" -msgstr "Crear" - -#: bookwyrm/templates/book/book.html:259 +#: bookwyrm/templates/book/book.html:251 msgid "You don't have any reading activity for this book." msgstr "Non tes actividade lectora neste libro." -#: bookwyrm/templates/book/book.html:285 +#: bookwyrm/templates/book/book.html:277 msgid "Your reviews" msgstr "As túas recensións" -#: bookwyrm/templates/book/book.html:291 +#: bookwyrm/templates/book/book.html:283 msgid "Your comments" msgstr "Os teus comentarios" -#: bookwyrm/templates/book/book.html:297 +#: bookwyrm/templates/book/book.html:289 msgid "Your quotes" msgstr "As túas citas" -#: bookwyrm/templates/book/book.html:333 +#: bookwyrm/templates/book/book.html:325 msgid "Subjects" msgstr "Temas" -#: bookwyrm/templates/book/book.html:345 +#: bookwyrm/templates/book/book.html:337 msgid "Places" msgstr "Lugares" -#: bookwyrm/templates/book/book.html:356 +#: bookwyrm/templates/book/book.html:348 #: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74 #: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 @@ -770,11 +770,11 @@ msgstr "Lugares" msgid "Lists" msgstr "Listaxes" -#: bookwyrm/templates/book/book.html:367 +#: bookwyrm/templates/book/book.html:359 msgid "Add to list" msgstr "Engadir a listaxe" -#: bookwyrm/templates/book/book.html:377 +#: bookwyrm/templates/book/book.html:369 #: bookwyrm/templates/book/cover_add_modal.html:31 #: bookwyrm/templates/lists/list.html:208 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 @@ -819,39 +819,13 @@ msgstr "Vista previa da portada" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:65 +#: bookwyrm/templates/feed/suggested_books.html:62 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 #: bookwyrm/templates/snippets/announcement.html:18 msgid "Close" msgstr "Pechar" -#: bookwyrm/templates/book/delete_readthrough_modal.html:4 -msgid "Delete these read dates?" -msgstr "Eliminar estas datas de lectura?" - -#: bookwyrm/templates/book/delete_readthrough_modal.html:8 -#, python-format -msgid "You are deleting this readthrough and its %(count)s associated progress updates." -msgstr "Vas eliminar o diario de lectura e as súas %(count)s actualizacións de progreso da lectura." - -#: bookwyrm/templates/book/delete_readthrough_modal.html:12 -#: bookwyrm/templates/groups/delete_group_modal.html:7 -#: bookwyrm/templates/lists/delete_list_modal.html:7 -msgid "This action cannot be un-done" -msgstr "Esta acción non ten volta atrás" - -#: bookwyrm/templates/book/delete_readthrough_modal.html:21 -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/settings/announcements/announcement.html:20 -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 -#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 -#: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 -msgid "Delete" -msgstr "Eliminar" - #: bookwyrm/templates/book/edit/edit_book.html:6 #: bookwyrm/templates/book/edit/edit_book.html:12 #, python-format @@ -973,7 +947,7 @@ msgid "Add Another Author" msgstr "Engade outra Autora" #: bookwyrm/templates/book/edit/edit_book_form.html:160 -#: bookwyrm/templates/shelf/shelf.html:143 +#: bookwyrm/templates/shelf/shelf.html:146 msgid "Cover" msgstr "Portada" @@ -1068,35 +1042,6 @@ msgstr "Publicado por %(publisher)s." msgid "rated it" msgstr "valorouno" -#: bookwyrm/templates/book/readthrough.html:9 -msgid "Progress Updates:" -msgstr "Actualizacións da lectura:" - -#: bookwyrm/templates/book/readthrough.html:14 -msgid "finished" -msgstr "rematado" - -#: bookwyrm/templates/book/readthrough.html:25 -msgid "Show all updates" -msgstr "Mostrar tódalas actualizacións" - -#: bookwyrm/templates/book/readthrough.html:41 -msgid "Delete this progress update" -msgstr "Eliminar esta actualización da lectura" - -#: bookwyrm/templates/book/readthrough.html:53 -msgid "started" -msgstr "iniciado" - -#: bookwyrm/templates/book/readthrough.html:60 -#: bookwyrm/templates/book/readthrough.html:78 -msgid "Edit read dates" -msgstr "Editar datas da lectura" - -#: bookwyrm/templates/book/readthrough.html:64 -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." @@ -1478,39 +1423,6 @@ msgstr "Os teus libros" msgid "There are no books here right now! Try searching for a book to get started" msgstr "Aínda non tes libros! Busca algún co que comezar" -#: bookwyrm/templates/feed/suggested_books.html:19 -#: bookwyrm/templates/get_started/book_preview.html:10 -#: bookwyrm/templates/shelf/shelf.html:38 -#: bookwyrm/templates/shelf/shelf.html:83 -#: bookwyrm/templates/snippets/shelf_selector.html:28 -#: bookwyrm/templates/user/books_header.html:4 -#: bookwyrm/templates/user/user.html:33 -msgid "To Read" -msgstr "Pendentes" - -#: bookwyrm/templates/feed/suggested_books.html:20 -#: bookwyrm/templates/get_started/book_preview.html:11 -#: bookwyrm/templates/shelf/shelf.html:40 -#: bookwyrm/templates/shelf/shelf.html:84 -#: bookwyrm/templates/snippets/shelf_selector.html:29 -#: bookwyrm/templates/user/books_header.html:6 -#: bookwyrm/templates/user/user.html:34 -msgid "Currently Reading" -msgstr "Lectura actual" - -#: bookwyrm/templates/feed/suggested_books.html:21 -#: bookwyrm/templates/get_started/book_preview.html:12 -#: bookwyrm/templates/shelf/shelf.html:42 -#: bookwyrm/templates/shelf/shelf.html:85 -#: bookwyrm/templates/snippets/shelf_selector.html:30 -#: bookwyrm/templates/snippets/shelf_selector.html:49 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 -#: bookwyrm/templates/user/books_header.html:8 -#: bookwyrm/templates/user/user.html:35 -msgid "Read" -msgstr "Lido" - #: bookwyrm/templates/feed/suggested_users.html:5 #: bookwyrm/templates/get_started/users.html:6 msgid "Who to follow" @@ -1542,6 +1454,30 @@ msgstr "Liches %(book_title)s?" msgid "Add to your books" msgstr "Engadir aos teus libros" +#: bookwyrm/templates/get_started/book_preview.html:10 +#: bookwyrm/templates/shelf/shelf.html:86 +#: bookwyrm/templates/snippets/translated_shelf_name.html:5 +#: bookwyrm/templates/user/user.html:33 +msgid "To Read" +msgstr "Pendentes" + +#: bookwyrm/templates/get_started/book_preview.html:11 +#: bookwyrm/templates/shelf/shelf.html:87 +#: bookwyrm/templates/snippets/translated_shelf_name.html:7 +#: bookwyrm/templates/user/user.html:34 +msgid "Currently Reading" +msgstr "Lectura actual" + +#: bookwyrm/templates/get_started/book_preview.html:12 +#: bookwyrm/templates/shelf/shelf.html:88 +#: bookwyrm/templates/snippets/shelf_selector.html:47 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 +#: bookwyrm/templates/snippets/translated_shelf_name.html:9 +#: bookwyrm/templates/user/user.html:35 +msgid "Read" +msgstr "Lido" + #: bookwyrm/templates/get_started/books.html:6 msgid "What are you reading?" msgstr "Que estás a ler?" @@ -1675,6 +1611,23 @@ msgstr "Xestionado por %(username)s" msgid "Delete this group?" msgstr "Eliminar este grupo?" +#: bookwyrm/templates/groups/delete_group_modal.html:7 +#: bookwyrm/templates/lists/delete_list_modal.html:7 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:12 +msgid "This action cannot be un-done" +msgstr "Esta acción non ten volta atrás" + +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/delete_list_modal.html:15 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/settings/announcements/announcement.html:20 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 +#: bookwyrm/templates/snippets/follow_request_buttons.html:12 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +msgid "Delete" +msgstr "Eliminar" + #: bookwyrm/templates/groups/edit_form.html:5 msgid "Edit Group" msgstr "Editar grupo" @@ -1755,7 +1708,7 @@ msgstr "Xestora" #: bookwyrm/templates/import/import.html:5 #: bookwyrm/templates/import/import.html:9 -#: bookwyrm/templates/shelf/shelf.html:61 +#: bookwyrm/templates/shelf/shelf.html:64 msgid "Import Books" msgstr "Importar libros" @@ -1843,8 +1796,8 @@ msgid "Row" msgstr "Fila" #: bookwyrm/templates/import/import_status.html:103 -#: bookwyrm/templates/shelf/shelf.html:144 -#: bookwyrm/templates/shelf/shelf.html:166 +#: bookwyrm/templates/shelf/shelf.html:147 +#: bookwyrm/templates/shelf/shelf.html:169 msgid "Title" msgstr "Título" @@ -1857,8 +1810,8 @@ msgid "Openlibrary key" msgstr "Chave en Openlibrary" #: bookwyrm/templates/import/import_status.html:114 -#: bookwyrm/templates/shelf/shelf.html:145 -#: bookwyrm/templates/shelf/shelf.html:169 +#: bookwyrm/templates/shelf/shelf.html:148 +#: bookwyrm/templates/shelf/shelf.html:172 msgid "Author" msgstr "Autor" @@ -1978,7 +1931,7 @@ msgstr "Permiso denegado" msgid "Sorry! This invite code is no longer valid." msgstr "Lamentámolo! Este convite xa non é válido." -#: bookwyrm/templates/landing/landing.html:7 +#: bookwyrm/templates/landing/landing.html:9 msgid "Recent Books" msgstr "Libros recentes" @@ -2737,23 +2690,89 @@ msgstr "Comecei \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "Quero ler \"%(book_title)s\"" +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:4 +msgid "Delete these read dates?" +msgstr "Eliminar estas datas de lectura?" + +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:8 +#, python-format +msgid "You are deleting this readthrough and its %(count)s associated progress updates." +msgstr "Vas eliminar o diario de lectura e as súas %(count)s actualizacións de progreso da lectura." + +#: bookwyrm/templates/readthrough/readthrough.html:6 +#: bookwyrm/templates/readthrough/readthrough_modal.html:8 +#, python-format +msgid "Update read dates for \"%(title)s\"" +msgstr "Actualizar as datas de lectura para \"%(title)s\"" + +#: bookwyrm/templates/readthrough/readthrough_form.html:10 +#: bookwyrm/templates/readthrough/readthrough_modal.html:31 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 +#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 +msgid "Started reading" +msgstr "Comecei a ler" + +#: bookwyrm/templates/readthrough/readthrough_form.html:18 +#: bookwyrm/templates/readthrough/readthrough_modal.html:49 +msgid "Progress" +msgstr "Progreso" + +#: bookwyrm/templates/readthrough/readthrough_form.html:24 +#: bookwyrm/templates/readthrough/readthrough_modal.html:56 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 +msgid "Finished reading" +msgstr "Rematei de ler" + +#: bookwyrm/templates/readthrough/readthrough_list.html:9 +msgid "Progress Updates:" +msgstr "Actualizacións da lectura:" + +#: bookwyrm/templates/readthrough/readthrough_list.html:14 +msgid "finished" +msgstr "rematado" + +#: bookwyrm/templates/readthrough/readthrough_list.html:25 +msgid "Show all updates" +msgstr "Mostrar tódalas actualizacións" + +#: bookwyrm/templates/readthrough/readthrough_list.html:41 +msgid "Delete this progress update" +msgstr "Eliminar esta actualización da lectura" + +#: bookwyrm/templates/readthrough/readthrough_list.html:53 +msgid "started" +msgstr "iniciado" + +#: bookwyrm/templates/readthrough/readthrough_list.html:60 +msgid "Edit read dates" +msgstr "Editar datas da lectura" + +#: bookwyrm/templates/readthrough/readthrough_list.html:68 +msgid "Delete these read dates" +msgstr "Eliminar estas datas da lectura" + +#: bookwyrm/templates/readthrough/readthrough_modal.html:12 +#, python-format +msgid "Add read dates for \"%(title)s\"" +msgstr "Engadir datas de lectura para \"%(title)s\"" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "Resultados de" -#: bookwyrm/templates/search/book.html:79 +#: bookwyrm/templates/search/book.html:80 msgid "Import book" msgstr "Importar libro" -#: bookwyrm/templates/search/book.html:104 +#: bookwyrm/templates/search/book.html:106 msgid "Load results from other catalogues" msgstr "Cargar resultados desde outros catálogos" -#: bookwyrm/templates/search/book.html:108 +#: bookwyrm/templates/search/book.html:110 msgid "Manually add book" msgstr "Engadir un libro manualmente" -#: bookwyrm/templates/search/book.html:113 +#: bookwyrm/templates/search/book.html:115 msgid "Log in to import or add books." msgstr "Conéctate para importar ou engadir libros." @@ -3620,50 +3639,56 @@ msgstr "Crear Estante" msgid "Edit Shelf" msgstr "Editar estante" -#: bookwyrm/templates/shelf/shelf.html:28 bookwyrm/views/shelf/shelf.py:53 +#: bookwyrm/templates/shelf/shelf.html:24 +msgid "User profile" +msgstr "Perfil da usuaria" + +#: bookwyrm/templates/shelf/shelf.html:39 +#: bookwyrm/templates/snippets/translated_shelf_name.html:3 +#: bookwyrm/views/shelf/shelf.py:53 msgid "All books" msgstr "Tódolos libros" -#: bookwyrm/templates/shelf/shelf.html:69 +#: bookwyrm/templates/shelf/shelf.html:72 msgid "Create shelf" msgstr "Crear estante" -#: bookwyrm/templates/shelf/shelf.html:93 +#: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" msgid_plural "%(formatted_count)s books" msgstr[0] "%(formatted_count)s libro" msgstr[1] "%(formatted_count)s libros" -#: bookwyrm/templates/shelf/shelf.html:100 +#: bookwyrm/templates/shelf/shelf.html:103 #, python-format msgid "(showing %(start)s-%(end)s)" msgstr "(mostrando %(start)s-%(end)s)" -#: bookwyrm/templates/shelf/shelf.html:112 +#: bookwyrm/templates/shelf/shelf.html:115 msgid "Edit shelf" msgstr "Editar estante" -#: bookwyrm/templates/shelf/shelf.html:120 +#: bookwyrm/templates/shelf/shelf.html:123 msgid "Delete shelf" msgstr "Eliminar estante" -#: bookwyrm/templates/shelf/shelf.html:148 -#: bookwyrm/templates/shelf/shelf.html:174 +#: bookwyrm/templates/shelf/shelf.html:151 +#: bookwyrm/templates/shelf/shelf.html:177 msgid "Shelved" msgstr "No estante" -#: bookwyrm/templates/shelf/shelf.html:149 -#: bookwyrm/templates/shelf/shelf.html:177 +#: bookwyrm/templates/shelf/shelf.html:152 +#: bookwyrm/templates/shelf/shelf.html:180 msgid "Started" msgstr "Comezado" -#: bookwyrm/templates/shelf/shelf.html:150 -#: bookwyrm/templates/shelf/shelf.html:180 +#: bookwyrm/templates/shelf/shelf.html:153 +#: bookwyrm/templates/shelf/shelf.html:183 msgid "Finished" msgstr "Rematado" -#: bookwyrm/templates/shelf/shelf.html:206 +#: bookwyrm/templates/shelf/shelf.html:209 msgid "This shelf is empty." msgstr "Este estante esta baleiro." @@ -3824,38 +3849,38 @@ msgstr "Retirar gústame" msgid "Filters" msgstr "Filtros" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:11 -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:18 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:10 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:17 msgid "Filters are applied" msgstr "Filtros aplicados" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:21 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:20 msgid "Clear filters" msgstr "Limpar filtros" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 msgid "Apply filters" msgstr "Aplicar filtros" -#: bookwyrm/templates/snippets/follow_button.html:15 +#: bookwyrm/templates/snippets/follow_button.html:20 #, python-format msgid "Follow @%(username)s" msgstr "Seguir a @%(username)s" -#: bookwyrm/templates/snippets/follow_button.html:17 +#: bookwyrm/templates/snippets/follow_button.html:22 msgid "Follow" msgstr "Seguir" -#: bookwyrm/templates/snippets/follow_button.html:26 +#: bookwyrm/templates/snippets/follow_button.html:31 msgid "Undo follow request" msgstr "Retirar solicitude de seguimento" -#: bookwyrm/templates/snippets/follow_button.html:31 +#: bookwyrm/templates/snippets/follow_button.html:36 #, python-format msgid "Unfollow @%(username)s" msgstr "Deixar de seguir a @%(username)s" -#: bookwyrm/templates/snippets/follow_button.html:33 +#: bookwyrm/templates/snippets/follow_button.html:38 msgid "Unfollow" msgstr "Non seguir" @@ -3900,15 +3925,15 @@ msgstr[1] "valorado %(title)s: %(display_ratin #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Recensión de \"%(book_title)s\" (%(display_rating)s estrela): %(review_title)s" -msgstr[1] "Recensión de \"%(book_title)s\" (%(display_rating)s estrelas): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "Recensión de \"%(book_title)s\" (%(display_rating)s estrela): %(review_title)s" +msgstr[1] "Recensión de \"%(book_title)s\" (%(display_rating)s estrelas): %(review_title)s" -#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:8 +#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": %(review_title)s" -msgstr "Recensión de \"%(book_title)s\": %(review_title)s" +msgid "Review of \"%(book_title)s\": {{ review_title }" +msgstr "Recensión de \"%(book_title)s\": { review_title }" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -4011,17 +4036,6 @@ msgstr "Valorar" msgid "Finish \"%(book_title)s\"" msgstr "Rematei \"%(book_title)s\"" -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 -#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 -#: bookwyrm/templates/snippets/readthrough_form.html:9 -msgid "Started reading" -msgstr "Comecei a ler" - -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 -#: bookwyrm/templates/snippets/readthrough_form.html:23 -msgid "Finished reading" -msgstr "Rematei de ler" - #: bookwyrm/templates/snippets/reading_modals/form.html:9 msgid "(Optional)" msgstr "(Optativo)" @@ -4041,10 +4055,6 @@ msgstr "Comecei a ler \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "Quero ler \"%(book_title)s\"" -#: bookwyrm/templates/snippets/readthrough_form.html:17 -msgid "Progress" -msgstr "Progreso" - #: bookwyrm/templates/snippets/register_form.html:30 msgid "Sign Up" msgstr "Inscribirse" @@ -4071,13 +4081,13 @@ msgstr "Máis info acerca desta denuncia:" msgid "Move book" msgstr "Mover libro" -#: bookwyrm/templates/snippets/shelf_selector.html:42 +#: bookwyrm/templates/snippets/shelf_selector.html:39 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:17 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:24 msgid "Start reading" msgstr "Comezar a ler" -#: bookwyrm/templates/snippets/shelf_selector.html:55 +#: bookwyrm/templates/snippets/shelf_selector.html:54 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:31 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:38 msgid "Want to read" @@ -4132,7 +4142,12 @@ msgstr "Agochar estado" msgid "edited %(date)s" msgstr "editado %(date)s" -#: bookwyrm/templates/snippets/status/headers/comment.html:2 +#: bookwyrm/templates/snippets/status/headers/comment.html:8 +#, python-format +msgid "commented on %(book)s by %(author_name)s" +msgstr "comentada en %(book)s por %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/comment.html:15 #, python-format msgid "commented on %(book)s" msgstr "comentou en %(book)s" @@ -4142,7 +4157,12 @@ msgstr "comentou en %(book)s" msgid "replied to %(username)s's status" msgstr "respondeu ao estado de %(username)s" -#: bookwyrm/templates/snippets/status/headers/quotation.html:2 +#: bookwyrm/templates/snippets/status/headers/quotation.html:8 +#, python-format +msgid "quoted %(book)s by %(author_name)s" +msgstr "citou %(book)s de %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/quotation.html:15 #, python-format msgid "quoted %(book)s" msgstr "citou a %(book)s" @@ -4152,25 +4172,45 @@ msgstr "citou a %(book)s" msgid "rated %(book)s:" msgstr "valorou %(book)s:" -#: bookwyrm/templates/snippets/status/headers/read.html:7 +#: bookwyrm/templates/snippets/status/headers/read.html:10 +#, python-format +msgid "finished reading %(book)s by %(author_name)s" +msgstr "rematou de ler %(book)s de %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/read.html:17 #, python-format msgid "finished reading %(book)s" msgstr "rematou de ler %(book)s" -#: bookwyrm/templates/snippets/status/headers/reading.html:7 +#: bookwyrm/templates/snippets/status/headers/reading.html:10 +#, python-format +msgid "started reading %(book)s by %(author_name)s" +msgstr "comezou a ler %(book)s de %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/reading.html:17 #, python-format msgid "started reading %(book)s" msgstr "comezou a ler %(book)s" -#: bookwyrm/templates/snippets/status/headers/review.html:3 +#: bookwyrm/templates/snippets/status/headers/review.html:8 +#, python-format +msgid "reviewed %(book)s by %(author_name)s" +msgstr "revisou %(book)s de %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/review.html:15 #, python-format msgid "reviewed %(book)s" msgstr "recensionou %(book)s" -#: bookwyrm/templates/snippets/status/headers/to_read.html:7 +#: bookwyrm/templates/snippets/status/headers/to_read.html:10 #, python-format -msgid "%(username)s wants to read %(book)s" -msgstr "%(username)s quere ler %(book)s" +msgid "wants to read %(book)s by %(author_name)s" +msgstr "quere ler %(book)s de %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/to_read.html:17 +#, python-format +msgid "wants to read %(book)s" +msgstr "quere ler %(book)s" #: bookwyrm/templates/snippets/status/layout.html:24 #: bookwyrm/templates/snippets/status/status_options.html:17 @@ -4216,11 +4256,11 @@ msgstr "Mostrar máis" msgid "Show less" msgstr "Mostrar menos" -#: bookwyrm/templates/user/books_header.html:10 +#: bookwyrm/templates/user/books_header.html:4 msgid "Your books" msgstr "Os teus libros" -#: bookwyrm/templates/user/books_header.html:15 +#: bookwyrm/templates/user/books_header.html:9 #, python-format msgid "%(username)s's books" msgstr "Libros de %(username)s" diff --git a/locale/it_IT/LC_MESSAGES/django.mo b/locale/it_IT/LC_MESSAGES/django.mo index decc06e9aef4d33bbb4849f3a032d920e1e2cdb1..ee748f049ab34560c72025df31c54c92189944ed 100644 GIT binary patch delta 20008 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 QKJ>pVKQX!S+oVGO57nX)g8%>k diff --git a/locale/it_IT/LC_MESSAGES/django.po b/locale/it_IT/LC_MESSAGES/django.po index 5a703727e..c6df35483 100644 --- a/locale/it_IT/LC_MESSAGES/django.po +++ b/locale/it_IT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-09 19:01+0000\n" -"PO-Revision-Date: 2022-01-10 17:22\n" +"POT-Creation-Date: 2022-01-12 18:37+0000\n" +"PO-Revision-Date: 2022-01-12 19:52\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Italian\n" "Language: it\n" @@ -54,8 +54,8 @@ msgstr "Ordina Lista" msgid "Book Title" msgstr "Titolo del libro" -#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:152 -#: bookwyrm/templates/shelf/shelf.html:184 +#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:33 msgid "Rating" msgstr "Valutazione" @@ -72,6 +72,10 @@ msgstr "Crescente" msgid "Descending" msgstr "Decrescente" +#: bookwyrm/forms.py:491 +msgid "Reading finish date cannot be before start date." +msgstr "" + #: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167 msgid "Error loading book" msgstr "Errore nel caricamento del libro" @@ -153,7 +157,7 @@ msgstr "nome utente" msgid "A user with that username already exists." msgstr "Un utente con questo nome utente esiste già." -#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:280 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Recensioni" @@ -632,11 +636,11 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/readthrough.html:82 #: bookwyrm/templates/groups/form.html:30 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:124 +#: bookwyrm/templates/readthrough/readthrough_modal.html:72 #: bookwyrm/templates/settings/announcements/announcement_form.html:76 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 @@ -649,15 +653,15 @@ msgstr "Salva" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 -#: bookwyrm/templates/book/book.html:194 bookwyrm/templates/book/book.html:252 +#: bookwyrm/templates/book/book.html:194 #: bookwyrm/templates/book/cover_add_modal.html:32 -#: bookwyrm/templates/book/delete_readthrough_modal.html:23 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 -#: bookwyrm/templates/book/readthrough.html:83 #: bookwyrm/templates/book/sync_modal.html:23 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:18 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/federation/instance.html:88 #: bookwyrm/templates/snippets/report_modal.html:38 msgid "Cancel" @@ -728,39 +732,35 @@ msgstr "Una diversa edizione di questo libro è su msgid "Your reading activity" msgstr "Le tue attività di lettura" -#: bookwyrm/templates/book/book.html:240 +#: bookwyrm/templates/book/book.html:243 msgid "Add read dates" msgstr "Aggiungi data di lettura" -#: bookwyrm/templates/book/book.html:249 -msgid "Create" -msgstr "Crea" - -#: bookwyrm/templates/book/book.html:259 +#: bookwyrm/templates/book/book.html:251 msgid "You don't have any reading activity for this book." msgstr "Non hai alcuna attività di lettura per questo libro." -#: bookwyrm/templates/book/book.html:285 +#: bookwyrm/templates/book/book.html:277 msgid "Your reviews" msgstr "Le tue recensioni" -#: bookwyrm/templates/book/book.html:291 +#: bookwyrm/templates/book/book.html:283 msgid "Your comments" msgstr "I tuoi commenti" -#: bookwyrm/templates/book/book.html:297 +#: bookwyrm/templates/book/book.html:289 msgid "Your quotes" msgstr "Le tue citazioni" -#: bookwyrm/templates/book/book.html:333 +#: bookwyrm/templates/book/book.html:325 msgid "Subjects" msgstr "Argomenti" -#: bookwyrm/templates/book/book.html:345 +#: bookwyrm/templates/book/book.html:337 msgid "Places" msgstr "Luoghi" -#: bookwyrm/templates/book/book.html:356 +#: bookwyrm/templates/book/book.html:348 #: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74 #: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 @@ -770,11 +770,11 @@ msgstr "Luoghi" msgid "Lists" msgstr "Elenchi" -#: bookwyrm/templates/book/book.html:367 +#: bookwyrm/templates/book/book.html:359 msgid "Add to list" msgstr "Aggiungi all'elenco" -#: bookwyrm/templates/book/book.html:377 +#: bookwyrm/templates/book/book.html:369 #: bookwyrm/templates/book/cover_add_modal.html:31 #: bookwyrm/templates/lists/list.html:208 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 @@ -819,39 +819,13 @@ msgstr "Anteprima copertina del libro" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:65 +#: bookwyrm/templates/feed/suggested_books.html:62 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 #: bookwyrm/templates/snippets/announcement.html:18 msgid "Close" msgstr "Chiudi" -#: bookwyrm/templates/book/delete_readthrough_modal.html:4 -msgid "Delete these read dates?" -msgstr "Elimina queste date di lettura?" - -#: bookwyrm/templates/book/delete_readthrough_modal.html:8 -#, python-format -msgid "You are deleting this readthrough and its %(count)s associated progress updates." -msgstr "Stai eliminando questa lettura e i suoi %(count)s aggiornamenti di avanzamento associati." - -#: bookwyrm/templates/book/delete_readthrough_modal.html:12 -#: bookwyrm/templates/groups/delete_group_modal.html:7 -#: bookwyrm/templates/lists/delete_list_modal.html:7 -msgid "This action cannot be un-done" -msgstr "Questa azione non può essere annullata" - -#: bookwyrm/templates/book/delete_readthrough_modal.html:21 -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/settings/announcements/announcement.html:20 -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 -#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 -#: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 -msgid "Delete" -msgstr "Elimina" - #: bookwyrm/templates/book/edit/edit_book.html:6 #: bookwyrm/templates/book/edit/edit_book.html:12 #, python-format @@ -973,7 +947,7 @@ msgid "Add Another Author" msgstr "Aggiungi un altro autore" #: bookwyrm/templates/book/edit/edit_book_form.html:160 -#: bookwyrm/templates/shelf/shelf.html:143 +#: bookwyrm/templates/shelf/shelf.html:146 msgid "Cover" msgstr "Copertina" @@ -1068,35 +1042,6 @@ msgstr "Pubblicato da %(publisher)s." msgid "rated it" msgstr "Valuta" -#: bookwyrm/templates/book/readthrough.html:9 -msgid "Progress Updates:" -msgstr "Aggiornamento progressi:" - -#: bookwyrm/templates/book/readthrough.html:14 -msgid "finished" -msgstr "completato" - -#: bookwyrm/templates/book/readthrough.html:25 -msgid "Show all updates" -msgstr "Mostra tutti gli aggiornamenti" - -#: bookwyrm/templates/book/readthrough.html:41 -msgid "Delete this progress update" -msgstr "Elimina questo aggiornamento" - -#: bookwyrm/templates/book/readthrough.html:53 -msgid "started" -msgstr "iniziato" - -#: bookwyrm/templates/book/readthrough.html:60 -#: bookwyrm/templates/book/readthrough.html:78 -msgid "Edit read dates" -msgstr "Modifica data di lettura" - -#: bookwyrm/templates/book/readthrough.html:64 -msgid "Delete these read dates" -msgstr "Elimina queste date di lettura" - #: 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." @@ -1478,39 +1423,6 @@ msgstr "I Tuoi Libri" msgid "There are no books here right now! Try searching for a book to get started" msgstr "Non ci sono libri qui in questo momento! Prova a cercare un libro per iniziare" -#: bookwyrm/templates/feed/suggested_books.html:19 -#: bookwyrm/templates/get_started/book_preview.html:10 -#: bookwyrm/templates/shelf/shelf.html:38 -#: bookwyrm/templates/shelf/shelf.html:83 -#: bookwyrm/templates/snippets/shelf_selector.html:28 -#: bookwyrm/templates/user/books_header.html:4 -#: bookwyrm/templates/user/user.html:33 -msgid "To Read" -msgstr "Da leggere" - -#: bookwyrm/templates/feed/suggested_books.html:20 -#: bookwyrm/templates/get_started/book_preview.html:11 -#: bookwyrm/templates/shelf/shelf.html:40 -#: bookwyrm/templates/shelf/shelf.html:84 -#: bookwyrm/templates/snippets/shelf_selector.html:29 -#: bookwyrm/templates/user/books_header.html:6 -#: bookwyrm/templates/user/user.html:34 -msgid "Currently Reading" -msgstr "Letture correnti" - -#: bookwyrm/templates/feed/suggested_books.html:21 -#: bookwyrm/templates/get_started/book_preview.html:12 -#: bookwyrm/templates/shelf/shelf.html:42 -#: bookwyrm/templates/shelf/shelf.html:85 -#: bookwyrm/templates/snippets/shelf_selector.html:30 -#: bookwyrm/templates/snippets/shelf_selector.html:49 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 -#: bookwyrm/templates/user/books_header.html:8 -#: bookwyrm/templates/user/user.html:35 -msgid "Read" -msgstr "Leggi" - #: bookwyrm/templates/feed/suggested_users.html:5 #: bookwyrm/templates/get_started/users.html:6 msgid "Who to follow" @@ -1542,6 +1454,30 @@ msgstr "Hai letto %(book_title)s?" msgid "Add to your books" msgstr "Aggiungi ai tuoi libri" +#: bookwyrm/templates/get_started/book_preview.html:10 +#: bookwyrm/templates/shelf/shelf.html:86 +#: bookwyrm/templates/snippets/translated_shelf_name.html:5 +#: bookwyrm/templates/user/user.html:33 +msgid "To Read" +msgstr "Da leggere" + +#: bookwyrm/templates/get_started/book_preview.html:11 +#: bookwyrm/templates/shelf/shelf.html:87 +#: bookwyrm/templates/snippets/translated_shelf_name.html:7 +#: bookwyrm/templates/user/user.html:34 +msgid "Currently Reading" +msgstr "Letture correnti" + +#: bookwyrm/templates/get_started/book_preview.html:12 +#: bookwyrm/templates/shelf/shelf.html:88 +#: bookwyrm/templates/snippets/shelf_selector.html:47 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 +#: bookwyrm/templates/snippets/translated_shelf_name.html:9 +#: bookwyrm/templates/user/user.html:35 +msgid "Read" +msgstr "Leggi" + #: bookwyrm/templates/get_started/books.html:6 msgid "What are you reading?" msgstr "Cosa stai leggendo?" @@ -1675,6 +1611,23 @@ msgstr "Gestito da %(username)s" msgid "Delete this group?" msgstr "Eliminare questo gruppo?" +#: bookwyrm/templates/groups/delete_group_modal.html:7 +#: bookwyrm/templates/lists/delete_list_modal.html:7 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:12 +msgid "This action cannot be un-done" +msgstr "Questa azione non può essere annullata" + +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/delete_list_modal.html:15 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/settings/announcements/announcement.html:20 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 +#: bookwyrm/templates/snippets/follow_request_buttons.html:12 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +msgid "Delete" +msgstr "Elimina" + #: bookwyrm/templates/groups/edit_form.html:5 msgid "Edit Group" msgstr "Modifica gruppo" @@ -1755,7 +1708,7 @@ msgstr "Gestisci" #: bookwyrm/templates/import/import.html:5 #: bookwyrm/templates/import/import.html:9 -#: bookwyrm/templates/shelf/shelf.html:61 +#: bookwyrm/templates/shelf/shelf.html:64 msgid "Import Books" msgstr "Importa libri" @@ -1843,8 +1796,8 @@ msgid "Row" msgstr "Riga" #: bookwyrm/templates/import/import_status.html:103 -#: bookwyrm/templates/shelf/shelf.html:144 -#: bookwyrm/templates/shelf/shelf.html:166 +#: bookwyrm/templates/shelf/shelf.html:147 +#: bookwyrm/templates/shelf/shelf.html:169 msgid "Title" msgstr "Titolo" @@ -1857,8 +1810,8 @@ msgid "Openlibrary key" msgstr "Chiave OpenLibrary" #: bookwyrm/templates/import/import_status.html:114 -#: bookwyrm/templates/shelf/shelf.html:145 -#: bookwyrm/templates/shelf/shelf.html:169 +#: bookwyrm/templates/shelf/shelf.html:148 +#: bookwyrm/templates/shelf/shelf.html:172 msgid "Author" msgstr "Autore" @@ -1978,7 +1931,7 @@ msgstr "Permesso negato" msgid "Sorry! This invite code is no longer valid." msgstr "Spiacenti! Questo invito non è più valido." -#: bookwyrm/templates/landing/landing.html:7 +#: bookwyrm/templates/landing/landing.html:9 msgid "Recent Books" msgstr "Libri recenti" @@ -2737,23 +2690,89 @@ msgstr "Inizia \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "Vuoi leggere \"%(book_title)s \" \"" +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:4 +msgid "Delete these read dates?" +msgstr "Elimina queste date di lettura?" + +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:8 +#, python-format +msgid "You are deleting this readthrough and its %(count)s associated progress updates." +msgstr "Stai eliminando questa lettura e i suoi %(count)s aggiornamenti di avanzamento associati." + +#: bookwyrm/templates/readthrough/readthrough.html:6 +#: bookwyrm/templates/readthrough/readthrough_modal.html:8 +#, python-format +msgid "Update read dates for \"%(title)s\"" +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough_form.html:10 +#: bookwyrm/templates/readthrough/readthrough_modal.html:31 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 +#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 +msgid "Started reading" +msgstr "Inizia la lettura" + +#: bookwyrm/templates/readthrough/readthrough_form.html:18 +#: bookwyrm/templates/readthrough/readthrough_modal.html:49 +msgid "Progress" +msgstr "Avanzamento" + +#: bookwyrm/templates/readthrough/readthrough_form.html:24 +#: bookwyrm/templates/readthrough/readthrough_modal.html:56 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 +msgid "Finished reading" +msgstr "Finito di leggere" + +#: bookwyrm/templates/readthrough/readthrough_list.html:9 +msgid "Progress Updates:" +msgstr "Aggiornamento progressi:" + +#: bookwyrm/templates/readthrough/readthrough_list.html:14 +msgid "finished" +msgstr "completato" + +#: bookwyrm/templates/readthrough/readthrough_list.html:25 +msgid "Show all updates" +msgstr "Mostra tutti gli aggiornamenti" + +#: bookwyrm/templates/readthrough/readthrough_list.html:41 +msgid "Delete this progress update" +msgstr "Elimina questo aggiornamento" + +#: bookwyrm/templates/readthrough/readthrough_list.html:53 +msgid "started" +msgstr "iniziato" + +#: bookwyrm/templates/readthrough/readthrough_list.html:60 +msgid "Edit read dates" +msgstr "Modifica data di lettura" + +#: bookwyrm/templates/readthrough/readthrough_list.html:68 +msgid "Delete these read dates" +msgstr "Elimina queste date di lettura" + +#: bookwyrm/templates/readthrough/readthrough_modal.html:12 +#, python-format +msgid "Add read dates for \"%(title)s\"" +msgstr "" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "Risultati da" -#: bookwyrm/templates/search/book.html:79 +#: bookwyrm/templates/search/book.html:80 msgid "Import book" msgstr "Importa libro" -#: bookwyrm/templates/search/book.html:104 +#: bookwyrm/templates/search/book.html:106 msgid "Load results from other catalogues" msgstr "Carica i risultati da altri cataloghi" -#: bookwyrm/templates/search/book.html:108 +#: bookwyrm/templates/search/book.html:110 msgid "Manually add book" msgstr "Aggiungi manualmente un libro" -#: bookwyrm/templates/search/book.html:113 +#: bookwyrm/templates/search/book.html:115 msgid "Log in to import or add books." msgstr "Accedi per importare o aggiungere libri." @@ -3620,50 +3639,56 @@ msgstr "Crea Scaffale" msgid "Edit Shelf" msgstr "Modifica Scaffale" -#: bookwyrm/templates/shelf/shelf.html:28 bookwyrm/views/shelf/shelf.py:53 +#: bookwyrm/templates/shelf/shelf.html:24 +msgid "User profile" +msgstr "" + +#: bookwyrm/templates/shelf/shelf.html:39 +#: bookwyrm/templates/snippets/translated_shelf_name.html:3 +#: bookwyrm/views/shelf/shelf.py:53 msgid "All books" msgstr "Tutti i libri" -#: bookwyrm/templates/shelf/shelf.html:69 +#: bookwyrm/templates/shelf/shelf.html:72 msgid "Create shelf" msgstr "Crea scaffale" -#: bookwyrm/templates/shelf/shelf.html:93 +#: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" msgid_plural "%(formatted_count)s books" msgstr[0] "%(formatted_count)s libro" msgstr[1] "%(formatted_count)s libri" -#: bookwyrm/templates/shelf/shelf.html:100 +#: bookwyrm/templates/shelf/shelf.html:103 #, python-format msgid "(showing %(start)s-%(end)s)" msgstr "(mostra %(start)s-%(end)s)" -#: bookwyrm/templates/shelf/shelf.html:112 +#: bookwyrm/templates/shelf/shelf.html:115 msgid "Edit shelf" msgstr "Modifica scaffale" -#: bookwyrm/templates/shelf/shelf.html:120 +#: bookwyrm/templates/shelf/shelf.html:123 msgid "Delete shelf" msgstr "Elimina scaffale" -#: bookwyrm/templates/shelf/shelf.html:148 -#: bookwyrm/templates/shelf/shelf.html:174 +#: bookwyrm/templates/shelf/shelf.html:151 +#: bookwyrm/templates/shelf/shelf.html:177 msgid "Shelved" msgstr "Scaffali" -#: bookwyrm/templates/shelf/shelf.html:149 -#: bookwyrm/templates/shelf/shelf.html:177 +#: bookwyrm/templates/shelf/shelf.html:152 +#: bookwyrm/templates/shelf/shelf.html:180 msgid "Started" msgstr "Iniziato" -#: bookwyrm/templates/shelf/shelf.html:150 -#: bookwyrm/templates/shelf/shelf.html:180 +#: bookwyrm/templates/shelf/shelf.html:153 +#: bookwyrm/templates/shelf/shelf.html:183 msgid "Finished" msgstr "Completato" -#: bookwyrm/templates/shelf/shelf.html:206 +#: bookwyrm/templates/shelf/shelf.html:209 msgid "This shelf is empty." msgstr "Questo scaffale è vuoto." @@ -3824,38 +3849,38 @@ msgstr "Non piace" msgid "Filters" msgstr "Filtri" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:11 -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:18 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:10 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:17 msgid "Filters are applied" msgstr "Filtri applicati" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:21 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:20 msgid "Clear filters" msgstr "Rimuovi filtri" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 msgid "Apply filters" msgstr "Applica filtri" -#: bookwyrm/templates/snippets/follow_button.html:15 +#: bookwyrm/templates/snippets/follow_button.html:20 #, python-format msgid "Follow @%(username)s" msgstr "Segui %(username)s" -#: bookwyrm/templates/snippets/follow_button.html:17 +#: bookwyrm/templates/snippets/follow_button.html:22 msgid "Follow" msgstr "Segui" -#: bookwyrm/templates/snippets/follow_button.html:26 +#: bookwyrm/templates/snippets/follow_button.html:31 msgid "Undo follow request" msgstr "Annulla richiesta di seguire" -#: bookwyrm/templates/snippets/follow_button.html:31 +#: bookwyrm/templates/snippets/follow_button.html:36 #, python-format msgid "Unfollow @%(username)s" msgstr "Smetti di seguire %(username)s" -#: bookwyrm/templates/snippets/follow_button.html:33 +#: bookwyrm/templates/snippets/follow_button.html:38 msgid "Unfollow" msgstr "Smetti di seguire" @@ -3900,15 +3925,15 @@ msgstr[1] "valutato %(title)s: %(display_ratin #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Recensione di \"%(book_title)s\" (%(display_rating)s stella): %(review_title)s" -msgstr[1] "Recensione di \"%(book_title)s\" (%(display_rating)s stelle): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:8 +#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": %(review_title)s" -msgstr "Recensione di \"%(book_title)s\": %(review_title)s" +msgid "Review of \"%(book_title)s\": {{ review_title }" +msgstr "" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -4011,17 +4036,6 @@ msgstr "Vota" msgid "Finish \"%(book_title)s\"" msgstr "Termina \"%(book_title)s\"" -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 -#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 -#: bookwyrm/templates/snippets/readthrough_form.html:9 -msgid "Started reading" -msgstr "Inizia la lettura" - -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 -#: bookwyrm/templates/snippets/readthrough_form.html:23 -msgid "Finished reading" -msgstr "Finito di leggere" - #: bookwyrm/templates/snippets/reading_modals/form.html:9 msgid "(Optional)" msgstr "(Opzionale)" @@ -4041,10 +4055,6 @@ msgstr "Inizia \"%(book_title)s \"" msgid "Want to Read \"%(book_title)s\"" msgstr "Vuoi leggere \"%(book_title)s \"" -#: bookwyrm/templates/snippets/readthrough_form.html:17 -msgid "Progress" -msgstr "Avanzamento" - #: bookwyrm/templates/snippets/register_form.html:30 msgid "Sign Up" msgstr "Iscriviti" @@ -4071,13 +4081,13 @@ msgstr "Maggiori informazioni su questo report:" msgid "Move book" msgstr "Sposta libro" -#: bookwyrm/templates/snippets/shelf_selector.html:42 +#: bookwyrm/templates/snippets/shelf_selector.html:39 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:17 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:24 msgid "Start reading" msgstr "Inizia la lettura" -#: bookwyrm/templates/snippets/shelf_selector.html:55 +#: bookwyrm/templates/snippets/shelf_selector.html:54 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:31 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:38 msgid "Want to read" @@ -4132,7 +4142,12 @@ msgstr "Nascondi lo stato" msgid "edited %(date)s" msgstr "modificato il %(date)s" -#: bookwyrm/templates/snippets/status/headers/comment.html:2 +#: bookwyrm/templates/snippets/status/headers/comment.html:8 +#, python-format +msgid "commented on %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/comment.html:15 #, python-format msgid "commented on %(book)s" msgstr "commento su %(book)s" @@ -4142,7 +4157,12 @@ msgstr "commento su %(book)s" msgid "replied to %(username)s's status" msgstr "ha risposto allo statodi %(username)s" -#: bookwyrm/templates/snippets/status/headers/quotation.html:2 +#: bookwyrm/templates/snippets/status/headers/quotation.html:8 +#, python-format +msgid "quoted %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/quotation.html:15 #, python-format msgid "quoted %(book)s" msgstr "citato %(book)s" @@ -4152,25 +4172,45 @@ msgstr "citato %(book)s" msgid "rated %(book)s:" msgstr "valutato %(book)s:" -#: bookwyrm/templates/snippets/status/headers/read.html:7 +#: bookwyrm/templates/snippets/status/headers/read.html:10 +#, python-format +msgid "finished reading %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/read.html:17 #, python-format msgid "finished reading %(book)s" msgstr "lettura di %(book)s completata" -#: bookwyrm/templates/snippets/status/headers/reading.html:7 +#: bookwyrm/templates/snippets/status/headers/reading.html:10 +#, python-format +msgid "started reading %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/reading.html:17 #, python-format msgid "started reading %(book)s" msgstr "hai iniziato a leggere %(book)s" -#: bookwyrm/templates/snippets/status/headers/review.html:3 +#: bookwyrm/templates/snippets/status/headers/review.html:8 +#, python-format +msgid "reviewed %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/review.html:15 #, python-format msgid "reviewed %(book)s" msgstr "recensito %(book)s" -#: bookwyrm/templates/snippets/status/headers/to_read.html:7 +#: bookwyrm/templates/snippets/status/headers/to_read.html:10 #, python-format -msgid "%(username)s wants to read %(book)s" -msgstr "%(username)s vuole leggere %(book)s" +msgid "wants to read %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/to_read.html:17 +#, python-format +msgid "wants to read %(book)s" +msgstr "" #: bookwyrm/templates/snippets/status/layout.html:24 #: bookwyrm/templates/snippets/status/status_options.html:17 @@ -4216,11 +4256,11 @@ msgstr "Mostra di più" msgid "Show less" msgstr "Mostra meno" -#: bookwyrm/templates/user/books_header.html:10 +#: bookwyrm/templates/user/books_header.html:4 msgid "Your books" msgstr "I tuoi libri" -#: bookwyrm/templates/user/books_header.html:15 +#: bookwyrm/templates/user/books_header.html:9 #, python-format msgid "%(username)s's books" msgstr "Libri di %(username)s" diff --git a/locale/lt_LT/LC_MESSAGES/django.mo b/locale/lt_LT/LC_MESSAGES/django.mo index 7a6c1559667bcd681fb9ad49cd3a9b4f8cdd688b..62c51ca05fdb4bc113ec5272d5c18acd067a56d1 100644 GIT binary patch delta 19634 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 T{5W`PuQLT>w^o1ibN>GWE@zn3 delta 20092 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 LQx5)fBI\n" "Language-Team: Lithuanian\n" "Language: lt\n" @@ -54,8 +54,8 @@ msgstr "Kaip pridėta į sąrašą" msgid "Book Title" msgstr "Knygos antraštė" -#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:152 -#: bookwyrm/templates/shelf/shelf.html:184 +#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:33 msgid "Rating" msgstr "Įvertinimas" @@ -72,6 +72,10 @@ msgstr "Didėjančia tvarka" msgid "Descending" msgstr "Mažėjančia tvarka" +#: bookwyrm/forms.py:491 +msgid "Reading finish date cannot be before start date." +msgstr "" + #: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167 msgid "Error loading book" msgstr "Klaida įkeliant knygą" @@ -153,7 +157,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:280 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Apžvalgos" @@ -638,11 +642,11 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/readthrough.html:82 #: bookwyrm/templates/groups/form.html:30 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:124 +#: bookwyrm/templates/readthrough/readthrough_modal.html:72 #: bookwyrm/templates/settings/announcements/announcement_form.html:76 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 @@ -655,15 +659,15 @@ msgstr "Išsaugoti" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 -#: bookwyrm/templates/book/book.html:194 bookwyrm/templates/book/book.html:252 +#: bookwyrm/templates/book/book.html:194 #: bookwyrm/templates/book/cover_add_modal.html:32 -#: bookwyrm/templates/book/delete_readthrough_modal.html:23 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 -#: bookwyrm/templates/book/readthrough.html:83 #: bookwyrm/templates/book/sync_modal.html:23 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:18 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/federation/instance.html:88 #: bookwyrm/templates/snippets/report_modal.html:38 msgid "Cancel" @@ -736,39 +740,35 @@ msgstr "kitas šios knygos leidimas yra jūsų %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten." @@ -1490,39 +1435,6 @@ msgstr "Jūsų knygos" msgid "There are no books here right now! Try searching for a book to get started" msgstr "Knygų neturite. Raskite knygą ir pradėkite." -#: bookwyrm/templates/feed/suggested_books.html:19 -#: bookwyrm/templates/get_started/book_preview.html:10 -#: bookwyrm/templates/shelf/shelf.html:38 -#: bookwyrm/templates/shelf/shelf.html:83 -#: bookwyrm/templates/snippets/shelf_selector.html:28 -#: bookwyrm/templates/user/books_header.html:4 -#: bookwyrm/templates/user/user.html:33 -msgid "To Read" -msgstr "Norimos perskaityti" - -#: bookwyrm/templates/feed/suggested_books.html:20 -#: bookwyrm/templates/get_started/book_preview.html:11 -#: bookwyrm/templates/shelf/shelf.html:40 -#: bookwyrm/templates/shelf/shelf.html:84 -#: bookwyrm/templates/snippets/shelf_selector.html:29 -#: bookwyrm/templates/user/books_header.html:6 -#: bookwyrm/templates/user/user.html:34 -msgid "Currently Reading" -msgstr "Šiuo metu skaitoma" - -#: bookwyrm/templates/feed/suggested_books.html:21 -#: bookwyrm/templates/get_started/book_preview.html:12 -#: bookwyrm/templates/shelf/shelf.html:42 -#: bookwyrm/templates/shelf/shelf.html:85 -#: bookwyrm/templates/snippets/shelf_selector.html:30 -#: bookwyrm/templates/snippets/shelf_selector.html:49 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 -#: bookwyrm/templates/user/books_header.html:8 -#: bookwyrm/templates/user/user.html:35 -msgid "Read" -msgstr "Perskaityta" - #: bookwyrm/templates/feed/suggested_users.html:5 #: bookwyrm/templates/get_started/users.html:6 msgid "Who to follow" @@ -1554,6 +1466,30 @@ msgstr "Ar skaitėte „%(book_title)s“?" msgid "Add to your books" msgstr "Pridėti prie savo knygų" +#: bookwyrm/templates/get_started/book_preview.html:10 +#: bookwyrm/templates/shelf/shelf.html:86 +#: bookwyrm/templates/snippets/translated_shelf_name.html:5 +#: bookwyrm/templates/user/user.html:33 +msgid "To Read" +msgstr "Norimos perskaityti" + +#: bookwyrm/templates/get_started/book_preview.html:11 +#: bookwyrm/templates/shelf/shelf.html:87 +#: bookwyrm/templates/snippets/translated_shelf_name.html:7 +#: bookwyrm/templates/user/user.html:34 +msgid "Currently Reading" +msgstr "Šiuo metu skaitoma" + +#: bookwyrm/templates/get_started/book_preview.html:12 +#: bookwyrm/templates/shelf/shelf.html:88 +#: bookwyrm/templates/snippets/shelf_selector.html:47 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 +#: bookwyrm/templates/snippets/translated_shelf_name.html:9 +#: bookwyrm/templates/user/user.html:35 +msgid "Read" +msgstr "Perskaityta" + #: bookwyrm/templates/get_started/books.html:6 msgid "What are you reading?" msgstr "Ką skaitome?" @@ -1687,6 +1623,23 @@ msgstr "Tvarko %(username)s" msgid "Delete this group?" msgstr "Ištrinti šią grupę?" +#: bookwyrm/templates/groups/delete_group_modal.html:7 +#: bookwyrm/templates/lists/delete_list_modal.html:7 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:12 +msgid "This action cannot be un-done" +msgstr "Nebegalite atšaukti šio veiksmo" + +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/delete_list_modal.html:15 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/settings/announcements/announcement.html:20 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 +#: bookwyrm/templates/snippets/follow_request_buttons.html:12 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +msgid "Delete" +msgstr "Ištrinti" + #: bookwyrm/templates/groups/edit_form.html:5 msgid "Edit Group" msgstr "Redaguoti grupę" @@ -1771,7 +1724,7 @@ msgstr "Vadovas" #: bookwyrm/templates/import/import.html:5 #: bookwyrm/templates/import/import.html:9 -#: bookwyrm/templates/shelf/shelf.html:61 +#: bookwyrm/templates/shelf/shelf.html:64 msgid "Import Books" msgstr "Importuoti knygas" @@ -1863,8 +1816,8 @@ msgid "Row" msgstr "Eilutė" #: bookwyrm/templates/import/import_status.html:103 -#: bookwyrm/templates/shelf/shelf.html:144 -#: bookwyrm/templates/shelf/shelf.html:166 +#: bookwyrm/templates/shelf/shelf.html:147 +#: bookwyrm/templates/shelf/shelf.html:169 msgid "Title" msgstr "Pavadinimas" @@ -1877,8 +1830,8 @@ msgid "Openlibrary key" msgstr "„Openlibrary“ raktas" #: bookwyrm/templates/import/import_status.html:114 -#: bookwyrm/templates/shelf/shelf.html:145 -#: bookwyrm/templates/shelf/shelf.html:169 +#: bookwyrm/templates/shelf/shelf.html:148 +#: bookwyrm/templates/shelf/shelf.html:172 msgid "Author" msgstr "Autorius" @@ -1998,7 +1951,7 @@ msgstr "Prieiga draudžiama" msgid "Sorry! This invite code is no longer valid." msgstr "Deja, šis pakvietimo kodas nebegalioja." -#: bookwyrm/templates/landing/landing.html:7 +#: bookwyrm/templates/landing/landing.html:9 msgid "Recent Books" msgstr "Naujos knygos" @@ -2757,23 +2710,89 @@ msgstr "Pradėti „%(book_title)s“" msgid "Want to Read \"%(book_title)s\"" msgstr "Noriu perskaityti „%(book_title)s“" +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:4 +msgid "Delete these read dates?" +msgstr "Ištrinti šias skaitymo datas?" + +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:8 +#, python-format +msgid "You are deleting this readthrough and its %(count)s associated progress updates." +msgstr "Trinate tai, kas perskaityta ir %(count)s susietų progreso naujinių." + +#: bookwyrm/templates/readthrough/readthrough.html:6 +#: bookwyrm/templates/readthrough/readthrough_modal.html:8 +#, python-format +msgid "Update read dates for \"%(title)s\"" +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough_form.html:10 +#: bookwyrm/templates/readthrough/readthrough_modal.html:31 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 +#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 +msgid "Started reading" +msgstr "Pradėta skaityti" + +#: bookwyrm/templates/readthrough/readthrough_form.html:18 +#: bookwyrm/templates/readthrough/readthrough_modal.html:49 +msgid "Progress" +msgstr "Progresas" + +#: bookwyrm/templates/readthrough/readthrough_form.html:24 +#: bookwyrm/templates/readthrough/readthrough_modal.html:56 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 +msgid "Finished reading" +msgstr "Baigta skaityti" + +#: bookwyrm/templates/readthrough/readthrough_list.html:9 +msgid "Progress Updates:" +msgstr "Informacija apie progresą:" + +#: bookwyrm/templates/readthrough/readthrough_list.html:14 +msgid "finished" +msgstr "baigta" + +#: bookwyrm/templates/readthrough/readthrough_list.html:25 +msgid "Show all updates" +msgstr "Rodyti visus naujinius" + +#: bookwyrm/templates/readthrough/readthrough_list.html:41 +msgid "Delete this progress update" +msgstr "Ištrinti progreso naujinį" + +#: bookwyrm/templates/readthrough/readthrough_list.html:53 +msgid "started" +msgstr "pradėta" + +#: bookwyrm/templates/readthrough/readthrough_list.html:60 +msgid "Edit read dates" +msgstr "Redaguoti skaitymo datas" + +#: bookwyrm/templates/readthrough/readthrough_list.html:68 +msgid "Delete these read dates" +msgstr "Ištrinti šias skaitymo datas" + +#: bookwyrm/templates/readthrough/readthrough_modal.html:12 +#, python-format +msgid "Add read dates for \"%(title)s\"" +msgstr "" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "Rezultatai iš" -#: bookwyrm/templates/search/book.html:79 +#: bookwyrm/templates/search/book.html:80 msgid "Import book" msgstr "Importuoti knygą" -#: bookwyrm/templates/search/book.html:104 +#: bookwyrm/templates/search/book.html:106 msgid "Load results from other catalogues" msgstr "Įkelti rezultatus iš kitų katalogų" -#: bookwyrm/templates/search/book.html:108 +#: bookwyrm/templates/search/book.html:110 msgid "Manually add book" msgstr "Pridėti knygą" -#: bookwyrm/templates/search/book.html:113 +#: bookwyrm/templates/search/book.html:115 msgid "Log in to import or add books." msgstr "Prisijunkite, kad importuotumėte arba pridėtumėte knygas." @@ -3646,15 +3665,21 @@ msgstr "Sukurti lentyną" msgid "Edit Shelf" msgstr "Redaguoti lentyną" -#: bookwyrm/templates/shelf/shelf.html:28 bookwyrm/views/shelf/shelf.py:53 +#: bookwyrm/templates/shelf/shelf.html:24 +msgid "User profile" +msgstr "" + +#: bookwyrm/templates/shelf/shelf.html:39 +#: bookwyrm/templates/snippets/translated_shelf_name.html:3 +#: bookwyrm/views/shelf/shelf.py:53 msgid "All books" msgstr "Visos knygos" -#: bookwyrm/templates/shelf/shelf.html:69 +#: bookwyrm/templates/shelf/shelf.html:72 msgid "Create shelf" msgstr "Sukurti lentyną" -#: bookwyrm/templates/shelf/shelf.html:93 +#: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" msgid_plural "%(formatted_count)s books" @@ -3663,35 +3688,35 @@ msgstr[1] "%(formatted_count)s knygos" msgstr[2] "%(formatted_count)s knygų" msgstr[3] "%(formatted_count)s knygos" -#: bookwyrm/templates/shelf/shelf.html:100 +#: bookwyrm/templates/shelf/shelf.html:103 #, python-format msgid "(showing %(start)s-%(end)s)" msgstr "(rodoma %(start)s–%(end)s)" -#: bookwyrm/templates/shelf/shelf.html:112 +#: bookwyrm/templates/shelf/shelf.html:115 msgid "Edit shelf" msgstr "Redaguoti lentyną" -#: bookwyrm/templates/shelf/shelf.html:120 +#: bookwyrm/templates/shelf/shelf.html:123 msgid "Delete shelf" msgstr "Ištrinti lentyną" -#: bookwyrm/templates/shelf/shelf.html:148 -#: bookwyrm/templates/shelf/shelf.html:174 +#: bookwyrm/templates/shelf/shelf.html:151 +#: bookwyrm/templates/shelf/shelf.html:177 msgid "Shelved" msgstr "Sudėta į lentynas" -#: bookwyrm/templates/shelf/shelf.html:149 -#: bookwyrm/templates/shelf/shelf.html:177 +#: bookwyrm/templates/shelf/shelf.html:152 +#: bookwyrm/templates/shelf/shelf.html:180 msgid "Started" msgstr "Pradėta" -#: bookwyrm/templates/shelf/shelf.html:150 -#: bookwyrm/templates/shelf/shelf.html:180 +#: bookwyrm/templates/shelf/shelf.html:153 +#: bookwyrm/templates/shelf/shelf.html:183 msgid "Finished" msgstr "Baigta" -#: bookwyrm/templates/shelf/shelf.html:206 +#: bookwyrm/templates/shelf/shelf.html:209 msgid "This shelf is empty." msgstr "Ši lentyna tuščia." @@ -3854,38 +3879,38 @@ msgstr "Nebemėgti" msgid "Filters" msgstr "Filtrai" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:11 -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:18 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:10 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:17 msgid "Filters are applied" msgstr "Taikyti filtrai" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:21 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:20 msgid "Clear filters" msgstr "Valyti filtrus" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 msgid "Apply filters" msgstr "Taikyti filtrus" -#: bookwyrm/templates/snippets/follow_button.html:15 +#: bookwyrm/templates/snippets/follow_button.html:20 #, python-format msgid "Follow @%(username)s" msgstr "Sekti @%(username)s" -#: bookwyrm/templates/snippets/follow_button.html:17 +#: bookwyrm/templates/snippets/follow_button.html:22 msgid "Follow" msgstr "Sekti" -#: bookwyrm/templates/snippets/follow_button.html:26 +#: bookwyrm/templates/snippets/follow_button.html:31 msgid "Undo follow request" msgstr "Atšaukti prašymus sekti" -#: bookwyrm/templates/snippets/follow_button.html:31 +#: bookwyrm/templates/snippets/follow_button.html:36 #, python-format msgid "Unfollow @%(username)s" msgstr "Nebesekti @%(username)s" -#: bookwyrm/templates/snippets/follow_button.html:33 +#: bookwyrm/templates/snippets/follow_button.html:38 msgid "Unfollow" msgstr "Nebesekti" @@ -3938,17 +3963,17 @@ msgstr[3] "įvertinta %(title)s: %(display_rat #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Knygos „%(book_title)s“ (%(display_rating)s žvaigždutė) apžvalga: %(review_title)s" -msgstr[1] "Knygos „%(book_title)s“ (%(display_rating)s žvaigždutės) apžvalga: %(review_title)s" -msgstr[2] "Knygos „%(book_title)s“ (%(display_rating)s žvaigždutės) apžvalga: %(review_title)s" -msgstr[3] "Knygos „%(book_title)s“ (%(display_rating)s žvaigždutės) apžvalga: %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:8 +#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": %(review_title)s" -msgstr "Knygos „%(book_title)s“ apžvalga: %(review_title)s" +msgid "Review of \"%(book_title)s\": {{ review_title }" +msgstr "" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -4051,17 +4076,6 @@ msgstr "Įvertinti" msgid "Finish \"%(book_title)s\"" msgstr "Užbaigti „%(book_title)s“" -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 -#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 -#: bookwyrm/templates/snippets/readthrough_form.html:9 -msgid "Started reading" -msgstr "Pradėta skaityti" - -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 -#: bookwyrm/templates/snippets/readthrough_form.html:23 -msgid "Finished reading" -msgstr "Baigta skaityti" - #: bookwyrm/templates/snippets/reading_modals/form.html:9 msgid "(Optional)" msgstr "(Nebūtina)" @@ -4081,10 +4095,6 @@ msgstr "Pradėti „%(book_title)s“" msgid "Want to Read \"%(book_title)s\"" msgstr "Noriu perskaityti „%(book_title)s“" -#: bookwyrm/templates/snippets/readthrough_form.html:17 -msgid "Progress" -msgstr "Progresas" - #: bookwyrm/templates/snippets/register_form.html:30 msgid "Sign Up" msgstr "Registruotis" @@ -4111,13 +4121,13 @@ msgstr "Daugiau informacijos apie šį pranešimą:" msgid "Move book" msgstr "Perkelti knygą" -#: bookwyrm/templates/snippets/shelf_selector.html:42 +#: bookwyrm/templates/snippets/shelf_selector.html:39 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:17 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:24 msgid "Start reading" msgstr "Pradėti skaityti" -#: bookwyrm/templates/snippets/shelf_selector.html:55 +#: bookwyrm/templates/snippets/shelf_selector.html:54 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:31 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:38 msgid "Want to read" @@ -4172,7 +4182,12 @@ msgstr "Slėpti būseną" msgid "edited %(date)s" msgstr "redaguota %(date)s" -#: bookwyrm/templates/snippets/status/headers/comment.html:2 +#: bookwyrm/templates/snippets/status/headers/comment.html:8 +#, python-format +msgid "commented on %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/comment.html:15 #, python-format msgid "commented on %(book)s" msgstr "pakomentavo %(book)s" @@ -4182,7 +4197,12 @@ msgstr "pakomentavo %(book)s" msgid "replied to %(username)s's status" msgstr "atsakė į %(username)s statusą" -#: bookwyrm/templates/snippets/status/headers/quotation.html:2 +#: bookwyrm/templates/snippets/status/headers/quotation.html:8 +#, python-format +msgid "quoted %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/quotation.html:15 #, python-format msgid "quoted %(book)s" msgstr "pacitavo %(book)s" @@ -4192,25 +4212,45 @@ msgstr "pacitavo %(book)s" msgid "rated %(book)s:" msgstr "įvertino %(book)s:" -#: bookwyrm/templates/snippets/status/headers/read.html:7 +#: bookwyrm/templates/snippets/status/headers/read.html:10 +#, python-format +msgid "finished reading %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/read.html:17 #, python-format msgid "finished reading %(book)s" msgstr "baigė skaityti %(book)s" -#: bookwyrm/templates/snippets/status/headers/reading.html:7 +#: bookwyrm/templates/snippets/status/headers/reading.html:10 +#, python-format +msgid "started reading %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/reading.html:17 #, python-format msgid "started reading %(book)s" msgstr "pradėjo skaityti %(book)s" -#: bookwyrm/templates/snippets/status/headers/review.html:3 +#: bookwyrm/templates/snippets/status/headers/review.html:8 +#, python-format +msgid "reviewed %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/review.html:15 #, python-format msgid "reviewed %(book)s" msgstr "apžvelgė %(book)s" -#: bookwyrm/templates/snippets/status/headers/to_read.html:7 +#: bookwyrm/templates/snippets/status/headers/to_read.html:10 #, python-format -msgid "%(username)s wants to read %(book)s" -msgstr "%(username)s nori perskaityti %(book)s" +msgid "wants to read %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/to_read.html:17 +#, python-format +msgid "wants to read %(book)s" +msgstr "" #: bookwyrm/templates/snippets/status/layout.html:24 #: bookwyrm/templates/snippets/status/status_options.html:17 @@ -4256,11 +4296,11 @@ msgstr "Rodyti daugiau" msgid "Show less" msgstr "Rodyti mažiau" -#: bookwyrm/templates/user/books_header.html:10 +#: bookwyrm/templates/user/books_header.html:4 msgid "Your books" msgstr "Jūsų knygos" -#: bookwyrm/templates/user/books_header.html:15 +#: bookwyrm/templates/user/books_header.html:9 #, python-format msgid "%(username)s's books" msgstr "%(username)s – knygos" diff --git a/locale/no_NO/LC_MESSAGES/django.mo b/locale/no_NO/LC_MESSAGES/django.mo index e3a02856c230d8583af437153d9846a011f926d8..8ca7f9a7e2fefafd38f71e23fcca57398d7ded51 100644 GIT binary patch delta 21427 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 KQj%R>@&5&Pyq81( delta 20398 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 a5gwI27X6dQ\n" "Language-Team: Norwegian\n" "Language: no\n" @@ -54,8 +54,8 @@ msgstr "Liste rekkefølge" msgid "Book Title" msgstr "Boktittel" -#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:152 -#: bookwyrm/templates/shelf/shelf.html:184 +#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:33 msgid "Rating" msgstr "Vurdering" @@ -72,6 +72,10 @@ msgstr "Stigende" msgid "Descending" msgstr "Synkende" +#: bookwyrm/forms.py:491 +msgid "Reading finish date cannot be before start date." +msgstr "Sluttdato kan ikke være før startdato." + #: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167 msgid "Error loading book" msgstr "Feilet ved lasting av bok" @@ -153,7 +157,7 @@ msgstr "brukernavn" msgid "A user with that username already exists." msgstr "En bruker med det brukernavnet eksisterer allerede." -#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:280 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Anmeldelser" @@ -632,11 +636,11 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/readthrough.html:82 #: bookwyrm/templates/groups/form.html:30 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:124 +#: bookwyrm/templates/readthrough/readthrough_modal.html:72 #: bookwyrm/templates/settings/announcements/announcement_form.html:76 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 @@ -649,15 +653,15 @@ msgstr "Lagre" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 -#: bookwyrm/templates/book/book.html:194 bookwyrm/templates/book/book.html:252 +#: bookwyrm/templates/book/book.html:194 #: bookwyrm/templates/book/cover_add_modal.html:32 -#: bookwyrm/templates/book/delete_readthrough_modal.html:23 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 -#: bookwyrm/templates/book/readthrough.html:83 #: bookwyrm/templates/book/sync_modal.html:23 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:18 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/federation/instance.html:88 #: bookwyrm/templates/snippets/report_modal.html:38 msgid "Cancel" @@ -728,39 +732,35 @@ msgstr "En annen utgave av denne boken ligger i hy msgid "Your reading activity" msgstr "Din leseaktivitet" -#: bookwyrm/templates/book/book.html:240 +#: bookwyrm/templates/book/book.html:243 msgid "Add read dates" msgstr "Legg til lesedatoer" -#: bookwyrm/templates/book/book.html:249 -msgid "Create" -msgstr "Opprett" - -#: bookwyrm/templates/book/book.html:259 +#: bookwyrm/templates/book/book.html:251 msgid "You don't have any reading activity for this book." msgstr "Du har ikke lagt inn leseaktivitet for denne boka." -#: bookwyrm/templates/book/book.html:285 +#: bookwyrm/templates/book/book.html:277 msgid "Your reviews" msgstr "Dine anmeldelser" -#: bookwyrm/templates/book/book.html:291 +#: bookwyrm/templates/book/book.html:283 msgid "Your comments" msgstr "Dine kommentarer" -#: bookwyrm/templates/book/book.html:297 +#: bookwyrm/templates/book/book.html:289 msgid "Your quotes" msgstr "Dine sitater" -#: bookwyrm/templates/book/book.html:333 +#: bookwyrm/templates/book/book.html:325 msgid "Subjects" msgstr "Emner" -#: bookwyrm/templates/book/book.html:345 +#: bookwyrm/templates/book/book.html:337 msgid "Places" msgstr "Steder" -#: bookwyrm/templates/book/book.html:356 +#: bookwyrm/templates/book/book.html:348 #: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74 #: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 @@ -770,11 +770,11 @@ msgstr "Steder" msgid "Lists" msgstr "Lister" -#: bookwyrm/templates/book/book.html:367 +#: bookwyrm/templates/book/book.html:359 msgid "Add to list" msgstr "Legg til i liste" -#: bookwyrm/templates/book/book.html:377 +#: bookwyrm/templates/book/book.html:369 #: bookwyrm/templates/book/cover_add_modal.html:31 #: bookwyrm/templates/lists/list.html:208 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 @@ -819,39 +819,13 @@ msgstr "Bokomslag forhåndsvisning" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:65 +#: bookwyrm/templates/feed/suggested_books.html:62 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 #: bookwyrm/templates/snippets/announcement.html:18 msgid "Close" msgstr "Lukk" -#: bookwyrm/templates/book/delete_readthrough_modal.html:4 -msgid "Delete these read dates?" -msgstr "Slette disse lesedatoene?" - -#: bookwyrm/templates/book/delete_readthrough_modal.html:8 -#, python-format -msgid "You are deleting this readthrough and its %(count)s associated progress updates." -msgstr "Du sletter denne gjennomlesninga og %(count)s tilknyttede fremdriftsoppdateringer." - -#: bookwyrm/templates/book/delete_readthrough_modal.html:12 -#: bookwyrm/templates/groups/delete_group_modal.html:7 -#: bookwyrm/templates/lists/delete_list_modal.html:7 -msgid "This action cannot be un-done" -msgstr "Denne handlingen er endelig" - -#: bookwyrm/templates/book/delete_readthrough_modal.html:21 -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/settings/announcements/announcement.html:20 -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 -#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 -#: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 -msgid "Delete" -msgstr "Slett" - #: bookwyrm/templates/book/edit/edit_book.html:6 #: bookwyrm/templates/book/edit/edit_book.html:12 #, python-format @@ -973,7 +947,7 @@ msgid "Add Another Author" msgstr "Legg til enda en forfatter" #: bookwyrm/templates/book/edit/edit_book_form.html:160 -#: bookwyrm/templates/shelf/shelf.html:143 +#: bookwyrm/templates/shelf/shelf.html:146 msgid "Cover" msgstr "Omslag" @@ -1068,35 +1042,6 @@ msgstr "Utgitt av %(publisher)s." msgid "rated it" msgstr "vurderte den" -#: bookwyrm/templates/book/readthrough.html:9 -msgid "Progress Updates:" -msgstr "Fremdriftsoppdateringer:" - -#: bookwyrm/templates/book/readthrough.html:14 -msgid "finished" -msgstr "ferdig" - -#: bookwyrm/templates/book/readthrough.html:25 -msgid "Show all updates" -msgstr "Vis alle oppdateringer" - -#: bookwyrm/templates/book/readthrough.html:41 -msgid "Delete this progress update" -msgstr "Slett denne fremgangsoppdateringen" - -#: bookwyrm/templates/book/readthrough.html:53 -msgid "started" -msgstr "startet" - -#: bookwyrm/templates/book/readthrough.html:60 -#: bookwyrm/templates/book/readthrough.html:78 -msgid "Edit read dates" -msgstr "Rediger lesedatoer" - -#: bookwyrm/templates/book/readthrough.html:64 -msgid "Delete these read dates" -msgstr "Slett disse lesedatoene" - #: 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." @@ -1478,39 +1423,6 @@ msgstr "Bøkene dine" msgid "There are no books here right now! Try searching for a book to get started" msgstr "Det er ingen bøker her nå! Prøv å søke etter en bok for å komme i gang" -#: bookwyrm/templates/feed/suggested_books.html:19 -#: bookwyrm/templates/get_started/book_preview.html:10 -#: bookwyrm/templates/shelf/shelf.html:38 -#: bookwyrm/templates/shelf/shelf.html:83 -#: bookwyrm/templates/snippets/shelf_selector.html:28 -#: bookwyrm/templates/user/books_header.html:4 -#: bookwyrm/templates/user/user.html:33 -msgid "To Read" -msgstr "Å lese" - -#: bookwyrm/templates/feed/suggested_books.html:20 -#: bookwyrm/templates/get_started/book_preview.html:11 -#: bookwyrm/templates/shelf/shelf.html:40 -#: bookwyrm/templates/shelf/shelf.html:84 -#: bookwyrm/templates/snippets/shelf_selector.html:29 -#: bookwyrm/templates/user/books_header.html:6 -#: bookwyrm/templates/user/user.html:34 -msgid "Currently Reading" -msgstr "Leser nå" - -#: bookwyrm/templates/feed/suggested_books.html:21 -#: bookwyrm/templates/get_started/book_preview.html:12 -#: bookwyrm/templates/shelf/shelf.html:42 -#: bookwyrm/templates/shelf/shelf.html:85 -#: bookwyrm/templates/snippets/shelf_selector.html:30 -#: bookwyrm/templates/snippets/shelf_selector.html:49 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 -#: bookwyrm/templates/user/books_header.html:8 -#: bookwyrm/templates/user/user.html:35 -msgid "Read" -msgstr "Lest" - #: bookwyrm/templates/feed/suggested_users.html:5 #: bookwyrm/templates/get_started/users.html:6 msgid "Who to follow" @@ -1542,6 +1454,30 @@ msgstr "Har du lest %(book_title)s?" msgid "Add to your books" msgstr "Legg til i bøkene dine" +#: bookwyrm/templates/get_started/book_preview.html:10 +#: bookwyrm/templates/shelf/shelf.html:86 +#: bookwyrm/templates/snippets/translated_shelf_name.html:5 +#: bookwyrm/templates/user/user.html:33 +msgid "To Read" +msgstr "Å lese" + +#: bookwyrm/templates/get_started/book_preview.html:11 +#: bookwyrm/templates/shelf/shelf.html:87 +#: bookwyrm/templates/snippets/translated_shelf_name.html:7 +#: bookwyrm/templates/user/user.html:34 +msgid "Currently Reading" +msgstr "Leser nå" + +#: bookwyrm/templates/get_started/book_preview.html:12 +#: bookwyrm/templates/shelf/shelf.html:88 +#: bookwyrm/templates/snippets/shelf_selector.html:47 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 +#: bookwyrm/templates/snippets/translated_shelf_name.html:9 +#: bookwyrm/templates/user/user.html:35 +msgid "Read" +msgstr "Lest" + #: bookwyrm/templates/get_started/books.html:6 msgid "What are you reading?" msgstr "Hva er det du leser nå?" @@ -1675,6 +1611,23 @@ msgstr "Forvaltet av %(username)s" msgid "Delete this group?" msgstr "Slette denne gruppa?" +#: bookwyrm/templates/groups/delete_group_modal.html:7 +#: bookwyrm/templates/lists/delete_list_modal.html:7 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:12 +msgid "This action cannot be un-done" +msgstr "Denne handlingen er endelig" + +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/delete_list_modal.html:15 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/settings/announcements/announcement.html:20 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 +#: bookwyrm/templates/snippets/follow_request_buttons.html:12 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +msgid "Delete" +msgstr "Slett" + #: bookwyrm/templates/groups/edit_form.html:5 msgid "Edit Group" msgstr "Rediger gruppe" @@ -1755,7 +1708,7 @@ msgstr "Forvalter" #: bookwyrm/templates/import/import.html:5 #: bookwyrm/templates/import/import.html:9 -#: bookwyrm/templates/shelf/shelf.html:61 +#: bookwyrm/templates/shelf/shelf.html:64 msgid "Import Books" msgstr "Importer bøker" @@ -1843,8 +1796,8 @@ msgid "Row" msgstr "Rad" #: bookwyrm/templates/import/import_status.html:103 -#: bookwyrm/templates/shelf/shelf.html:144 -#: bookwyrm/templates/shelf/shelf.html:166 +#: bookwyrm/templates/shelf/shelf.html:147 +#: bookwyrm/templates/shelf/shelf.html:169 msgid "Title" msgstr "Tittel" @@ -1857,8 +1810,8 @@ msgid "Openlibrary key" msgstr "Openlibrary nøkkel" #: bookwyrm/templates/import/import_status.html:114 -#: bookwyrm/templates/shelf/shelf.html:145 -#: bookwyrm/templates/shelf/shelf.html:169 +#: bookwyrm/templates/shelf/shelf.html:148 +#: bookwyrm/templates/shelf/shelf.html:172 msgid "Author" msgstr "Forfatter" @@ -1978,7 +1931,7 @@ msgstr "Tilgang nektet" msgid "Sorry! This invite code is no longer valid." msgstr "Beklager! Denne invitasjonskoden er ikke lenger gyldig." -#: bookwyrm/templates/landing/landing.html:7 +#: bookwyrm/templates/landing/landing.html:9 msgid "Recent Books" msgstr "Nylige bøker" @@ -2737,23 +2690,89 @@ msgstr "Start \"%(book_title)s" msgid "Want to Read \"%(book_title)s\"" msgstr "Ønsker å lese \"%(book_title)s\"" +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:4 +msgid "Delete these read dates?" +msgstr "Slette disse lesedatoene?" + +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:8 +#, python-format +msgid "You are deleting this readthrough and its %(count)s associated progress updates." +msgstr "Du sletter denne gjennomlesninga og %(count)s tilknyttede fremdriftsoppdateringer." + +#: bookwyrm/templates/readthrough/readthrough.html:6 +#: bookwyrm/templates/readthrough/readthrough_modal.html:8 +#, python-format +msgid "Update read dates for \"%(title)s\"" +msgstr "Oppdatér lesedatoer for \"%(title)s\"" + +#: bookwyrm/templates/readthrough/readthrough_form.html:10 +#: bookwyrm/templates/readthrough/readthrough_modal.html:31 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 +#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 +msgid "Started reading" +msgstr "Begynte å lese" + +#: bookwyrm/templates/readthrough/readthrough_form.html:18 +#: bookwyrm/templates/readthrough/readthrough_modal.html:49 +msgid "Progress" +msgstr "Fremdrift" + +#: bookwyrm/templates/readthrough/readthrough_form.html:24 +#: bookwyrm/templates/readthrough/readthrough_modal.html:56 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 +msgid "Finished reading" +msgstr "Leste ferdig" + +#: bookwyrm/templates/readthrough/readthrough_list.html:9 +msgid "Progress Updates:" +msgstr "Fremdriftsoppdateringer:" + +#: bookwyrm/templates/readthrough/readthrough_list.html:14 +msgid "finished" +msgstr "ferdig" + +#: bookwyrm/templates/readthrough/readthrough_list.html:25 +msgid "Show all updates" +msgstr "Vis alle oppdateringer" + +#: bookwyrm/templates/readthrough/readthrough_list.html:41 +msgid "Delete this progress update" +msgstr "Slett denne fremgangsoppdateringen" + +#: bookwyrm/templates/readthrough/readthrough_list.html:53 +msgid "started" +msgstr "startet" + +#: bookwyrm/templates/readthrough/readthrough_list.html:60 +msgid "Edit read dates" +msgstr "Rediger lesedatoer" + +#: bookwyrm/templates/readthrough/readthrough_list.html:68 +msgid "Delete these read dates" +msgstr "Slett disse lesedatoene" + +#: bookwyrm/templates/readthrough/readthrough_modal.html:12 +#, python-format +msgid "Add read dates for \"%(title)s\"" +msgstr "Legg til lesedatoer for \"%(title)s\"" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "Resultat fra" -#: bookwyrm/templates/search/book.html:79 +#: bookwyrm/templates/search/book.html:80 msgid "Import book" msgstr "Importer bok" -#: bookwyrm/templates/search/book.html:104 +#: bookwyrm/templates/search/book.html:106 msgid "Load results from other catalogues" msgstr "Last resultater fra andre kataloger" -#: bookwyrm/templates/search/book.html:108 +#: bookwyrm/templates/search/book.html:110 msgid "Manually add book" msgstr "Legg til bok manuelt" -#: bookwyrm/templates/search/book.html:113 +#: bookwyrm/templates/search/book.html:115 msgid "Log in to import or add books." msgstr "Logg på for å importere eller legge til bøker." @@ -3620,50 +3639,56 @@ msgstr "Lag hylle" msgid "Edit Shelf" msgstr "Rediger hylle" -#: bookwyrm/templates/shelf/shelf.html:28 bookwyrm/views/shelf/shelf.py:53 +#: bookwyrm/templates/shelf/shelf.html:24 +msgid "User profile" +msgstr "Brukerprofil" + +#: bookwyrm/templates/shelf/shelf.html:39 +#: bookwyrm/templates/snippets/translated_shelf_name.html:3 +#: bookwyrm/views/shelf/shelf.py:53 msgid "All books" msgstr "Alle bøker" -#: bookwyrm/templates/shelf/shelf.html:69 +#: bookwyrm/templates/shelf/shelf.html:72 msgid "Create shelf" msgstr "Lag hylle" -#: bookwyrm/templates/shelf/shelf.html:93 +#: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" msgid_plural "%(formatted_count)s books" msgstr[0] "%(formatted_count)s bok" msgstr[1] "%(formatted_count)s bøker" -#: bookwyrm/templates/shelf/shelf.html:100 +#: bookwyrm/templates/shelf/shelf.html:103 #, python-format msgid "(showing %(start)s-%(end)s)" msgstr "(viser %(start)s-%(end)s)" -#: bookwyrm/templates/shelf/shelf.html:112 +#: bookwyrm/templates/shelf/shelf.html:115 msgid "Edit shelf" msgstr "Rediger hylle" -#: bookwyrm/templates/shelf/shelf.html:120 +#: bookwyrm/templates/shelf/shelf.html:123 msgid "Delete shelf" msgstr "Slett hylle" -#: bookwyrm/templates/shelf/shelf.html:148 -#: bookwyrm/templates/shelf/shelf.html:174 +#: bookwyrm/templates/shelf/shelf.html:151 +#: bookwyrm/templates/shelf/shelf.html:177 msgid "Shelved" msgstr "Lagt på hylla" -#: bookwyrm/templates/shelf/shelf.html:149 -#: bookwyrm/templates/shelf/shelf.html:177 +#: bookwyrm/templates/shelf/shelf.html:152 +#: bookwyrm/templates/shelf/shelf.html:180 msgid "Started" msgstr "Startet" -#: bookwyrm/templates/shelf/shelf.html:150 -#: bookwyrm/templates/shelf/shelf.html:180 +#: bookwyrm/templates/shelf/shelf.html:153 +#: bookwyrm/templates/shelf/shelf.html:183 msgid "Finished" msgstr "Fullført" -#: bookwyrm/templates/shelf/shelf.html:206 +#: bookwyrm/templates/shelf/shelf.html:209 msgid "This shelf is empty." msgstr "Denne hylla er tom." @@ -3824,38 +3849,38 @@ msgstr "Fjern lik" msgid "Filters" msgstr "Filtre" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:11 -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:18 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:10 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:17 msgid "Filters are applied" msgstr "Filtrert visning" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:21 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:20 msgid "Clear filters" msgstr "Tøm filtre" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 msgid "Apply filters" msgstr "Bruk filtre" -#: bookwyrm/templates/snippets/follow_button.html:15 +#: bookwyrm/templates/snippets/follow_button.html:20 #, python-format msgid "Follow @%(username)s" msgstr "Følg %(username)s" -#: bookwyrm/templates/snippets/follow_button.html:17 +#: bookwyrm/templates/snippets/follow_button.html:22 msgid "Follow" msgstr "Følg" -#: bookwyrm/templates/snippets/follow_button.html:26 +#: bookwyrm/templates/snippets/follow_button.html:31 msgid "Undo follow request" msgstr "Angre følgeforespørsel" -#: bookwyrm/templates/snippets/follow_button.html:31 +#: bookwyrm/templates/snippets/follow_button.html:36 #, python-format msgid "Unfollow @%(username)s" msgstr "Slutt å følge @%(username)s" -#: bookwyrm/templates/snippets/follow_button.html:33 +#: bookwyrm/templates/snippets/follow_button.html:38 msgid "Unfollow" msgstr "Slutt å følge" @@ -3900,15 +3925,15 @@ msgstr[1] "vurderte %(title)s til: %(display_r #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Anmeldelse av \"%(book_title)s\" (%(display_rating)s stjerne): %(review_title)s" -msgstr[1] "Anmeldelse av \"%(book_title)s\" (%(display_rating)s stjerner): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "Vurdering av \"%(book_title)s\" (%(display_rating)s stjerne): %(review_title)s" +msgstr[1] "Vurdering av \"%(book_title)s\" (%(display_rating)s stjerner): %(review_title)s" -#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:8 +#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": %(review_title)s" -msgstr "Anmeldelse av \"%(book_title)s\": %(review_title)s" +msgid "Review of \"%(book_title)s\": {{ review_title }" +msgstr "Vurdering av \"%(book_title)s\": {{ review_title }" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -4011,17 +4036,6 @@ msgstr "Vurdér" msgid "Finish \"%(book_title)s\"" msgstr "Fullfør \"%(book_title)s\"" -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 -#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 -#: bookwyrm/templates/snippets/readthrough_form.html:9 -msgid "Started reading" -msgstr "Begynte å lese" - -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 -#: bookwyrm/templates/snippets/readthrough_form.html:23 -msgid "Finished reading" -msgstr "Leste ferdig" - #: bookwyrm/templates/snippets/reading_modals/form.html:9 msgid "(Optional)" msgstr "(Valgfritt)" @@ -4041,10 +4055,6 @@ msgstr "Start \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "Har lyst til å lese \"%(book_title)s\"" -#: bookwyrm/templates/snippets/readthrough_form.html:17 -msgid "Progress" -msgstr "Fremdrift" - #: bookwyrm/templates/snippets/register_form.html:30 msgid "Sign Up" msgstr "Registrer deg" @@ -4071,13 +4081,13 @@ msgstr "Mer informasjon om denne rapporten:" msgid "Move book" msgstr "Flytt bok" -#: bookwyrm/templates/snippets/shelf_selector.html:42 +#: bookwyrm/templates/snippets/shelf_selector.html:39 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:17 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:24 msgid "Start reading" msgstr "Begynn å lese" -#: bookwyrm/templates/snippets/shelf_selector.html:55 +#: bookwyrm/templates/snippets/shelf_selector.html:54 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:31 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:38 msgid "Want to read" @@ -4132,7 +4142,12 @@ msgstr "Skjul status" msgid "edited %(date)s" msgstr "endret %(date)s" -#: bookwyrm/templates/snippets/status/headers/comment.html:2 +#: bookwyrm/templates/snippets/status/headers/comment.html:8 +#, python-format +msgid "commented on %(book)s by %(author_name)s" +msgstr "kommenterte på %(book)s av %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/comment.html:15 #, python-format msgid "commented on %(book)s" msgstr "kommenterte på %(book)s" @@ -4142,7 +4157,12 @@ msgstr "kommenterte på %(book)s" msgid "replied to %(username)s's status" msgstr "svarte på %(username)s sin status" -#: bookwyrm/templates/snippets/status/headers/quotation.html:2 +#: bookwyrm/templates/snippets/status/headers/quotation.html:8 +#, python-format +msgid "quoted %(book)s by %(author_name)s" +msgstr "sitert %(book)s av %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/quotation.html:15 #, python-format msgid "quoted %(book)s" msgstr "siterte %(book)s" @@ -4152,25 +4172,45 @@ msgstr "siterte %(book)s" msgid "rated %(book)s:" msgstr "vurderte %(book)s:" -#: bookwyrm/templates/snippets/status/headers/read.html:7 +#: bookwyrm/templates/snippets/status/headers/read.html:10 +#, python-format +msgid "finished reading %(book)s by %(author_name)s" +msgstr "leste ferdig %(book)s av %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/read.html:17 #, python-format msgid "finished reading %(book)s" msgstr "leste ferdig %(book)s" -#: bookwyrm/templates/snippets/status/headers/reading.html:7 +#: bookwyrm/templates/snippets/status/headers/reading.html:10 +#, python-format +msgid "started reading %(book)s by %(author_name)s" +msgstr "begynte å lese %(book)s av %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/reading.html:17 #, python-format msgid "started reading %(book)s" msgstr "begynte å lese %(book)s" -#: bookwyrm/templates/snippets/status/headers/review.html:3 +#: bookwyrm/templates/snippets/status/headers/review.html:8 +#, python-format +msgid "reviewed %(book)s by %(author_name)s" +msgstr "anmeldte %(book)s av %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/review.html:15 #, python-format msgid "reviewed %(book)s" msgstr "anmeldte %(book)s" -#: bookwyrm/templates/snippets/status/headers/to_read.html:7 +#: bookwyrm/templates/snippets/status/headers/to_read.html:10 #, python-format -msgid "%(username)s wants to read %(book)s" -msgstr "%(username)s ønsker å lese %(book)s" +msgid "wants to read %(book)s by %(author_name)s" +msgstr "ønsker å lese %(book)s av %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/to_read.html:17 +#, python-format +msgid "wants to read %(book)s" +msgstr "ønsker å lese %(book)s" #: bookwyrm/templates/snippets/status/layout.html:24 #: bookwyrm/templates/snippets/status/status_options.html:17 @@ -4216,11 +4256,11 @@ msgstr "Vis mer" msgid "Show less" msgstr "Vis mindre" -#: bookwyrm/templates/user/books_header.html:10 +#: bookwyrm/templates/user/books_header.html:4 msgid "Your books" msgstr "Dine bøker" -#: bookwyrm/templates/user/books_header.html:15 +#: bookwyrm/templates/user/books_header.html:9 #, python-format msgid "%(username)s's books" msgstr "%(username)s sine bøker" diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo index c9f04b2275a17fc81cb9bbfab635159d7467d959..42c7060e157eed3c8d6ad2d7aaf46b38c6091a7c 100644 GIT binary patch delta 21419 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 delta 20348 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 gjzln%\n" "Language-Team: Portuguese, Brazilian\n" "Language: pt\n" @@ -54,8 +54,8 @@ msgstr "Ordem de inserção" msgid "Book Title" msgstr "Título do livro" -#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:152 -#: bookwyrm/templates/shelf/shelf.html:184 +#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:33 msgid "Rating" msgstr "Avaliação" @@ -72,6 +72,10 @@ msgstr "Crescente" msgid "Descending" msgstr "Decrescente" +#: bookwyrm/forms.py:491 +msgid "Reading finish date cannot be before start date." +msgstr "A data de término da leitura não pode ser anterior a de início." + #: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167 msgid "Error loading book" msgstr "Erro ao carregar livro" @@ -153,7 +157,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:280 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Resenhas" @@ -631,11 +635,11 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/readthrough.html:82 #: bookwyrm/templates/groups/form.html:30 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:124 +#: bookwyrm/templates/readthrough/readthrough_modal.html:72 #: bookwyrm/templates/settings/announcements/announcement_form.html:76 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 @@ -648,15 +652,15 @@ msgstr "Salvar" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 -#: bookwyrm/templates/book/book.html:194 bookwyrm/templates/book/book.html:252 +#: bookwyrm/templates/book/book.html:194 #: bookwyrm/templates/book/cover_add_modal.html:32 -#: bookwyrm/templates/book/delete_readthrough_modal.html:23 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 -#: bookwyrm/templates/book/readthrough.html:83 #: bookwyrm/templates/book/sync_modal.html:23 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:18 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/federation/instance.html:88 #: bookwyrm/templates/snippets/report_modal.html:38 msgid "Cancel" @@ -727,39 +731,35 @@ msgstr "Uma edição diferente deste livro está e msgid "Your reading activity" msgstr "Andamento da sua leitura" -#: bookwyrm/templates/book/book.html:240 +#: bookwyrm/templates/book/book.html:243 msgid "Add read dates" msgstr "Adicionar registro de leitura" -#: bookwyrm/templates/book/book.html:249 -msgid "Create" -msgstr "Criar" - -#: bookwyrm/templates/book/book.html:259 +#: bookwyrm/templates/book/book.html:251 msgid "You don't have any reading activity for this book." msgstr "Você ainda não registrou sua leitura." -#: bookwyrm/templates/book/book.html:285 +#: bookwyrm/templates/book/book.html:277 msgid "Your reviews" msgstr "Suas resenhas" -#: bookwyrm/templates/book/book.html:291 +#: bookwyrm/templates/book/book.html:283 msgid "Your comments" msgstr "Seus comentários" -#: bookwyrm/templates/book/book.html:297 +#: bookwyrm/templates/book/book.html:289 msgid "Your quotes" msgstr "Suas citações" -#: bookwyrm/templates/book/book.html:333 +#: bookwyrm/templates/book/book.html:325 msgid "Subjects" msgstr "Assuntos" -#: bookwyrm/templates/book/book.html:345 +#: bookwyrm/templates/book/book.html:337 msgid "Places" msgstr "Lugares" -#: bookwyrm/templates/book/book.html:356 +#: bookwyrm/templates/book/book.html:348 #: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74 #: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 @@ -769,11 +769,11 @@ msgstr "Lugares" msgid "Lists" msgstr "Listas" -#: bookwyrm/templates/book/book.html:367 +#: bookwyrm/templates/book/book.html:359 msgid "Add to list" msgstr "Adicionar à lista" -#: bookwyrm/templates/book/book.html:377 +#: bookwyrm/templates/book/book.html:369 #: bookwyrm/templates/book/cover_add_modal.html:31 #: bookwyrm/templates/lists/list.html:208 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 @@ -818,39 +818,13 @@ msgstr "Pré-visualização da capa" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:65 +#: bookwyrm/templates/feed/suggested_books.html:62 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 #: bookwyrm/templates/snippets/announcement.html:18 msgid "Close" msgstr "Fechar" -#: bookwyrm/templates/book/delete_readthrough_modal.html:4 -msgid "Delete these read dates?" -msgstr "Excluir as datas de leitura?" - -#: bookwyrm/templates/book/delete_readthrough_modal.html:8 -#, python-format -msgid "You are deleting this readthrough and its %(count)s associated progress updates." -msgstr "Você está excluindo este registro de leitura e as %(count)s atualizações de andamento associadas." - -#: bookwyrm/templates/book/delete_readthrough_modal.html:12 -#: bookwyrm/templates/groups/delete_group_modal.html:7 -#: bookwyrm/templates/lists/delete_list_modal.html:7 -msgid "This action cannot be un-done" -msgstr "Esta ação não pode ser desfeita" - -#: bookwyrm/templates/book/delete_readthrough_modal.html:21 -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/settings/announcements/announcement.html:20 -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 -#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 -#: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 -msgid "Delete" -msgstr "Excluir" - #: bookwyrm/templates/book/edit/edit_book.html:6 #: bookwyrm/templates/book/edit/edit_book.html:12 #, python-format @@ -972,7 +946,7 @@ msgid "Add Another Author" msgstr "Adicionar outro/a autor/a" #: bookwyrm/templates/book/edit/edit_book_form.html:160 -#: bookwyrm/templates/shelf/shelf.html:143 +#: bookwyrm/templates/shelf/shelf.html:146 msgid "Cover" msgstr "Capa" @@ -1067,35 +1041,6 @@ msgstr "Publicado por %(publisher)s." msgid "rated it" msgstr "avaliou este livro" -#: bookwyrm/templates/book/readthrough.html:9 -msgid "Progress Updates:" -msgstr "Registro de leitura:" - -#: bookwyrm/templates/book/readthrough.html:14 -msgid "finished" -msgstr "terminado" - -#: bookwyrm/templates/book/readthrough.html:25 -msgid "Show all updates" -msgstr "Mostrar andamento da leitura" - -#: bookwyrm/templates/book/readthrough.html:41 -msgid "Delete this progress update" -msgstr "Excluir esta atualização de andamento" - -#: bookwyrm/templates/book/readthrough.html:53 -msgid "started" -msgstr "iniciado" - -#: bookwyrm/templates/book/readthrough.html:60 -#: bookwyrm/templates/book/readthrough.html:78 -msgid "Edit read dates" -msgstr "Editar registro de leitura" - -#: bookwyrm/templates/book/readthrough.html:64 -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." @@ -1477,39 +1422,6 @@ msgstr "Seus livros" msgid "There are no books here right now! Try searching for a book to get started" msgstr "Não há nenhum livro aqui! Tente pesquisar livros para começar" -#: bookwyrm/templates/feed/suggested_books.html:19 -#: bookwyrm/templates/get_started/book_preview.html:10 -#: bookwyrm/templates/shelf/shelf.html:38 -#: bookwyrm/templates/shelf/shelf.html:83 -#: bookwyrm/templates/snippets/shelf_selector.html:28 -#: bookwyrm/templates/user/books_header.html:4 -#: bookwyrm/templates/user/user.html:33 -msgid "To Read" -msgstr "Quero ler" - -#: bookwyrm/templates/feed/suggested_books.html:20 -#: bookwyrm/templates/get_started/book_preview.html:11 -#: bookwyrm/templates/shelf/shelf.html:40 -#: bookwyrm/templates/shelf/shelf.html:84 -#: bookwyrm/templates/snippets/shelf_selector.html:29 -#: bookwyrm/templates/user/books_header.html:6 -#: bookwyrm/templates/user/user.html:34 -msgid "Currently Reading" -msgstr "Lendo atualmente" - -#: bookwyrm/templates/feed/suggested_books.html:21 -#: bookwyrm/templates/get_started/book_preview.html:12 -#: bookwyrm/templates/shelf/shelf.html:42 -#: bookwyrm/templates/shelf/shelf.html:85 -#: bookwyrm/templates/snippets/shelf_selector.html:30 -#: bookwyrm/templates/snippets/shelf_selector.html:49 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 -#: bookwyrm/templates/user/books_header.html:8 -#: bookwyrm/templates/user/user.html:35 -msgid "Read" -msgstr "Lido" - #: bookwyrm/templates/feed/suggested_users.html:5 #: bookwyrm/templates/get_started/users.html:6 msgid "Who to follow" @@ -1541,6 +1453,30 @@ msgstr "Você leu %(book_title)s?" msgid "Add to your books" msgstr "Adicionar aos seus livros" +#: bookwyrm/templates/get_started/book_preview.html:10 +#: bookwyrm/templates/shelf/shelf.html:86 +#: bookwyrm/templates/snippets/translated_shelf_name.html:5 +#: bookwyrm/templates/user/user.html:33 +msgid "To Read" +msgstr "Quero ler" + +#: bookwyrm/templates/get_started/book_preview.html:11 +#: bookwyrm/templates/shelf/shelf.html:87 +#: bookwyrm/templates/snippets/translated_shelf_name.html:7 +#: bookwyrm/templates/user/user.html:34 +msgid "Currently Reading" +msgstr "Lendo atualmente" + +#: bookwyrm/templates/get_started/book_preview.html:12 +#: bookwyrm/templates/shelf/shelf.html:88 +#: bookwyrm/templates/snippets/shelf_selector.html:47 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 +#: bookwyrm/templates/snippets/translated_shelf_name.html:9 +#: bookwyrm/templates/user/user.html:35 +msgid "Read" +msgstr "Lido" + #: bookwyrm/templates/get_started/books.html:6 msgid "What are you reading?" msgstr "O que você está lendo?" @@ -1674,6 +1610,23 @@ msgstr "Gerenciado por %(username)s" msgid "Delete this group?" msgstr "Deletar grupo?" +#: bookwyrm/templates/groups/delete_group_modal.html:7 +#: bookwyrm/templates/lists/delete_list_modal.html:7 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:12 +msgid "This action cannot be un-done" +msgstr "Esta ação não pode ser desfeita" + +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/delete_list_modal.html:15 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/settings/announcements/announcement.html:20 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 +#: bookwyrm/templates/snippets/follow_request_buttons.html:12 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +msgid "Delete" +msgstr "Excluir" + #: bookwyrm/templates/groups/edit_form.html:5 msgid "Edit Group" msgstr "Editar grupo" @@ -1754,7 +1707,7 @@ msgstr "Gerente" #: bookwyrm/templates/import/import.html:5 #: bookwyrm/templates/import/import.html:9 -#: bookwyrm/templates/shelf/shelf.html:61 +#: bookwyrm/templates/shelf/shelf.html:64 msgid "Import Books" msgstr "Importar livros" @@ -1842,8 +1795,8 @@ msgid "Row" msgstr "Linha" #: bookwyrm/templates/import/import_status.html:103 -#: bookwyrm/templates/shelf/shelf.html:144 -#: bookwyrm/templates/shelf/shelf.html:166 +#: bookwyrm/templates/shelf/shelf.html:147 +#: bookwyrm/templates/shelf/shelf.html:169 msgid "Title" msgstr "Título" @@ -1856,8 +1809,8 @@ msgid "Openlibrary key" msgstr "Chave Openlibrary" #: bookwyrm/templates/import/import_status.html:114 -#: bookwyrm/templates/shelf/shelf.html:145 -#: bookwyrm/templates/shelf/shelf.html:169 +#: bookwyrm/templates/shelf/shelf.html:148 +#: bookwyrm/templates/shelf/shelf.html:172 msgid "Author" msgstr "Autor/a" @@ -1977,7 +1930,7 @@ msgstr "Permissão negada" msgid "Sorry! This invite code is no longer valid." msgstr "Desculpe! Este convite não é mais válido." -#: bookwyrm/templates/landing/landing.html:7 +#: bookwyrm/templates/landing/landing.html:9 msgid "Recent Books" msgstr "Livros recentes" @@ -2736,23 +2689,89 @@ msgstr "Começar \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "Quero ler \"%(book_title)s\"" +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:4 +msgid "Delete these read dates?" +msgstr "Excluir as datas de leitura?" + +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:8 +#, python-format +msgid "You are deleting this readthrough and its %(count)s associated progress updates." +msgstr "Você está excluindo este registro de leitura e as %(count)s atualizações de andamento associadas." + +#: bookwyrm/templates/readthrough/readthrough.html:6 +#: bookwyrm/templates/readthrough/readthrough_modal.html:8 +#, python-format +msgid "Update read dates for \"%(title)s\"" +msgstr "Atualizar datas de leitura de \"%(title)s\"" + +#: bookwyrm/templates/readthrough/readthrough_form.html:10 +#: bookwyrm/templates/readthrough/readthrough_modal.html:31 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 +#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 +msgid "Started reading" +msgstr "Começou a ler" + +#: bookwyrm/templates/readthrough/readthrough_form.html:18 +#: bookwyrm/templates/readthrough/readthrough_modal.html:49 +msgid "Progress" +msgstr "Andamento" + +#: bookwyrm/templates/readthrough/readthrough_form.html:24 +#: bookwyrm/templates/readthrough/readthrough_modal.html:56 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 +msgid "Finished reading" +msgstr "Terminou de ler" + +#: bookwyrm/templates/readthrough/readthrough_list.html:9 +msgid "Progress Updates:" +msgstr "Registro de leitura:" + +#: bookwyrm/templates/readthrough/readthrough_list.html:14 +msgid "finished" +msgstr "terminado" + +#: bookwyrm/templates/readthrough/readthrough_list.html:25 +msgid "Show all updates" +msgstr "Mostrar andamento da leitura" + +#: bookwyrm/templates/readthrough/readthrough_list.html:41 +msgid "Delete this progress update" +msgstr "Excluir esta atualização de andamento" + +#: bookwyrm/templates/readthrough/readthrough_list.html:53 +msgid "started" +msgstr "iniciado" + +#: bookwyrm/templates/readthrough/readthrough_list.html:60 +msgid "Edit read dates" +msgstr "Editar registro de leitura" + +#: bookwyrm/templates/readthrough/readthrough_list.html:68 +msgid "Delete these read dates" +msgstr "Excluir estas datas de leitura" + +#: bookwyrm/templates/readthrough/readthrough_modal.html:12 +#, python-format +msgid "Add read dates for \"%(title)s\"" +msgstr "Adicionar datas de leitura de \"%(title)s\"" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "Resultados de" -#: bookwyrm/templates/search/book.html:79 +#: bookwyrm/templates/search/book.html:80 msgid "Import book" msgstr "Importar livro" -#: bookwyrm/templates/search/book.html:104 +#: bookwyrm/templates/search/book.html:106 msgid "Load results from other catalogues" msgstr "Carregar resultados de outros acervos" -#: bookwyrm/templates/search/book.html:108 +#: bookwyrm/templates/search/book.html:110 msgid "Manually add book" msgstr "Adicionar livro manualmente" -#: bookwyrm/templates/search/book.html:113 +#: bookwyrm/templates/search/book.html:115 msgid "Log in to import or add books." msgstr "Entre para importar ou adicionar livros." @@ -3619,50 +3638,56 @@ msgstr "Criar estante" msgid "Edit Shelf" msgstr "Editar estante" -#: bookwyrm/templates/shelf/shelf.html:28 bookwyrm/views/shelf/shelf.py:53 +#: bookwyrm/templates/shelf/shelf.html:24 +msgid "User profile" +msgstr "Perfil do usuário" + +#: bookwyrm/templates/shelf/shelf.html:39 +#: bookwyrm/templates/snippets/translated_shelf_name.html:3 +#: bookwyrm/views/shelf/shelf.py:53 msgid "All books" msgstr "Todos os livros" -#: bookwyrm/templates/shelf/shelf.html:69 +#: bookwyrm/templates/shelf/shelf.html:72 msgid "Create shelf" msgstr "Criar estante" -#: bookwyrm/templates/shelf/shelf.html:93 +#: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" msgid_plural "%(formatted_count)s books" msgstr[0] "%(formatted_count)s livro" msgstr[1] "%(formatted_count)s livros" -#: bookwyrm/templates/shelf/shelf.html:100 +#: bookwyrm/templates/shelf/shelf.html:103 #, python-format msgid "(showing %(start)s-%(end)s)" msgstr "(mostrando %(start)s-%(end)s)" -#: bookwyrm/templates/shelf/shelf.html:112 +#: bookwyrm/templates/shelf/shelf.html:115 msgid "Edit shelf" msgstr "Editar estante" -#: bookwyrm/templates/shelf/shelf.html:120 +#: bookwyrm/templates/shelf/shelf.html:123 msgid "Delete shelf" msgstr "Excluir estante" -#: bookwyrm/templates/shelf/shelf.html:148 -#: bookwyrm/templates/shelf/shelf.html:174 +#: bookwyrm/templates/shelf/shelf.html:151 +#: bookwyrm/templates/shelf/shelf.html:177 msgid "Shelved" msgstr "Adicionado" -#: bookwyrm/templates/shelf/shelf.html:149 -#: bookwyrm/templates/shelf/shelf.html:177 +#: bookwyrm/templates/shelf/shelf.html:152 +#: bookwyrm/templates/shelf/shelf.html:180 msgid "Started" msgstr "Iniciado" -#: bookwyrm/templates/shelf/shelf.html:150 -#: bookwyrm/templates/shelf/shelf.html:180 +#: bookwyrm/templates/shelf/shelf.html:153 +#: bookwyrm/templates/shelf/shelf.html:183 msgid "Finished" msgstr "Terminado" -#: bookwyrm/templates/shelf/shelf.html:206 +#: bookwyrm/templates/shelf/shelf.html:209 msgid "This shelf is empty." msgstr "Esta estante está vazia." @@ -3823,38 +3848,38 @@ msgstr "Descurtir" msgid "Filters" msgstr "Filtros" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:11 -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:18 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:10 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:17 msgid "Filters are applied" msgstr "Filtros aplicados" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:21 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:20 msgid "Clear filters" msgstr "Limpar filtros" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 msgid "Apply filters" msgstr "Aplicar filtros" -#: bookwyrm/templates/snippets/follow_button.html:15 +#: bookwyrm/templates/snippets/follow_button.html:20 #, python-format msgid "Follow @%(username)s" msgstr "Seguir @%(username)s" -#: bookwyrm/templates/snippets/follow_button.html:17 +#: bookwyrm/templates/snippets/follow_button.html:22 msgid "Follow" msgstr "Seguir" -#: bookwyrm/templates/snippets/follow_button.html:26 +#: bookwyrm/templates/snippets/follow_button.html:31 msgid "Undo follow request" msgstr "Cancelar solicitação para seguir" -#: bookwyrm/templates/snippets/follow_button.html:31 +#: bookwyrm/templates/snippets/follow_button.html:36 #, python-format msgid "Unfollow @%(username)s" msgstr "Deixar de seguir @%(username)s" -#: bookwyrm/templates/snippets/follow_button.html:33 +#: bookwyrm/templates/snippets/follow_button.html:38 msgid "Unfollow" msgstr "Deixar de seguir" @@ -3899,15 +3924,15 @@ msgstr[1] "avaliou %(title)s: %(display_rating #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Resenha de \"%(book_title)s\" (%(display_rating)s estrela): %(review_title)s" -msgstr[1] "Resenha de \"%(book_title)s\" (%(display_rating)s estrelas): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "Resenha de \"%(book_title)s\" (%(display_rating)s estrela): %(review_title)s" +msgstr[1] "Resenha de \"%(book_title)s\" (%(display_rating)s estrelas): %(review_title)s" -#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:8 +#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": %(review_title)s" -msgstr "Resenha de \"%(book_title)s\": %(review_title)s" +msgid "Review of \"%(book_title)s\": {{ review_title }" +msgstr "Resenha de \"%(book_title)s\": {{ review_title }" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -4010,17 +4035,6 @@ msgstr "Avaliar" msgid "Finish \"%(book_title)s\"" msgstr "Terminar \"%(book_title)s\"" -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 -#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 -#: bookwyrm/templates/snippets/readthrough_form.html:9 -msgid "Started reading" -msgstr "Começou a ler" - -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 -#: bookwyrm/templates/snippets/readthrough_form.html:23 -msgid "Finished reading" -msgstr "Terminou de ler" - #: bookwyrm/templates/snippets/reading_modals/form.html:9 msgid "(Optional)" msgstr "(Opcional)" @@ -4040,10 +4054,6 @@ msgstr "Começar \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "Quero ler \"%(book_title)s\"" -#: bookwyrm/templates/snippets/readthrough_form.html:17 -msgid "Progress" -msgstr "Andamento" - #: bookwyrm/templates/snippets/register_form.html:30 msgid "Sign Up" msgstr "Cadastrar" @@ -4070,13 +4080,13 @@ msgstr "Mais informações sobre esta denúncia:" msgid "Move book" msgstr "Mover livro" -#: bookwyrm/templates/snippets/shelf_selector.html:42 +#: bookwyrm/templates/snippets/shelf_selector.html:39 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:17 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:24 msgid "Start reading" msgstr "Começar a ler" -#: bookwyrm/templates/snippets/shelf_selector.html:55 +#: bookwyrm/templates/snippets/shelf_selector.html:54 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:31 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:38 msgid "Want to read" @@ -4131,7 +4141,12 @@ msgstr "Esconder publicação" msgid "edited %(date)s" msgstr "editado %(date)s" -#: bookwyrm/templates/snippets/status/headers/comment.html:2 +#: bookwyrm/templates/snippets/status/headers/comment.html:8 +#, python-format +msgid "commented on %(book)s by %(author_name)s" +msgstr "comentou %(book)s de %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/comment.html:15 #, python-format msgid "commented on %(book)s" msgstr "comentou %(book)s" @@ -4141,7 +4156,12 @@ msgstr "comentou %(book)s" msgid "replied to %(username)s's status" msgstr "respondeu à publicação de %(username)s" -#: bookwyrm/templates/snippets/status/headers/quotation.html:2 +#: bookwyrm/templates/snippets/status/headers/quotation.html:8 +#, python-format +msgid "quoted %(book)s by %(author_name)s" +msgstr "citou %(book)s de %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/quotation.html:15 #, python-format msgid "quoted %(book)s" msgstr "citou %(book)s" @@ -4151,25 +4171,45 @@ msgstr "citou %(book)s" msgid "rated %(book)s:" msgstr "avaliou %(book)s:" -#: bookwyrm/templates/snippets/status/headers/read.html:7 +#: bookwyrm/templates/snippets/status/headers/read.html:10 +#, python-format +msgid "finished reading %(book)s by %(author_name)s" +msgstr "terminou de ler %(book)s de %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/read.html:17 #, python-format msgid "finished reading %(book)s" msgstr "terminou de ler %(book)s" -#: bookwyrm/templates/snippets/status/headers/reading.html:7 +#: bookwyrm/templates/snippets/status/headers/reading.html:10 +#, python-format +msgid "started reading %(book)s by %(author_name)s" +msgstr "começou a ler %(book)s de %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/reading.html:17 #, python-format msgid "started reading %(book)s" msgstr "começou a ler %(book)s" -#: bookwyrm/templates/snippets/status/headers/review.html:3 +#: bookwyrm/templates/snippets/status/headers/review.html:8 +#, python-format +msgid "reviewed %(book)s by %(author_name)s" +msgstr "resenhou %(book)s de %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/review.html:15 #, python-format msgid "reviewed %(book)s" msgstr "resenhou %(book)s" -#: bookwyrm/templates/snippets/status/headers/to_read.html:7 +#: bookwyrm/templates/snippets/status/headers/to_read.html:10 #, python-format -msgid "%(username)s wants to read %(book)s" -msgstr "%(username)s quer ler %(book)s" +msgid "wants to read %(book)s by %(author_name)s" +msgstr "quer ler %(book)s de %(author_name)s" + +#: bookwyrm/templates/snippets/status/headers/to_read.html:17 +#, python-format +msgid "wants to read %(book)s" +msgstr "quer ler %(book)s" #: bookwyrm/templates/snippets/status/layout.html:24 #: bookwyrm/templates/snippets/status/status_options.html:17 @@ -4215,11 +4255,11 @@ msgstr "Mostrar mais" msgid "Show less" msgstr "Mostrar menos" -#: bookwyrm/templates/user/books_header.html:10 +#: bookwyrm/templates/user/books_header.html:4 msgid "Your books" msgstr "Seus livros" -#: bookwyrm/templates/user/books_header.html:15 +#: bookwyrm/templates/user/books_header.html:9 #, python-format msgid "%(username)s's books" msgstr "livros de %(username)s" diff --git a/locale/pt_PT/LC_MESSAGES/django.mo b/locale/pt_PT/LC_MESSAGES/django.mo index 9240a04508a82d7eed8ed41db4272ef91c9fc123..101aafaa1dc2330bebbe02366672499dd2660c5b 100644 GIT binary patch delta 19880 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\n" "Language-Team: Portuguese\n" "Language: pt\n" @@ -54,8 +54,8 @@ msgstr "Ordem da Lista" msgid "Book Title" msgstr "Título do livro" -#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:152 -#: bookwyrm/templates/shelf/shelf.html:184 +#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:33 msgid "Rating" msgstr "Classificação" @@ -72,6 +72,10 @@ msgstr "Ascendente" msgid "Descending" msgstr "Descendente" +#: bookwyrm/forms.py:491 +msgid "Reading finish date cannot be before start date." +msgstr "" + #: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167 msgid "Error loading book" msgstr "Erro ao carregar o livro" @@ -153,7 +157,7 @@ msgstr "nome de utilizador" msgid "A user with that username already exists." msgstr "Um utilizador com o mesmo nome de utilizador já existe." -#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:280 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Criticas" @@ -630,11 +634,11 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/readthrough.html:82 #: bookwyrm/templates/groups/form.html:30 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:124 +#: bookwyrm/templates/readthrough/readthrough_modal.html:72 #: bookwyrm/templates/settings/announcements/announcement_form.html:76 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 @@ -647,15 +651,15 @@ msgstr "Salvar" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 -#: bookwyrm/templates/book/book.html:194 bookwyrm/templates/book/book.html:252 +#: bookwyrm/templates/book/book.html:194 #: bookwyrm/templates/book/cover_add_modal.html:32 -#: bookwyrm/templates/book/delete_readthrough_modal.html:23 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 -#: bookwyrm/templates/book/readthrough.html:83 #: bookwyrm/templates/book/sync_modal.html:23 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:18 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/federation/instance.html:88 #: bookwyrm/templates/snippets/report_modal.html:38 msgid "Cancel" @@ -726,39 +730,35 @@ msgstr "Uma edição diferente deste livro está n msgid "Your reading activity" msgstr "A tua atividade de leitura" -#: bookwyrm/templates/book/book.html:240 +#: bookwyrm/templates/book/book.html:243 msgid "Add read dates" msgstr "Adicionar datas de leitura" -#: bookwyrm/templates/book/book.html:249 -msgid "Create" -msgstr "Criar" - -#: bookwyrm/templates/book/book.html:259 +#: bookwyrm/templates/book/book.html:251 msgid "You don't have any reading activity for this book." msgstr "Não tem nenhuma atividade de leitura para este livro." -#: bookwyrm/templates/book/book.html:285 +#: bookwyrm/templates/book/book.html:277 msgid "Your reviews" msgstr "As tuas criticas" -#: bookwyrm/templates/book/book.html:291 +#: bookwyrm/templates/book/book.html:283 msgid "Your comments" msgstr "Os teus comentários" -#: bookwyrm/templates/book/book.html:297 +#: bookwyrm/templates/book/book.html:289 msgid "Your quotes" msgstr "As tuas citações" -#: bookwyrm/templates/book/book.html:333 +#: bookwyrm/templates/book/book.html:325 msgid "Subjects" msgstr "Temas/Áreas" -#: bookwyrm/templates/book/book.html:345 +#: bookwyrm/templates/book/book.html:337 msgid "Places" msgstr "Lugares" -#: bookwyrm/templates/book/book.html:356 +#: bookwyrm/templates/book/book.html:348 #: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:74 #: bookwyrm/templates/lists/curate.html:7 bookwyrm/templates/lists/list.html:10 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 @@ -768,11 +768,11 @@ msgstr "Lugares" msgid "Lists" msgstr "Listas" -#: bookwyrm/templates/book/book.html:367 +#: bookwyrm/templates/book/book.html:359 msgid "Add to list" msgstr "Adicionar à lista" -#: bookwyrm/templates/book/book.html:377 +#: bookwyrm/templates/book/book.html:369 #: bookwyrm/templates/book/cover_add_modal.html:31 #: bookwyrm/templates/lists/list.html:208 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 @@ -817,39 +817,13 @@ msgstr "Visualização da capa" #: bookwyrm/templates/components/modal.html:13 #: bookwyrm/templates/components/modal.html:30 #: bookwyrm/templates/components/tooltip.html:7 -#: bookwyrm/templates/feed/suggested_books.html:65 +#: bookwyrm/templates/feed/suggested_books.html:62 #: bookwyrm/templates/get_started/layout.html:25 #: bookwyrm/templates/get_started/layout.html:58 #: bookwyrm/templates/snippets/announcement.html:18 msgid "Close" msgstr "Fechar" -#: bookwyrm/templates/book/delete_readthrough_modal.html:4 -msgid "Delete these read dates?" -msgstr "Apagar estas datas de leitura?" - -#: bookwyrm/templates/book/delete_readthrough_modal.html:8 -#, python-format -msgid "You are deleting this readthrough and its %(count)s associated progress updates." -msgstr "Estás a apagar esta leitura e suas atualizações de progresso %(count)s associadas." - -#: bookwyrm/templates/book/delete_readthrough_modal.html:12 -#: bookwyrm/templates/groups/delete_group_modal.html:7 -#: bookwyrm/templates/lists/delete_list_modal.html:7 -msgid "This action cannot be un-done" -msgstr "Esta ação não pode ser desfeita" - -#: bookwyrm/templates/book/delete_readthrough_modal.html:21 -#: bookwyrm/templates/groups/delete_group_modal.html:15 -#: bookwyrm/templates/lists/delete_list_modal.html:15 -#: bookwyrm/templates/settings/announcements/announcement.html:20 -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 -#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 -#: bookwyrm/templates/snippets/follow_request_buttons.html:12 -#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 -msgid "Delete" -msgstr "Apagar" - #: bookwyrm/templates/book/edit/edit_book.html:6 #: bookwyrm/templates/book/edit/edit_book.html:12 #, python-format @@ -971,7 +945,7 @@ msgid "Add Another Author" msgstr "Adicionar outro autor(a)" #: bookwyrm/templates/book/edit/edit_book_form.html:160 -#: bookwyrm/templates/shelf/shelf.html:143 +#: bookwyrm/templates/shelf/shelf.html:146 msgid "Cover" msgstr "Capa" @@ -1066,35 +1040,6 @@ msgstr "Publicado por %(publisher)s." msgid "rated it" msgstr "avalia-o" -#: bookwyrm/templates/book/readthrough.html:9 -msgid "Progress Updates:" -msgstr "Atualizações do progresso:" - -#: bookwyrm/templates/book/readthrough.html:14 -msgid "finished" -msgstr "concluído" - -#: bookwyrm/templates/book/readthrough.html:25 -msgid "Show all updates" -msgstr "Mostrar todas as atualizações" - -#: bookwyrm/templates/book/readthrough.html:41 -msgid "Delete this progress update" -msgstr "Excluir esta atualização do progresso" - -#: bookwyrm/templates/book/readthrough.html:53 -msgid "started" -msgstr "iniciado" - -#: bookwyrm/templates/book/readthrough.html:60 -#: bookwyrm/templates/book/readthrough.html:78 -msgid "Edit read dates" -msgstr "Editar datas de leitura" - -#: bookwyrm/templates/book/readthrough.html:64 -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." @@ -1476,39 +1421,6 @@ msgstr "Os teus Livros" msgid "There are no books here right now! Try searching for a book to get started" msgstr "Não há nenhum livro aqui de momento! Tente procurar um livro para começar" -#: bookwyrm/templates/feed/suggested_books.html:19 -#: bookwyrm/templates/get_started/book_preview.html:10 -#: bookwyrm/templates/shelf/shelf.html:38 -#: bookwyrm/templates/shelf/shelf.html:83 -#: bookwyrm/templates/snippets/shelf_selector.html:28 -#: bookwyrm/templates/user/books_header.html:4 -#: bookwyrm/templates/user/user.html:33 -msgid "To Read" -msgstr "Para Ler" - -#: bookwyrm/templates/feed/suggested_books.html:20 -#: bookwyrm/templates/get_started/book_preview.html:11 -#: bookwyrm/templates/shelf/shelf.html:40 -#: bookwyrm/templates/shelf/shelf.html:84 -#: bookwyrm/templates/snippets/shelf_selector.html:29 -#: bookwyrm/templates/user/books_header.html:6 -#: bookwyrm/templates/user/user.html:34 -msgid "Currently Reading" -msgstr "Leituras atuais" - -#: bookwyrm/templates/feed/suggested_books.html:21 -#: bookwyrm/templates/get_started/book_preview.html:12 -#: bookwyrm/templates/shelf/shelf.html:42 -#: bookwyrm/templates/shelf/shelf.html:85 -#: bookwyrm/templates/snippets/shelf_selector.html:30 -#: bookwyrm/templates/snippets/shelf_selector.html:49 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 -#: bookwyrm/templates/user/books_header.html:8 -#: bookwyrm/templates/user/user.html:35 -msgid "Read" -msgstr "Ler" - #: bookwyrm/templates/feed/suggested_users.html:5 #: bookwyrm/templates/get_started/users.html:6 msgid "Who to follow" @@ -1540,6 +1452,30 @@ msgstr "Já leste %(book_title)s?" msgid "Add to your books" msgstr "Adicionar aos teus livros" +#: bookwyrm/templates/get_started/book_preview.html:10 +#: bookwyrm/templates/shelf/shelf.html:86 +#: bookwyrm/templates/snippets/translated_shelf_name.html:5 +#: bookwyrm/templates/user/user.html:33 +msgid "To Read" +msgstr "Para Ler" + +#: bookwyrm/templates/get_started/book_preview.html:11 +#: bookwyrm/templates/shelf/shelf.html:87 +#: bookwyrm/templates/snippets/translated_shelf_name.html:7 +#: bookwyrm/templates/user/user.html:34 +msgid "Currently Reading" +msgstr "Leituras atuais" + +#: bookwyrm/templates/get_started/book_preview.html:12 +#: bookwyrm/templates/shelf/shelf.html:88 +#: bookwyrm/templates/snippets/shelf_selector.html:47 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 +#: bookwyrm/templates/snippets/translated_shelf_name.html:9 +#: bookwyrm/templates/user/user.html:35 +msgid "Read" +msgstr "Ler" + #: bookwyrm/templates/get_started/books.html:6 msgid "What are you reading?" msgstr "O que andas a ler?" @@ -1673,6 +1609,23 @@ msgstr "Gerido por %(username)s" msgid "Delete this group?" msgstr "Apagar este grupo?" +#: bookwyrm/templates/groups/delete_group_modal.html:7 +#: bookwyrm/templates/lists/delete_list_modal.html:7 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:12 +msgid "This action cannot be un-done" +msgstr "Esta ação não pode ser desfeita" + +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/delete_list_modal.html:15 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/settings/announcements/announcement.html:20 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 +#: bookwyrm/templates/snippets/follow_request_buttons.html:12 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +msgid "Delete" +msgstr "Apagar" + #: bookwyrm/templates/groups/edit_form.html:5 msgid "Edit Group" msgstr "Editar Grupo" @@ -1753,7 +1706,7 @@ msgstr "Gestor" #: bookwyrm/templates/import/import.html:5 #: bookwyrm/templates/import/import.html:9 -#: bookwyrm/templates/shelf/shelf.html:61 +#: bookwyrm/templates/shelf/shelf.html:64 msgid "Import Books" msgstr "Importar livros" @@ -1841,8 +1794,8 @@ msgid "Row" msgstr "Linha" #: bookwyrm/templates/import/import_status.html:103 -#: bookwyrm/templates/shelf/shelf.html:144 -#: bookwyrm/templates/shelf/shelf.html:166 +#: bookwyrm/templates/shelf/shelf.html:147 +#: bookwyrm/templates/shelf/shelf.html:169 msgid "Title" msgstr "Título" @@ -1855,8 +1808,8 @@ msgid "Openlibrary key" msgstr "Id da Openlibrary" #: bookwyrm/templates/import/import_status.html:114 -#: bookwyrm/templates/shelf/shelf.html:145 -#: bookwyrm/templates/shelf/shelf.html:169 +#: bookwyrm/templates/shelf/shelf.html:148 +#: bookwyrm/templates/shelf/shelf.html:172 msgid "Author" msgstr "Autor(a)" @@ -1976,7 +1929,7 @@ msgstr "Permissão negada" msgid "Sorry! This invite code is no longer valid." msgstr "Lamentamos, mas este convite já não é válido." -#: bookwyrm/templates/landing/landing.html:7 +#: bookwyrm/templates/landing/landing.html:9 msgid "Recent Books" msgstr "Livros Recentes" @@ -2735,23 +2688,89 @@ msgstr "Começar \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "Quereres ler %(book_title)s\"" +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:4 +msgid "Delete these read dates?" +msgstr "Apagar estas datas de leitura?" + +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:8 +#, python-format +msgid "You are deleting this readthrough and its %(count)s associated progress updates." +msgstr "Estás a apagar esta leitura e suas atualizações de progresso %(count)s associadas." + +#: bookwyrm/templates/readthrough/readthrough.html:6 +#: bookwyrm/templates/readthrough/readthrough_modal.html:8 +#, python-format +msgid "Update read dates for \"%(title)s\"" +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough_form.html:10 +#: bookwyrm/templates/readthrough/readthrough_modal.html:31 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 +#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 +msgid "Started reading" +msgstr "Leitura iniciada" + +#: bookwyrm/templates/readthrough/readthrough_form.html:18 +#: bookwyrm/templates/readthrough/readthrough_modal.html:49 +msgid "Progress" +msgstr "Progresso" + +#: bookwyrm/templates/readthrough/readthrough_form.html:24 +#: bookwyrm/templates/readthrough/readthrough_modal.html:56 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 +msgid "Finished reading" +msgstr "Leitura concluída" + +#: bookwyrm/templates/readthrough/readthrough_list.html:9 +msgid "Progress Updates:" +msgstr "Atualizações do progresso:" + +#: bookwyrm/templates/readthrough/readthrough_list.html:14 +msgid "finished" +msgstr "concluído" + +#: bookwyrm/templates/readthrough/readthrough_list.html:25 +msgid "Show all updates" +msgstr "Mostrar todas as atualizações" + +#: bookwyrm/templates/readthrough/readthrough_list.html:41 +msgid "Delete this progress update" +msgstr "Excluir esta atualização do progresso" + +#: bookwyrm/templates/readthrough/readthrough_list.html:53 +msgid "started" +msgstr "iniciado" + +#: bookwyrm/templates/readthrough/readthrough_list.html:60 +msgid "Edit read dates" +msgstr "Editar datas de leitura" + +#: bookwyrm/templates/readthrough/readthrough_list.html:68 +msgid "Delete these read dates" +msgstr "Excluir estas datas de leitura" + +#: bookwyrm/templates/readthrough/readthrough_modal.html:12 +#, python-format +msgid "Add read dates for \"%(title)s\"" +msgstr "" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "Resultados de" -#: bookwyrm/templates/search/book.html:79 +#: bookwyrm/templates/search/book.html:80 msgid "Import book" msgstr "Importar livro" -#: bookwyrm/templates/search/book.html:104 +#: bookwyrm/templates/search/book.html:106 msgid "Load results from other catalogues" msgstr "Carregar resultados de outros catálogos" -#: bookwyrm/templates/search/book.html:108 +#: bookwyrm/templates/search/book.html:110 msgid "Manually add book" msgstr "Adicionar manualmente um livro" -#: bookwyrm/templates/search/book.html:113 +#: bookwyrm/templates/search/book.html:115 msgid "Log in to import or add books." msgstr "Inicia sessão para importares ou adicionares livros." @@ -3618,50 +3637,56 @@ msgstr "Criar prateleira" msgid "Edit Shelf" msgstr "Editar prateleira" -#: bookwyrm/templates/shelf/shelf.html:28 bookwyrm/views/shelf/shelf.py:53 +#: bookwyrm/templates/shelf/shelf.html:24 +msgid "User profile" +msgstr "" + +#: bookwyrm/templates/shelf/shelf.html:39 +#: bookwyrm/templates/snippets/translated_shelf_name.html:3 +#: bookwyrm/views/shelf/shelf.py:53 msgid "All books" msgstr "Todos os livros" -#: bookwyrm/templates/shelf/shelf.html:69 +#: bookwyrm/templates/shelf/shelf.html:72 msgid "Create shelf" msgstr "Criar prateleira" -#: bookwyrm/templates/shelf/shelf.html:93 +#: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" msgid_plural "%(formatted_count)s books" msgstr[0] "%(formatted_count)s livro" msgstr[1] "%(formatted_count)s livros" -#: bookwyrm/templates/shelf/shelf.html:100 +#: bookwyrm/templates/shelf/shelf.html:103 #, python-format msgid "(showing %(start)s-%(end)s)" msgstr "(a exibir %(start)s-%(end)s)" -#: bookwyrm/templates/shelf/shelf.html:112 +#: bookwyrm/templates/shelf/shelf.html:115 msgid "Edit shelf" msgstr "Editar prateleira" -#: bookwyrm/templates/shelf/shelf.html:120 +#: bookwyrm/templates/shelf/shelf.html:123 msgid "Delete shelf" msgstr "Apagar prateleira" -#: bookwyrm/templates/shelf/shelf.html:148 -#: bookwyrm/templates/shelf/shelf.html:174 +#: bookwyrm/templates/shelf/shelf.html:151 +#: bookwyrm/templates/shelf/shelf.html:177 msgid "Shelved" msgstr "Arquivado" -#: bookwyrm/templates/shelf/shelf.html:149 -#: bookwyrm/templates/shelf/shelf.html:177 +#: bookwyrm/templates/shelf/shelf.html:152 +#: bookwyrm/templates/shelf/shelf.html:180 msgid "Started" msgstr "Iniciado" -#: bookwyrm/templates/shelf/shelf.html:150 -#: bookwyrm/templates/shelf/shelf.html:180 +#: bookwyrm/templates/shelf/shelf.html:153 +#: bookwyrm/templates/shelf/shelf.html:183 msgid "Finished" msgstr "Concluído" -#: bookwyrm/templates/shelf/shelf.html:206 +#: bookwyrm/templates/shelf/shelf.html:209 msgid "This shelf is empty." msgstr "Esta prateleira está vazia." @@ -3822,38 +3847,38 @@ msgstr "Desgostar" msgid "Filters" msgstr "Filtros" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:11 -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:18 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:10 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:17 msgid "Filters are applied" msgstr "Filtros aplicados" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:21 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:20 msgid "Clear filters" msgstr "Limpar filtros" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 msgid "Apply filters" msgstr "Aplicar filtros" -#: bookwyrm/templates/snippets/follow_button.html:15 +#: bookwyrm/templates/snippets/follow_button.html:20 #, python-format msgid "Follow @%(username)s" msgstr "Seguir %(username)s" -#: bookwyrm/templates/snippets/follow_button.html:17 +#: bookwyrm/templates/snippets/follow_button.html:22 msgid "Follow" msgstr "Seguir" -#: bookwyrm/templates/snippets/follow_button.html:26 +#: bookwyrm/templates/snippets/follow_button.html:31 msgid "Undo follow request" msgstr "Cancelar pedido para seguir" -#: bookwyrm/templates/snippets/follow_button.html:31 +#: bookwyrm/templates/snippets/follow_button.html:36 #, python-format msgid "Unfollow @%(username)s" msgstr "Deixar de seguir @%(username)s" -#: bookwyrm/templates/snippets/follow_button.html:33 +#: bookwyrm/templates/snippets/follow_button.html:38 msgid "Unfollow" msgstr "Deixar de seguir" @@ -3898,15 +3923,15 @@ msgstr[1] "avaliado %(title)s: %(display_ratin #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Avaliação de \"%(book_title)s\" (%(display_rating)s estrela): %(review_title)s" -msgstr[1] "Avaliação de \"%(book_title)s\" (%(display_rating)s estrelas): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:8 +#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": %(review_title)s" -msgstr "Critica de \"%(book_title)s\": %(review_title)s" +msgid "Review of \"%(book_title)s\": {{ review_title }" +msgstr "" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -4009,17 +4034,6 @@ msgstr "Avaliação" msgid "Finish \"%(book_title)s\"" msgstr "Concluir \"%(book_title)s\"" -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 -#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 -#: bookwyrm/templates/snippets/readthrough_form.html:9 -msgid "Started reading" -msgstr "Leitura iniciada" - -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 -#: bookwyrm/templates/snippets/readthrough_form.html:23 -msgid "Finished reading" -msgstr "Leitura concluída" - #: bookwyrm/templates/snippets/reading_modals/form.html:9 msgid "(Optional)" msgstr "(Opcional)" @@ -4039,10 +4053,6 @@ msgstr "Começar \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "Queres ler \"%(book_title)s\"\"" -#: bookwyrm/templates/snippets/readthrough_form.html:17 -msgid "Progress" -msgstr "Progresso" - #: bookwyrm/templates/snippets/register_form.html:30 msgid "Sign Up" msgstr "Criar conta" @@ -4069,13 +4079,13 @@ msgstr "Mais informações sobre esta denúncia:" msgid "Move book" msgstr "Mover livro" -#: bookwyrm/templates/snippets/shelf_selector.html:42 +#: bookwyrm/templates/snippets/shelf_selector.html:39 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:17 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:24 msgid "Start reading" msgstr "Começar a ler" -#: bookwyrm/templates/snippets/shelf_selector.html:55 +#: bookwyrm/templates/snippets/shelf_selector.html:54 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:31 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:38 msgid "Want to read" @@ -4130,7 +4140,12 @@ msgstr "Ocultar estado" msgid "edited %(date)s" msgstr "%(date)s editada" -#: bookwyrm/templates/snippets/status/headers/comment.html:2 +#: bookwyrm/templates/snippets/status/headers/comment.html:8 +#, python-format +msgid "commented on %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/comment.html:15 #, python-format msgid "commented on %(book)s" msgstr "comentou em %(book)s" @@ -4140,7 +4155,12 @@ msgstr "comentou em %(book)s" msgid "replied to %(username)s's status" msgstr "respondeu ao estado do %(username)s" -#: bookwyrm/templates/snippets/status/headers/quotation.html:2 +#: bookwyrm/templates/snippets/status/headers/quotation.html:8 +#, python-format +msgid "quoted %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/quotation.html:15 #, python-format msgid "quoted %(book)s" msgstr "citou %(book)s" @@ -4150,25 +4170,45 @@ msgstr "citou %(book)s" msgid "rated %(book)s:" msgstr "avaliou %(book)s:" -#: bookwyrm/templates/snippets/status/headers/read.html:7 +#: bookwyrm/templates/snippets/status/headers/read.html:10 +#, python-format +msgid "finished reading %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/read.html:17 #, python-format msgid "finished reading %(book)s" msgstr "terminou de ler %(book)s" -#: bookwyrm/templates/snippets/status/headers/reading.html:7 +#: bookwyrm/templates/snippets/status/headers/reading.html:10 +#, python-format +msgid "started reading %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/reading.html:17 #, python-format msgid "started reading %(book)s" msgstr "começou a ler %(book)s" -#: bookwyrm/templates/snippets/status/headers/review.html:3 +#: bookwyrm/templates/snippets/status/headers/review.html:8 +#, python-format +msgid "reviewed %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/review.html:15 #, python-format msgid "reviewed %(book)s" msgstr "criticou %(book)s" -#: bookwyrm/templates/snippets/status/headers/to_read.html:7 +#: bookwyrm/templates/snippets/status/headers/to_read.html:10 #, python-format -msgid "%(username)s wants to read %(book)s" -msgstr "%(username)s quer ler %(book)s" +msgid "wants to read %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/to_read.html:17 +#, python-format +msgid "wants to read %(book)s" +msgstr "" #: bookwyrm/templates/snippets/status/layout.html:24 #: bookwyrm/templates/snippets/status/status_options.html:17 @@ -4214,11 +4254,11 @@ msgstr "Mostrar mais" msgid "Show less" msgstr "Mostrar menos" -#: bookwyrm/templates/user/books_header.html:10 +#: bookwyrm/templates/user/books_header.html:4 msgid "Your books" msgstr "Os teus livros" -#: bookwyrm/templates/user/books_header.html:15 +#: bookwyrm/templates/user/books_header.html:9 #, python-format msgid "%(username)s's books" msgstr "Livro de %(username)s" diff --git a/locale/zh_Hans/LC_MESSAGES/django.mo b/locale/zh_Hans/LC_MESSAGES/django.mo index 721c8c20dc3174146b5298980bdd19fa8a8f3923..5eda33d5d4f857069338f4bb195aaab7363cb4a3 100644 GIT binary patch delta 19445 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 OJNizRZJBQO%ke*gBf2*L delta 19805 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 diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index 91cc02892..f4771e154 100644 --- a/locale/zh_Hans/LC_MESSAGES/django.po +++ b/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-09 19:01+0000\n" -"PO-Revision-Date: 2022-01-09 20:09\n" +"POT-Creation-Date: 2022-01-12 18:37+0000\n" +"PO-Revision-Date: 2022-01-12 19:52\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Simplified\n" "Language: zh\n" @@ -54,8 +54,8 @@ msgstr "列表顺序" msgid "Book Title" msgstr "书名" -#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:152 -#: bookwyrm/templates/shelf/shelf.html:184 +#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:33 msgid "Rating" msgstr "评价" @@ -72,6 +72,10 @@ msgstr "升序" msgid "Descending" msgstr "降序" +#: bookwyrm/forms.py:491 +msgid "Reading finish date cannot be before start date." +msgstr "" + #: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167 msgid "Error loading book" msgstr "加载书籍时出错" @@ -153,7 +157,7 @@ msgstr "用户名" msgid "A user with that username already exists." msgstr "已经存在使用该用户名的用户。" -#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:280 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "书评" @@ -626,11 +630,11 @@ msgstr "ISNI:" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/readthrough.html:82 #: bookwyrm/templates/groups/form.html:30 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:124 +#: bookwyrm/templates/readthrough/readthrough_modal.html:72 #: bookwyrm/templates/settings/announcements/announcement_form.html:76 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 @@ -643,15 +647,15 @@ msgstr "保存" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 -#: bookwyrm/templates/book/book.html:194 bookwyrm/templates/book/book.html:252 +#: bookwyrm/templates/book/book.html:194 #: bookwyrm/templates/book/cover_add_modal.html:32 -#: bookwyrm/templates/book/delete_readthrough_modal.html:23 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 -#: bookwyrm/templates/book/readthrough.html:83 #: bookwyrm/templates/book/sync_modal.html:23 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:18 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/federation/instance.html:88 #: bookwyrm/templates/snippets/report_modal.html:38 msgid "Cancel" @@ -721,39 +725,35 @@ msgstr "本书的 另一个版本 在你的 %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten." @@ -1469,39 +1414,6 @@ msgstr "你的书目" msgid "There are no books here right now! Try searching for a book to get started" msgstr "现在这里还没有任何书目!尝试着从搜索某本书开始吧" -#: bookwyrm/templates/feed/suggested_books.html:19 -#: bookwyrm/templates/get_started/book_preview.html:10 -#: bookwyrm/templates/shelf/shelf.html:38 -#: bookwyrm/templates/shelf/shelf.html:83 -#: bookwyrm/templates/snippets/shelf_selector.html:28 -#: bookwyrm/templates/user/books_header.html:4 -#: bookwyrm/templates/user/user.html:33 -msgid "To Read" -msgstr "想读" - -#: bookwyrm/templates/feed/suggested_books.html:20 -#: bookwyrm/templates/get_started/book_preview.html:11 -#: bookwyrm/templates/shelf/shelf.html:40 -#: bookwyrm/templates/shelf/shelf.html:84 -#: bookwyrm/templates/snippets/shelf_selector.html:29 -#: bookwyrm/templates/user/books_header.html:6 -#: bookwyrm/templates/user/user.html:34 -msgid "Currently Reading" -msgstr "在读" - -#: bookwyrm/templates/feed/suggested_books.html:21 -#: bookwyrm/templates/get_started/book_preview.html:12 -#: bookwyrm/templates/shelf/shelf.html:42 -#: bookwyrm/templates/shelf/shelf.html:85 -#: bookwyrm/templates/snippets/shelf_selector.html:30 -#: bookwyrm/templates/snippets/shelf_selector.html:49 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 -#: bookwyrm/templates/user/books_header.html:8 -#: bookwyrm/templates/user/user.html:35 -msgid "Read" -msgstr "读过" - #: bookwyrm/templates/feed/suggested_users.html:5 #: bookwyrm/templates/get_started/users.html:6 msgid "Who to follow" @@ -1533,6 +1445,30 @@ msgstr "你读过 %(book_title)s 了吗?" msgid "Add to your books" msgstr "添加到您的书籍中" +#: bookwyrm/templates/get_started/book_preview.html:10 +#: bookwyrm/templates/shelf/shelf.html:86 +#: bookwyrm/templates/snippets/translated_shelf_name.html:5 +#: bookwyrm/templates/user/user.html:33 +msgid "To Read" +msgstr "想读" + +#: bookwyrm/templates/get_started/book_preview.html:11 +#: bookwyrm/templates/shelf/shelf.html:87 +#: bookwyrm/templates/snippets/translated_shelf_name.html:7 +#: bookwyrm/templates/user/user.html:34 +msgid "Currently Reading" +msgstr "在读" + +#: bookwyrm/templates/get_started/book_preview.html:12 +#: bookwyrm/templates/shelf/shelf.html:88 +#: bookwyrm/templates/snippets/shelf_selector.html:47 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 +#: bookwyrm/templates/snippets/translated_shelf_name.html:9 +#: bookwyrm/templates/user/user.html:35 +msgid "Read" +msgstr "读过" + #: bookwyrm/templates/get_started/books.html:6 msgid "What are you reading?" msgstr "你在阅读什么?" @@ -1666,6 +1602,23 @@ msgstr "由 %(username)s 管理" msgid "Delete this group?" msgstr "删除该群组?" +#: bookwyrm/templates/groups/delete_group_modal.html:7 +#: bookwyrm/templates/lists/delete_list_modal.html:7 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:12 +msgid "This action cannot be un-done" +msgstr "此操作无法被撤销" + +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/delete_list_modal.html:15 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/settings/announcements/announcement.html:20 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 +#: bookwyrm/templates/snippets/follow_request_buttons.html:12 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +msgid "Delete" +msgstr "删除" + #: bookwyrm/templates/groups/edit_form.html:5 msgid "Edit Group" msgstr "编辑群组" @@ -1744,7 +1697,7 @@ msgstr "管理员" #: bookwyrm/templates/import/import.html:5 #: bookwyrm/templates/import/import.html:9 -#: bookwyrm/templates/shelf/shelf.html:61 +#: bookwyrm/templates/shelf/shelf.html:64 msgid "Import Books" msgstr "导入书目" @@ -1830,8 +1783,8 @@ msgid "Row" msgstr "行" #: bookwyrm/templates/import/import_status.html:103 -#: bookwyrm/templates/shelf/shelf.html:144 -#: bookwyrm/templates/shelf/shelf.html:166 +#: bookwyrm/templates/shelf/shelf.html:147 +#: bookwyrm/templates/shelf/shelf.html:169 msgid "Title" msgstr "标题" @@ -1844,8 +1797,8 @@ msgid "Openlibrary key" msgstr "Openlibrary key" #: bookwyrm/templates/import/import_status.html:114 -#: bookwyrm/templates/shelf/shelf.html:145 -#: bookwyrm/templates/shelf/shelf.html:169 +#: bookwyrm/templates/shelf/shelf.html:148 +#: bookwyrm/templates/shelf/shelf.html:172 msgid "Author" msgstr "作者" @@ -1965,7 +1918,7 @@ msgstr "没有权限" msgid "Sorry! This invite code is no longer valid." msgstr "抱歉!此邀请码已不再有效。" -#: bookwyrm/templates/landing/landing.html:7 +#: bookwyrm/templates/landing/landing.html:9 msgid "Recent Books" msgstr "最近书目" @@ -2724,23 +2677,89 @@ msgstr "开始《%(book_title)s》" msgid "Want to Read \"%(book_title)s\"" msgstr "想要阅读《%(book_title)s》" +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:4 +msgid "Delete these read dates?" +msgstr "删除这些阅读日期吗?" + +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:8 +#, python-format +msgid "You are deleting this readthrough and its %(count)s associated progress updates." +msgstr "你正要删除这篇阅读经过以及与之相关的 %(count)s 次进度更新。" + +#: bookwyrm/templates/readthrough/readthrough.html:6 +#: bookwyrm/templates/readthrough/readthrough_modal.html:8 +#, python-format +msgid "Update read dates for \"%(title)s\"" +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough_form.html:10 +#: bookwyrm/templates/readthrough/readthrough_modal.html:31 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 +#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 +msgid "Started reading" +msgstr "已开始阅读" + +#: bookwyrm/templates/readthrough/readthrough_form.html:18 +#: bookwyrm/templates/readthrough/readthrough_modal.html:49 +msgid "Progress" +msgstr "进度" + +#: bookwyrm/templates/readthrough/readthrough_form.html:24 +#: bookwyrm/templates/readthrough/readthrough_modal.html:56 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 +msgid "Finished reading" +msgstr "已完成阅读" + +#: bookwyrm/templates/readthrough/readthrough_list.html:9 +msgid "Progress Updates:" +msgstr "进度更新:" + +#: bookwyrm/templates/readthrough/readthrough_list.html:14 +msgid "finished" +msgstr "已完成" + +#: bookwyrm/templates/readthrough/readthrough_list.html:25 +msgid "Show all updates" +msgstr "显示所有更新" + +#: bookwyrm/templates/readthrough/readthrough_list.html:41 +msgid "Delete this progress update" +msgstr "删除此进度更新" + +#: bookwyrm/templates/readthrough/readthrough_list.html:53 +msgid "started" +msgstr "已开始" + +#: bookwyrm/templates/readthrough/readthrough_list.html:60 +msgid "Edit read dates" +msgstr "编辑阅读日期" + +#: bookwyrm/templates/readthrough/readthrough_list.html:68 +msgid "Delete these read dates" +msgstr "删除这些阅读日期" + +#: bookwyrm/templates/readthrough/readthrough_modal.html:12 +#, python-format +msgid "Add read dates for \"%(title)s\"" +msgstr "" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "结果来自" -#: bookwyrm/templates/search/book.html:79 +#: bookwyrm/templates/search/book.html:80 msgid "Import book" msgstr "导入书目" -#: bookwyrm/templates/search/book.html:104 +#: bookwyrm/templates/search/book.html:106 msgid "Load results from other catalogues" msgstr "从其它分类加载结果" -#: bookwyrm/templates/search/book.html:108 +#: bookwyrm/templates/search/book.html:110 msgid "Manually add book" msgstr "手动添加书目" -#: bookwyrm/templates/search/book.html:113 +#: bookwyrm/templates/search/book.html:115 msgid "Log in to import or add books." msgstr "登录以导入或添加书目。" @@ -3604,49 +3623,55 @@ msgstr "创建书架" msgid "Edit Shelf" msgstr "编辑书架" -#: bookwyrm/templates/shelf/shelf.html:28 bookwyrm/views/shelf/shelf.py:53 +#: bookwyrm/templates/shelf/shelf.html:24 +msgid "User profile" +msgstr "" + +#: bookwyrm/templates/shelf/shelf.html:39 +#: bookwyrm/templates/snippets/translated_shelf_name.html:3 +#: bookwyrm/views/shelf/shelf.py:53 msgid "All books" msgstr "所有书目" -#: bookwyrm/templates/shelf/shelf.html:69 +#: bookwyrm/templates/shelf/shelf.html:72 msgid "Create shelf" msgstr "创建书架" -#: bookwyrm/templates/shelf/shelf.html:93 +#: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" msgid_plural "%(formatted_count)s books" msgstr[0] "%(formatted_count)s 本书籍" -#: bookwyrm/templates/shelf/shelf.html:100 +#: bookwyrm/templates/shelf/shelf.html:103 #, python-format msgid "(showing %(start)s-%(end)s)" msgstr "(正在显示 %(start)s 到 %(end)s)" -#: bookwyrm/templates/shelf/shelf.html:112 +#: bookwyrm/templates/shelf/shelf.html:115 msgid "Edit shelf" msgstr "编辑书架" -#: bookwyrm/templates/shelf/shelf.html:120 +#: bookwyrm/templates/shelf/shelf.html:123 msgid "Delete shelf" msgstr "删除书架" -#: bookwyrm/templates/shelf/shelf.html:148 -#: bookwyrm/templates/shelf/shelf.html:174 +#: bookwyrm/templates/shelf/shelf.html:151 +#: bookwyrm/templates/shelf/shelf.html:177 msgid "Shelved" msgstr "上架时间" -#: bookwyrm/templates/shelf/shelf.html:149 -#: bookwyrm/templates/shelf/shelf.html:177 +#: bookwyrm/templates/shelf/shelf.html:152 +#: bookwyrm/templates/shelf/shelf.html:180 msgid "Started" msgstr "开始时间" -#: bookwyrm/templates/shelf/shelf.html:150 -#: bookwyrm/templates/shelf/shelf.html:180 +#: bookwyrm/templates/shelf/shelf.html:153 +#: bookwyrm/templates/shelf/shelf.html:183 msgid "Finished" msgstr "完成时间" -#: bookwyrm/templates/shelf/shelf.html:206 +#: bookwyrm/templates/shelf/shelf.html:209 msgid "This shelf is empty." msgstr "此书架是空的。" @@ -3806,38 +3831,38 @@ msgstr "取消喜欢" msgid "Filters" msgstr "" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:11 -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:18 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:10 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:17 msgid "Filters are applied" msgstr "" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:21 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:20 msgid "Clear filters" msgstr "清除过滤器" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 msgid "Apply filters" msgstr "应用过滤器" -#: bookwyrm/templates/snippets/follow_button.html:15 +#: bookwyrm/templates/snippets/follow_button.html:20 #, python-format msgid "Follow @%(username)s" msgstr "关注 @%(username)s" -#: bookwyrm/templates/snippets/follow_button.html:17 +#: bookwyrm/templates/snippets/follow_button.html:22 msgid "Follow" msgstr "关注" -#: bookwyrm/templates/snippets/follow_button.html:26 +#: bookwyrm/templates/snippets/follow_button.html:31 msgid "Undo follow request" msgstr "撤回关注请求" -#: bookwyrm/templates/snippets/follow_button.html:31 +#: bookwyrm/templates/snippets/follow_button.html:36 #, python-format msgid "Unfollow @%(username)s" msgstr "取消关注 @%(username)s" -#: bookwyrm/templates/snippets/follow_button.html:33 +#: bookwyrm/templates/snippets/follow_button.html:38 msgid "Unfollow" msgstr "取消关注" @@ -3878,14 +3903,14 @@ msgstr[0] "为 %(title)s 打了分: %(display_ #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "《%(book_title)s》的书评(%(display_rating)s 星): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "" -#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:8 +#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": %(review_title)s" -msgstr "《%(book_title)s》的书评: %(review_title)s" +msgid "Review of \"%(book_title)s\": {{ review_title }" +msgstr "" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -3988,17 +4013,6 @@ msgstr "评价" msgid "Finish \"%(book_title)s\"" msgstr "完成《%(book_title)s》" -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 -#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 -#: bookwyrm/templates/snippets/readthrough_form.html:9 -msgid "Started reading" -msgstr "已开始阅读" - -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 -#: bookwyrm/templates/snippets/readthrough_form.html:23 -msgid "Finished reading" -msgstr "已完成阅读" - #: bookwyrm/templates/snippets/reading_modals/form.html:9 msgid "(Optional)" msgstr "(可选)" @@ -4018,10 +4032,6 @@ msgstr "开始《%(book_title)s》" msgid "Want to Read \"%(book_title)s\"" msgstr "想要阅读《%(book_title)s》" -#: bookwyrm/templates/snippets/readthrough_form.html:17 -msgid "Progress" -msgstr "进度" - #: bookwyrm/templates/snippets/register_form.html:30 msgid "Sign Up" msgstr "注册" @@ -4048,13 +4058,13 @@ msgstr "关于本报告的更多信息" msgid "Move book" msgstr "移动书目" -#: bookwyrm/templates/snippets/shelf_selector.html:42 +#: bookwyrm/templates/snippets/shelf_selector.html:39 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:17 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:24 msgid "Start reading" msgstr "开始阅读" -#: bookwyrm/templates/snippets/shelf_selector.html:55 +#: bookwyrm/templates/snippets/shelf_selector.html:54 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:31 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:38 msgid "Want to read" @@ -4109,7 +4119,12 @@ msgstr "隐藏状态" msgid "edited %(date)s" msgstr "在 %(date)s 已编辑" -#: bookwyrm/templates/snippets/status/headers/comment.html:2 +#: bookwyrm/templates/snippets/status/headers/comment.html:8 +#, python-format +msgid "commented on %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/comment.html:15 #, python-format msgid "commented on %(book)s" msgstr "评论了 %(book)s" @@ -4119,7 +4134,12 @@ msgstr "评论了 %(book)s" msgid "replied to %(username)s's status" msgstr "回复了 %(username)s状态" -#: bookwyrm/templates/snippets/status/headers/quotation.html:2 +#: bookwyrm/templates/snippets/status/headers/quotation.html:8 +#, python-format +msgid "quoted %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/quotation.html:15 #, python-format msgid "quoted %(book)s" msgstr "引用了 %(book)s" @@ -4129,25 +4149,45 @@ msgstr "引用了 %(book)s" msgid "rated %(book)s:" msgstr "为 %(book)s 打了分:" -#: bookwyrm/templates/snippets/status/headers/read.html:7 +#: bookwyrm/templates/snippets/status/headers/read.html:10 +#, python-format +msgid "finished reading %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/read.html:17 #, python-format msgid "finished reading %(book)s" msgstr "完成阅读 %(book)s" -#: bookwyrm/templates/snippets/status/headers/reading.html:7 +#: bookwyrm/templates/snippets/status/headers/reading.html:10 +#, python-format +msgid "started reading %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/reading.html:17 #, python-format msgid "started reading %(book)s" msgstr "开始阅读 %(book)s" -#: bookwyrm/templates/snippets/status/headers/review.html:3 +#: bookwyrm/templates/snippets/status/headers/review.html:8 +#, python-format +msgid "reviewed %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/review.html:15 #, python-format msgid "reviewed %(book)s" msgstr "为 %(book)s 撰写了书评" -#: bookwyrm/templates/snippets/status/headers/to_read.html:7 +#: bookwyrm/templates/snippets/status/headers/to_read.html:10 #, python-format -msgid "%(username)s wants to read %(book)s" -msgstr "%(username)s 想要阅读 %(book)s" +msgid "wants to read %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/to_read.html:17 +#, python-format +msgid "wants to read %(book)s" +msgstr "" #: bookwyrm/templates/snippets/status/layout.html:24 #: bookwyrm/templates/snippets/status/status_options.html:17 @@ -4193,11 +4233,11 @@ msgstr "显示更多" msgid "Show less" msgstr "显示更少" -#: bookwyrm/templates/user/books_header.html:10 +#: bookwyrm/templates/user/books_header.html:4 msgid "Your books" msgstr "你的书目" -#: bookwyrm/templates/user/books_header.html:15 +#: bookwyrm/templates/user/books_header.html:9 #, python-format msgid "%(username)s's books" msgstr "%(username)s 的书目" diff --git a/locale/zh_Hant/LC_MESSAGES/django.mo b/locale/zh_Hant/LC_MESSAGES/django.mo index 07742b9927f25b6cf8ab3f2acc8e7411606fb17d..9e0c867c8f52f7f921c7f8eae3c5895fc4fb517d 100644 GIT binary patch delta 12334 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

    _XfFHPIT&Z?kw0 z>O>A(oM&D^oy6a$aVj&u?yrFwzdkD8(&p{pp`sOa!|M1V>W0PUT64R(4>iznjKX}& z7kSm)Q3&e(ie^nz|76s}ZBPsEjM})T9~CtWHAkY}+HBO3O+pRu2CCm8)C3=*+CN3L z??UAdqXs^W>39zH(xyysZI9~zG_nwnGlYr;9*6o7nuOJHGq%CAX3RwQ--w1|S@H`p z0=HQFJvJr&1NA)+H_4r-8EX7A)WUjL+y{#=zcYx6RzB3sGAEmFqXt}zI=ao4KY%)c zAIv<tZte=cf*Yp8zC zRQKZSDM!hmV+BO8x;g!89y{v)VtA`yqtueo+Yb;v;-)ohH$W!Mh) zqXrJ0?(QTL_3lhYEoh7Rm3b8Tk0j?T_QWpU{{1lI8!j zxbRH(k@#ab+QZGk=5DM{KJ0b({x;}O+!;0B)2Ndio+Ux^`3i7<@8TMZJB$(|#X2;2Eq>{wDQD*Zb7@Np;#; zE)w-sr|Vzpop3Ov8s!cpkFrLG^_<=CDT&7@hbaRnEi6yfd-bw-F3~g82U`9z^>x%& zJRq1a7nX6SVzE{Q`PA^T)6PomvtXys`?!t7*tD*hu}q0_|$5 zUm!kX_2PKl?)%1apJ2tpoPR$W$`gEU4RP!?lv0-R=xR&lW!gVMeYNSDO1VerOi8r9 z*KG_^PHl2AmJcBRq>@~<$d$)eDUVwGD_O|fVN4^!gy10kj zbm|{bbXBHgSbZQSQvM@X3@>6Fw!$Z|Bksbr_&^`lp9pldF{8~4a>MfO&Ic4-MQJaN{5W~9YBb&@m#j`)ag;s8k;FA9>D2$C zWKuTKHiGi8z8`u}sY8cJH0THZ0%Z{O6!gJV)HRg)uaq$QUc^V&Xe!GJ#N&wTQC_gz zjsk6qt=^Y*T^kGWe1=={2@)%)cclD48A};WIY-ge9f#sEi-%xk%65zYp{*|Ub(A{P zTT>ogO~~!Feh%)VLI3Zz`o{<7Z%QWREDg;tiBf{bKuUM&ACR9(*+O}jSXVst4U~e{ zI|RQ_KBs&^X+V2<#wd7QA;_V`&~^aze|&I0w1F1k9LhLKI{8P}^Th8^YLW;;UE%lw zcCmOiR%f!myshrPFq9zIfLud-&-!)6z4Up8QiJKaSS;Aj>CW zY1>QJLQSIGhgGQrJxoGDa}P=aVo!YKR-YjML{ zloQlzQr@J#kn#)l4a(z`{p6bCqic&*4w>Wi4nA9;gYq>Q z1rST(+GgT8IKSo-xPx7+ef$X6zJm{>o)sgzi9A5*d@ zk(Bo28sb0LfNtLZVwp!!gydxOVSsX!oz!Pg{-)?UjTP_|&huvYs|59P)Ssmsq<)gJ ziV{ft0KcR}P@bab>f_>UCH~f1*ZFgmaPj_Gg~m51-%)(Y6lXE}sq5-MSwXo(sYI?G zZM~`M+C>@Vt?_S1rudcequsCgef<$rqyLDp!^aHV6q|56U{lq`L7|(jbvzg9SEp`N boraC-*WGlo&&Z%n9W!G?H(ee7W$6C_Pa}{4 delta 12679 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 Py&0N11zYA!%MbexM5hd- diff --git a/locale/zh_Hant/LC_MESSAGES/django.po b/locale/zh_Hant/LC_MESSAGES/django.po index 30a553867..0d0fc6e0a 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: 2022-01-09 19:01+0000\n" -"PO-Revision-Date: 2022-01-09 20:09\n" +"POT-Creation-Date: 2022-01-12 18:37+0000\n" +"PO-Revision-Date: 2022-01-12 19:52\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Traditional\n" "Language: zh\n" @@ -54,8 +54,8 @@ msgstr "列表順序" msgid "Book Title" msgstr "書名" -#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:152 -#: bookwyrm/templates/shelf/shelf.html:184 +#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:33 msgid "Rating" msgstr "評價" @@ -72,6 +72,10 @@ msgstr "升序" msgid "Descending" msgstr "降序" +#: bookwyrm/forms.py:491 +msgid "Reading finish date cannot be before start date." +msgstr "" + #: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167 msgid "Error loading book" msgstr "" @@ -153,7 +157,7 @@ msgstr "使用者名稱" msgid "A user with that username already exists." msgstr "已經存在使用該名稱的使用者。" -#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:280 +#: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "書評" @@ -626,11 +630,11 @@ msgstr "" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 -#: bookwyrm/templates/book/readthrough.html:82 #: bookwyrm/templates/groups/form.html:30 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/form.html:130 #: bookwyrm/templates/preferences/edit_user.html:124 +#: bookwyrm/templates/readthrough/readthrough_modal.html:72 #: bookwyrm/templates/settings/announcements/announcement_form.html:76 #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 @@ -643,15 +647,15 @@ msgstr "儲存" #: bookwyrm/templates/author/edit_author.html:116 #: bookwyrm/templates/author/sync_modal.html:23 -#: bookwyrm/templates/book/book.html:194 bookwyrm/templates/book/book.html:252 +#: bookwyrm/templates/book/book.html:194 #: bookwyrm/templates/book/cover_add_modal.html:32 -#: bookwyrm/templates/book/delete_readthrough_modal.html:23 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 -#: bookwyrm/templates/book/readthrough.html:83 #: bookwyrm/templates/book/sync_modal.html:23 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:18 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 +#: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/federation/instance.html:88 #: bookwyrm/templates/snippets/report_modal.html:38 msgid "Cancel" @@ -721,39 +725,35 @@ msgstr "本書的 另一個版本 在你的 %(source_name)s and check for any metadata about this book which aren't present here. Existing metadata will not be overwritten." @@ -1469,39 +1414,6 @@ msgstr "你的書目" msgid "There are no books here right now! Try searching for a book to get started" msgstr "現在這裡還沒有任何書目!嘗試著從搜尋某本書開始吧" -#: bookwyrm/templates/feed/suggested_books.html:19 -#: bookwyrm/templates/get_started/book_preview.html:10 -#: bookwyrm/templates/shelf/shelf.html:38 -#: bookwyrm/templates/shelf/shelf.html:83 -#: bookwyrm/templates/snippets/shelf_selector.html:28 -#: bookwyrm/templates/user/books_header.html:4 -#: bookwyrm/templates/user/user.html:33 -msgid "To Read" -msgstr "想讀" - -#: bookwyrm/templates/feed/suggested_books.html:20 -#: bookwyrm/templates/get_started/book_preview.html:11 -#: bookwyrm/templates/shelf/shelf.html:40 -#: bookwyrm/templates/shelf/shelf.html:84 -#: bookwyrm/templates/snippets/shelf_selector.html:29 -#: bookwyrm/templates/user/books_header.html:6 -#: bookwyrm/templates/user/user.html:34 -msgid "Currently Reading" -msgstr "在讀" - -#: bookwyrm/templates/feed/suggested_books.html:21 -#: bookwyrm/templates/get_started/book_preview.html:12 -#: bookwyrm/templates/shelf/shelf.html:42 -#: bookwyrm/templates/shelf/shelf.html:85 -#: bookwyrm/templates/snippets/shelf_selector.html:30 -#: bookwyrm/templates/snippets/shelf_selector.html:49 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 -#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 -#: bookwyrm/templates/user/books_header.html:8 -#: bookwyrm/templates/user/user.html:35 -msgid "Read" -msgstr "讀過" - #: bookwyrm/templates/feed/suggested_users.html:5 #: bookwyrm/templates/get_started/users.html:6 msgid "Who to follow" @@ -1533,6 +1445,30 @@ msgstr "你讀過 %(book_title)s 了嗎?" msgid "Add to your books" msgstr "" +#: bookwyrm/templates/get_started/book_preview.html:10 +#: bookwyrm/templates/shelf/shelf.html:86 +#: bookwyrm/templates/snippets/translated_shelf_name.html:5 +#: bookwyrm/templates/user/user.html:33 +msgid "To Read" +msgstr "想讀" + +#: bookwyrm/templates/get_started/book_preview.html:11 +#: bookwyrm/templates/shelf/shelf.html:87 +#: bookwyrm/templates/snippets/translated_shelf_name.html:7 +#: bookwyrm/templates/user/user.html:34 +msgid "Currently Reading" +msgstr "在讀" + +#: bookwyrm/templates/get_started/book_preview.html:12 +#: bookwyrm/templates/shelf/shelf.html:88 +#: bookwyrm/templates/snippets/shelf_selector.html:47 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:24 +#: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:12 +#: bookwyrm/templates/snippets/translated_shelf_name.html:9 +#: bookwyrm/templates/user/user.html:35 +msgid "Read" +msgstr "讀過" + #: bookwyrm/templates/get_started/books.html:6 msgid "What are you reading?" msgstr "你在閱讀什麼?" @@ -1666,6 +1602,23 @@ msgstr "" msgid "Delete this group?" msgstr "" +#: bookwyrm/templates/groups/delete_group_modal.html:7 +#: bookwyrm/templates/lists/delete_list_modal.html:7 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:12 +msgid "This action cannot be un-done" +msgstr "" + +#: bookwyrm/templates/groups/delete_group_modal.html:15 +#: bookwyrm/templates/lists/delete_list_modal.html:15 +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:21 +#: bookwyrm/templates/settings/announcements/announcement.html:20 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:49 +#: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:36 +#: bookwyrm/templates/snippets/follow_request_buttons.html:12 +#: bookwyrm/templates/snippets/join_invitation_buttons.html:13 +msgid "Delete" +msgstr "刪除" + #: bookwyrm/templates/groups/edit_form.html:5 msgid "Edit Group" msgstr "" @@ -1744,7 +1697,7 @@ msgstr "" #: bookwyrm/templates/import/import.html:5 #: bookwyrm/templates/import/import.html:9 -#: bookwyrm/templates/shelf/shelf.html:61 +#: bookwyrm/templates/shelf/shelf.html:64 msgid "Import Books" msgstr "匯入書目" @@ -1830,8 +1783,8 @@ msgid "Row" msgstr "" #: bookwyrm/templates/import/import_status.html:103 -#: bookwyrm/templates/shelf/shelf.html:144 -#: bookwyrm/templates/shelf/shelf.html:166 +#: bookwyrm/templates/shelf/shelf.html:147 +#: bookwyrm/templates/shelf/shelf.html:169 msgid "Title" msgstr "標題" @@ -1844,8 +1797,8 @@ msgid "Openlibrary key" msgstr "" #: bookwyrm/templates/import/import_status.html:114 -#: bookwyrm/templates/shelf/shelf.html:145 -#: bookwyrm/templates/shelf/shelf.html:169 +#: bookwyrm/templates/shelf/shelf.html:148 +#: bookwyrm/templates/shelf/shelf.html:172 msgid "Author" msgstr "作者" @@ -1965,7 +1918,7 @@ msgstr "沒有權限" msgid "Sorry! This invite code is no longer valid." msgstr "抱歉!此邀請碼已不再有效。" -#: bookwyrm/templates/landing/landing.html:7 +#: bookwyrm/templates/landing/landing.html:9 msgid "Recent Books" msgstr "最近書目" @@ -2724,23 +2677,89 @@ msgstr "" msgid "Want to Read \"%(book_title)s\"" msgstr "" +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:4 +msgid "Delete these read dates?" +msgstr "刪除這些閱讀日期嗎?" + +#: bookwyrm/templates/readthrough/delete_readthrough_modal.html:8 +#, python-format +msgid "You are deleting this readthrough and its %(count)s associated progress updates." +msgstr "你正要刪除這篇閱讀經過以及與之相關的 %(count)s 次進度更新。" + +#: bookwyrm/templates/readthrough/readthrough.html:6 +#: bookwyrm/templates/readthrough/readthrough_modal.html:8 +#, python-format +msgid "Update read dates for \"%(title)s\"" +msgstr "" + +#: bookwyrm/templates/readthrough/readthrough_form.html:10 +#: bookwyrm/templates/readthrough/readthrough_modal.html:31 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 +#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 +msgid "Started reading" +msgstr "已開始閱讀" + +#: bookwyrm/templates/readthrough/readthrough_form.html:18 +#: bookwyrm/templates/readthrough/readthrough_modal.html:49 +msgid "Progress" +msgstr "進度" + +#: bookwyrm/templates/readthrough/readthrough_form.html:24 +#: bookwyrm/templates/readthrough/readthrough_modal.html:56 +#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 +msgid "Finished reading" +msgstr "已完成閱讀" + +#: bookwyrm/templates/readthrough/readthrough_list.html:9 +msgid "Progress Updates:" +msgstr "進度更新:" + +#: bookwyrm/templates/readthrough/readthrough_list.html:14 +msgid "finished" +msgstr "已完成" + +#: bookwyrm/templates/readthrough/readthrough_list.html:25 +msgid "Show all updates" +msgstr "顯示所有更新" + +#: bookwyrm/templates/readthrough/readthrough_list.html:41 +msgid "Delete this progress update" +msgstr "刪除此進度更新" + +#: bookwyrm/templates/readthrough/readthrough_list.html:53 +msgid "started" +msgstr "已開始" + +#: bookwyrm/templates/readthrough/readthrough_list.html:60 +msgid "Edit read dates" +msgstr "編輯閱讀日期" + +#: bookwyrm/templates/readthrough/readthrough_list.html:68 +msgid "Delete these read dates" +msgstr "刪除這些閱讀日期" + +#: bookwyrm/templates/readthrough/readthrough_modal.html:12 +#, python-format +msgid "Add read dates for \"%(title)s\"" +msgstr "" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "" -#: bookwyrm/templates/search/book.html:79 +#: bookwyrm/templates/search/book.html:80 msgid "Import book" msgstr "匯入書目" -#: bookwyrm/templates/search/book.html:104 +#: bookwyrm/templates/search/book.html:106 msgid "Load results from other catalogues" msgstr "從其它分類載入結果" -#: bookwyrm/templates/search/book.html:108 +#: bookwyrm/templates/search/book.html:110 msgid "Manually add book" msgstr "手動新增書目" -#: bookwyrm/templates/search/book.html:113 +#: bookwyrm/templates/search/book.html:115 msgid "Log in to import or add books." msgstr "登陸以匯入或新增書目。" @@ -3604,49 +3623,55 @@ msgstr "建立書架" msgid "Edit Shelf" msgstr "編輯書架" -#: bookwyrm/templates/shelf/shelf.html:28 bookwyrm/views/shelf/shelf.py:53 +#: bookwyrm/templates/shelf/shelf.html:24 +msgid "User profile" +msgstr "" + +#: bookwyrm/templates/shelf/shelf.html:39 +#: bookwyrm/templates/snippets/translated_shelf_name.html:3 +#: bookwyrm/views/shelf/shelf.py:53 msgid "All books" msgstr "所有書目" -#: bookwyrm/templates/shelf/shelf.html:69 +#: bookwyrm/templates/shelf/shelf.html:72 msgid "Create shelf" msgstr "建立書架" -#: bookwyrm/templates/shelf/shelf.html:93 +#: bookwyrm/templates/shelf/shelf.html:96 #, python-format msgid "%(formatted_count)s book" msgid_plural "%(formatted_count)s books" msgstr[0] "" -#: bookwyrm/templates/shelf/shelf.html:100 +#: bookwyrm/templates/shelf/shelf.html:103 #, python-format msgid "(showing %(start)s-%(end)s)" msgstr "" -#: bookwyrm/templates/shelf/shelf.html:112 +#: bookwyrm/templates/shelf/shelf.html:115 msgid "Edit shelf" msgstr "編輯書架" -#: bookwyrm/templates/shelf/shelf.html:120 +#: bookwyrm/templates/shelf/shelf.html:123 msgid "Delete shelf" msgstr "刪除書架" -#: bookwyrm/templates/shelf/shelf.html:148 -#: bookwyrm/templates/shelf/shelf.html:174 +#: bookwyrm/templates/shelf/shelf.html:151 +#: bookwyrm/templates/shelf/shelf.html:177 msgid "Shelved" msgstr "上架時間" -#: bookwyrm/templates/shelf/shelf.html:149 -#: bookwyrm/templates/shelf/shelf.html:177 +#: bookwyrm/templates/shelf/shelf.html:152 +#: bookwyrm/templates/shelf/shelf.html:180 msgid "Started" msgstr "開始時間" -#: bookwyrm/templates/shelf/shelf.html:150 -#: bookwyrm/templates/shelf/shelf.html:180 +#: bookwyrm/templates/shelf/shelf.html:153 +#: bookwyrm/templates/shelf/shelf.html:183 msgid "Finished" msgstr "完成時間" -#: bookwyrm/templates/shelf/shelf.html:206 +#: bookwyrm/templates/shelf/shelf.html:209 msgid "This shelf is empty." msgstr "此書架是空的。" @@ -3806,38 +3831,38 @@ msgstr "取消喜歡" msgid "Filters" msgstr "" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:11 -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:18 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:10 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:17 msgid "Filters are applied" msgstr "" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:21 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:20 msgid "Clear filters" msgstr "清除過濾器" -#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:43 +#: bookwyrm/templates/snippets/filters_panel/filters_panel.html:42 msgid "Apply filters" msgstr "使用過濾器" -#: bookwyrm/templates/snippets/follow_button.html:15 +#: bookwyrm/templates/snippets/follow_button.html:20 #, python-format msgid "Follow @%(username)s" msgstr "" -#: bookwyrm/templates/snippets/follow_button.html:17 +#: bookwyrm/templates/snippets/follow_button.html:22 msgid "Follow" msgstr "關注" -#: bookwyrm/templates/snippets/follow_button.html:26 +#: bookwyrm/templates/snippets/follow_button.html:31 msgid "Undo follow request" msgstr "撤回關注請求" -#: bookwyrm/templates/snippets/follow_button.html:31 +#: bookwyrm/templates/snippets/follow_button.html:36 #, python-format msgid "Unfollow @%(username)s" msgstr "" -#: bookwyrm/templates/snippets/follow_button.html:33 +#: bookwyrm/templates/snippets/follow_button.html:38 msgid "Unfollow" msgstr "取消關注" @@ -3878,14 +3903,14 @@ msgstr[0] "" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "\"%(book_title)s\" 的書評(%(display_rating)s 星): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "" -#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:8 +#: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": %(review_title)s" -msgstr "\"%(book_title)s\" 的書評: %(review_title)s" +msgid "Review of \"%(book_title)s\": {{ review_title }" +msgstr "" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -3988,17 +4013,6 @@ msgstr "評價" msgid "Finish \"%(book_title)s\"" msgstr "完成 \"%(book_title)s\"" -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 -#: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 -#: bookwyrm/templates/snippets/readthrough_form.html:9 -msgid "Started reading" -msgstr "已開始閱讀" - -#: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:32 -#: bookwyrm/templates/snippets/readthrough_form.html:23 -msgid "Finished reading" -msgstr "已完成閱讀" - #: bookwyrm/templates/snippets/reading_modals/form.html:9 msgid "(Optional)" msgstr "" @@ -4018,10 +4032,6 @@ msgstr "開始 \"%(book_title)s\"" msgid "Want to Read \"%(book_title)s\"" msgstr "想要閱讀 \"%(book_title)s\"" -#: bookwyrm/templates/snippets/readthrough_form.html:17 -msgid "Progress" -msgstr "進度" - #: bookwyrm/templates/snippets/register_form.html:30 msgid "Sign Up" msgstr "註冊" @@ -4048,13 +4058,13 @@ msgstr "關於本舉報的更多資訊" msgid "Move book" msgstr "移動書目" -#: bookwyrm/templates/snippets/shelf_selector.html:42 +#: bookwyrm/templates/snippets/shelf_selector.html:39 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:17 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:24 msgid "Start reading" msgstr "開始閱讀" -#: bookwyrm/templates/snippets/shelf_selector.html:55 +#: bookwyrm/templates/snippets/shelf_selector.html:54 #: bookwyrm/templates/snippets/shelve_button/shelve_button_dropdown_options.html:31 #: bookwyrm/templates/snippets/shelve_button/shelve_button_options.html:38 msgid "Want to read" @@ -4109,7 +4119,12 @@ msgstr "" msgid "edited %(date)s" msgstr "" -#: bookwyrm/templates/snippets/status/headers/comment.html:2 +#: bookwyrm/templates/snippets/status/headers/comment.html:8 +#, python-format +msgid "commented on %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/comment.html:15 #, python-format msgid "commented on %(book)s" msgstr "" @@ -4119,7 +4134,12 @@ msgstr "" msgid "replied to %(username)s's status" msgstr "回覆了 %(username)s狀態" -#: bookwyrm/templates/snippets/status/headers/quotation.html:2 +#: bookwyrm/templates/snippets/status/headers/quotation.html:8 +#, python-format +msgid "quoted %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/quotation.html:15 #, python-format msgid "quoted %(book)s" msgstr "" @@ -4129,24 +4149,44 @@ msgstr "" msgid "rated %(book)s:" msgstr "" -#: bookwyrm/templates/snippets/status/headers/read.html:7 +#: bookwyrm/templates/snippets/status/headers/read.html:10 +#, python-format +msgid "finished reading %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/read.html:17 #, python-format msgid "finished reading %(book)s" msgstr "" -#: bookwyrm/templates/snippets/status/headers/reading.html:7 +#: bookwyrm/templates/snippets/status/headers/reading.html:10 +#, python-format +msgid "started reading %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/reading.html:17 #, python-format msgid "started reading %(book)s" msgstr "" -#: bookwyrm/templates/snippets/status/headers/review.html:3 +#: bookwyrm/templates/snippets/status/headers/review.html:8 +#, python-format +msgid "reviewed %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/review.html:15 #, python-format msgid "reviewed %(book)s" msgstr "" -#: bookwyrm/templates/snippets/status/headers/to_read.html:7 +#: bookwyrm/templates/snippets/status/headers/to_read.html:10 #, python-format -msgid "%(username)s wants to read %(book)s" +msgid "wants to read %(book)s by %(author_name)s" +msgstr "" + +#: bookwyrm/templates/snippets/status/headers/to_read.html:17 +#, python-format +msgid "wants to read %(book)s" msgstr "" #: bookwyrm/templates/snippets/status/layout.html:24 @@ -4193,11 +4233,11 @@ msgstr "顯示更多" msgid "Show less" msgstr "顯示更少" -#: bookwyrm/templates/user/books_header.html:10 +#: bookwyrm/templates/user/books_header.html:4 msgid "Your books" msgstr "你的書目" -#: bookwyrm/templates/user/books_header.html:15 +#: bookwyrm/templates/user/books_header.html:9 #, python-format msgid "%(username)s's books" msgstr "%(username)s 的書目" From d95830037ab8ecc0a41df6ee8f3729c4a4892105 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 13 Jan 2022 10:59:52 -0800 Subject: [PATCH 118/170] Adds admin notice --- bookwyrm/templates/settings/dashboard/dashboard.html | 11 +++++++++++ bookwyrm/views/admin/dashboard.py | 3 +++ 2 files changed, 14 insertions(+) diff --git a/bookwyrm/templates/settings/dashboard/dashboard.html b/bookwyrm/templates/settings/dashboard/dashboard.html index f320028b7..65c666a67 100644 --- a/bookwyrm/templates/settings/dashboard/dashboard.html +++ b/bookwyrm/templates/settings/dashboard/dashboard.html @@ -48,6 +48,17 @@ {% endif %} + {% if pending_domains %} +

    + {% endif %} {% if not site.allow_registration and site.allow_invite_requests and invite_requests %} -
    +
    - {% if author.bio %} -
    - {% include "snippets/trimmed_text.html" with full=author.bio trim_length=200 %} -
    - {% endif %} {% firstof author.aliases author.born author.died as details %} {% firstof author.wikipedia_link author.openlibrary_key author.inventaire_id author.isni as links %} {% if details or links %} -
    +
    {% if details %}

    {% trans "Author details" %}

    @@ -137,26 +132,28 @@ {% endif %}
    {% endif %} -
    - +
    + {% if author.bio %} + {% include "snippets/trimmed_text.html" with full=author.bio trim_length=200 %} + {% endif %} -
    -

    {% blocktrans with name=author.name %}Books by {{ name }}{% endblocktrans %}

    -
    - {% for book in books %} -
    -
    - {% include 'landing/small-book.html' with book=book %} +

    {% blocktrans with name=author.name %}Books by {{ name }}{% endblocktrans %}

    +
    + {% for book in books %} +
    +
    + {% include 'landing/small-book.html' with book=book %} +
    + {% include 'snippets/shelve_button/shelve_button.html' with book=book %}
    - {% include 'snippets/shelve_button/shelve_button.html' with book=book %} + {% endfor %} +
    + +
    + {% include 'snippets/pagination.html' with page=books %}
    - {% endfor %}
    -
    - {% include 'snippets/pagination.html' with page=books %} -
    - {% endblock %} From b060cf47f275ebe8209fabaac43e67b59c6171cd Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 17 Jan 2022 08:01:39 -0800 Subject: [PATCH 120/170] Fixes bad cache on content status reading buttons --- bookwyrm/templates/snippets/status/content_status.html | 3 --- 1 file changed, 3 deletions(-) diff --git a/bookwyrm/templates/snippets/status/content_status.html b/bookwyrm/templates/snippets/status/content_status.html index 034e29e94..01734cc78 100644 --- a/bookwyrm/templates/snippets/status/content_status.html +++ b/bookwyrm/templates/snippets/status/content_status.html @@ -3,7 +3,6 @@ {% load i18n %} {% load static %} {% load humanize %} -{% load cache %} {% with status_type=status.status_type %}
    {% if not hide_book %} - {% cache 259200 content_status_book status.id %} {% with book=status.book|default:status.mention_books.first %} {% if book %}
    @@ -36,7 +34,6 @@
    {% endif %} {% endwith %} - {% endcache %} {% endif %}
    From 32a3570b5a772f1d9ebb03cf0dfea47b8532bf47 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 17 Jan 2022 08:08:59 -0800 Subject: [PATCH 121/170] Updates locales --- locale/de_DE/LC_MESSAGES/django.mo | Bin 73501 -> 72911 bytes locale/de_DE/LC_MESSAGES/django.po | 108 ++++---- locale/en_US/LC_MESSAGES/django.po | 361 ++++++++++++++++++++------- locale/es_ES/LC_MESSAGES/django.mo | Bin 79545 -> 79543 bytes locale/es_ES/LC_MESSAGES/django.po | 108 ++++---- locale/fr_FR/LC_MESSAGES/django.mo | Bin 79004 -> 79004 bytes locale/fr_FR/LC_MESSAGES/django.po | 102 ++++---- locale/gl_ES/LC_MESSAGES/django.mo | Bin 77786 -> 77784 bytes locale/gl_ES/LC_MESSAGES/django.po | 108 ++++---- locale/it_IT/LC_MESSAGES/django.mo | Bin 76233 -> 78729 bytes locale/it_IT/LC_MESSAGES/django.po | 134 +++++----- locale/lt_LT/LC_MESSAGES/django.mo | Bin 74891 -> 75364 bytes locale/lt_LT/LC_MESSAGES/django.po | 108 ++++---- locale/no_NO/LC_MESSAGES/django.mo | Bin 75705 -> 75072 bytes locale/no_NO/LC_MESSAGES/django.po | 108 ++++---- locale/pt_BR/LC_MESSAGES/django.mo | Bin 78148 -> 78146 bytes locale/pt_BR/LC_MESSAGES/django.po | 108 ++++---- locale/pt_PT/LC_MESSAGES/django.mo | Bin 73743 -> 73743 bytes locale/pt_PT/LC_MESSAGES/django.po | 102 ++++---- locale/zh_Hans/LC_MESSAGES/django.mo | Bin 67101 -> 67101 bytes locale/zh_Hans/LC_MESSAGES/django.po | 102 ++++---- locale/zh_Hant/LC_MESSAGES/django.mo | Bin 36669 -> 36669 bytes locale/zh_Hant/LC_MESSAGES/django.po | 102 ++++---- 23 files changed, 888 insertions(+), 663 deletions(-) diff --git a/locale/de_DE/LC_MESSAGES/django.mo b/locale/de_DE/LC_MESSAGES/django.mo index 881c71b46c35dd243df3d8605f1169d14eaef23b..45e2a74bdcc17cfd79ec7313fd60a77c38978afb 100644 GIT binary patch delta 17094 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 SEVHr2>X&sl4tTJk)c*mq8x9o! delta 17402 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 diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po index 8343ef5b8..336eed79d 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: 2022-01-12 18:37+0000\n" -"PO-Revision-Date: 2022-01-13 07:16\n" +"POT-Creation-Date: 2022-01-13 16:54+0000\n" +"PO-Revision-Date: 2022-01-13 17:50\n" "Last-Translator: Mouse Reeve \n" "Language-Team: German\n" "Language: de\n" @@ -157,6 +157,38 @@ msgstr "Benutzer*inname" msgid "A user with that username already exists." msgstr "Dieser Benutzer*inname ist bereits vergeben." +#: bookwyrm/models/fields.py:207 +#: bookwyrm/templates/snippets/privacy-icons.html:3 +#: bookwyrm/templates/snippets/privacy-icons.html:4 +#: bookwyrm/templates/snippets/privacy_select.html:11 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 +msgid "Public" +msgstr "Öffentlich" + +#: bookwyrm/models/fields.py:208 +#: bookwyrm/templates/snippets/privacy-icons.html:7 +#: bookwyrm/templates/snippets/privacy-icons.html:8 +#: bookwyrm/templates/snippets/privacy_select.html:14 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 +msgid "Unlisted" +msgstr "Ungelistet" + +#: bookwyrm/models/fields.py:209 +#: bookwyrm/templates/snippets/privacy_select.html:17 +#: bookwyrm/templates/user/relationships/followers.html:6 +#: bookwyrm/templates/user/relationships/layout.html:11 +msgid "Followers" +msgstr "Follower*innen" + +#: bookwyrm/models/fields.py:210 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/privacy-icons.html:15 +#: bookwyrm/templates/snippets/privacy-icons.html:16 +#: bookwyrm/templates/snippets/privacy_select.html:20 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 +msgid "Private" +msgstr "Privat" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Besprechungen" @@ -173,69 +205,69 @@ msgstr "Zitate" msgid "Everything else" msgstr "Alles Andere" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home Timeline" msgstr "Start-Zeitleiste" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home" msgstr "Startseite" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:122 msgid "Books Timeline" msgstr "Bücher-Zeitleiste" -#: bookwyrm/settings.py:121 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Bücher" -#: bookwyrm/settings.py:195 +#: bookwyrm/settings.py:196 msgid "English" msgstr "English (Englisch)" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:197 msgid "Deutsch (German)" msgstr "Deutsch" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:198 msgid "Español (Spanish)" msgstr "Español (Spanisch)" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:199 msgid "Galego (Galician)" msgstr "Galego (Galizisch)" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:200 msgid "Italiano (Italian)" msgstr "" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:201 msgid "Français (French)" msgstr "Français (Französisch)" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:202 msgid "Lietuvių (Lithuanian)" msgstr "Litauisch (Lithuanian)" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:203 msgid "Norsk (Norwegian)" msgstr "" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:204 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Portugiesisch (Brasilien)" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:205 msgid "Português Europeu (European Portuguese)" msgstr "Portugiesisch (Portugal)" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:206 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (vereinfachtes Chinesisch)" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:207 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinesisch, traditionell)" @@ -3793,14 +3825,6 @@ msgstr "Spoileralarm aktivieren" msgid "Comment:" msgstr "Kommentar:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 -#: bookwyrm/templates/snippets/privacy-icons.html:15 -#: bookwyrm/templates/snippets/privacy-icons.html:16 -#: bookwyrm/templates/snippets/privacy_select.html:20 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 -msgid "Private" -msgstr "Privat" - #: bookwyrm/templates/snippets/create_status/post_options_block.html:21 msgid "Post" msgstr "Veröffentlichen" @@ -3925,15 +3949,15 @@ msgstr[1] "hat %(title)s mit %(display_rating) #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Rezension von \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgstr[1] "Rezension von \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "" +msgstr[1] "" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": {{ review_title }" -msgstr "Rezension von \"%(book_title)s\": {{ review_title }" +msgid "Review of \"%(book_title)s\": %(review_title)s" +msgstr "" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -3994,20 +4018,6 @@ msgstr "Zurück" msgid "Next" msgstr "Weiter" -#: bookwyrm/templates/snippets/privacy-icons.html:3 -#: bookwyrm/templates/snippets/privacy-icons.html:4 -#: bookwyrm/templates/snippets/privacy_select.html:11 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 -msgid "Public" -msgstr "Öffentlich" - -#: bookwyrm/templates/snippets/privacy-icons.html:7 -#: bookwyrm/templates/snippets/privacy-icons.html:8 -#: bookwyrm/templates/snippets/privacy_select.html:14 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 -msgid "Unlisted" -msgstr "Ungelistet" - #: bookwyrm/templates/snippets/privacy-icons.html:12 msgid "Followers-only" msgstr "Nur für Follower*innen" @@ -4017,12 +4027,6 @@ msgstr "Nur für Follower*innen" msgid "Post privacy" msgstr "Beitragssichtbarkeit" -#: bookwyrm/templates/snippets/privacy_select.html:17 -#: bookwyrm/templates/user/relationships/followers.html:6 -#: bookwyrm/templates/user/relationships/layout.html:11 -msgid "Followers" -msgstr "Follower*innen" - #: bookwyrm/templates/snippets/rate_action.html:4 msgid "Leave a rating" msgstr "Bewerten" diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index 0752ba9ed..9b22e27c2 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: 2022-01-13 16:54+0000\n" +"POT-Creation-Date: 2022-01-17 16:05+0000\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -18,62 +18,62 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: bookwyrm/forms.py:351 +#: bookwyrm/forms.py:365 msgid "A user with this email already exists." msgstr "" -#: bookwyrm/forms.py:365 +#: bookwyrm/forms.py:379 msgid "One Day" msgstr "" -#: bookwyrm/forms.py:366 +#: bookwyrm/forms.py:380 msgid "One Week" msgstr "" -#: bookwyrm/forms.py:367 +#: bookwyrm/forms.py:381 msgid "One Month" msgstr "" -#: bookwyrm/forms.py:368 +#: bookwyrm/forms.py:382 msgid "Does Not Expire" msgstr "" -#: bookwyrm/forms.py:372 +#: bookwyrm/forms.py:386 #, python-brace-format msgid "{i} uses" msgstr "" -#: bookwyrm/forms.py:373 +#: bookwyrm/forms.py:387 msgid "Unlimited" msgstr "" -#: bookwyrm/forms.py:469 +#: bookwyrm/forms.py:483 msgid "List Order" msgstr "" -#: bookwyrm/forms.py:470 +#: bookwyrm/forms.py:484 msgid "Book Title" msgstr "" -#: bookwyrm/forms.py:471 bookwyrm/templates/shelf/shelf.html:155 +#: bookwyrm/forms.py:485 bookwyrm/templates/shelf/shelf.html:155 #: bookwyrm/templates/shelf/shelf.html:187 #: bookwyrm/templates/snippets/create_status/review.html:33 msgid "Rating" msgstr "" -#: bookwyrm/forms.py:473 bookwyrm/templates/lists/list.html:134 +#: bookwyrm/forms.py:487 bookwyrm/templates/lists/list.html:134 msgid "Sort By" msgstr "" -#: bookwyrm/forms.py:477 +#: bookwyrm/forms.py:491 msgid "Ascending" msgstr "" -#: bookwyrm/forms.py:478 +#: bookwyrm/forms.py:492 msgid "Descending" msgstr "" -#: bookwyrm/forms.py:491 +#: bookwyrm/forms.py:505 msgid "Reading finish date cannot be before start date." msgstr "" @@ -85,8 +85,9 @@ msgstr "" msgid "Could not find a match for book" msgstr "" -#: bookwyrm/models/base_model.py:17 +#: bookwyrm/models/base_model.py:17 bookwyrm/models/link.py:62 #: bookwyrm/templates/import/import_status.html:200 +#: bookwyrm/templates/settings/link_domains/link_domains.html:19 msgid "Pending" msgstr "" @@ -106,23 +107,23 @@ msgstr "" msgid "Domain block" msgstr "" -#: bookwyrm/models/book.py:250 +#: bookwyrm/models/book.py:253 msgid "Audiobook" msgstr "" -#: bookwyrm/models/book.py:251 +#: bookwyrm/models/book.py:254 msgid "eBook" msgstr "" -#: bookwyrm/models/book.py:252 +#: bookwyrm/models/book.py:255 msgid "Graphic novel" msgstr "" -#: bookwyrm/models/book.py:253 +#: bookwyrm/models/book.py:256 msgid "Hardcover" msgstr "" -#: bookwyrm/models/book.py:254 +#: bookwyrm/models/book.py:257 msgid "Paperback" msgstr "" @@ -132,10 +133,11 @@ msgstr "" msgid "Federated" msgstr "" -#: bookwyrm/models/federated_server.py:12 +#: bookwyrm/models/federated_server.py:12 bookwyrm/models/link.py:61 #: bookwyrm/templates/settings/federation/edit_instance.html:44 #: bookwyrm/templates/settings/federation/instance.html:10 #: bookwyrm/templates/settings/federation/instance_list.html:23 +#: bookwyrm/templates/settings/link_domains/link_domains.html:27 msgid "Blocked" msgstr "" @@ -190,6 +192,11 @@ msgstr "" msgid "Private" msgstr "" +#: bookwyrm/models/link.py:60 +#: bookwyrm/templates/settings/link_domains/link_domains.html:23 +msgid "Approved" +msgstr "" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "" @@ -348,7 +355,7 @@ msgid "Admin" msgstr "" #: bookwyrm/templates/about/about.html:130 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:13 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:14 #: bookwyrm/templates/snippets/status/status_options.html:35 #: bookwyrm/templates/snippets/user_options.html:13 msgid "Send direct message" @@ -530,61 +537,61 @@ msgstr "" msgid "Edit Author" msgstr "" -#: bookwyrm/templates/author/author.html:40 +#: bookwyrm/templates/author/author.html:35 msgid "Author details" msgstr "" -#: bookwyrm/templates/author/author.html:44 +#: bookwyrm/templates/author/author.html:39 #: bookwyrm/templates/author/edit_author.html:42 msgid "Aliases:" msgstr "" -#: bookwyrm/templates/author/author.html:53 +#: bookwyrm/templates/author/author.html:48 msgid "Born:" msgstr "" -#: bookwyrm/templates/author/author.html:60 +#: bookwyrm/templates/author/author.html:55 msgid "Died:" msgstr "" -#: bookwyrm/templates/author/author.html:70 +#: bookwyrm/templates/author/author.html:65 msgid "External links" msgstr "" -#: bookwyrm/templates/author/author.html:75 +#: bookwyrm/templates/author/author.html:70 msgid "Wikipedia" msgstr "" -#: bookwyrm/templates/author/author.html:83 +#: bookwyrm/templates/author/author.html:78 msgid "View ISNI record" msgstr "" -#: bookwyrm/templates/author/author.html:88 +#: bookwyrm/templates/author/author.html:83 #: bookwyrm/templates/author/sync_modal.html:5 #: bookwyrm/templates/book/book.html:122 #: bookwyrm/templates/book/sync_modal.html:5 msgid "Load data" msgstr "" -#: bookwyrm/templates/author/author.html:92 +#: bookwyrm/templates/author/author.html:87 #: bookwyrm/templates/book/book.html:126 msgid "View on OpenLibrary" msgstr "" -#: bookwyrm/templates/author/author.html:107 +#: bookwyrm/templates/author/author.html:102 #: bookwyrm/templates/book/book.html:140 msgid "View on Inventaire" msgstr "" -#: bookwyrm/templates/author/author.html:123 +#: bookwyrm/templates/author/author.html:118 msgid "View on LibraryThing" msgstr "" -#: bookwyrm/templates/author/author.html:131 +#: bookwyrm/templates/author/author.html:126 msgid "View on Goodreads" msgstr "" -#: bookwyrm/templates/author/author.html:145 +#: bookwyrm/templates/author/author.html:141 #, python-format msgid "Books by %(name)s" msgstr "" @@ -614,7 +621,9 @@ msgid "Metadata" msgstr "" #: bookwyrm/templates/author/edit_author.html:35 -#: bookwyrm/templates/lists/form.html:9 bookwyrm/templates/shelf/form.html:9 +#: bookwyrm/templates/lists/form.html:9 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:14 +#: bookwyrm/templates/shelf/form.html:9 msgid "Name:" msgstr "" @@ -668,6 +677,7 @@ msgstr "" #: bookwyrm/templates/author/edit_author.html:115 #: bookwyrm/templates/book/book.html:193 #: bookwyrm/templates/book/edit/edit_book.html:121 +#: bookwyrm/templates/book/file_links/add_link_modal.html:50 #: bookwyrm/templates/groups/form.html:30 #: bookwyrm/templates/lists/bookmark_button.html:15 #: bookwyrm/templates/lists/form.html:130 @@ -677,7 +687,7 @@ msgstr "" #: bookwyrm/templates/settings/federation/edit_instance.html:82 #: bookwyrm/templates/settings/federation/instance.html:87 #: bookwyrm/templates/settings/site.html:133 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:68 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:69 #: bookwyrm/templates/shelf/form.html:25 #: bookwyrm/templates/snippets/reading_modals/layout.html:18 msgid "Save" @@ -689,13 +699,16 @@ msgstr "" #: bookwyrm/templates/book/cover_add_modal.html:32 #: bookwyrm/templates/book/edit/edit_book.html:123 #: bookwyrm/templates/book/edit/edit_book.html:126 +#: bookwyrm/templates/book/file_links/add_link_modal.html:52 +#: bookwyrm/templates/book/file_links/verification_modal.html:21 #: bookwyrm/templates/book/sync_modal.html:23 #: bookwyrm/templates/groups/delete_group_modal.html:17 #: bookwyrm/templates/lists/delete_list_modal.html:18 #: bookwyrm/templates/readthrough/delete_readthrough_modal.html:23 #: bookwyrm/templates/readthrough/readthrough_modal.html:74 #: bookwyrm/templates/settings/federation/instance.html:88 -#: bookwyrm/templates/snippets/report_modal.html:38 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:22 +#: bookwyrm/templates/snippets/report_modal.html:54 msgid "Cancel" msgstr "" @@ -1040,6 +1053,102 @@ msgstr "" msgid "Search editions" msgstr "" +#: bookwyrm/templates/book/file_links/add_link_modal.html:6 +msgid "Add file link" +msgstr "" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:19 +msgid "Links from unknown domains will need to be approved by a moderator before they are added." +msgstr "" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:24 +msgid "URL:" +msgstr "" + +#: bookwyrm/templates/book/file_links/add_link_modal.html:29 +msgid "File type:" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:5 +#: bookwyrm/templates/book/file_links/edit_links.html:22 +#: bookwyrm/templates/book/file_links/links.html:47 +msgid "Edit links" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:11 +#, python-format +msgid "" +"\n" +" Links for \"%(title)s\"\n" +" " +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:32 +#: bookwyrm/templates/settings/link_domains/link_table.html:6 +msgid "URL" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:33 +#: bookwyrm/templates/settings/link_domains/link_table.html:7 +msgid "Added by" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:34 +#: bookwyrm/templates/settings/link_domains/link_table.html:8 +msgid "Filetype" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:35 +#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 +#: bookwyrm/templates/settings/reports/report_links_table.html:5 +msgid "Domain" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:36 +#: bookwyrm/templates/settings/federation/instance.html:94 +#: bookwyrm/templates/settings/reports/report_links_table.html:6 +msgid "Actions" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:52 +#: bookwyrm/templates/book/file_links/verification_modal.html:25 +msgid "Report spam" +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:65 +msgid "No links available for this book." +msgstr "" + +#: bookwyrm/templates/book/file_links/edit_links.html:76 +#: bookwyrm/templates/book/file_links/links.html:18 +msgid "Add link to file" +msgstr "" + +#: bookwyrm/templates/book/file_links/file_link_page.html:6 +msgid "File Links" +msgstr "" + +#: bookwyrm/templates/book/file_links/links.html:9 +msgid "Get a copy" +msgstr "" + +#: bookwyrm/templates/book/file_links/links.html:41 +msgid "No links available" +msgstr "" + +#: bookwyrm/templates/book/file_links/verification_modal.html:5 +msgid "Leaving BookWyrm" +msgstr "" + +#: bookwyrm/templates/book/file_links/verification_modal.html:11 +#, python-format +msgid "This link is taking you to: %(link_url)s.
    Is that where you'd like to go?" +msgstr "" + +#: bookwyrm/templates/book/file_links/verification_modal.html:20 +msgid "Continue" +msgstr "" + #: bookwyrm/templates/book/publisher_info.html:23 #, python-format msgid "%(format)s, %(pages)s pages" @@ -1110,8 +1219,8 @@ msgstr "" #: bookwyrm/templates/confirm_email/confirm_email.html:25 #: bookwyrm/templates/landing/layout.html:73 -#: bookwyrm/templates/settings/dashboard/dashboard.html:93 -#: bookwyrm/templates/snippets/report_modal.html:37 +#: bookwyrm/templates/settings/dashboard/dashboard.html:104 +#: bookwyrm/templates/snippets/report_modal.html:52 msgid "Submit" msgstr "" @@ -1858,6 +1967,7 @@ msgid "Review" msgstr "" #: bookwyrm/templates/import/import_status.html:124 +#: bookwyrm/templates/settings/link_domains/link_table.html:9 msgid "Book" msgstr "" @@ -1910,6 +2020,7 @@ msgstr "" #: bookwyrm/templates/import/manual_review.html:58 #: bookwyrm/templates/lists/curate.html:59 +#: bookwyrm/templates/settings/link_domains/link_domains.html:76 msgid "Approve" msgstr "" @@ -2257,6 +2368,7 @@ msgid "List position" msgstr "" #: bookwyrm/templates/lists/list.html:101 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:21 msgid "Set" msgstr "" @@ -2788,6 +2900,11 @@ msgstr "" msgid "Add read dates for \"%(title)s\"" msgstr "" +#: bookwyrm/templates/report.html:5 +#: bookwyrm/templates/snippets/report_button.html:13 +msgid "Report" +msgstr "" + #: bookwyrm/templates/search/book.html:44 msgid "Results from" msgstr "" @@ -2860,13 +2977,13 @@ msgstr "" #: bookwyrm/templates/settings/announcements/announcement.html:46 #: bookwyrm/templates/settings/announcements/announcement_form.html:44 -#: bookwyrm/templates/settings/dashboard/dashboard.html:71 +#: bookwyrm/templates/settings/dashboard/dashboard.html:82 msgid "Start date:" msgstr "" #: bookwyrm/templates/settings/announcements/announcement.html:51 #: bookwyrm/templates/settings/announcements/announcement_form.html:54 -#: bookwyrm/templates/settings/dashboard/dashboard.html:77 +#: bookwyrm/templates/settings/dashboard/dashboard.html:88 msgid "End date:" msgstr "" @@ -2894,7 +3011,7 @@ msgstr "" #: bookwyrm/templates/settings/announcements/announcements.html:3 #: bookwyrm/templates/settings/announcements/announcements.html:5 -#: bookwyrm/templates/settings/layout.html:72 +#: bookwyrm/templates/settings/layout.html:76 msgid "Announcements" msgstr "" @@ -2934,7 +3051,7 @@ msgid "Dashboard" msgstr "" #: bookwyrm/templates/settings/dashboard/dashboard.html:15 -#: bookwyrm/templates/settings/dashboard/dashboard.html:100 +#: bookwyrm/templates/settings/dashboard/dashboard.html:111 msgid "Total users" msgstr "" @@ -2961,36 +3078,43 @@ msgstr[1] "" #: bookwyrm/templates/settings/dashboard/dashboard.html:54 #, python-format +msgid "%(display_count)s domain needs review" +msgid_plural "%(display_count)s domains need review" +msgstr[0] "" +msgstr[1] "" + +#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#, python-format msgid "%(display_count)s invite request" msgid_plural "%(display_count)s invite requests" msgstr[0] "" msgstr[1] "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:65 +#: bookwyrm/templates/settings/dashboard/dashboard.html:76 msgid "Instance Activity" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:83 +#: bookwyrm/templates/settings/dashboard/dashboard.html:94 msgid "Interval:" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:87 +#: bookwyrm/templates/settings/dashboard/dashboard.html:98 msgid "Days" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:88 +#: bookwyrm/templates/settings/dashboard/dashboard.html:99 msgid "Weeks" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:106 +#: bookwyrm/templates/settings/dashboard/dashboard.html:117 msgid "User signup activity" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:112 +#: bookwyrm/templates/settings/dashboard/dashboard.html:123 msgid "Status activity" msgstr "" -#: bookwyrm/templates/settings/dashboard/dashboard.html:118 +#: bookwyrm/templates/settings/dashboard/dashboard.html:129 msgid "Works created" msgstr "" @@ -3025,10 +3149,6 @@ msgstr "" msgid "When someone tries to register with an email from this domain, no account will be created. The registration process will appear to have worked." msgstr "" -#: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:25 -msgid "Domain" -msgstr "" - #: bookwyrm/templates/settings/email_blocklist/email_blocklist.html:29 #: bookwyrm/templates/settings/ip_blocklist/ip_blocklist.html:27 msgid "Options" @@ -3140,12 +3260,8 @@ msgstr "" msgid "No notes" msgstr "" -#: bookwyrm/templates/settings/federation/instance.html:94 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 -msgid "Actions" -msgstr "" - #: bookwyrm/templates/settings/federation/instance.html:98 +#: bookwyrm/templates/settings/link_domains/link_domains.html:87 #: bookwyrm/templates/snippets/block_button.html:5 msgid "Block" msgstr "" @@ -3358,62 +3474,113 @@ msgstr "" msgid "Reports" msgstr "" -#: bookwyrm/templates/settings/layout.html:68 +#: bookwyrm/templates/settings/layout.html:67 +#: bookwyrm/templates/settings/link_domains/link_domains.html:5 +#: bookwyrm/templates/settings/link_domains/link_domains.html:7 +msgid "Link Domains" +msgstr "" + +#: bookwyrm/templates/settings/layout.html:72 msgid "Instance Settings" msgstr "" -#: bookwyrm/templates/settings/layout.html:76 +#: bookwyrm/templates/settings/layout.html:80 #: bookwyrm/templates/settings/site.html:4 #: bookwyrm/templates/settings/site.html:6 msgid "Site Settings" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:5 -#: bookwyrm/templates/settings/reports/report.html:8 -#: bookwyrm/templates/settings/reports/report_preview.html:6 +#: bookwyrm/templates/settings/link_domains/edit_domain_modal.html:5 #, python-format -msgid "Report #%(report_id)s: %(username)s" +msgid "Set display name for %(url)s" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:9 +#: bookwyrm/templates/settings/link_domains/link_domains.html:11 +msgid "Link domains must be approved before they are shown on book pages. Please make sure that the domains are not hosting spam, malicious code, or deceptive links before approving." +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:45 +msgid "Set display name" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:53 +msgid "View links" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:96 +msgid "No domains currently approved" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:98 +msgid "No domains currently pending" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_domains.html:100 +msgid "No domains currently blocked" +msgstr "" + +#: bookwyrm/templates/settings/link_domains/link_table.html:39 +msgid "No links available for this domain." +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:11 msgid "Back to reports" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:23 +#: bookwyrm/templates/settings/reports/report.html:22 +msgid "Reported statuses" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:27 +msgid "Status has been deleted" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:39 +msgid "Reported links" +msgstr "" + +#: bookwyrm/templates/settings/reports/report.html:55 msgid "Moderator Comments" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:41 +#: bookwyrm/templates/settings/reports/report.html:73 #: bookwyrm/templates/snippets/create_status.html:28 msgid "Comment" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:46 -msgid "Reported statuses" +#: bookwyrm/templates/settings/reports/report_header.html:6 +#, python-format +msgid "Report #%(report_id)s: Status posted by @%(username)s" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:48 -msgid "No statuses reported" +#: bookwyrm/templates/settings/reports/report_header.html:12 +#, python-format +msgid "Report #%(report_id)s: Link added by @%(username)s" msgstr "" -#: bookwyrm/templates/settings/reports/report.html:54 -msgid "Status has been deleted" +#: bookwyrm/templates/settings/reports/report_header.html:18 +#, python-format +msgid "Report #%(report_id)s: User @%(username)s" msgstr "" -#: bookwyrm/templates/settings/reports/report_preview.html:13 +#: bookwyrm/templates/settings/reports/report_links_table.html:17 +msgid "Block domain" +msgstr "" + +#: bookwyrm/templates/settings/reports/report_preview.html:17 msgid "No notes provided" msgstr "" -#: bookwyrm/templates/settings/reports/report_preview.html:20 +#: bookwyrm/templates/settings/reports/report_preview.html:24 #, python-format -msgid "Reported by %(username)s" +msgid "Reported by @%(username)s" msgstr "" -#: bookwyrm/templates/settings/reports/report_preview.html:30 +#: bookwyrm/templates/settings/reports/report_preview.html:34 msgid "Re-open" msgstr "" -#: bookwyrm/templates/settings/reports/report_preview.html:32 +#: bookwyrm/templates/settings/reports/report_preview.html:36 msgid "Resolve" msgstr "" @@ -3541,7 +3708,7 @@ msgid "Invite request text:" msgstr "" #: bookwyrm/templates/settings/users/delete_user_form.html:5 -#: bookwyrm/templates/settings/users/user_moderation_actions.html:31 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:32 msgid "Permanently delete user" msgstr "" @@ -3651,15 +3818,19 @@ msgstr "" msgid "Permanently deleted" msgstr "" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:20 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:8 +msgid "User Actions" +msgstr "" + +#: bookwyrm/templates/settings/users/user_moderation_actions.html:21 msgid "Suspend user" msgstr "" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:25 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:26 msgid "Un-suspend user" msgstr "" -#: bookwyrm/templates/settings/users/user_moderation_actions.html:47 +#: bookwyrm/templates/settings/users/user_moderation_actions.html:48 msgid "Access level:" msgstr "" @@ -4063,21 +4234,31 @@ msgstr "" msgid "Sign Up" msgstr "" -#: bookwyrm/templates/snippets/report_button.html:13 -msgid "Report" +#: bookwyrm/templates/snippets/report_modal.html:8 +#, python-format +msgid "Report @%(username)s's status" msgstr "" -#: bookwyrm/templates/snippets/report_modal.html:6 +#: bookwyrm/templates/snippets/report_modal.html:10 +#, python-format +msgid "Report %(domain)s link" +msgstr "" + +#: bookwyrm/templates/snippets/report_modal.html:12 #, python-format msgid "Report @%(username)s" msgstr "" -#: bookwyrm/templates/snippets/report_modal.html:23 +#: bookwyrm/templates/snippets/report_modal.html:34 #, python-format msgid "This report will be sent to %(site_name)s's moderators for review." msgstr "" -#: bookwyrm/templates/snippets/report_modal.html:26 +#: bookwyrm/templates/snippets/report_modal.html:36 +msgid "Links from this domain will be removed until your report has been reviewed." +msgstr "" + +#: bookwyrm/templates/snippets/report_modal.html:41 msgid "More info about this report:" msgstr "" diff --git a/locale/es_ES/LC_MESSAGES/django.mo b/locale/es_ES/LC_MESSAGES/django.mo index c5333e390d50034e67532984dc4e70af7de1c8cf..04887d7d0bacc6bf07b591418d4172337c78fa0c 100644 GIT binary patch delta 10270 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 delta 10214 zcmZwNd0bb;{>Sn2MHU5AWJ?hQQ9uw}KuHZ3C^b=0)4VF~ByD&?vXzu#ZanK^T2KJ%HG^TkK)yypGMHSevr zL)=b|<2?S3$_Nq`U=dz)##1iV+dYEAH0VFSdP9}Wv=5?#~`eMF&KlXw%!v1 zsSm?Y96i@@D+ZWOLmCYWZHLdW8ub%c6)&PDzJ;35XPybD2F6hjNA=G@Eu=GQqMoRQ z48{@o3|7Wt)-&^56Y)~-CtTQo&dI2iH9jFx^ z!1{O+73iO+@#-!x3rln9k#)ct*bOzo5UhnSVir!t1T4XZcoSnWa-kWxE$Y3F zs6cz5#v6*&aSVpz6pTi983lg|yHSxJMy321D$)z67cZms_`a?GjgL^TUf?+Kn1Je^ zgIY*$)O&-lB4f7w4b(VqBZ0ckJo{iN*5$z(48vlKz%!_U@1g>Gh+1LbyJmuL)LzG< zCQie?n1SlQ2$kWrsD6d03>0By=66m}NTT5areeS%GjJPhNj(S4aE7h-TkJTA)C({L z_n|Uz)wX*tF=wF>X4Bryx)d8x{~4n&^k2Nk{7x!`ZJ3RrSdPIMywvP%97a-q5_JZK zq55q=ZQWkfbu2-pwiK1IZ*2QH)Ye|aaURFHf!dn<<>X)YdK`tP@l{j`%dDrZ7f~s{ ziWOU7eTW*!cZIp0;i&hMFdWltJsb6YPg@^=+M4_oSm`*qxC%AUpQyd9vdS2awW-&$^|q*tbwLF(1QqCut6Y=fG4{b?R4P}aQn?-z za5L(Klc>{t-qvrTuGa(9Aq#lVj2D5bx5hB+f(l?LD&X;`_oliOwAYJK9X4VJ?nmv} zaqD^13s+Eqlw%b7t~S@NJ}Lv9Q5oukT1Xx$lh0!<9EA#K7S2U?H3bf~)AW54SqUmd zCsA8-0X5J~`}{7ZQ}F=v9JR+kpx(QQ3gjTS^%3sB=O!!FG4RQu4REEj#KPeVVPja{(-bMQx7Z~Bq>P`T(u`!;NfJ8®29-* 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 diff --git a/locale/es_ES/LC_MESSAGES/django.po b/locale/es_ES/LC_MESSAGES/django.po index 8262bd0ad..50336a34e 100644 --- a/locale/es_ES/LC_MESSAGES/django.po +++ b/locale/es_ES/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-12 18:37+0000\n" -"PO-Revision-Date: 2022-01-12 21:26\n" +"POT-Creation-Date: 2022-01-13 16:54+0000\n" +"PO-Revision-Date: 2022-01-13 18:45\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Spanish\n" "Language: es\n" @@ -157,6 +157,38 @@ msgstr "nombre de usuario" msgid "A user with that username already exists." msgstr "Ya existe un usuario con ese nombre." +#: bookwyrm/models/fields.py:207 +#: bookwyrm/templates/snippets/privacy-icons.html:3 +#: bookwyrm/templates/snippets/privacy-icons.html:4 +#: bookwyrm/templates/snippets/privacy_select.html:11 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 +msgid "Public" +msgstr "Público" + +#: bookwyrm/models/fields.py:208 +#: bookwyrm/templates/snippets/privacy-icons.html:7 +#: bookwyrm/templates/snippets/privacy-icons.html:8 +#: bookwyrm/templates/snippets/privacy_select.html:14 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 +msgid "Unlisted" +msgstr "No listado" + +#: bookwyrm/models/fields.py:209 +#: bookwyrm/templates/snippets/privacy_select.html:17 +#: bookwyrm/templates/user/relationships/followers.html:6 +#: bookwyrm/templates/user/relationships/layout.html:11 +msgid "Followers" +msgstr "Seguidores" + +#: bookwyrm/models/fields.py:210 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/privacy-icons.html:15 +#: bookwyrm/templates/snippets/privacy-icons.html:16 +#: bookwyrm/templates/snippets/privacy_select.html:20 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 +msgid "Private" +msgstr "Privado" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Reseñas" @@ -173,69 +205,69 @@ msgstr "Citas" msgid "Everything else" msgstr "Todo lo demás" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home Timeline" msgstr "Línea de tiempo principal" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home" msgstr "Inicio" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:122 msgid "Books Timeline" msgstr "Línea temporal de libros" -#: bookwyrm/settings.py:121 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Libros" -#: bookwyrm/settings.py:195 +#: bookwyrm/settings.py:196 msgid "English" msgstr "English (Inglés)" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:197 msgid "Deutsch (German)" msgstr "Deutsch (Alemán)" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:198 msgid "Español (Spanish)" msgstr "Español" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:199 msgid "Galego (Galician)" msgstr "Galego (Gallego)" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:200 msgid "Italiano (Italian)" msgstr "Italiano" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:201 msgid "Français (French)" msgstr "Français (Francés)" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:202 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituano)" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:203 msgid "Norsk (Norwegian)" msgstr "Norsk (Noruego)" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:204 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portugués brasileño)" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:205 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugués europeo)" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:206 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chino simplificado)" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:207 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chino tradicional)" @@ -3793,14 +3825,6 @@ msgstr "Incluir alerta de spoiler" msgid "Comment:" msgstr "Comentario:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 -#: bookwyrm/templates/snippets/privacy-icons.html:15 -#: bookwyrm/templates/snippets/privacy-icons.html:16 -#: bookwyrm/templates/snippets/privacy_select.html:20 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 -msgid "Private" -msgstr "Privado" - #: bookwyrm/templates/snippets/create_status/post_options_block.html:21 msgid "Post" msgstr "Compartir" @@ -3925,15 +3949,15 @@ msgstr[1] "valoró %(title)s: %(display_rating #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Reseña de «%(book_title)s» (%(display_rating)s estrella): %(review_title)s" -msgstr[1] "Reseña de «%(book_title)s» (%(display_rating)s estrellas): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "Reseña de «%(book_title)s» (%(display_rating)s estrella): %(review_title)s" +msgstr[1] "Reseña de «%(book_title)s» (%(display_rating)s estrellas): %(review_title)s" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": {{ review_title }" -msgstr "Reseña de «%(book_title)s»: {{ review_title }" +msgid "Review of \"%(book_title)s\": %(review_title)s" +msgstr "Reseña de «%(book_title)s»: %(review_title)s" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -3994,20 +4018,6 @@ msgstr "Anterior" msgid "Next" msgstr "Siguiente" -#: bookwyrm/templates/snippets/privacy-icons.html:3 -#: bookwyrm/templates/snippets/privacy-icons.html:4 -#: bookwyrm/templates/snippets/privacy_select.html:11 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 -msgid "Public" -msgstr "Público" - -#: bookwyrm/templates/snippets/privacy-icons.html:7 -#: bookwyrm/templates/snippets/privacy-icons.html:8 -#: bookwyrm/templates/snippets/privacy_select.html:14 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 -msgid "Unlisted" -msgstr "No listado" - #: bookwyrm/templates/snippets/privacy-icons.html:12 msgid "Followers-only" msgstr "Solo seguidores" @@ -4017,12 +4027,6 @@ msgstr "Solo seguidores" msgid "Post privacy" msgstr "Privacidad de publicación" -#: bookwyrm/templates/snippets/privacy_select.html:17 -#: bookwyrm/templates/user/relationships/followers.html:6 -#: bookwyrm/templates/user/relationships/layout.html:11 -msgid "Followers" -msgstr "Seguidores" - #: bookwyrm/templates/snippets/rate_action.html:4 msgid "Leave a rating" msgstr "Da una valoración" diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo index 4a2eb71156218b4902da0b2aeeca989bd051bb62..32c8441e0e1569bcebadc6e7316a7da87ef4cc5c 100644 GIT binary patch delta 19 bcmbR9l4Z_ImJKDFS\n" "Language-Team: French\n" "Language: fr\n" @@ -157,6 +157,38 @@ msgstr "nom du compte :" msgid "A user with that username already exists." msgstr "Ce nom est déjà associé à un compte." +#: bookwyrm/models/fields.py:207 +#: bookwyrm/templates/snippets/privacy-icons.html:3 +#: bookwyrm/templates/snippets/privacy-icons.html:4 +#: bookwyrm/templates/snippets/privacy_select.html:11 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 +msgid "Public" +msgstr "Public" + +#: bookwyrm/models/fields.py:208 +#: bookwyrm/templates/snippets/privacy-icons.html:7 +#: bookwyrm/templates/snippets/privacy-icons.html:8 +#: bookwyrm/templates/snippets/privacy_select.html:14 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 +msgid "Unlisted" +msgstr "Non listé" + +#: bookwyrm/models/fields.py:209 +#: bookwyrm/templates/snippets/privacy_select.html:17 +#: bookwyrm/templates/user/relationships/followers.html:6 +#: bookwyrm/templates/user/relationships/layout.html:11 +msgid "Followers" +msgstr "Abonné(e)s" + +#: bookwyrm/models/fields.py:210 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/privacy-icons.html:15 +#: bookwyrm/templates/snippets/privacy-icons.html:16 +#: bookwyrm/templates/snippets/privacy_select.html:20 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 +msgid "Private" +msgstr "Privé" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Critiques" @@ -173,69 +205,69 @@ msgstr "Citations" msgid "Everything else" msgstr "Tout le reste" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home Timeline" msgstr "Mon fil d’actualité" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home" msgstr "Accueil" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:122 msgid "Books Timeline" msgstr "Actualité de mes livres" -#: bookwyrm/settings.py:121 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Livres" -#: bookwyrm/settings.py:195 +#: bookwyrm/settings.py:196 msgid "English" msgstr "English" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:197 msgid "Deutsch (German)" msgstr "Deutsch" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:198 msgid "Español (Spanish)" msgstr "Español" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:199 msgid "Galego (Galician)" msgstr "Galego (Galicien)" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:200 msgid "Italiano (Italian)" msgstr "Italiano (italien)" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:201 msgid "Français (French)" msgstr "Français" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:202 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituanien)" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:203 msgid "Norsk (Norwegian)" msgstr "Norsk (norvégien)" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:204 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portugais brésilien)" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:205 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugais européen)" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:206 msgid "简体中文 (Simplified Chinese)" msgstr "简化字" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:207 msgid "繁體中文 (Traditional Chinese)" msgstr "Infos supplémentaires :" @@ -3793,14 +3825,6 @@ msgstr "Afficher une alerte spoiler" msgid "Comment:" msgstr "Commentaire :" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 -#: bookwyrm/templates/snippets/privacy-icons.html:15 -#: bookwyrm/templates/snippets/privacy-icons.html:16 -#: bookwyrm/templates/snippets/privacy_select.html:20 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 -msgid "Private" -msgstr "Privé" - #: bookwyrm/templates/snippets/create_status/post_options_block.html:21 msgid "Post" msgstr "Publier" @@ -3925,14 +3949,14 @@ msgstr[1] "a noté %(title)s : %(display_ratin #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" msgstr[0] "" msgstr[1] "" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": {{ review_title }" +msgid "Review of \"%(book_title)s\": %(review_title)s" msgstr "" #: bookwyrm/templates/snippets/goal_form.html:4 @@ -3994,20 +4018,6 @@ msgstr "Précédente" msgid "Next" msgstr "Suivante" -#: bookwyrm/templates/snippets/privacy-icons.html:3 -#: bookwyrm/templates/snippets/privacy-icons.html:4 -#: bookwyrm/templates/snippets/privacy_select.html:11 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 -msgid "Public" -msgstr "Public" - -#: bookwyrm/templates/snippets/privacy-icons.html:7 -#: bookwyrm/templates/snippets/privacy-icons.html:8 -#: bookwyrm/templates/snippets/privacy_select.html:14 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 -msgid "Unlisted" -msgstr "Non listé" - #: bookwyrm/templates/snippets/privacy-icons.html:12 msgid "Followers-only" msgstr "Abonnemé(e)s uniquement" @@ -4017,12 +4027,6 @@ msgstr "Abonnemé(e)s uniquement" msgid "Post privacy" msgstr "Confidentialité du statut" -#: bookwyrm/templates/snippets/privacy_select.html:17 -#: bookwyrm/templates/user/relationships/followers.html:6 -#: bookwyrm/templates/user/relationships/layout.html:11 -msgid "Followers" -msgstr "Abonné(e)s" - #: bookwyrm/templates/snippets/rate_action.html:4 msgid "Leave a rating" msgstr "Laisser une note" diff --git a/locale/gl_ES/LC_MESSAGES/django.mo b/locale/gl_ES/LC_MESSAGES/django.mo index 89d3d0d89905359ce49836389ebe2f7d11c1368c..918936d8da40485f56760dfd813b4d14a93e499d 100644 GIT binary patch delta 10268 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 diff --git a/locale/gl_ES/LC_MESSAGES/django.po b/locale/gl_ES/LC_MESSAGES/django.po index 7b2fc3475..798be463c 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: 2022-01-12 18:37+0000\n" -"PO-Revision-Date: 2022-01-13 04:45\n" +"POT-Creation-Date: 2022-01-13 16:54+0000\n" +"PO-Revision-Date: 2022-01-14 07:13\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Galician\n" "Language: gl\n" @@ -157,6 +157,38 @@ msgstr "nome de usuaria" msgid "A user with that username already exists." msgstr "Xa existe unha usuaria con ese nome." +#: bookwyrm/models/fields.py:207 +#: bookwyrm/templates/snippets/privacy-icons.html:3 +#: bookwyrm/templates/snippets/privacy-icons.html:4 +#: bookwyrm/templates/snippets/privacy_select.html:11 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 +msgid "Public" +msgstr "Público" + +#: bookwyrm/models/fields.py:208 +#: bookwyrm/templates/snippets/privacy-icons.html:7 +#: bookwyrm/templates/snippets/privacy-icons.html:8 +#: bookwyrm/templates/snippets/privacy_select.html:14 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 +msgid "Unlisted" +msgstr "Non listado" + +#: bookwyrm/models/fields.py:209 +#: bookwyrm/templates/snippets/privacy_select.html:17 +#: bookwyrm/templates/user/relationships/followers.html:6 +#: bookwyrm/templates/user/relationships/layout.html:11 +msgid "Followers" +msgstr "Seguidoras" + +#: bookwyrm/models/fields.py:210 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/privacy-icons.html:15 +#: bookwyrm/templates/snippets/privacy-icons.html:16 +#: bookwyrm/templates/snippets/privacy_select.html:20 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 +msgid "Private" +msgstr "Privado" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Recensións" @@ -173,69 +205,69 @@ msgstr "Citas" msgid "Everything else" msgstr "As outras cousas" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home Timeline" msgstr "Cronoloxía de Inicio" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home" msgstr "Inicio" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:122 msgid "Books Timeline" msgstr "Cronoloxía de libros" -#: bookwyrm/settings.py:121 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Libros" -#: bookwyrm/settings.py:195 +#: bookwyrm/settings.py:196 msgid "English" msgstr "English (Inglés)" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:197 msgid "Deutsch (German)" msgstr "Alemán (Alemaña)" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:198 msgid "Español (Spanish)" msgstr "Español (España)" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:199 msgid "Galego (Galician)" msgstr "Galego (Galician)" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:200 msgid "Italiano (Italian)" msgstr "Italiano (Italian)" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:201 msgid "Français (French)" msgstr "Francés (Francia)" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:202 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lithuanian)" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:203 msgid "Norsk (Norwegian)" msgstr "Noruegués (Norwegian)" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:204 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portugués brasileiro)" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:205 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portugués europeo)" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:206 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chinés simplificado)" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:207 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinés tradicional)" @@ -3793,14 +3825,6 @@ msgstr "Incluír alerta de spoiler" msgid "Comment:" msgstr "Comentario:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 -#: bookwyrm/templates/snippets/privacy-icons.html:15 -#: bookwyrm/templates/snippets/privacy-icons.html:16 -#: bookwyrm/templates/snippets/privacy_select.html:20 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 -msgid "Private" -msgstr "Privado" - #: bookwyrm/templates/snippets/create_status/post_options_block.html:21 msgid "Post" msgstr "Publicación" @@ -3925,15 +3949,15 @@ msgstr[1] "valorado %(title)s: %(display_ratin #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Recensión de \"%(book_title)s\" (%(display_rating)s estrela): %(review_title)s" -msgstr[1] "Recensión de \"%(book_title)s\" (%(display_rating)s estrelas): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "Recensión de \"%(book_title)s\" (%(display_rating)s estrela): %(review_title)s" +msgstr[1] "Recensión de \"%(book_title)s\" (%(display_rating)s estrelas): %(review_title)s" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": {{ review_title }" -msgstr "Recensión de \"%(book_title)s\": { review_title }" +msgid "Review of \"%(book_title)s\": %(review_title)s" +msgstr "Recensión de \"%(book_title)s\" %(review_title)s" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -3994,20 +4018,6 @@ msgstr "Anterior" msgid "Next" msgstr "Seguinte" -#: bookwyrm/templates/snippets/privacy-icons.html:3 -#: bookwyrm/templates/snippets/privacy-icons.html:4 -#: bookwyrm/templates/snippets/privacy_select.html:11 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 -msgid "Public" -msgstr "Público" - -#: bookwyrm/templates/snippets/privacy-icons.html:7 -#: bookwyrm/templates/snippets/privacy-icons.html:8 -#: bookwyrm/templates/snippets/privacy_select.html:14 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 -msgid "Unlisted" -msgstr "Non listado" - #: bookwyrm/templates/snippets/privacy-icons.html:12 msgid "Followers-only" msgstr "Só seguidoras" @@ -4017,12 +4027,6 @@ msgstr "Só seguidoras" msgid "Post privacy" msgstr "Privacidade da publicación" -#: bookwyrm/templates/snippets/privacy_select.html:17 -#: bookwyrm/templates/user/relationships/followers.html:6 -#: bookwyrm/templates/user/relationships/layout.html:11 -msgid "Followers" -msgstr "Seguidoras" - #: bookwyrm/templates/snippets/rate_action.html:4 msgid "Leave a rating" msgstr "Fai unha valoración" diff --git a/locale/it_IT/LC_MESSAGES/django.mo b/locale/it_IT/LC_MESSAGES/django.mo index ee748f049ab34560c72025df31c54c92189944ed..ddc3628ee7dc47622c5a7936d7242efe54847125 100644 GIT binary patch delta 21914 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\n" "Language-Team: Italian\n" "Language: it\n" @@ -74,7 +74,7 @@ msgstr "Decrescente" #: bookwyrm/forms.py:491 msgid "Reading finish date cannot be before start date." -msgstr "" +msgstr "La data di fine lettura non può essere precedente alla data di inizio." #: bookwyrm/importers/importer.py:145 bookwyrm/importers/importer.py:167 msgid "Error loading book" @@ -157,6 +157,38 @@ msgstr "nome utente" msgid "A user with that username already exists." msgstr "Un utente con questo nome utente esiste già." +#: bookwyrm/models/fields.py:207 +#: bookwyrm/templates/snippets/privacy-icons.html:3 +#: bookwyrm/templates/snippets/privacy-icons.html:4 +#: bookwyrm/templates/snippets/privacy_select.html:11 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 +msgid "Public" +msgstr "Pubblico" + +#: bookwyrm/models/fields.py:208 +#: bookwyrm/templates/snippets/privacy-icons.html:7 +#: bookwyrm/templates/snippets/privacy-icons.html:8 +#: bookwyrm/templates/snippets/privacy_select.html:14 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 +msgid "Unlisted" +msgstr "Non in lista" + +#: bookwyrm/models/fields.py:209 +#: bookwyrm/templates/snippets/privacy_select.html:17 +#: bookwyrm/templates/user/relationships/followers.html:6 +#: bookwyrm/templates/user/relationships/layout.html:11 +msgid "Followers" +msgstr "Followers" + +#: bookwyrm/models/fields.py:210 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/privacy-icons.html:15 +#: bookwyrm/templates/snippets/privacy-icons.html:16 +#: bookwyrm/templates/snippets/privacy_select.html:20 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 +msgid "Private" +msgstr "Privata" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Recensioni" @@ -173,69 +205,69 @@ msgstr "Citazioni" msgid "Everything else" msgstr "Tutto il resto" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home Timeline" msgstr "La tua timeline" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home" msgstr "Home" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:122 msgid "Books Timeline" msgstr "Timeline dei libri" -#: bookwyrm/settings.py:121 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Libri" -#: bookwyrm/settings.py:195 +#: bookwyrm/settings.py:196 msgid "English" msgstr "English (Inglese)" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:197 msgid "Deutsch (German)" msgstr "Deutsch (Tedesco)" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:198 msgid "Español (Spanish)" msgstr "Español (Spagnolo)" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:199 msgid "Galego (Galician)" msgstr "Galego (Galiziano)" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:200 msgid "Italiano (Italian)" msgstr "Italiano (Italiano)" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:201 msgid "Français (French)" msgstr "Français (Francese)" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:202 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituano)" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:203 msgid "Norsk (Norwegian)" msgstr "Norsk (Norvegese)" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:204 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Portoghese Brasiliano)" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:205 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Portoghese europeo)" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:206 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Cinese Semplificato)" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:207 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Cinese Tradizionale)" @@ -1476,7 +1508,7 @@ msgstr "Letture correnti" #: bookwyrm/templates/snippets/translated_shelf_name.html:9 #: bookwyrm/templates/user/user.html:35 msgid "Read" -msgstr "Leggi" +msgstr "Letti" #: bookwyrm/templates/get_started/books.html:6 msgid "What are you reading?" @@ -2703,7 +2735,7 @@ msgstr "Stai eliminando questa lettura e i suoi %(count)s aggiornamenti di avanz #: bookwyrm/templates/readthrough/readthrough_modal.html:8 #, python-format msgid "Update read dates for \"%(title)s\"" -msgstr "" +msgstr "Aggiorna date di lettura per \"%(title)s\"" #: bookwyrm/templates/readthrough/readthrough_form.html:10 #: bookwyrm/templates/readthrough/readthrough_modal.html:31 @@ -2754,7 +2786,7 @@ msgstr "Elimina queste date di lettura" #: bookwyrm/templates/readthrough/readthrough_modal.html:12 #, python-format msgid "Add read dates for \"%(title)s\"" -msgstr "" +msgstr "Aggiungi date di lettura per \"%(title)s\"" #: bookwyrm/templates/search/book.html:44 msgid "Results from" @@ -3641,7 +3673,7 @@ msgstr "Modifica Scaffale" #: bookwyrm/templates/shelf/shelf.html:24 msgid "User profile" -msgstr "" +msgstr "Profilo utente" #: bookwyrm/templates/shelf/shelf.html:39 #: bookwyrm/templates/snippets/translated_shelf_name.html:3 @@ -3793,14 +3825,6 @@ msgstr "Includi avviso spoiler" msgid "Comment:" msgstr "Commenta:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 -#: bookwyrm/templates/snippets/privacy-icons.html:15 -#: bookwyrm/templates/snippets/privacy-icons.html:16 -#: bookwyrm/templates/snippets/privacy_select.html:20 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 -msgid "Private" -msgstr "Privata" - #: bookwyrm/templates/snippets/create_status/post_options_block.html:21 msgid "Post" msgstr "Pubblica" @@ -3925,15 +3949,15 @@ msgstr[1] "valutato %(title)s: %(display_ratin #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "" -msgstr[1] "" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "Recensione di \"%(book_title)s\" (%(display_rating)s stella): %(review_title)s" +msgstr[1] "Recensione di \"%(book_title)s\" (%(display_rating)s stelle): %(review_title)s" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": {{ review_title }" -msgstr "" +msgid "Review of \"%(book_title)s\": %(review_title)s" +msgstr "Recensione di \"%(book_title)s\": %(review_title)s" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -3994,20 +4018,6 @@ msgstr "Precedente" msgid "Next" msgstr "Successivo" -#: bookwyrm/templates/snippets/privacy-icons.html:3 -#: bookwyrm/templates/snippets/privacy-icons.html:4 -#: bookwyrm/templates/snippets/privacy_select.html:11 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 -msgid "Public" -msgstr "Pubblico" - -#: bookwyrm/templates/snippets/privacy-icons.html:7 -#: bookwyrm/templates/snippets/privacy-icons.html:8 -#: bookwyrm/templates/snippets/privacy_select.html:14 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 -msgid "Unlisted" -msgstr "Non in lista" - #: bookwyrm/templates/snippets/privacy-icons.html:12 msgid "Followers-only" msgstr "Solo Followers" @@ -4017,12 +4027,6 @@ msgstr "Solo Followers" msgid "Post privacy" msgstr "Privacy dei post" -#: bookwyrm/templates/snippets/privacy_select.html:17 -#: bookwyrm/templates/user/relationships/followers.html:6 -#: bookwyrm/templates/user/relationships/layout.html:11 -msgid "Followers" -msgstr "Followers" - #: bookwyrm/templates/snippets/rate_action.html:4 msgid "Leave a rating" msgstr "Lascia una recensione" @@ -4145,7 +4149,7 @@ msgstr "modificato il %(date)s" #: bookwyrm/templates/snippets/status/headers/comment.html:8 #, python-format msgid "commented on %(book)s by %(author_name)s" -msgstr "" +msgstr "commento su %(book)s di %(author_name)s" #: bookwyrm/templates/snippets/status/headers/comment.html:15 #, python-format @@ -4160,7 +4164,7 @@ msgstr "ha risposto allo statodi %(book)s by %(author_name)s" -msgstr "" +msgstr "citazione da %(book)s di %(author_name)s" #: bookwyrm/templates/snippets/status/headers/quotation.html:15 #, python-format @@ -4175,7 +4179,7 @@ msgstr "valutato %(book)s:" #: bookwyrm/templates/snippets/status/headers/read.html:10 #, python-format msgid "finished reading %(book)s by %(author_name)s" -msgstr "" +msgstr "lettura del libro %(book)s di %(author_name)s completata" #: bookwyrm/templates/snippets/status/headers/read.html:17 #, python-format @@ -4185,7 +4189,7 @@ msgstr "lettura di %(book)s completata" #: bookwyrm/templates/snippets/status/headers/reading.html:10 #, python-format msgid "started reading %(book)s by %(author_name)s" -msgstr "" +msgstr "lettura del libro %(book)s di %(author_name)s iniziata" #: bookwyrm/templates/snippets/status/headers/reading.html:17 #, python-format @@ -4195,7 +4199,7 @@ msgstr "hai iniziato a leggere %(book)s" #: bookwyrm/templates/snippets/status/headers/review.html:8 #, python-format msgid "reviewed %(book)s by %(author_name)s" -msgstr "" +msgstr "recensito %(book)s di %(author_name)s" #: bookwyrm/templates/snippets/status/headers/review.html:15 #, python-format @@ -4205,12 +4209,12 @@ msgstr "recensito %(book)s" #: bookwyrm/templates/snippets/status/headers/to_read.html:10 #, python-format msgid "wants to read %(book)s by %(author_name)s" -msgstr "" +msgstr "da leggere %(book)s da %(author_name)s" #: bookwyrm/templates/snippets/status/headers/to_read.html:17 #, python-format msgid "wants to read %(book)s" -msgstr "" +msgstr "da leggere %(book)s" #: bookwyrm/templates/snippets/status/layout.html:24 #: bookwyrm/templates/snippets/status/status_options.html:17 @@ -4375,7 +4379,7 @@ msgstr "Ancora nessuna attività!" #: bookwyrm/templates/user/user_preview.html:22 #, python-format msgid "Joined %(date)s" -msgstr "Unisciti a %(date)s" +msgstr "Registrato %(date)s" #: bookwyrm/templates/user/user_preview.html:26 #, python-format diff --git a/locale/lt_LT/LC_MESSAGES/django.mo b/locale/lt_LT/LC_MESSAGES/django.mo index 62c51ca05fdb4bc113ec5272d5c18acd067a56d1..c5862461b423110c5de9d4138296ae4979430eb3 100644 GIT binary patch delta 15353 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 diff --git a/locale/lt_LT/LC_MESSAGES/django.po b/locale/lt_LT/LC_MESSAGES/django.po index 27db16f7b..a057889e5 100644 --- a/locale/lt_LT/LC_MESSAGES/django.po +++ b/locale/lt_LT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-12 18:37+0000\n" -"PO-Revision-Date: 2022-01-12 19:52\n" +"POT-Creation-Date: 2022-01-13 16:54+0000\n" +"PO-Revision-Date: 2022-01-14 00:49\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Lithuanian\n" "Language: lt\n" @@ -157,6 +157,38 @@ msgstr "naudotojo vardas" msgid "A user with that username already exists." msgstr "Toks naudotojo vardas jau egzistuoja." +#: bookwyrm/models/fields.py:207 +#: bookwyrm/templates/snippets/privacy-icons.html:3 +#: bookwyrm/templates/snippets/privacy-icons.html:4 +#: bookwyrm/templates/snippets/privacy_select.html:11 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 +msgid "Public" +msgstr "Viešas" + +#: bookwyrm/models/fields.py:208 +#: bookwyrm/templates/snippets/privacy-icons.html:7 +#: bookwyrm/templates/snippets/privacy-icons.html:8 +#: bookwyrm/templates/snippets/privacy_select.html:14 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 +msgid "Unlisted" +msgstr "Slaptas" + +#: bookwyrm/models/fields.py:209 +#: bookwyrm/templates/snippets/privacy_select.html:17 +#: bookwyrm/templates/user/relationships/followers.html:6 +#: bookwyrm/templates/user/relationships/layout.html:11 +msgid "Followers" +msgstr "Sekėjai" + +#: bookwyrm/models/fields.py:210 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/privacy-icons.html:15 +#: bookwyrm/templates/snippets/privacy-icons.html:16 +#: bookwyrm/templates/snippets/privacy_select.html:20 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 +msgid "Private" +msgstr "Privatu" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Apžvalgos" @@ -173,69 +205,69 @@ msgstr "Citatos" msgid "Everything else" msgstr "Visa kita" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home Timeline" msgstr "Pagrindinė siena" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home" msgstr "Pagrindinis" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:122 msgid "Books Timeline" msgstr "Knygų siena" -#: bookwyrm/settings.py:121 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Knygos" -#: bookwyrm/settings.py:195 +#: bookwyrm/settings.py:196 msgid "English" msgstr "English (Anglų)" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:197 msgid "Deutsch (German)" msgstr "Deutsch (Vokiečių)" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:198 msgid "Español (Spanish)" msgstr "Español (Ispanų)" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:199 msgid "Galego (Galician)" msgstr "Galego (galisų)" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:200 msgid "Italiano (Italian)" msgstr "" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:201 msgid "Français (French)" msgstr "Français (Prancūzų)" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:202 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:203 msgid "Norsk (Norwegian)" msgstr "" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:204 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português brasileiro (Brazilijos portugalų)" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:205 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Europos portugalų)" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:206 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Supaprastinta kinų)" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:207 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Tradicinė kinų)" @@ -2730,7 +2762,7 @@ msgstr "" #: bookwyrm/templates/snippets/reading_modals/finish_reading_modal.html:24 #: bookwyrm/templates/snippets/reading_modals/start_reading_modal.html:21 msgid "Started reading" -msgstr "Pradėta skaityti" +msgstr "Pradėjo skaityti" #: bookwyrm/templates/readthrough/readthrough_form.html:18 #: bookwyrm/templates/readthrough/readthrough_modal.html:49 @@ -3823,14 +3855,6 @@ msgstr "Įdėti įspėjimą apie turinio atskleidimą" msgid "Comment:" msgstr "Komentuoti:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 -#: bookwyrm/templates/snippets/privacy-icons.html:15 -#: bookwyrm/templates/snippets/privacy-icons.html:16 -#: bookwyrm/templates/snippets/privacy_select.html:20 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 -msgid "Private" -msgstr "Privatu" - #: bookwyrm/templates/snippets/create_status/post_options_block.html:21 msgid "Post" msgstr "Publikuoti" @@ -3963,8 +3987,8 @@ msgstr[3] "įvertinta %(title)s: %(display_rat #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" msgstr[0] "" msgstr[1] "" msgstr[2] "" @@ -3972,7 +3996,7 @@ msgstr[3] "" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": {{ review_title }" +msgid "Review of \"%(book_title)s\": %(review_title)s" msgstr "" #: bookwyrm/templates/snippets/goal_form.html:4 @@ -4034,20 +4058,6 @@ msgstr "Ankstesnis" msgid "Next" msgstr "Kitas" -#: bookwyrm/templates/snippets/privacy-icons.html:3 -#: bookwyrm/templates/snippets/privacy-icons.html:4 -#: bookwyrm/templates/snippets/privacy_select.html:11 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 -msgid "Public" -msgstr "Viešas" - -#: bookwyrm/templates/snippets/privacy-icons.html:7 -#: bookwyrm/templates/snippets/privacy-icons.html:8 -#: bookwyrm/templates/snippets/privacy_select.html:14 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 -msgid "Unlisted" -msgstr "Slaptas" - #: bookwyrm/templates/snippets/privacy-icons.html:12 msgid "Followers-only" msgstr "Tik sekėjai" @@ -4057,12 +4067,6 @@ msgstr "Tik sekėjai" msgid "Post privacy" msgstr "Įrašo privatumas" -#: bookwyrm/templates/snippets/privacy_select.html:17 -#: bookwyrm/templates/user/relationships/followers.html:6 -#: bookwyrm/templates/user/relationships/layout.html:11 -msgid "Followers" -msgstr "Sekėjai" - #: bookwyrm/templates/snippets/rate_action.html:4 msgid "Leave a rating" msgstr "Palikti įvertinimą" @@ -4215,7 +4219,7 @@ msgstr "įvertino %(book)s:" #: bookwyrm/templates/snippets/status/headers/read.html:10 #, python-format msgid "finished reading %(book)s by %(author_name)s" -msgstr "" +msgstr "pabaigė skaityti %(author_name)s autoriaus knygą %(book)s" #: bookwyrm/templates/snippets/status/headers/read.html:17 #, python-format @@ -4225,7 +4229,7 @@ msgstr "baigė skaityti %(book)s" #: bookwyrm/templates/snippets/status/headers/reading.html:10 #, python-format msgid "started reading %(book)s by %(author_name)s" -msgstr "" +msgstr "pradėjo skaityti %(author_name)s autoriaus knygą %(book)s" #: bookwyrm/templates/snippets/status/headers/reading.html:17 #, python-format diff --git a/locale/no_NO/LC_MESSAGES/django.mo b/locale/no_NO/LC_MESSAGES/django.mo index 8ca7f9a7e2fefafd38f71e23fcca57398d7ded51..329cba8732ef431d3e7055ae3e57de4e152b68ab 100644 GIT binary patch delta 20187 zcmZA82Yim#-^cMQh(v}Jgb*Tj5V1;)*n982Vz0#BTv|IQV$`gyHnrQDwW(dR)UFz} zXIngyb&*}U8&K}o&C-^@Nq!(IL_J< zDs`Nw+KzJ!3t|NRhiNfa9mk=mQyR--3oM1-VI=;JjnS{JKKMGSQAIt z^3#}x_%BcFI?j7C+DY0*jziWdj5%>Us(b^g!wJ-aZedpRW_y`27pBF^m;qbbcmTE} zo`hQ1eJq0S&<`Vup7?BQRv;2Q@{zR6I+LIc*9z^nd8I~ z??n#9DbU<;+TtkefOnApbE>s)9GW=G(A5e*kZF%C2-@Ku%#T@HIZi69gZ;4`=EIAq zog`^(7WgHG5ii4vco2u69~ZBQ#$Z{zj_EM0t>YBMVr{wqJY;%O!29BSi;C}|t{@ew z@y6oTXbd8*h)J<2`eGXl#4hNA18n^W8;`N^WYmUcpxUo!$N8(n778@bPE3pkF*P1V z-PKhLzR`y1h##7nwfjk8@EgT!95~ z2WqDeP#vG47MzIt(#iOt22P0@Fch`Ge3%%Eq89X}wE}9vwNU-sR%8m0>4utcF6!m_ z74=qsM4d!h-XPssZVbcL=otWYl#@^kn2U*V6?VsUm=!a0G~<>;wU0$M;yS~~%%os6 zF2RsaX2rWuCvw=v=P)VpHPnLcpeB5SI^v|A9Vb1eLY+{AwGbvDE`i!m8PviXVS46w zV#w%7hN4zB5!GQ1Y60J&H?Bq>+=yzo19er0Pz$+)>UR%yRgX{$dyiVMZxosDFs;vUpQb-S7Y8>1%Zh$D^U{%yamrx71fm*;*)WlvrOuZlKBvPZ=Wx*_10JV`isPBnJ7=T?- z3mSm_INFv^?ZNr$?iNs>m9MoGyKTecHok}&@DAz@-(n;d?rGlg7}NqzqE7HJY9p^u zjpF zCOCjhFFe6HF#B&U}1wpspkuweotXA4cu5Bf98^cTp2OMeX!G>Z-hZ znJY+#DTp(nUc!8+6XLqP~o}d5i$RwwrH>Sjqs2xqiOgI~LLR(P_+>P4d5!8vD z#?<&6b;sU)O&o$+Kz`K1zC`t_X03;=CT>PXJL`fPpucSpk6LL0Y5}uR3s{UnxW>8% zb;RdTpMp!MiQd|Jr=J-=4QjzzQ5&q#kMq~dSDk_|j6p4E6l%f*)QQYP-Q8ML$6qiA zk0QSuIoB{d7VU2~&>XenIMmMs7u9|?YGG?J6>jOz{j1?23beBes0G}x@e|Y$zO&`t z1I$9wp!!9i1}uTPg7T<^H$qL&8Z~h*)Jr`YHGYDP7rSJ1#2ZipY(-6Y1PkGBs2%$Z zG&@U)p9zwBm)%VBL;YiFctE zl5~*$zCgt}tocw^RT%XyRYXl(57S{A)QJp0EpR;Yz2Z7E$ml3Hq873jb)-k}5S~GG zm_69kFGICohiP#aYT$FI3Gbqg_=PP`G{jyRYJm}`b|o>HKL6D`8GdC(b!>&&Sr61i zeNjg@3bnA=m<<8kBs1qH8T9AvGan=aVUq`x? z0!_FJwZi>2K82e2JZeV|PRI6%!FrASMbCo zqXFMyQA{?{RFtt+MV(MR)XrO??z)q8FlvF5uq!UMvHw?QqA=6~OIxd>#%Y4ua66Zb zj<_@G=!c?KI01EMD=;grLG9=SY5~_#NBJCe#L2!kN17h<6Bk46up@?JEC%B=RR2|| z@!Xwc3XnO8TGtMMLf zb{>el6Rs0PMmrBd9aV1B%8Q~pM56|(Y|HCnH{xcfJ3oLr$`_af-(haxAi1y;`7$)sE+qh3x0-rxjv$fHe{^1%0j3UsBGh= zn3T8&X28Cv1y07?%6P6TW}dQzzrKewecI&k^97(lgNaMbE9@x8Z}@A z%!bu%eJmCr9)&vD&8USPL|;7NlF>_a0rTK9)OUEsiRKClVou_csFx-N{c$L2$K$NC zFe~wL)C7l76P!YQsxF}xde_DeQ44n8+JcX$jscU5X)rNyCM<+U?;t1WI?u>xfTWZ4dE^B{HK>f*VFL`r7}UhQQ0+&f z7Bm%e;7nBepHUk*h8pKAY9rUNC*DS#OucU;_urh1R@@$QV_(!uHXpUa6Q}{tq2B)A zQC}pFF&TceCYxe*8iZP45!5?U7WHXqgj(nj)Od?fKfs)oWRl}H)XEN`j_xFCf*Yu} z_W_p2BvZ{V9#t?eaU6!@Jk-FuQT+~KN<57k?s>E?v9q1qKfoj{rCoWD9W zrXT{_U?Gf04ZI7##1nW1eP)>WGUg!;nrVLAmPVaKcU1W(48wI;9Zy;_%rZZ;I-q`i zpYD=T#~*ML9!0%0!@e~y+cebOE<^oZa2WLt+(EU=HQQWWDb&ka1$DHwP$$;VmbXM* zZ43_Z;>R{>gYMlq=412<8&U8N>O|_!H8!)xppLvddalAc95v7w48obH{;Mz@ZnE)F zRR6O!zKUFp>)a)y0bZc4An`miKqP9SVyHVTg9ot|>SYa@&u_|@8C5?7b+_ZKGchCa z5*zPEo!D{ILT;ev^Z$U1j`)SGNVmWoWfTH@oV1>8g}_%)`|=Re7J=C0GB8stG8Wi;x}>RVf*ChCS-$S@4WF{qEigptI120H zPpA{}Uu=GhE{wX$uDB6rU`?#Fgj2%=%#6>LaR2(arCiG2&tL_tk7F=DUcxMxbeZ{H z$caOUtD?U7_G1)2LG37PxmoZRn1i@7YJoklI_^T9tnUi*4;h(OxaP>JQJ^Dhj5_jm zHtvaihzFrwwuiR7%J=3Z>Z9(wEvjD}Y9T{W3!jF%k{_@k?#84Tw9JMIBM;4aNj)Kzt92V@cj5?WiAy;W!M$l{Vgn+UZ5q4zHmP{%Ok}V_xEy z*b>8jP|W=gCzC+IDpbc(o6J9xRl@wli%@UvNz~ot-)ufcMX)V#ZPY{?un2C)j`#?N zWBn~=+|yWy_%gP~fUT4>ztf9MY8;GNaT12(dVJx<4<5Wqd~mzDnk75TTYMb#dA^Pf z@g3?aYX4{^nu=|R_hUQE_7m5DWAHh4{+aXFS7h^@ro#Y?B3^}Q@Cs(fC#cVRnqAy8 z*1*~rk45k@>TOTH+q`6vn3gyib7DhO`=OW~kD)evdpGAFOy)HOo&ollA3~8BLHTIZ zNo+uMJd0WJp)C*GYkoh7LVYvVz;xKk#{IA*@mSQ`e;Z5T3)IUQwa+ybrS_SLYN8s( zp^nzYJ~#)*V!$uv_xtHska#=x!~56^Tkq$uaq$$k!Ey)8zYi=%-Fe_a^F7iVwXhSe z%|skBAH#9jg^I_R6Pp}1I~swp#4}MZWs)Q27m-5Powx^v;U%nq?{EN?K5CAB3sxdd ze9Y{;8tNq6MmCdxZ7Dc~g)!>5xq=SpO*{n?;Y>`4vu*h*Oh&u`ljD!J{0RCIpF}^r zXv=S*-i^PID|4L>WRg;l@>erZFsfr#48aK0%TfvTQZ~f^?1{RnA+|i;y3m$yLG?Re zyi5pIAMMmgrOSLLcNr&QE&GE)DG96Ub3yI&--E2$(+JKJdZko+o&Bs z$0Yb3{V~x=V{+69grMi&|Dwo5QcwnU^s&|@n1%QPYQ?Xy5c-`mKR!!i0C7u9j$Kg; z9fX?rYt&0Q4s+pKjKr|hW+8RZ)ls(~GXgu{Y`l#sA9lt}Fa~u+38)F?U`kwy+Q}9S z#AB!{yM#J{7pMh(K%JQXS@SUt!c@fh&T{|ZWTGk1K<%spQ9GE7o{3Qlnqysp8ek1- zf?cQu9mB-V`}2|sPX}* zoesD0MAY|0f{oYO`psCD@_kqi6P-6lUJ-Rwbukp%xMcLQ4M**GCTgO&sEHP%I&47g zWH)MOM^G=-In>c!x86g213p3ZOM1bW7PZmrsFV1@#%?__X(?!rb8#?gz%&<4!%V1- z#ZXsJ%~~H*5VycE?2bCANvI7h#9&;3TF7qe3Dm}}A{%m@2V^wCOVk}Ey<|EBqZ;N! z?YszTf@sto*25^Ag0Z+4vtfbDW&;gS{aRQ%qQ;9uZDct5F~2j`R!l>!bfJyc+juAH zbABB4F+5}AySDxzYT|!vdFCtTYO#AOHn)C zf%=pj$Da5YwS$(wn+ZCi;y$PehN2c6k2=w*SR5CluJ(%c7JB~v?*SRz*>lW+?`(rC zSIr&gLcMIoPz$SoI?AS~i94bC$Dt-1fSPC=X2K~pUW?l37SucU>s8KQcYlil?eryT zBA;t!XF;ePg;@(&qfrZ}W#bmsZm4kv+xkhid@kx_S79;Sk6Q4**EoNzDA6Bgry;02 zjzH}o8na_%)XUTz_3`VETKGs?pMaWRJBHvHTmJ|(-Un2_)Yr|4g`&pK>5|dMDAF2@ zS%_<+I>e&xaxm(s)m{r3kJ@Ph>d2R)cC-!i;w~HCxAjj^C+l^?{00?>p79Eh(aMXX zUb6bA1@%WwGzRq+PeEP9eAI&0pce20HpT;(1vB0>UIGxC3=W2T?0OfjaWbsD(U4E%YB$JHK0I;?$@(2kK<E1F;{rlKZXih5Z#pa#5$dTXDcPR9GT`3r^=s1wPH+CV|n21=m5(yO2rS`)*u zrLA{W?@};{j5m_F4gN$8^cuAw=dSrnsbr{$cUljiz6X9qeR^)9j`|(yX#M^)6NjP}5`lUb zO4ztI>V#YW$^C1hZWQQk?~A(I5vcOXm>y?gX54_<(MimSzhhoZbk8g(67{`M0ll#v zYGF-K??4ySf`*_L5Py&JSA$s;_~7@}4X6ceN7es=>Ua*T;ce7W=l{#R6ID?Yw?>us zu;t@WC$#_*<0jO&+fWPK=aSLN4qGpy26~7|@f~Ua=f3%BPK&B9iP^9kuEU=A9cFxB z2L1`P@V%&=oQDi-!aAr0G(sJHH`J$KAQr{RwthcG z5nsY&nCy}17lfKHH|k`{V@7O+ERg^G4;c*@kL7U@YU10d1>HwKe2yCUJ!(Ndf18&o z6RLj{4#LW|d=Kh`&Y@n)HyD6^kIgv2=*|32Rx*0Ya$z8r#Y|Y+(||7u)XUc!wUeo+ z30K>AFY4{Sg8FOTnejhGuaS64NkEjz1d}byLMt|Z+^uZG7`Tf7VEvSJyq6VmrZEbls z)D`rx@o?S*;! z3!)ZM9Q7`gx7I+NR72Fu)B$y3BQYh;!sPfprp9fkPt#Gcp~Q8q9~PFNX!O0ct^GT$`DM z+Ua!E(Jep?u+5h5LoMt$Y9SXfE8au3PxjhO5RO`S5o;;b)l@`HSRFNPJzMX#B%_Ht zSYuHu9fVae9+TiX)D>L9+;|h!&+m=7%QUDX4@bR21ySvzZCnL)k_~Mfhb)Ny{Vy4< zXcTJY-=KCl3$^kUsDam_?(%2U#3yZh3AMn7sQyn;cl;KEG4!oD@}j7#=#1(=49)NV zWb}EThI$v)V-Q|JHGGVo0Z{{lzB6}T2o+aAwQq{~u?K2Fb5R>uh&qwws4LurTG(#% z)93#J8SVI{ZSc(c9`!>b*+1qFk%6cI>!2oXgu2sis1xdqns_AYq{g7GayIIVX*H(B z6R3^dM$f^gSAJE#TJ`j7k97eSN%%tReACviV4jPpF_mbg24CY?$cu^aTuyR z8gf?AC z)&9BlBkKDh;G;1VHBTh!DxzI7S;#a*9Z5gb%15A%egf*Po{j3b2z9g@ZM+?|fy1aB zUPiS~;&^#JegUWjq(!yMi8|5Zw%&~tXsD%Xx7h^`|cg~OrrQmPeg8trS z#d}eAbQyKmPf!yCC-w6Dqf%ki35`ab;B3^@EJt0zTI&{Dz7sXxer)f>xaj%we`#MY z&&Q)WHm5-y)Vr`6byQnWM|;r5=WP8QTmBezxBp>!OrFeKQ7+WRilN47gu1d$sPTKF ztGgUZMgvU5{I~!;cZ-_%0&0LexE^1j243dp<+Q_JP~&9xHz!d9_41ZOT}@qE-WM|w zk3@~Xz~9UDWL8q30XL)W{0wS^*KEUksCVKy>RrhkU|z~xsJIkr1C>w{H^I!<2{qmr z)YVNxozOa4eki~-9nVsrxA+d~ZGVHh+kikbKp1Mp`A{cO40XpAgQ>*Ed# zL;sXsPFc){T2N2?9_ORlRZL|*mfxaI$bCkp5Sf&zy*&T6QvoXxe~tPW9YKACzCzt) zU=S}2MqwV@h0Gq%7QxF7W?NRif4?>afi=%^Z_b{2zr>Edkp za2!EA0Xw2^I@3NDbrnNUM?MkNe;#TfD={nnglcyc+v4A-Z@}8YUi?!HTWLt98U=?? zJ5HJ29Cc~b%T*B@U@feRi&01U9E)P53|^jp85xR2h)19nx*0W5h7e;G)IxKhuCgc= z)KQiq6N9m+lQ@Gp@fudfBpHo0upDs$>L`E1Dj1f@%kw9vE~uAs4Qj!gQ7^4esF&ye zyDl}>B95`~Msy2O;AHml{1a>;Y)Ci|wbNg19Gb=Kv=64Hd?o5=e@0!^H4MXts2vA{ znT4dbhFHTV$$))*dcK2Beu{%kiEyWncn z&V#a^-iA7fFS48Za;W+N*)sq_fR`~huJY>4llqG}Azw$o zm+|PMd6;yP)H0ENIPsIy*7c>#i+nxObn<#uF^1lO26&#fp4E9O_|F&$R?xUN`rstW zc9C`xpCTP5Ri<2DBpb<3BYk?h+Wb_z$h$b-md&KmNYW7EWwt(pt<&i^&uyT*o*^`P zMjAza6G?A%6WZLzHKb3^pJYndz@Pe8^eIQ2i2OFvLGm{#)6ep{7!xl?ob1sM$FU5Wck;1 z&;CvH&~^@^K|eYar}$^eR*^qXehu~_=?94(eNrN+&qumR`Iq!tf_h${KDv5h)rU5> zNS~g8lohAF=l(BI(b0BPgUsZgk%o}}o4Qc)lktM;NZCkw29opzw3@mQjKTl^w6_DO)WjmEoC(@^<2>IL8^|XVl{It#UNp=1u z>G=gmeb!H9akMKzD)m`k-%t0ygTnfxS2RpP$D*Wx3{sCWKhhP-yWm5Tp05qgb~|A> z?GI3wl5~^0%E*rg&yVucwyn5Ac}`MRlAip0|2Y4eyc5hI?aBX28k$hI)NH>*-Eh60hTBlAfOp&PdwnX@;)8<&x4M2dORtrN=j< zFUc>!2<%Toe)DoR5GN<;8BLmO2g*cQJJNN^R^wN+)sxq{mwYesk<=|D=^2e{_5R-= zSW4wBmGU&A;sM5xM%w{YuBRz=db~-MsB?*jvxukUyOICSQ|mZ;iQ_51WBd2TKGc0h zn|tK-({UI1ji2t{m&V_a)>Dy~iUg7#Z|i!jO~+w&z^b&>GXkTjJ4X7N{5brMHu@>2 zryr?1@m$LFyf8SUhzpYXxpcZnVHtu7r26Dlc8h#+)H48k;!9F32K$@3b65^*Q}-qQ zPTd&t$0^rygR(v(J!2?)h|%~hWdkrDZS}`7cZ~{3S4mq)he&5gi`A2-G##oDA28wn z{;MCSRqX`h8LSU&^i(6?mGrx<+m1<0mFK_1ZGJN4JM@dt2|D^uzgZ>7ZDy;kVh}0H z#y+%oN%N8TJ^o_LXJB<=J^C#|j}4vQ$kaAPp8t+!Ni!)cM0(9QUl9L94ZqboA>`-k zRZL3(zh!!!UonP?0(2-zDnil|gcT`IX+q}!?JiRGmQaAbFPt!6PF{tM%xa= z|Nn`gZYqUQ)E&}~f<+W8q~HSu)otrp4Dy)t8)ccO_ao_fN&ExldR}2w;`_LXRGK!+ za21|0O+5b{X8S5QLA{=f^lO4wb<@j9ISJC@IlPC1Y^RQr>Y9;9%}7SZW8X))#gq=S_C5EsKA zNY81fr!x7jq|VgE5^p2_>1j{DDx}Y!1Y7?_BG3Mrh}t6*z9HSUEx)k_Fz8BBJ3Gj1 z@_OoGE&STXDw|KrLA%uoc!pBuVXz$sf?oIJL3N2=a3$d-)E|w znZ&t>SJI{csR?l{Y)SoF+eUvKkc+ZUPhIjkY4_=wLI3Y5ORaGzY(||spMpoWMLPh%}V4j|`&cFVX~0&irRM<-18WNzLh}rzY*^lk}v+5hm+| zCF1^z+lqxWu0d){no9bE0V+^;l*U(V8{5yRNX(zq{`agT--SLIu<`#&&0k`FL0KQ_ z@-yCP+ouw78PBKW?2F#iHK*MSe1hXC*VB}EtI0aqDJx^ktI=ng=ATG|*95V+ zoTR6f!Kp-f2b*t)vq`1x07GfJ#O5Ptmxuf^%Kjo>kbD+ANvcbqc;X7weI(z2vMuO& zwExR?kjym5W%HwO3k|=vv2E`8i|?GY({qZt0kl!rkbGGzM$(g-!bX%$F`-kIxF;zS z@q1D|(qQV{QtHi92wN~%RuejLR0fcuiL>HB>fhoW+UR*qeko;3$QLHRkaU*1ro;iH zuB1AY=^0AuOu9$<&i4P$)Va=h3dT|K>6u8yEE_y0{|EVsw5iWzok-sj_a|Mj1GS+| z4V#}x`5xjNIGeVQZ23;g^sFPUhTTbBC>xxZ^LNRFQ816nQ}`7fZ{sh-C(wtKk$g%! z2%$5TxF+p3Q}&Fw5NQu-IqCB!fHr+eKhwSqDU|#aOoMtRY4Sh{vQm(R^!;a(bRb?! zyor>Bl$&;~Df@zsNyvYCrc>6E`XSf@D^T$r`G3gk@ulr0oJTy@mZhRzkKRB1U6zxF zMpejnQ2|c@{fF`fG<-tc0$lOgr1hw4OI(v?y{T(LDoNP@_2c=Ex>8sSw_|BiYx3)8 z^Beha@;t6nj)HM?P9VxnYDm7lsdRoNK1_Wr;-{pwwtNL;Ka%v!qJ2S9An7aOCzMyQ zb?vQ-Fb#dP;bq$VX~+3Sf0(&WVFwDPU?I|M(x<1tZTKlJK;3y#dM48|`2W>6|EzE5 zXZb&DKHB!%KwOFbWwpXH43e9QhB%nQX_RfmA4q!EkF#dnPALV%i|%fuTT+lx5L6oJ21QaDF#rW6 z&g*@BKir2u&N+|sd)(hWzumuU7vTNf4?$m_4Dww~7BtJ_Sr^aqGGM=qp7$`w^Ntl) zuIGJR%kzG~ftV93)b_lT*bAxZjly!c982OI%!^s-cwQr{hpli8?!`oPJ?{Y?!}Ol# z^LEtpyaHsLMGX+YzUQUFIE=Ye%Hep-wG-}75VK2 zl1|vn^Vl5kBW#UFu|4K)?s-JLX-HM?5&AU4O8jVt%drh6Xz6)*unR`u9PE#4FgIrY zz^$YPYJ$Ts5+7j&4CTNFVLjA9$FU5?wsuF`84Hv4wPycw5ZOis_r|-1O6Ox1I)bJc zj6==Qn4I)PjE_q&A+E+y+=K~mkCh*^^l?j{M=j_Is{Z3P?7tekBtsnqwe`Gs7>da- z0(DkdF$D9W>XpPqSP^x$wNXdc%JO@fAEVk2N41}X;rJP<{yHC#SRy+y3Eo7_@G-`r z&P6LNfNEF_HQ{QgovDZFxCyGm4yXzC!+1CZHPK<_1k{9Qq1yRY63Iv8OVofjQI{(P zH%7O*GHNGUqRy;0M&c?|2ZvBwc@8y!n-~xOz;5^qqp(c}*Y5~a{q4v?eBOQ{v&cAx z%dl-nH{;+=Zb!mUD@c#pi5S#`a-#+;joRW`myQ4~qnn)z7T|U%N6+%s{B5J~QusF6uy%mcv zDdT(3iA===UEDx(Q5`Nq-GvR7|1E0f2P}OCwW3R?oq3E}$TKX0!CgJCD3(G^cmS&X zNYsR;p-(eiK}0LuhU#b+s-wNA@-wKF-@=6W(0q!CNWZf31RS^~9EKV&%FJi^r7#`& zwNVr3+Kv5JWC$5ka4Kq`$nI_e*-;ZHiW;~os=OYCU^CQ2J7H%02(^$osLzRo7=oKo z6WW7G@R;Ra>dyXat8bH`nLo9H_&r?3kl{QD;~N^WtD+&fZ$o1XA^MJNO=I zqNPy%Rz&SoV@!-~Q2loIS;jyNC1a$er(;sm3sIM9J?fXxX4DD}qUxVP-GS?37>Js)t?Z5_e2hz^xeNRMZdj$1CaRxQBr>G7BKXmD2s3VB9bRkrE zIn>JQp;p!uHKC5E%hnUMgX2&;H5nst1t!t^znzF0?nTY;qtC@`L-h z@^DmsdenrnTYgd0QI$vktw-%dSJVzINB{5tHAHk~Ut>5PMy=>FX29#H9eRbDVEn#r zh2f|jOM}UdRTDmQ20{u}F8;07MY34liY2c+qw1Q2j4t86GGpL#Vh?>B4)CBHh za(rSY=;yXLJ?brpL=991Rj&%F{}!kTcR?+1LO=Fjmv1^5k+>E$p`)k)e?;xbE!5dP zMKw&^-*p^;d^z%BFe?th6u1nv;vJ|!^u6#Rz=apYvD6qyyZ_GNC4r-O@!+ zTUgfeYhp^$El}8D5jF4@RQvC({DPJHZW7Uq@0!1(CiKF5 zgH=cef9xhw3saMBXz3niKh#kTMxFIU)WGvF6|P3@$R5-LPa&TxKJN+hW;Z%O|TED-Uv*j_kWr{;(7B? z4OgPJd@E|8U8t=)iaP7-m<8`)EQSnrM^^|n!OEy3se>A*q1g`A|A(l0L(%{Kk0YWp zorn6sS&mxqM%0$=L`~!v*1{{O*DTj3uEXl6`pr-)?TBjk32N&nqb9TxRd21Ox1&!3 z?joX@9YoFeJn9bILfzi`s2zBPnrN~i?oUD)a1-g$xDkIxwOjnD8)zk}-_58U{SGyu zLzoG#e#-u9OJ9+phQS<%W|#z(PK_EkBWgtjP-j>Hi(o_4Wt)U~@iSC^M^N=oV>-Nr z>G3sYz;r|15fm9phB_=mMq#XL1!K&qs2!SzTKNjpYr4_=9yP&p*ah!fy8bXXP-oNx zN14-6{VYZ;aE*_Mw)hLw*6%~j@HFbo9%B?fL9Hm|a5sTi)K(TpZE;=HmbS(`=tEty z4H%8vQLpV~)B^rM_2&y3;lBT;Ld~oas-TY97Ih^3FcOENR=gB*;&#;5-at*@6{>xP zk*>eIsQN`wM^h8E@`lKr@OjONXyt8DTh$vi^C74Pqfrx^Z25DsE9s@EGY=W%IxK-f zq|0I&tb}@NTA962N9{xPI~5D+{hv#u3>n8z1BZ@ww>1@N;EZN0s$m>z!o^URt1@b9 z+oFzg5NZb|TY3q`C%qNZ;x5z#&trDR_Z}0;g{jB50n4LSQWLc!^~_dSfOL1%mM+Ew zxD_?=Z_ERhe*$$kE}(YeHpbvHD^EX`-AF)279#2(7i#8((0>;&KIuBBJJ1+)dD>xC z9Dq9e`KSSQpx%~4<{1no{WGecTbK|ZpceRKEc>s5=VWLiZ%{K%Fpke}Ooggg5497G zF+a9P9l%Dg`-d%PQWZU-O9IPKGH`~JNqwcVxbe4K;U`^s2GWjshm1FVYaC%KL~ zm_0Ba`TemZ4n!TzcGRukg&N=_Cc*Ql0dAmn^d4#lo?|2?p6pNiyj(;=$S8%{;%cZ4 zT46!#X61`9De3hXin~w)A3@ds88xB%7=w>7DW;g>7Lo-uPA=3!ieeAF|0Rj&R<1R- zU>NCdFgqSYUAkwe6=s|2I?RoF8wz1KRz@9J6SFNwlJ1V0;3U)n=V4adh%tKq&l1s@ zy+ExjV49nG7;0jfP+J#^8lV{JHkZe8*b-xL3FgAX7>!R+{idGo+GWOY(m5~!i=$5~ ztwBV;Oj=-O?2CzU25RPuP!n5=>hLR6yYEnEe9F=nQJ;i&F&n-?)z3D=EhI0hT@lno zD$ij5wZbN3sG~Nh6?R7D_d(t2!Kk-lA?j_}g6jALYGM~q?S4TG@ECR0uTlLZnd$z@ zB?YQ}Pt@J`WG4HsiWA7t4$MV0_yTj{S6BdVp*l`Ai|xm3cp6(}m;%pZGJJqK+gGUX36b;M9VmsW zHxzYrvrw0H32J9op>}M8lqjqGC`K7rFwdMQK ze-!2gR6kcSIX*_U4_x4OI0-5pjkM?ew~WH5vw0uYK@HRqw6O9qsDY-U>dnOixC*u6 z?h8GyIevsHKZ`or8|Gt7Px@a=r(UETy}x#WgIy7iud9qPEh9u{au4 zet#Gef z7c5Ku0<4EuF%QPAbRSTyFp9Jf2jNoGCtrqD?xVU2YC!{06P|)GxEM9T16U1Ht@gRC zZL`|_%SM0HmMueFsxMGmzSGhNu@C9fsLNL2b60N(>Im1N&irdsyTho7oWsoc0M&ou zHSXVQXO?x4X`7Q#}NDjv*T;jfUz6g)(yb&q`yZ^D0rhw*GC=Q z98|xTu{z$wB$)RLx4_~~pErhxDxAao7|9K(fOW9}&Nd%nebQw%yT3-8iCWQdjKu30 ziUD7`bQlJc&X1bNd#D{OZTXckm)`%HL|RZV(4WCC6P!*uaEog=3!9N%gn94<>e9w; zbw@WE^%hOS*0>rqP{M8QU&+F;1L=x51lOS^lw&(b#`sUuXTDF+cY}8fwk}!7QzDGy4&6f!$^<8lsE^o;RaOw zbKkQ6X^3R`&aJp4>bGBQ%#59|A&$YE_%muJ5`OQ#4d=or(iKqo9Wfn_!w6h~sc^fc zkE4$I8fs!C_xjwo*&2J@?Hq?Hn1$+arKJy}&iE4c!9Q^{cG%~>??1vg(&790lQNdW z-naul#Ow#$)_;cGNdJR6@{YcP?t|n9)XcISa*n``q_1OVtbEvQ-6qtEE@Dr7jJlL9 zkGL-;6Ho&jz(|by!M&FCZ~*DqsI3n@%7sK<3nEE~EW?tx(R_%lNoPOizJ`xO9l>r4 z#(Nluk1-tou>8Q|?sr8(OiF$-RQ)JSh_RR$^SgYXSAvKxM_JUFHOBbZ1ruR!RKr22 zvmJqYI~HLI+>9Z35Os8CE&rDJ-10+DxON#)_3~r5-v2U0^!n5_J78|o1N{~Ff`Ph} zJ5aa#Bx+(oC*6dTqTcsN)Jn5sDCWhaSQ543>KKHLP&?jSGQQV|h<2bas=+wSi*vCc z9y0$$y%qURxe3=sz1Qt96V68M#5Pnvdr=cTjT-nT?2Xqk7VDno{58-(BAU_XsIA_L zpW<%hd!|?NjLScd8sIAGh#sN__!GnNC2Ap|XWb5DK^<8fY6ohd+BZh+So^c~{&y!M zf{alZjdM^P?KDrJR&WRX1EVJTr};0ceb6~KKq}OPvS2(cgqlE6)P&2UCRXzt`(KJk zXEK`MDpW@S=RI#GCPxkUIcnx#U^4v1@=v19`hul@L48gsDb`L)lYcQtt2&SWl^XObECGls96S6k*W%;TcqiJubO={ZS34qK;shxemifZ^cO5kJ_o*s0BR7)c6K9 zk<^#{`n+sJw6enJKO58lHBo2S3e})Ds-6#3ZxU*NIjAFCi}~>$_QbS5x{v0us0FM? zwcBd$!BD;bhlyw<7f@Sy&0oNGHPpb*EuG*emrjX#&$D83%xUTOt-JzeA-}%me}p=k zA*eev&eF5d|L_0HEMv1(*p1q%A22Q6#1!}vwc>~??k&lRJxEtZEnpjJfIXHzidw)q z)P!%LcJw|L#edNM_kRU{c3V`!ERQ;~>KKFdEdOKF84pFRXew%A3s6V188wk_QSA?- z20V#6g6o(8?^!zdD*LaMhF*1-E(Ue>B~UA^i5jRiYGvI~D;j8yHRqrvu*%X~&3&kT z&RF?v%YTB}*}!X@e-R=XuDKaEKuxGQYNdTqXFLM6f;pHK7o#rIe$<^gftvVbD}RU@ zApE*}YjUE>E28>qjB3}-M?_mT05yQp8hDI32Q!mijcRZRb(UvP?Jl7vas#!}ho~)o zjXHv`8}3g=sZi;1sPd|)o%J;%5=EpVs>89UnNLG~6t6=~=mct@tEi*6hdPR9s0jt# zbQ4I7jYwxiO}wAw&qS?!HR=Otm&^BgXNYKKw^3*K$ovO2p@g^GfDx!2%7mJEHq@3D zKux3qYNGW~_1d9!q?@HbMXh`^s@)t+r}uvi5mnre+Tx3-3Ei~(`=|k5qV7tI7cjf0ez})#|i@OxR21Js0O7`9o0rns40Gl zZBYZKyz9(}`W%Qsy*8R@eb5L`%p)540W~_ zE&mRtA^jU>!i4u+$FZ1=bRo=z%~2B?gSt}-Fc{aOCbkK62fn|@{%Znf$sPTp&JLdD|6VYq4 z9ksP*P#xaFa`*x@aLLDR#^o?E>FTJC8=*RGjk;9*QSHa!$GF(?)BNUkC^za-*1-_H z|LusVqu!{22B9w5Pz=R+sNY(vt$aV~^8J8X$$iv-@qTydw5W*`M7@@kF$Z=i7y~#gISUTM>s^ zNE6gTJEF$xjXs_27$Q3J8K_G!-_k2kGhUBs__gKlLmk0UOJBgAq_1Kjtog+4teXNzr@e&OQv)U-UEfUt5)f3^lBUxv(qd!P%%C+K<|yQ>gd+5^BIFSP0|&<+ija zYQWkUfvr*P`k;1f5T?LUR{oifNE{jKQ8T(~-bStT5o+uHLUj=Kx64n5npjrUMDk-4 zmO<5Ti<-b-)C4A(vrw0OA!AdZM@{GoYUX!QEBp;L^EarDgI~C_Oo19W z*3xmP306S0uZlY2x|kXVpmuyR`v3m_J0j}fJZj);sQ3K=>MkVs$KGdDy~^nC5OtOV zP-i~D(hE?xdo$_|9Y9U!32Fh)Q9JS){eS*X@~@j&YSaYsp;lZR&tNsIff--AGw*5+ zK>ZRKj%9H)YJkJ2iJd_0=q=QaJwQ$51t!DS=+oIoymFsZSuiE(N~o2#Kz+b;wDf2! zOnNHn@*PBVdp2(MlB%lwVO~fj3k`~Rj(LoVwGO={%gfG$L_+#W;~ACkzY|O`Wv<4z`y|i$|6wh(xSFDho$qQ7ElJYzr9wCeRMm(G*M1$Ni)aVKJN-9N_;(bP)Ax z_yMNJ(D(uVzuwD%(fa-0h)4|z24a0Yi1{#G0@t7#>e6(?tvC`j;bIBh5!FMTb!XH7 zQ?U-NNA1un)DA`@az~R1bp$bz@x44&P#AUQC9z!qXN79GJ#m2l?bwISNFPSsg)B+j zPUS&u?faIlfhuol`JGTl+aERYF{mS2fhkUk4eMN zau{j{W*`&vdCQ4(BI6uZ$C9btTQC;2f<>q;K8ae{PpC_G&+`AmPe})+3Gn|j+b~r9 zyQrghf*LR=t!tkGHIXQc(o_o)QN@PX8atvs0T1DacpR%@>2z+z<4{|@9d+4uqyKXQ z>yS>D-tA;J)Nji@7>G}?5dMuFFn0#V(N;}Y1m~h=x(GGEMvTL4*cR`iR#q)zfd98( zBdkPvh`Arjl1`Gz?PN`?OnM%c!yBkenKiSUaBlSf_rF7l)TUqp*2JGIog>msU?5f? ze;qc!-%%^A80FHlQ7e6jdP}0B-EX@>sH19xk=P!!&{3#~Oo-AoOECJpsY=OE1@v^$|aLhxx2Y!I_QE$^fs6P$A!OoZ^#tk?Tbp$g}M{p#@=Wc7h zZ0`O20##urs={xU-!Rr)n${Raejm(=Gcf=U@uM=|#o}QT{F?*+Tm|;5Gj*)1DEsSe zna;leiT-5Pp^4nV3aq@q& zf>pH7XK`OU3RaNd1JM5oxQMv6k}Kfd!Ufhr7>&Lly@PZ~n?QZcM*B_VXCq#TvJXf% zCEkwsLE_H{`6(|=It}qZ3C#%aQRkC*ynnMPm`TtprYD+0cGdr+BK{R&Dj}Q(dUO%H zk#2*-$Qw<3A)&mrxk3I&ixc(#-?jMg^tw|=&p*TmV|>~UipTypQzwM4DVRw?JL2c4 zT!El}Za+%cP5vv?Gno9U7LTSbpFduGLQ>*-YFSxz>NO`FXK8;SKkk!%0r!zVl>6t! zBO^VHUt?OFU>)_MtQ!@Rkxob1A%dP+q{m`=!c+2gDU-)%<%<7F+xP@MdZS(tE|Z>5 z+hv4yq`xBgT3IC@ne)l`h@e-pIr(o0Us^d?-UR*NSxa6;+(GEVpaTfyi7zC7BB3d1 z{qoZDp-pO}OZtB%w>%O)FF%P=HpmV9!U|u$)8O=fH}IBFCl5g%y(P%+O8h*YA$)4} z^x?FMd_6hIYmNO`U@YP7lgJn_9}qSYHc;|H_d-2m8E7bZW$EVtHpNDSyyQ(Ks=rS)Z_H+6!jdx!k>#K+(Z8zXNZ z=bz3hS26Wn?gbTB5@IY*=&DvD+*HDzgmldRypz7+#Py7z z&T~Re;eyla&8rQVmMr{W;1v&URO-gnk_XB=sLTCvZ&O>C`IC_v#g(lh9I z4e^@9a}Y`qpGeqBy-kGagxrLdlyxLLBIqH@|DU=~p?w(PSAw3hv>k;*@dqq{6)3x| zkF~i(&Jg(9Coh&B<`XIsekU}fGJmJTU(ylbX+m7jL_z@NZ=dW$z9*gRoxBEC*q%0} z$lr~Vaj^CEP<2BH=P9_1Vg3VYMX~-OLr-5qNq>y#QT+$P$CfTbydy356LJs&X}6Y; zjQ9#1Ncm6HeL(n-ba%oeYa2lPKJf|E9Zx-dxt>P)H}{7;SE~jE38>hfpyxd*>FHz6 zGpAFY#_DXR%_rnf!NP==a-z$nZHwikyoF*aH7BBbMlL04O~h1g!n_% z{`1r#^s|D=bhd~NI^!eE_D<(ZRGDWZ`Mt2PKgCU_ZC0yy zm$LO1-$(f+LNme{tGg6?QU4@$+Ut8pQ4&eXtVetM2d)xRtk#6KoxBTJeJ@n=0$9^ho$BcNwTAiTdi3B~>=ybF-N~%c` zJ|%BFWoL;$#N&kT34^Q+QEv-vrcv)TcE-sBJ)Nji2p8ykMj{fQ`?KA@4JrDR25T+v ziFNoB{zKm9)=5jtFGJnig!f4|wmda0Yw-s-jC2a@fxlB%Pjk{G^?{tjD!#!83RdF` z%iBQZ0{-gkf;Ch!Bk?_!?qSYhV)Y1Dto~o-`xr)l?^&OjsQ)qXjMS~I?-@s_u#3#L z7)-hcg+r{d$VzBMUL@f<@$1wbfZH&byb!|MXFPd&=9_tmS0dyhyl;867$cPUZ?yC6 z;YW26%kXEyXB6tGYBr|qTS6An`6!=_QLc*r=U?Q7THTB9Z43`u~5E|9OhPzo?VzzW^aVO4tAZ diff --git a/locale/no_NO/LC_MESSAGES/django.po b/locale/no_NO/LC_MESSAGES/django.po index e0393097a..dba610b31 100644 --- a/locale/no_NO/LC_MESSAGES/django.po +++ b/locale/no_NO/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-12 18:37+0000\n" -"PO-Revision-Date: 2022-01-12 23:57\n" +"POT-Creation-Date: 2022-01-13 16:54+0000\n" +"PO-Revision-Date: 2022-01-13 17:50\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Norwegian\n" "Language: no\n" @@ -157,6 +157,38 @@ msgstr "brukernavn" msgid "A user with that username already exists." msgstr "En bruker med det brukernavnet eksisterer allerede." +#: bookwyrm/models/fields.py:207 +#: bookwyrm/templates/snippets/privacy-icons.html:3 +#: bookwyrm/templates/snippets/privacy-icons.html:4 +#: bookwyrm/templates/snippets/privacy_select.html:11 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 +msgid "Public" +msgstr "Offentlig" + +#: bookwyrm/models/fields.py:208 +#: bookwyrm/templates/snippets/privacy-icons.html:7 +#: bookwyrm/templates/snippets/privacy-icons.html:8 +#: bookwyrm/templates/snippets/privacy_select.html:14 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 +msgid "Unlisted" +msgstr "Uoppført" + +#: bookwyrm/models/fields.py:209 +#: bookwyrm/templates/snippets/privacy_select.html:17 +#: bookwyrm/templates/user/relationships/followers.html:6 +#: bookwyrm/templates/user/relationships/layout.html:11 +msgid "Followers" +msgstr "Følgere" + +#: bookwyrm/models/fields.py:210 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/privacy-icons.html:15 +#: bookwyrm/templates/snippets/privacy-icons.html:16 +#: bookwyrm/templates/snippets/privacy_select.html:20 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 +msgid "Private" +msgstr "Privat" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Anmeldelser" @@ -173,69 +205,69 @@ msgstr "Sitater" msgid "Everything else" msgstr "Andre ting" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home Timeline" msgstr "Lokal tidslinje" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home" msgstr "Hjem" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:122 msgid "Books Timeline" msgstr "Boktidslinja" -#: bookwyrm/settings.py:121 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Bøker" -#: bookwyrm/settings.py:195 +#: bookwyrm/settings.py:196 msgid "English" msgstr "English (Engelsk)" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:197 msgid "Deutsch (German)" msgstr "Deutsch (Tysk)" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:198 msgid "Español (Spanish)" msgstr "Español (Spansk)" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:199 msgid "Galego (Galician)" msgstr "Galego (Gallisk)" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:200 msgid "Italiano (Italian)" msgstr "Italiano (Italiensk)" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:201 msgid "Français (French)" msgstr "Français (Fransk)" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:202 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Litauisk)" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:203 msgid "Norsk (Norwegian)" msgstr "Norsk (Norsk)" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:204 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português - Brasil (Brasiliansk portugisisk)" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:205 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Europeisk Portugisisk)" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:206 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Forenklet kinesisk)" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:207 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Tradisjonelt kinesisk)" @@ -3793,14 +3825,6 @@ msgstr "Inkluder spoiler-varsel" msgid "Comment:" msgstr "Kommentar:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 -#: bookwyrm/templates/snippets/privacy-icons.html:15 -#: bookwyrm/templates/snippets/privacy-icons.html:16 -#: bookwyrm/templates/snippets/privacy_select.html:20 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 -msgid "Private" -msgstr "Privat" - #: bookwyrm/templates/snippets/create_status/post_options_block.html:21 msgid "Post" msgstr "Innlegg" @@ -3925,15 +3949,15 @@ msgstr[1] "vurderte %(title)s til: %(display_r #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Vurdering av \"%(book_title)s\" (%(display_rating)s stjerne): %(review_title)s" -msgstr[1] "Vurdering av \"%(book_title)s\" (%(display_rating)s stjerner): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "" +msgstr[1] "" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": {{ review_title }" -msgstr "Vurdering av \"%(book_title)s\": {{ review_title }" +msgid "Review of \"%(book_title)s\": %(review_title)s" +msgstr "" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -3994,20 +4018,6 @@ msgstr "Forrige" msgid "Next" msgstr "Neste" -#: bookwyrm/templates/snippets/privacy-icons.html:3 -#: bookwyrm/templates/snippets/privacy-icons.html:4 -#: bookwyrm/templates/snippets/privacy_select.html:11 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 -msgid "Public" -msgstr "Offentlig" - -#: bookwyrm/templates/snippets/privacy-icons.html:7 -#: bookwyrm/templates/snippets/privacy-icons.html:8 -#: bookwyrm/templates/snippets/privacy_select.html:14 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 -msgid "Unlisted" -msgstr "Uoppført" - #: bookwyrm/templates/snippets/privacy-icons.html:12 msgid "Followers-only" msgstr "Kun følgere" @@ -4017,12 +4027,6 @@ msgstr "Kun følgere" msgid "Post privacy" msgstr "Delingsinstilling for post" -#: bookwyrm/templates/snippets/privacy_select.html:17 -#: bookwyrm/templates/user/relationships/followers.html:6 -#: bookwyrm/templates/user/relationships/layout.html:11 -msgid "Followers" -msgstr "Følgere" - #: bookwyrm/templates/snippets/rate_action.html:4 msgid "Leave a rating" msgstr "Legg inn en vurdering" diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo index 42c7060e157eed3c8d6ad2d7aaf46b38c6091a7c..f856b3b602246b9d377d41da2889babd8dea710d 100644 GIT binary patch delta 10272 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 tJ7->GVwogw(qk=?n&z(FdO7WX?>+gyLba@\n" "Language-Team: Portuguese, Brazilian\n" "Language: pt\n" @@ -157,6 +157,38 @@ msgstr "nome de usuário" msgid "A user with that username already exists." msgstr "Já existe um usuário com este nome." +#: bookwyrm/models/fields.py:207 +#: bookwyrm/templates/snippets/privacy-icons.html:3 +#: bookwyrm/templates/snippets/privacy-icons.html:4 +#: bookwyrm/templates/snippets/privacy_select.html:11 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 +msgid "Public" +msgstr "Público" + +#: bookwyrm/models/fields.py:208 +#: bookwyrm/templates/snippets/privacy-icons.html:7 +#: bookwyrm/templates/snippets/privacy-icons.html:8 +#: bookwyrm/templates/snippets/privacy_select.html:14 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 +msgid "Unlisted" +msgstr "Não listado" + +#: bookwyrm/models/fields.py:209 +#: bookwyrm/templates/snippets/privacy_select.html:17 +#: bookwyrm/templates/user/relationships/followers.html:6 +#: bookwyrm/templates/user/relationships/layout.html:11 +msgid "Followers" +msgstr "Seguidores" + +#: bookwyrm/models/fields.py:210 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/privacy-icons.html:15 +#: bookwyrm/templates/snippets/privacy-icons.html:16 +#: bookwyrm/templates/snippets/privacy_select.html:20 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 +msgid "Private" +msgstr "Particular" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Resenhas" @@ -173,69 +205,69 @@ msgstr "Citações" msgid "Everything else" msgstr "Todo o resto" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home Timeline" msgstr "Linha do tempo" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home" msgstr "Página inicial" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:122 msgid "Books Timeline" msgstr "Linha do tempo dos livros" -#: bookwyrm/settings.py:121 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Livros" -#: bookwyrm/settings.py:195 +#: bookwyrm/settings.py:196 msgid "English" msgstr "English (Inglês)" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:197 msgid "Deutsch (German)" msgstr "Deutsch (Alemão)" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:198 msgid "Español (Spanish)" msgstr "Español (Espanhol)" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:199 msgid "Galego (Galician)" msgstr "Galego (Galego)" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:200 msgid "Italiano (Italian)" msgstr "Italiano (Italiano)" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:201 msgid "Français (French)" msgstr "Français (Francês)" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:202 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (Lituano)" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:203 msgid "Norsk (Norwegian)" msgstr "Norsk (Norueguês)" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:204 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Português do Brasil)" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:205 msgid "Português Europeu (European Portuguese)" msgstr "Português Europeu (Português Europeu)" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:206 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chinês simplificado)" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:207 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinês tradicional)" @@ -3792,14 +3824,6 @@ msgstr "Incluir alerta de spoiler" msgid "Comment:" msgstr "Comentário:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 -#: bookwyrm/templates/snippets/privacy-icons.html:15 -#: bookwyrm/templates/snippets/privacy-icons.html:16 -#: bookwyrm/templates/snippets/privacy_select.html:20 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 -msgid "Private" -msgstr "Particular" - #: bookwyrm/templates/snippets/create_status/post_options_block.html:21 msgid "Post" msgstr "Publicar" @@ -3924,15 +3948,15 @@ msgstr[1] "avaliou %(title)s: %(display_rating #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" -msgstr[0] "Resenha de \"%(book_title)s\" (%(display_rating)s estrela): %(review_title)s" -msgstr[1] "Resenha de \"%(book_title)s\" (%(display_rating)s estrelas): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgstr[0] "Resenha de \"%(book_title)s\" (%(display_rating)s estrela): %(review_title)s" +msgstr[1] "Resenha de \"%(book_title)s\" (%(display_rating)s estrelas): %(review_title)s" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": {{ review_title }" -msgstr "Resenha de \"%(book_title)s\": {{ review_title }" +msgid "Review of \"%(book_title)s\": %(review_title)s" +msgstr "Resenha de \"%(book_title)s\": %(review_title)s" #: bookwyrm/templates/snippets/goal_form.html:4 #, python-format @@ -3993,20 +4017,6 @@ msgstr "Anterior" msgid "Next" msgstr "Próxima" -#: bookwyrm/templates/snippets/privacy-icons.html:3 -#: bookwyrm/templates/snippets/privacy-icons.html:4 -#: bookwyrm/templates/snippets/privacy_select.html:11 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 -msgid "Public" -msgstr "Público" - -#: bookwyrm/templates/snippets/privacy-icons.html:7 -#: bookwyrm/templates/snippets/privacy-icons.html:8 -#: bookwyrm/templates/snippets/privacy_select.html:14 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 -msgid "Unlisted" -msgstr "Não listado" - #: bookwyrm/templates/snippets/privacy-icons.html:12 msgid "Followers-only" msgstr "Apenas seguidores" @@ -4016,12 +4026,6 @@ msgstr "Apenas seguidores" msgid "Post privacy" msgstr "Privacidade da publicação" -#: bookwyrm/templates/snippets/privacy_select.html:17 -#: bookwyrm/templates/user/relationships/followers.html:6 -#: bookwyrm/templates/user/relationships/layout.html:11 -msgid "Followers" -msgstr "Seguidores" - #: bookwyrm/templates/snippets/rate_action.html:4 msgid "Leave a rating" msgstr "Deixe uma avaliação" diff --git a/locale/pt_PT/LC_MESSAGES/django.mo b/locale/pt_PT/LC_MESSAGES/django.mo index 101aafaa1dc2330bebbe02366672499dd2660c5b..f0c8c4c7a41bf0e93cc4dfa8c3ee74b28f4d268f 100644 GIT binary patch delta 22 dcmeA_z|wz!Wdq|nc4GxYb1PGW%^d64ivU~b2T1?` delta 22 dcmeA_z|wz!Wdq|nb|VEtODj{O%^d64ivU~t2TT9} diff --git a/locale/pt_PT/LC_MESSAGES/django.po b/locale/pt_PT/LC_MESSAGES/django.po index 82a2353aa..597b7da2d 100644 --- a/locale/pt_PT/LC_MESSAGES/django.po +++ b/locale/pt_PT/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-12 18:37+0000\n" -"PO-Revision-Date: 2022-01-12 19:52\n" +"POT-Creation-Date: 2022-01-13 16:54+0000\n" +"PO-Revision-Date: 2022-01-13 17:50\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Portuguese\n" "Language: pt\n" @@ -157,6 +157,38 @@ msgstr "nome de utilizador" msgid "A user with that username already exists." msgstr "Um utilizador com o mesmo nome de utilizador já existe." +#: bookwyrm/models/fields.py:207 +#: bookwyrm/templates/snippets/privacy-icons.html:3 +#: bookwyrm/templates/snippets/privacy-icons.html:4 +#: bookwyrm/templates/snippets/privacy_select.html:11 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 +msgid "Public" +msgstr "Público" + +#: bookwyrm/models/fields.py:208 +#: bookwyrm/templates/snippets/privacy-icons.html:7 +#: bookwyrm/templates/snippets/privacy-icons.html:8 +#: bookwyrm/templates/snippets/privacy_select.html:14 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 +msgid "Unlisted" +msgstr "Não listado" + +#: bookwyrm/models/fields.py:209 +#: bookwyrm/templates/snippets/privacy_select.html:17 +#: bookwyrm/templates/user/relationships/followers.html:6 +#: bookwyrm/templates/user/relationships/layout.html:11 +msgid "Followers" +msgstr "Seguidores" + +#: bookwyrm/models/fields.py:210 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/privacy-icons.html:15 +#: bookwyrm/templates/snippets/privacy-icons.html:16 +#: bookwyrm/templates/snippets/privacy_select.html:20 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 +msgid "Private" +msgstr "Privado" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "Criticas" @@ -173,69 +205,69 @@ msgstr "Citações" msgid "Everything else" msgstr "Tudo o resto" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home Timeline" msgstr "Cronograma Inicial" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home" msgstr "Início" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:122 msgid "Books Timeline" msgstr "Cronograma de Livros" -#: bookwyrm/settings.py:121 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "Livros" -#: bookwyrm/settings.py:195 +#: bookwyrm/settings.py:196 msgid "English" msgstr "Inglês" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:197 msgid "Deutsch (German)" msgstr "Deutsch (Alemão)" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:198 msgid "Español (Spanish)" msgstr "Español (Espanhol)" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:199 msgid "Galego (Galician)" msgstr "Galego (Galician)" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:200 msgid "Italiano (Italian)" msgstr "Italiano (Italiano)" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:201 msgid "Français (French)" msgstr "Français (Francês)" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:202 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių (lituano)" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:203 msgid "Norsk (Norwegian)" msgstr "Norsk (Norueguês)" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:204 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "Português do Brasil (Português brasileiro)" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:205 msgid "Português Europeu (European Portuguese)" msgstr "Português (Português Europeu)" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:206 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文 (Chinês simplificado)" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:207 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文 (Chinês tradicional)" @@ -3791,14 +3823,6 @@ msgstr "Incluir aviso de spoiler" msgid "Comment:" msgstr "Comentar:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 -#: bookwyrm/templates/snippets/privacy-icons.html:15 -#: bookwyrm/templates/snippets/privacy-icons.html:16 -#: bookwyrm/templates/snippets/privacy_select.html:20 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 -msgid "Private" -msgstr "Privado" - #: bookwyrm/templates/snippets/create_status/post_options_block.html:21 msgid "Post" msgstr "Publicação" @@ -3923,14 +3947,14 @@ msgstr[1] "avaliado %(title)s: %(display_ratin #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" msgstr[0] "" msgstr[1] "" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": {{ review_title }" +msgid "Review of \"%(book_title)s\": %(review_title)s" msgstr "" #: bookwyrm/templates/snippets/goal_form.html:4 @@ -3992,20 +4016,6 @@ msgstr "Anterior" msgid "Next" msgstr "Seguinte" -#: bookwyrm/templates/snippets/privacy-icons.html:3 -#: bookwyrm/templates/snippets/privacy-icons.html:4 -#: bookwyrm/templates/snippets/privacy_select.html:11 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 -msgid "Public" -msgstr "Público" - -#: bookwyrm/templates/snippets/privacy-icons.html:7 -#: bookwyrm/templates/snippets/privacy-icons.html:8 -#: bookwyrm/templates/snippets/privacy_select.html:14 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 -msgid "Unlisted" -msgstr "Não listado" - #: bookwyrm/templates/snippets/privacy-icons.html:12 msgid "Followers-only" msgstr "Apenas seguidores" @@ -4015,12 +4025,6 @@ msgstr "Apenas seguidores" msgid "Post privacy" msgstr "Privacidade de publicação" -#: bookwyrm/templates/snippets/privacy_select.html:17 -#: bookwyrm/templates/user/relationships/followers.html:6 -#: bookwyrm/templates/user/relationships/layout.html:11 -msgid "Followers" -msgstr "Seguidores" - #: bookwyrm/templates/snippets/rate_action.html:4 msgid "Leave a rating" msgstr "Deixar uma avaliação" diff --git a/locale/zh_Hans/LC_MESSAGES/django.mo b/locale/zh_Hans/LC_MESSAGES/django.mo index 5eda33d5d4f857069338f4bb195aaab7363cb4a3..0d956c43337f8d676c92ffb2e33a4ce0c1e0989d 100644 GIT binary patch delta 22 ecmbQ+!!oyrWy7PD?8XX)=2oT#n_sRpi2(p++z8A7 delta 22 ecmbQ+!!oyrWy7PD>_!TPmR6=ln_sRpi2(p+?g-BS diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index f4771e154..c18f876a3 100644 --- a/locale/zh_Hans/LC_MESSAGES/django.po +++ b/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-01-12 18:37+0000\n" -"PO-Revision-Date: 2022-01-12 19:52\n" +"POT-Creation-Date: 2022-01-13 16:54+0000\n" +"PO-Revision-Date: 2022-01-13 17:50\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Simplified\n" "Language: zh\n" @@ -157,6 +157,38 @@ msgstr "用户名" msgid "A user with that username already exists." msgstr "已经存在使用该用户名的用户。" +#: bookwyrm/models/fields.py:207 +#: bookwyrm/templates/snippets/privacy-icons.html:3 +#: bookwyrm/templates/snippets/privacy-icons.html:4 +#: bookwyrm/templates/snippets/privacy_select.html:11 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 +msgid "Public" +msgstr "公开" + +#: bookwyrm/models/fields.py:208 +#: bookwyrm/templates/snippets/privacy-icons.html:7 +#: bookwyrm/templates/snippets/privacy-icons.html:8 +#: bookwyrm/templates/snippets/privacy_select.html:14 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 +msgid "Unlisted" +msgstr "不公开" + +#: bookwyrm/models/fields.py:209 +#: bookwyrm/templates/snippets/privacy_select.html:17 +#: bookwyrm/templates/user/relationships/followers.html:6 +#: bookwyrm/templates/user/relationships/layout.html:11 +msgid "Followers" +msgstr "关注者" + +#: bookwyrm/models/fields.py:210 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/privacy-icons.html:15 +#: bookwyrm/templates/snippets/privacy-icons.html:16 +#: bookwyrm/templates/snippets/privacy_select.html:20 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 +msgid "Private" +msgstr "私密" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "书评" @@ -173,69 +205,69 @@ msgstr "引用" msgid "Everything else" msgstr "所有其它内容" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home Timeline" msgstr "主页时间线" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home" msgstr "主页" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:122 msgid "Books Timeline" msgstr "书目时间线" -#: bookwyrm/settings.py:121 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "书目" -#: bookwyrm/settings.py:195 +#: bookwyrm/settings.py:196 msgid "English" msgstr "English(英语)" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:197 msgid "Deutsch (German)" msgstr "Deutsch(德语)" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:198 msgid "Español (Spanish)" msgstr "Español(西班牙语)" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:199 msgid "Galego (Galician)" msgstr "Galego(加利西亚语)" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:200 msgid "Italiano (Italian)" msgstr "" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:201 msgid "Français (French)" msgstr "Français(法语)" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:202 msgid "Lietuvių (Lithuanian)" msgstr "Lietuvių(立陶宛语)" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:203 msgid "Norsk (Norwegian)" msgstr "" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:204 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:205 msgid "Português Europeu (European Portuguese)" msgstr "" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:206 msgid "简体中文 (Simplified Chinese)" msgstr "简体中文" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:207 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文(繁体中文)" @@ -3775,14 +3807,6 @@ msgstr "加入剧透警告" msgid "Comment:" msgstr "评论:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 -#: bookwyrm/templates/snippets/privacy-icons.html:15 -#: bookwyrm/templates/snippets/privacy-icons.html:16 -#: bookwyrm/templates/snippets/privacy_select.html:20 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 -msgid "Private" -msgstr "私密" - #: bookwyrm/templates/snippets/create_status/post_options_block.html:21 msgid "Post" msgstr "发布" @@ -3903,13 +3927,13 @@ msgstr[0] "为 %(title)s 打了分: %(display_ #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" msgstr[0] "" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": {{ review_title }" +msgid "Review of \"%(book_title)s\": %(review_title)s" msgstr "" #: bookwyrm/templates/snippets/goal_form.html:4 @@ -3971,20 +3995,6 @@ msgstr "往前" msgid "Next" msgstr "往后" -#: bookwyrm/templates/snippets/privacy-icons.html:3 -#: bookwyrm/templates/snippets/privacy-icons.html:4 -#: bookwyrm/templates/snippets/privacy_select.html:11 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 -msgid "Public" -msgstr "公开" - -#: bookwyrm/templates/snippets/privacy-icons.html:7 -#: bookwyrm/templates/snippets/privacy-icons.html:8 -#: bookwyrm/templates/snippets/privacy_select.html:14 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 -msgid "Unlisted" -msgstr "不公开" - #: bookwyrm/templates/snippets/privacy-icons.html:12 msgid "Followers-only" msgstr "仅关注者" @@ -3994,12 +4004,6 @@ msgstr "仅关注者" msgid "Post privacy" msgstr "发文隐私" -#: bookwyrm/templates/snippets/privacy_select.html:17 -#: bookwyrm/templates/user/relationships/followers.html:6 -#: bookwyrm/templates/user/relationships/layout.html:11 -msgid "Followers" -msgstr "关注者" - #: bookwyrm/templates/snippets/rate_action.html:4 msgid "Leave a rating" msgstr "留下评价" diff --git a/locale/zh_Hant/LC_MESSAGES/django.mo b/locale/zh_Hant/LC_MESSAGES/django.mo index 9e0c867c8f52f7f921c7f8eae3c5895fc4fb517d..9ae22f1eba7bf2d371126aa38f9c6df169160c27 100644 GIT binary patch delta 22 ecmdlxk7@5brVY2_*o_qo&8\n" "Language-Team: Chinese Traditional\n" "Language: zh\n" @@ -157,6 +157,38 @@ msgstr "使用者名稱" msgid "A user with that username already exists." msgstr "已經存在使用該名稱的使用者。" +#: bookwyrm/models/fields.py:207 +#: bookwyrm/templates/snippets/privacy-icons.html:3 +#: bookwyrm/templates/snippets/privacy-icons.html:4 +#: bookwyrm/templates/snippets/privacy_select.html:11 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 +msgid "Public" +msgstr "公開" + +#: bookwyrm/models/fields.py:208 +#: bookwyrm/templates/snippets/privacy-icons.html:7 +#: bookwyrm/templates/snippets/privacy-icons.html:8 +#: bookwyrm/templates/snippets/privacy_select.html:14 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 +msgid "Unlisted" +msgstr "不公開" + +#: bookwyrm/models/fields.py:209 +#: bookwyrm/templates/snippets/privacy_select.html:17 +#: bookwyrm/templates/user/relationships/followers.html:6 +#: bookwyrm/templates/user/relationships/layout.html:11 +msgid "Followers" +msgstr "關注者" + +#: bookwyrm/models/fields.py:210 +#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 +#: bookwyrm/templates/snippets/privacy-icons.html:15 +#: bookwyrm/templates/snippets/privacy-icons.html:16 +#: bookwyrm/templates/snippets/privacy_select.html:20 +#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 +msgid "Private" +msgstr "私密" + #: bookwyrm/models/user.py:32 bookwyrm/templates/book/book.html:272 msgid "Reviews" msgstr "書評" @@ -173,69 +205,69 @@ msgstr "" msgid "Everything else" msgstr "" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home Timeline" msgstr "主頁時間線" -#: bookwyrm/settings.py:120 +#: bookwyrm/settings.py:121 msgid "Home" msgstr "主頁" -#: bookwyrm/settings.py:121 +#: bookwyrm/settings.py:122 msgid "Books Timeline" msgstr "" -#: bookwyrm/settings.py:121 bookwyrm/templates/search/layout.html:21 +#: bookwyrm/settings.py:122 bookwyrm/templates/search/layout.html:21 #: bookwyrm/templates/search/layout.html:42 #: bookwyrm/templates/user/layout.html:91 msgid "Books" msgstr "書目" -#: bookwyrm/settings.py:195 +#: bookwyrm/settings.py:196 msgid "English" msgstr "English(英語)" -#: bookwyrm/settings.py:196 +#: bookwyrm/settings.py:197 msgid "Deutsch (German)" msgstr "Deutsch(德語)" -#: bookwyrm/settings.py:197 +#: bookwyrm/settings.py:198 msgid "Español (Spanish)" msgstr "Español(西班牙語)" -#: bookwyrm/settings.py:198 +#: bookwyrm/settings.py:199 msgid "Galego (Galician)" msgstr "" -#: bookwyrm/settings.py:199 +#: bookwyrm/settings.py:200 msgid "Italiano (Italian)" msgstr "" -#: bookwyrm/settings.py:200 +#: bookwyrm/settings.py:201 msgid "Français (French)" msgstr "Français(法語)" -#: bookwyrm/settings.py:201 +#: bookwyrm/settings.py:202 msgid "Lietuvių (Lithuanian)" msgstr "" -#: bookwyrm/settings.py:202 +#: bookwyrm/settings.py:203 msgid "Norsk (Norwegian)" msgstr "" -#: bookwyrm/settings.py:203 +#: bookwyrm/settings.py:204 msgid "Português do Brasil (Brazilian Portuguese)" msgstr "" -#: bookwyrm/settings.py:204 +#: bookwyrm/settings.py:205 msgid "Português Europeu (European Portuguese)" msgstr "" -#: bookwyrm/settings.py:205 +#: bookwyrm/settings.py:206 msgid "简体中文 (Simplified Chinese)" msgstr "簡體中文" -#: bookwyrm/settings.py:206 +#: bookwyrm/settings.py:207 msgid "繁體中文 (Traditional Chinese)" msgstr "繁體中文" @@ -3775,14 +3807,6 @@ msgstr "加入劇透警告" msgid "Comment:" msgstr "評論:" -#: bookwyrm/templates/snippets/create_status/post_options_block.html:8 -#: bookwyrm/templates/snippets/privacy-icons.html:15 -#: bookwyrm/templates/snippets/privacy-icons.html:16 -#: bookwyrm/templates/snippets/privacy_select.html:20 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:17 -msgid "Private" -msgstr "私密" - #: bookwyrm/templates/snippets/create_status/post_options_block.html:21 msgid "Post" msgstr "釋出" @@ -3903,13 +3927,13 @@ msgstr[0] "" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:4 #, python-format -msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" -msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" +msgid "Review of \"%(book_title)s\" (%(display_rating)s star): %(review_title)s" +msgid_plural "Review of \"%(book_title)s\" (%(display_rating)s stars): %(review_title)s" msgstr[0] "" #: bookwyrm/templates/snippets/generated_status/review_pure_name.html:12 #, python-format -msgid "Review of \"%(book_title)s\": {{ review_title }" +msgid "Review of \"%(book_title)s\": %(review_title)s" msgstr "" #: bookwyrm/templates/snippets/goal_form.html:4 @@ -3971,20 +3995,6 @@ msgstr "往前" msgid "Next" msgstr "往後" -#: bookwyrm/templates/snippets/privacy-icons.html:3 -#: bookwyrm/templates/snippets/privacy-icons.html:4 -#: bookwyrm/templates/snippets/privacy_select.html:11 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:11 -msgid "Public" -msgstr "公開" - -#: bookwyrm/templates/snippets/privacy-icons.html:7 -#: bookwyrm/templates/snippets/privacy-icons.html:8 -#: bookwyrm/templates/snippets/privacy_select.html:14 -#: bookwyrm/templates/snippets/privacy_select_no_followers.html:14 -msgid "Unlisted" -msgstr "不公開" - #: bookwyrm/templates/snippets/privacy-icons.html:12 msgid "Followers-only" msgstr "僅關注者" @@ -3994,12 +4004,6 @@ msgstr "僅關注者" msgid "Post privacy" msgstr "發文隱私" -#: bookwyrm/templates/snippets/privacy_select.html:17 -#: bookwyrm/templates/user/relationships/followers.html:6 -#: bookwyrm/templates/user/relationships/layout.html:11 -msgid "Followers" -msgstr "關注者" - #: bookwyrm/templates/snippets/rate_action.html:4 msgid "Leave a rating" msgstr "留下評價" From b9fde85b499d8eccafe45b767abdfe63e714188f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 17 Jan 2022 08:14:13 -0800 Subject: [PATCH 122/170] Sort domains in admin view --- bookwyrm/views/admin/link_domains.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bookwyrm/views/admin/link_domains.py b/bookwyrm/views/admin/link_domains.py index 564ea8966..5f9ec6c06 100644 --- a/bookwyrm/views/admin/link_domains.py +++ b/bookwyrm/views/admin/link_domains.py @@ -20,9 +20,9 @@ class LinkDomain(View): def get(self, request, status="pending"): """view pending domains""" data = { - "domains": models.LinkDomain.objects.filter(status=status).prefetch_related( - "links" - ), + "domains": models.LinkDomain.objects.filter(status=status) + .prefetch_related("links") + .order_by("-created_date"), "counts": { "pending": models.LinkDomain.objects.filter(status="pending").count(), "approved": models.LinkDomain.objects.filter(status="approved").count(), From e12372250a3e1489fde6968771ebdb386e5eb4a6 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 17 Jan 2022 08:17:36 -0800 Subject: [PATCH 123/170] Mobile-friendly edit button on link domains --- bookwyrm/templates/settings/link_domains/link_domains.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/settings/link_domains/link_domains.html b/bookwyrm/templates/settings/link_domains/link_domains.html index 3f2d60976..81235b336 100644 --- a/bookwyrm/templates/settings/link_domains/link_domains.html +++ b/bookwyrm/templates/settings/link_domains/link_domains.html @@ -42,7 +42,7 @@
    From da6e43a7eb0382ef29e253798cdf69d177b20c33 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 17 Jan 2022 08:22:55 -0800 Subject: [PATCH 124/170] Avoid two character wide urls on mobile --- bookwyrm/static/css/bookwyrm.css | 1 + 1 file changed, 1 insertion(+) diff --git a/bookwyrm/static/css/bookwyrm.css b/bookwyrm/static/css/bookwyrm.css index 18c136713..f05ea3c91 100644 --- a/bookwyrm/static/css/bookwyrm.css +++ b/bookwyrm/static/css/bookwyrm.css @@ -722,6 +722,7 @@ ol.ordered-list li::before { .overflow-wrap-anywhere { overflow-wrap: anywhere; + min-width: 10em; } /* Threads From d4cfe5b8f012c5949cf7dbb53e43de88938cf1d7 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 17 Jan 2022 08:44:30 -0800 Subject: [PATCH 125/170] Fixes embedded links modal --- bookwyrm/templates/book/file_links/links.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/book/file_links/links.html b/bookwyrm/templates/book/file_links/links.html index 10a6da2f2..7c6760990 100644 --- a/bookwyrm/templates/book/file_links/links.html +++ b/bookwyrm/templates/book/file_links/links.html @@ -46,7 +46,7 @@ {% trans "Edit links" %} -{% include 'book/file_links/add_link_modal.html' with book=book id="add-links" %} {% endif %} +{% include 'book/file_links/add_link_modal.html' with book=book id="add-links" %} {% endif %} From 942092d6b142218776c1c75b426ee4fa76d174ae Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 17 Jan 2022 08:54:52 -0800 Subject: [PATCH 126/170] Show link status more prominently on edit page --- .../templates/book/file_links/edit_links.html | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/bookwyrm/templates/book/file_links/edit_links.html b/bookwyrm/templates/book/file_links/edit_links.html index c56f97a62..5ba457005 100644 --- a/bookwyrm/templates/book/file_links/edit_links.html +++ b/bookwyrm/templates/book/file_links/edit_links.html @@ -33,6 +33,7 @@ {% trans "Added by" %} {% trans "Filetype" %} {% trans "Domain" %} + {% trans "Status" %} {% trans "Actions" %} {% for link in book.file_links.all %} @@ -47,11 +48,23 @@ {{ link.filelink.filetype }} - {{ link.domain.name }} ({{ link.domain.get_status_display }}) + {{ link.domain.name }}

    {% trans "Report spam" %}

    + + {% with status=link.domain.status %} + + + + {{ link.domain.get_status_display }} + + + {% endwith %} +
    {% csrf_token %} From 7b1693a4359c605713f7c0c33968fc508d151b6f Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 17 Jan 2022 09:03:53 -0800 Subject: [PATCH 127/170] Larger file type field --- .../migrations/0129_auto_20220117_1703.py | 24 +++++++++++++++++++ bookwyrm/models/link.py | 3 ++- bookwyrm/static/js/autocomplete.js | 17 +++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 bookwyrm/migrations/0129_auto_20220117_1703.py diff --git a/bookwyrm/migrations/0129_auto_20220117_1703.py b/bookwyrm/migrations/0129_auto_20220117_1703.py new file mode 100644 index 000000000..f193ca95c --- /dev/null +++ b/bookwyrm/migrations/0129_auto_20220117_1703.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.10 on 2022-01-17 17:03 + +import bookwyrm.models.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('bookwyrm', '0128_merge_0126_auto_20220112_2315_0127_auto_20220110_2211'), + ] + + operations = [ + migrations.AddField( + model_name='filelink', + name='is_purchase', + field=bookwyrm.models.fields.BooleanField(blank=True, null=True), + ), + migrations.AlterField( + model_name='filelink', + name='filetype', + field=bookwyrm.models.fields.CharField(max_length=50), + ), + ] diff --git a/bookwyrm/models/link.py b/bookwyrm/models/link.py index be7c104f0..c4ec1e5ec 100644 --- a/bookwyrm/models/link.py +++ b/bookwyrm/models/link.py @@ -53,7 +53,8 @@ class FileLink(Link): book = models.ForeignKey( "Book", on_delete=models.CASCADE, related_name="file_links", null=True ) - filetype = fields.CharField(max_length=5, activitypub_field="mediaType") + filetype = fields.CharField(max_length=50, activitypub_field="mediaType") + is_purchase = fields.BooleanField(null=True, blank=True) StatusChoices = [ diff --git a/bookwyrm/static/js/autocomplete.js b/bookwyrm/static/js/autocomplete.js index 896100832..1ae8c71a0 100644 --- a/bookwyrm/static/js/autocomplete.js +++ b/bookwyrm/static/js/autocomplete.js @@ -160,6 +160,23 @@ const tries = { }, }, }, + r: { + i: { + n: { + t: { + " ": { + b: { + o: { + o: { + k: "Print book", + }, + }, + }, + }, + }, + }, + }, + }, }, }, }; From 39814a21f2418a0cd96adced9ebb755a5487e94e Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 17 Jan 2022 09:21:58 -0800 Subject: [PATCH 128/170] Set book availability --- bookwyrm/forms.py | 2 +- .../migrations/0129_auto_20220117_1703.py | 24 -------------- .../migrations/0129_auto_20220117_1716.py | 32 +++++++++++++++++++ bookwyrm/models/link.py | 11 ++++++- .../book/file_links/add_link_modal.html | 8 +++++ 5 files changed, 51 insertions(+), 26 deletions(-) delete mode 100644 bookwyrm/migrations/0129_auto_20220117_1703.py create mode 100644 bookwyrm/migrations/0129_auto_20220117_1716.py diff --git a/bookwyrm/forms.py b/bookwyrm/forms.py index 5af7c4553..5ab908955 100644 --- a/bookwyrm/forms.py +++ b/bookwyrm/forms.py @@ -225,7 +225,7 @@ class LinkDomainForm(CustomForm): class FileLinkForm(CustomForm): class Meta: model = models.FileLink - fields = ["url", "filetype", "book", "added_by"] + fields = ["url", "filetype", "availability", "book", "added_by"] class EditionForm(CustomForm): diff --git a/bookwyrm/migrations/0129_auto_20220117_1703.py b/bookwyrm/migrations/0129_auto_20220117_1703.py deleted file mode 100644 index f193ca95c..000000000 --- a/bookwyrm/migrations/0129_auto_20220117_1703.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 3.2.10 on 2022-01-17 17:03 - -import bookwyrm.models.fields -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('bookwyrm', '0128_merge_0126_auto_20220112_2315_0127_auto_20220110_2211'), - ] - - operations = [ - migrations.AddField( - model_name='filelink', - name='is_purchase', - field=bookwyrm.models.fields.BooleanField(blank=True, null=True), - ), - migrations.AlterField( - model_name='filelink', - name='filetype', - field=bookwyrm.models.fields.CharField(max_length=50), - ), - ] diff --git a/bookwyrm/migrations/0129_auto_20220117_1716.py b/bookwyrm/migrations/0129_auto_20220117_1716.py new file mode 100644 index 000000000..6b05fd272 --- /dev/null +++ b/bookwyrm/migrations/0129_auto_20220117_1716.py @@ -0,0 +1,32 @@ +# Generated by Django 3.2.10 on 2022-01-17 17:16 + +import bookwyrm.models.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ("bookwyrm", "0128_merge_0126_auto_20220112_2315_0127_auto_20220110_2211"), + ] + + operations = [ + migrations.AddField( + model_name="filelink", + name="availability", + field=bookwyrm.models.fields.CharField( + choices=[ + ("free", "Free"), + ("purchase", "Purchasable"), + ("loan", "Available for loan"), + ], + default="free", + max_length=100, + ), + ), + migrations.AlterField( + model_name="filelink", + name="filetype", + field=bookwyrm.models.fields.CharField(max_length=50), + ), + ] diff --git a/bookwyrm/models/link.py b/bookwyrm/models/link.py index c4ec1e5ec..0e4148ddd 100644 --- a/bookwyrm/models/link.py +++ b/bookwyrm/models/link.py @@ -47,6 +47,13 @@ class Link(ActivitypubMixin, BookWyrmModel): return super().save(*args, **kwargs) +AvailabilityChoices = [ + ("free", _("Free")), + ("purchase", _("Purchasable")), + ("loan", _("Available for loan")), +] + + class FileLink(Link): """a link to a file""" @@ -54,7 +61,9 @@ class FileLink(Link): "Book", on_delete=models.CASCADE, related_name="file_links", null=True ) filetype = fields.CharField(max_length=50, activitypub_field="mediaType") - is_purchase = fields.BooleanField(null=True, blank=True) + availability = fields.CharField( + max_length=100, choices=AvailabilityChoices, default="free" + ) StatusChoices = [ diff --git a/bookwyrm/templates/book/file_links/add_link_modal.html b/bookwyrm/templates/book/file_links/add_link_modal.html index dfc222ee9..114293a46 100644 --- a/bookwyrm/templates/book/file_links/add_link_modal.html +++ b/bookwyrm/templates/book/file_links/add_link_modal.html @@ -43,6 +43,14 @@ {% include 'snippets/form_errors.html' with errors_list=file_link_form.filetype.errors id="desc_filetype" %}
    +
    + +
    + {{ file_link_form.availability }} +
    +
    {% endblock %} From 1595bac9b58259a41896fe629efdfd2e0000668c Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 17 Jan 2022 09:26:00 -0800 Subject: [PATCH 129/170] Show availability in links panel --- bookwyrm/templates/book/file_links/links.html | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bookwyrm/templates/book/file_links/links.html b/bookwyrm/templates/book/file_links/links.html index 7c6760990..25e0ba89a 100644 --- a/bookwyrm/templates/book/file_links/links.html +++ b/bookwyrm/templates/book/file_links/links.html @@ -30,6 +30,12 @@
  • {{ link.name }} ({{ link.filetype }}) + + {% if link.availability != "free" %} +

    + {{ link.get_availability_display }} +

    + {% endif %}
  • {% endfor %} From cfcacb4797978961f7cc46547b5b3b93ef9d7ef7 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 17 Jan 2022 09:57:47 -0800 Subject: [PATCH 130/170] Edit book availability --- .../templates/book/file_links/edit_links.html | 25 +++++++++++++-- bookwyrm/urls.py | 7 ++++- bookwyrm/views/__init__.py | 2 +- bookwyrm/views/books/links.py | 31 ++++++++++++++++--- 4 files changed, 55 insertions(+), 10 deletions(-) diff --git a/bookwyrm/templates/book/file_links/edit_links.html b/bookwyrm/templates/book/file_links/edit_links.html index 5ba457005..8dad6c40a 100644 --- a/bookwyrm/templates/book/file_links/edit_links.html +++ b/bookwyrm/templates/book/file_links/edit_links.html @@ -34,9 +34,9 @@ {% trans "Filetype" %} {% trans "Domain" %} {% trans "Status" %} - {% trans "Actions" %} + {% trans "Actions" %} - {% for link in book.file_links.all %} + {% for link in links %} {{ link.url }} @@ -66,7 +66,26 @@ {% endwith %} - + + {% csrf_token %} + + + + +
    +
    +
    + {{ link.form.availability }} +
    +
    +
    + +
    +
    + + + +
    {% csrf_token %}
    diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 990601490..7cdfd92a0 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -473,10 +473,15 @@ urlpatterns = [ rf"{BOOK_PATH}/filelink/?$", views.BookFileLinks.as_view(), name="file-link" ), re_path( - rf"{BOOK_PATH}/filelink/(?P\d+)/delete/?$", + rf"{BOOK_PATH}/filelink/(?P\d+)/?$", views.BookFileLinks.as_view(), name="file-link", ), + re_path( + rf"{BOOK_PATH}/filelink/(?P\d+)/delete/?$", + views.delete_link, + name="file-link-delete", + ), re_path( rf"{BOOK_PATH}/filelink/add/?$", views.AddFileLink.as_view(), diff --git a/bookwyrm/views/__init__.py b/bookwyrm/views/__init__.py index 2ec501dea..3f57c274a 100644 --- a/bookwyrm/views/__init__.py +++ b/bookwyrm/views/__init__.py @@ -37,7 +37,7 @@ from .books.books import ( from .books.books import update_book_from_remote from .books.edit_book import EditBook, ConfirmEditBook from .books.editions import Editions, switch_edition -from .books.links import BookFileLinks, AddFileLink +from .books.links import BookFileLinks, AddFileLink, delete_link # landing from .landing.about import about, privacy, conduct diff --git a/bookwyrm/views/books/links.py b/bookwyrm/views/books/links.py index 989ca9c49..516210230 100644 --- a/bookwyrm/views/books/links.py +++ b/bookwyrm/views/books/links.py @@ -5,28 +5,49 @@ from django.shortcuts import get_object_or_404, redirect from django.template.response import TemplateResponse from django.views import View from django.utils.decorators import method_decorator +from django.views.decorators.http import require_POST from bookwyrm import forms, models # pylint: disable=no-self-use +@method_decorator(login_required, name="dispatch") +@method_decorator( + permission_required("bookwyrm.edit_book", raise_exception=True), name="dispatch" +) class BookFileLinks(View): """View all links""" def get(self, request, book_id): """view links""" book = get_object_or_404(models.Edition, id=book_id) - return TemplateResponse( - request, "book/file_links/edit_links.html", {"book": book} - ) + links = book.file_links.order_by("domain__status", "created_date") + annotated_links = [] + for link in links.all(): + link.form = forms.FileLinkForm(instance=link) + annotated_links.append(link) + + data = {"book": book, "links": annotated_links} + return TemplateResponse(request, "book/file_links/edit_links.html", data) def post(self, request, book_id, link_id): - """delete link""" + """Edit a link""" link = get_object_or_404(models.FileLink, id=link_id, book=book_id) - link.delete() + form = forms.FileLinkForm(request.POST, instance=link) + form.save() return self.get(request, book_id) +@require_POST +@login_required +# pylint: disable=unused-argument +def delete_link(request, book_id, link_id): + """delete link""" + link = get_object_or_404(models.FileLink, id=link_id, book=book_id) + link.delete() + return redirect("file-link", book_id) + + @method_decorator(login_required, name="dispatch") @method_decorator( permission_required("bookwyrm.edit_book", raise_exception=True), name="dispatch" From 2f924faa051ad6857632f5e4c8eace2cd00d780e Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 17 Jan 2022 10:29:48 -0800 Subject: [PATCH 131/170] Adds tests --- bookwyrm/tests/views/books/test_links.py | 57 ++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/bookwyrm/tests/views/books/test_links.py b/bookwyrm/tests/views/books/test_links.py index 9e051926e..2aee5aed9 100644 --- a/bookwyrm/tests/views/books/test_links.py +++ b/bookwyrm/tests/views/books/test_links.py @@ -67,6 +67,7 @@ class LinkViews(TestCase): form.data["filetype"] = "HTML" form.data["book"] = self.book.id form.data["added_by"] = self.local_user.id + form.data["availability"] = "loan" request = self.factory.post("", form.data) request.user = self.local_user @@ -87,3 +88,59 @@ class LinkViews(TestCase): self.book.refresh_from_db() self.assertEqual(self.book.file_links.first(), link) + + def test_book_links(self): + """there are so many views, this just makes sure it LOADS""" + view = views.BookFileLinks.as_view() + models.FileLink.objects.create( + book=self.book, + added_by=self.local_user, + url="https://www.hello.com", + ) + request = self.factory.get("") + request.user = self.local_user + result = view(request, self.book.id) + self.assertEqual(result.status_code, 200) + validate_html(result.render()) + + def test_book_links_post(self): + """there are so many views, this just makes sure it LOADS""" + link = models.FileLink.objects.create( + book=self.book, + added_by=self.local_user, + url="https://www.hello.com", + ) + view = views.BookFileLinks.as_view() + form = forms.FileLinkForm() + form.data["url"] = link.url + form.data["filetype"] = "HTML" + form.data["book"] = self.book.id + form.data["added_by"] = self.local_user.id + form.data["availability"] = "loan" + + request = self.factory.post("", form.data) + request.user = self.local_user + view(request, self.book.id, link.id) + + link.refresh_from_db() + self.assertEqual(link.filetype, "HTML") + self.assertEqual(link.availability, "loan") + + def test_delete_link(self): + """remove a link""" + link = models.FileLink.objects.create( + book=self.book, + added_by=self.local_user, + url="https://www.hello.com", + ) + form = forms.FileLinkForm() + form.data["url"] = "https://www.example.com" + form.data["filetype"] = "HTML" + form.data["book"] = self.book.id + form.data["added_by"] = self.local_user.id + form.data["availability"] = "loan" + + request = self.factory.post("", form.data) + request.user = self.local_user + views.delete_link(request, self.book.id, link.id) + self.assertFalse(models.FileLink.objects.exists()) From a23e49c9f3ec841cacb1b06e5ef8fc589e8526ac Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 17 Jan 2022 10:48:42 -0800 Subject: [PATCH 132/170] Fixes filetype field length --- bookwyrm/templates/book/file_links/add_link_modal.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bookwyrm/templates/book/file_links/add_link_modal.html b/bookwyrm/templates/book/file_links/add_link_modal.html index 114293a46..0002b82b3 100644 --- a/bookwyrm/templates/book/file_links/add_link_modal.html +++ b/bookwyrm/templates/book/file_links/add_link_modal.html @@ -30,7 +30,7 @@ Date: Mon, 17 Jan 2022 10:52:16 -0800 Subject: [PATCH 133/170] Case insensitive suggestions --- bookwyrm/settings.py | 2 +- bookwyrm/static/js/autocomplete.js | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/bookwyrm/settings.py b/bookwyrm/settings.py index 06fc6a371..1d1ea154d 100644 --- a/bookwyrm/settings.py +++ b/bookwyrm/settings.py @@ -14,7 +14,7 @@ VERSION = "0.2.0" PAGE_LENGTH = env("PAGE_LENGTH", 15) DEFAULT_LANGUAGE = env("DEFAULT_LANGUAGE", "English") -JS_CACHE = "a47cc2ca" +JS_CACHE = "76c5ff1f" # email EMAIL_BACKEND = env("EMAIL_BACKEND", "django.core.mail.backends.smtp.EmailBackend") diff --git a/bookwyrm/static/js/autocomplete.js b/bookwyrm/static/js/autocomplete.js index 1ae8c71a0..84474e43c 100644 --- a/bookwyrm/static/js/autocomplete.js +++ b/bookwyrm/static/js/autocomplete.js @@ -42,6 +42,8 @@ function getSuggestions(input, trie) { // Follow the trie through the provided input + input = input.toLowerCase(); + input.split("").forEach((letter) => { if (!trie) { return; From 32acccc350f0d9d32e260935b9163e0abdaae125 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Mon, 17 Jan 2022 11:25:41 -0800 Subject: [PATCH 134/170] Use both noopener and noreferrer --- bookwyrm/templates/author/author.html | 12 +- bookwyrm/templates/book/book.html | 4 +- .../templates/book/file_links/edit_links.html | 2 +- bookwyrm/templates/book/file_links/links.html | 2 +- .../book/file_links/verification_modal.html | 2 +- bookwyrm/templates/import/tooltip.html | 2 +- bookwyrm/templates/search/book.html | 2 +- .../federation/instance_blocklist.html | 2 +- .../settings/link_domains/link_domains.html | 2 +- .../settings/link_domains/link_table.html | 2 +- locale/de_DE/LC_MESSAGES/django.mo | Bin 72911 -> 72617 bytes locale/de_DE/LC_MESSAGES/django.po | 374 +++++++++++----- locale/en_US/LC_MESSAGES/django.po | 72 ++-- locale/es_ES/LC_MESSAGES/django.mo | Bin 79543 -> 79237 bytes locale/es_ES/LC_MESSAGES/django.po | 374 +++++++++++----- locale/fr_FR/LC_MESSAGES/django.mo | Bin 79004 -> 81212 bytes locale/fr_FR/LC_MESSAGES/django.po | 400 +++++++++++++----- locale/gl_ES/LC_MESSAGES/django.mo | Bin 77784 -> 77474 bytes locale/gl_ES/LC_MESSAGES/django.po | 374 +++++++++++----- locale/it_IT/LC_MESSAGES/django.mo | Bin 78729 -> 78427 bytes locale/it_IT/LC_MESSAGES/django.po | 374 +++++++++++----- locale/lt_LT/LC_MESSAGES/django.mo | Bin 75364 -> 75079 bytes locale/lt_LT/LC_MESSAGES/django.po | 376 +++++++++++----- locale/no_NO/LC_MESSAGES/django.mo | Bin 75072 -> 74806 bytes locale/no_NO/LC_MESSAGES/django.po | 374 +++++++++++----- locale/pt_BR/LC_MESSAGES/django.mo | Bin 78146 -> 81381 bytes locale/pt_BR/LC_MESSAGES/django.po | 376 +++++++++++----- locale/pt_PT/LC_MESSAGES/django.mo | Bin 73743 -> 73450 bytes locale/pt_PT/LC_MESSAGES/django.po | 374 +++++++++++----- locale/zh_Hans/LC_MESSAGES/django.mo | Bin 67101 -> 66840 bytes locale/zh_Hans/LC_MESSAGES/django.po | 373 +++++++++++----- locale/zh_Hant/LC_MESSAGES/django.mo | Bin 36669 -> 36376 bytes locale/zh_Hant/LC_MESSAGES/django.po | 373 +++++++++++----- 33 files changed, 3123 insertions(+), 1123 deletions(-) diff --git a/bookwyrm/templates/author/author.html b/bookwyrm/templates/author/author.html index 27beeb468..8061d580c 100644 --- a/bookwyrm/templates/author/author.html +++ b/bookwyrm/templates/author/author.html @@ -66,7 +66,7 @@
    {% if author.wikipedia_link %} @@ -74,7 +74,7 @@ {% if author.isni %} @@ -83,7 +83,7 @@ {% trans "Load data" as button_text %} {% if author.openlibrary_key %}
    - + {% trans "View on OpenLibrary" %} {% if request.user.is_authenticated and perms.bookwyrm.edit_book %} @@ -98,7 +98,7 @@ {% if author.inventaire_id %}
    - + {% trans "View on Inventaire" %} @@ -114,7 +114,7 @@ {% if author.librarything_key %} @@ -122,7 +122,7 @@ {% if author.goodreads_key %} diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index f6d9929dd..d2ab99b4b 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -122,7 +122,7 @@ {% trans "Load data" as button_text %} {% if book.openlibrary_key %}

    - + {% trans "View on OpenLibrary" %} {% if request.user.is_authenticated and perms.bookwyrm.edit_book %} @@ -136,7 +136,7 @@ {% endif %} {% if book.inventaire_id %}

    - + {% trans "View on Inventaire" %} diff --git a/bookwyrm/templates/book/file_links/edit_links.html b/bookwyrm/templates/book/file_links/edit_links.html index 8dad6c40a..39d3b998b 100644 --- a/bookwyrm/templates/book/file_links/edit_links.html +++ b/bookwyrm/templates/book/file_links/edit_links.html @@ -39,7 +39,7 @@ {% for link in links %} - {{ link.url }} + {{ link.url }} {{ link.added_by.display_name }} diff --git a/bookwyrm/templates/book/file_links/links.html b/bookwyrm/templates/book/file_links/links.html index 25e0ba89a..fbc95b566 100644 --- a/bookwyrm/templates/book/file_links/links.html +++ b/bookwyrm/templates/book/file_links/links.html @@ -28,7 +28,7 @@ {% for link in links.all %} {% join "verify" link.id as verify_modal %}

  • - {{ link.name }} + {{ link.name }} ({{ link.filetype }}) {% if link.availability != "free" %} diff --git a/bookwyrm/templates/book/file_links/verification_modal.html b/bookwyrm/templates/book/file_links/verification_modal.html index 1d53c1ef2..81685da0f 100644 --- a/bookwyrm/templates/book/file_links/verification_modal.html +++ b/bookwyrm/templates/book/file_links/verification_modal.html @@ -17,7 +17,7 @@ Is that where you'd like to go? {% block modal-footer %} -{% trans "Continue" %} +{% trans "Continue" %} {% if request.user.is_authenticated %} diff --git a/bookwyrm/templates/import/tooltip.html b/bookwyrm/templates/import/tooltip.html index 311cce82c..f2712b7e9 100644 --- a/bookwyrm/templates/import/tooltip.html +++ b/bookwyrm/templates/import/tooltip.html @@ -3,6 +3,6 @@ {% block tooltip_content %} -{% trans 'You can download your Goodreads data from the Import/Export page of your Goodreads account.' %} +{% trans 'You can download your Goodreads data from the Import/Export page of your Goodreads account.' %} {% endblock %} diff --git a/bookwyrm/templates/search/book.html b/bookwyrm/templates/search/book.html index ab62d4734..cc615d508 100644 --- a/bookwyrm/templates/search/book.html +++ b/bookwyrm/templates/search/book.html @@ -63,7 +63,7 @@ {{ result.title }} diff --git a/bookwyrm/templates/settings/federation/instance_blocklist.html b/bookwyrm/templates/settings/federation/instance_blocklist.html index 926ab5f4a..abd580918 100644 --- a/bookwyrm/templates/settings/federation/instance_blocklist.html +++ b/bookwyrm/templates/settings/federation/instance_blocklist.html @@ -47,7 +47,7 @@