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 zcmX@Nkmb#Kmil`_EK?a67#Q-H85m?37#Mn_85kzBFfjZv1Bo&)cz7}}oMK>L@bqM0 z&|+X<5bpPg7|!`X%whCpU=U+qsAtgeWnfTZU|?|eWneI7U|>k|Wnge% zU|^W#%fJx8z`$_Zmw~~6fq_BCkAXp+fq@~`kAZ=ofq|jckAXp)fq|jdkAXpffq`ME z9|MCA0|Ub`kT@d)gRnmXg9rlygLVK!okIWvgDe9BLqq@rLkI%{LsYs}7!p7} z4`pCTVPIfT4`X160$CKsz!1s6!03=B*W3=H*&3=9l$ z5ey8v3=9khA{ZD185kJeML>K2(hUk)(?|w}Dh39Iut#tV2FkIfHM~25MC%P9t&}(Vl2cVhOrC``V0&VcCio(^I{=sWMW?k}rXQK?0QjB@-Y98bN8R1O^5c1_lPF z1c(pZ6Cgf~g=k>NN`Qnwa{|N%lcDMtCO{mpECCX762ubbAi4YC7i3|)AKyjJ~u|PHnBCebSG1w>xBJPp|aj+MZ zAD#s9NNf@$M2eFj9;ixUVBiJi|1PM88A%X}mnK0Rv;%6uNvOv2P>t81^3ReWA@@BA zl4kxxX^vz_ln5q6Y(&Qr~ylo zAue8%3~|_=WQc`lq4L*~AwIqbRrfj>QdIv=hJ=W83dHA%DUf`xkpfX~lfqCB&hMTn zkhlwnN+hR1g0>(9;_`Z^_(Z6>c~Jf;sDay47#OS=7#L2cKq?`&R7fH=O@%mQVJgG{ z2U8&-av~LC?uArn{(qDTiTgLH5SM+2@>$X#LB^j3k(W(_I7}lAl1RN`ur|57NNdgyBaTBx(fHAud-* zhg7R(=?o013=9lG=@19*NQYQ(I342C3+a$3yO9owikIn-sC=K!z+l0^z)=4`9gN6k)^g{V_Gazxg8p_`fl|P#S@%h~hh=ZO$&Hb1G zNozkdz#&-AAd(3QD#=WU&-61PLFt$Y(de5Aaaa_TPRWG$G!M$JgsN+Xicf&jv!UY4 zG9eD$3>7~NHUC^D$RYI%47V~NLGd*c5=44g5Dg|-khpfqf&^i37Q{y>S&)`eb`~Ur zIdK$7@+z%8)6|>HbkRjHpD=^ zY>30mvLP1QWJ4@;&4vWMKa@_+1_voac{U`~*Fg2p$%cgFl59v+Zp?;wu56z@P%EW^*78f0Y9X z!T(To{J9X1DCa_=SUVRYZ=1_d53YWFb0Izt&xQCbEf*401yJ#tT!;g@p&A!L4cwRu z3F@7>5C@-uT5vTN;=t#*kVN|%Y7S=}gfEc?2~oAYdWZo!c@PWj^B}dIcOJy2b$JjU zwdO$_HY*R(h+L8f3F<>o@#9ea7op;Jp%y)Y>i+J=Sgan(kk5y>NF$$t z!GnQ;K`$TTfbx7uIZy}XPlM8P^C3~QBp(vDTk|14JCqLz;tTl@4?W6<1ob+S8Ft8Uu98iC*0HWY}0VIf@7eEa7TL3YTzYr2NvV{NEz327#V3=6Kz`zR1{|==fmoPB6l|l>-Duo1DVkyKy8Ksa8NPQ_d z$Qb68LM&Vc)wc%9-%$#&cwZ^RLzhb-QS`Kwfx(=Cf#F*zB(3O`L260sG6sfvP%}HL z45Fc^3{t7IltD_k1!a&R-&+PT=vWz~oqruF&RY(V7b}N^jC?u7$6Do(Tx9~K-OC{k ziz;Ve$Yfw($cOT8mNV3YJDu;!Aui*tfY1^Z5Q9`JAU@TvfCRN^1te;mDIgklR`T>EK+cfH;_`5)vicmGzM9rB?|tz^xKuU}PnvS)E-8 zamZ|__);jny%G{-Co3T(=haGx55HAHdbiwFkdQR1f;b?k3Sv%S6+~Ti6(lMr)K@`# zIHL*@=kux{K3!S`35m^B5EmbSYB&is=pt17b`_-W_@oLFr~cIt^XjT0A=Oe1X+LyU zLvqccYDiRWs)jhA{%|#<+kLtk(x>}h4YAOn2I3&k8i>mSpmbCXL}N+~#GyGgplXzX zp{fQFl2dCSxnOM#BqR?)`In*QJ+FcEp5N7g9ahi4QOm%f!N9mVT@Q3vUUYt(`C z)iW^off)=8VRaA#;_4tSPp^YGq_PeY63umxIPa>1q?KuPkXmnL9VD*LK`nSy2gwb; zpfo6tgL=OL^$>H!>LK>X)-y1$fbzc@R6@HR)jt)ger`P^s8>Pt9f8u9p!PkeXJDuY4W&GX3Veqe^sgQgw0sQ^ zTDbv|s4N;FKCo+m6xps&`OF4LZmDa4gxtCYh(``IKzw?l0g^^8HbBM)-ZVh!5V1yR z{jbvq87MGo1SblH*hWZDmo-8{q6tb*Y=q?d1&t634mCn7IMoPo;N?b$18+7mF!X_n z+C~Nj9Z-SO1W`W+N-t@G3|g&ef(G%+CP=D%*90+$sTtw`j%J8~BF&H>mTrdlP`eqD z?`@&{xMoNc6*NOatQM+&QZpoX&4bEcYKC~|elsL0-_g= zZ-u1h^j1j0P}K@a_1#cLc1ToKLHUjCpaQF&fnj1hB=N0;YPir2@xcwK!iVh; zhkS&JGj%`=;_iU>OsE5*UZw+*I8{3!soT8+lImkSAP%YMfHP&nwZoBNkhwfAW^xi2hx7H+XERR{smQM+Y5=Rpk7EKjO~Sv|0VZAf+!0r zQPc~G%Zgq|ZfNO+__PyBPlD33dm&M<1gd`>l-|}034wjRklb|+s{ThuCwl9}-fh>Y);E`yoN{y&sae{`Nz%3CjeC2Av6zL}&`-yG?*(FaHUU zw2=s<3noAkU;PA#gQh~&EuH|0qOB7k4mvRb5;FC7CqRPwBUIsEs0I8JA#p7+5t2L1 zCPI7`I}zgZtcef@mrjI)Q1wJe{%)QKalqV(3=I7Y3=EqmGB8X74ew8aIOx_SNJzYx z1Pzgn zM!9cK1D8w;VbdW+X47fuV?jfnn_|NXRJ6hJ;w|Y)DAYm<@@td9xW9>U|j)7?#b3 zbdkQyW?%sEo##M;ZsHsU1||juh9h$zgUiR~KoZf3=9m0^BC&E7M9L~2ppaVi7WQ`5Cc8uGcb6AMz`ie zLSWu}h>uo5>F-c^mj#fhny`R@!38w#zW@>yez}N&VG;uagXm(2`W1^IQ!pDB zLlPU$5=hioErH|`$0d*{o9Ox_5QFzDflRp^S;D|j3!0Ev0x_t3DTHoV3UP7gQb=N* zvlLQ*>|4sf@PUzm;o(vShA#{Z440NeqVD(#Ncr$<1p|0IfoCNoghN*{FxW9LFw9)Z z!0;0^{&!;~0|Or;1H+|NkTUz>YKTMrt%jsx<28^XGhq!R8(y^|CI9P5SM4#h21_mcahI)o6>mb?Y`g%yE@_Id_ zInBHQk}KplKpa-R0pjx+8z2Vm+5jn-E^mN1^w$PR)TwWTIM`z&L|yzwh`ALT85pV= z7#JpOgd|#?O$-e7p!q+UO^|FCvkBtj^i7ZusMrK4D%Wm;v~~||Vqhp|U|@K*i2;;# z8R9lW+W$W`LxNm(3j;$90|P_A7KpmDTNoJX7#J8_w?Yc0BU>TUZ_3*k7}6OS7}~cn zFvNrM|NCu_#NfZ3fgy>3fnmdT$mq534hUVp17g7I9gt?W*G@>oqG~6k6+3k&BxEk_ zWMJrEU|{&N6JkN_E=W*6-32K(EOvu@%)sEc8&WOz?Pg%82Q`l`?uKNWf4d>6-gytC zjP~3EiJIU&kVKfi2NF^Rdmsf<^&Uuwb?t$q?%7avi}pawS-l66XgBVGgya#Zx|>jQ z9_(SL2Tz;5-UIQ`cc?<4y^y$5-wUz8VK2lXfl%?(y^uJrgNjex3-RH~y$}ocL&Y!c zg~a_csQf=DEwT?%M`-Pv z5*Vn-lpK;Z}jLk0r_gZU9iTrW5RnWo!u1Z)9==TS&h1s;XyPdN%ntd&PW4yk8g zXgCT9ioT-|1E(K_Sg`IWB&c>kHJ&^QNrd-~LW2C$QHalljzMyT?lFiDEsjA#(B&9J zf5B&`G;hd3bdI3xrLk3&3Ic^u-PrsI$(oqU{up&m5vzy3JH$9JLh^W%_^_;?)R zAdV9dpUa+r7;Ffo9Zx{y15ZF4l6C@OK?_uVDwJLd72kRSQeYiB0jaK;Pcqaqlz?ufMOgaULqUuu+^V?6=Lu#vuryxPJ`xK;pK5`1;<9nwd4)}Bm5@d|0A$-}>5Q}wA zLkzY#4bc~R8lo=$G$hKpPeVdx;c3Xyj{T=09&|nfN_-3qe)VS{aTEikQ_esX1(pDz9)B5;Zz!A&Jis%J(}9(U*J{;(_{{ zvydRIIScVw^I3?4CY^<}TxLP}C(c3=--WY~Z1&+SB!oE5K`fFv2QknPN;{r|gh1dq zNSa7L2T9BoP<}T=zMf&uIfzd;K@B8uNoxGTQ^X>hb&fH+{;1xRAsb^&7H?hBBpJaPdN66Y^K(#lh)x_=iSLwyX) z7a=|}y9lw^_97(ceJ(;Qs=5fN-#acs+VQI{LVW<0e{m7w@NXAEK4M_tx&$##{Sri- z-X#X`0wu>w5C_k@1PQ7Amlzo8LCbBfKovf^1PQvYmmrDlFO=rI3~`v~Wk}qsT!yH# zxeN(Xm&*_X{Vqcsk_=T}4prB78RGN4%a9ORei`DhO_v$!!E3mVLJhuq84^@qFGGCJ zeFdUH@(Lsysa%1`J6&O52nDU>g37OhitoGvanSiIki>fP3Zx4>copKnJ69nV{eqgq zcnwl8@m_<3jLJ1gnzDe3yVhTWI3VU4#AUhHAT9%mA7)@+=(+|8YQO7{f+g%a#Gysk zA?mxXLxO(Jb%?n~)$Cx&`sE<}FCjn%#m#nb$2y8u7mc z@kr_|utf|Nw;)l|ehXq=-z|`N^$ZM)Z$W}$&n-wB@AxeSh997b$Xg5y-$BdgZbRby z{vC+HPwzmY;`beh&&2OSs%wS2klM}qE=0WIF2u);cOgFRz6&vD=3R&f=HF#tkO0;H z+dvG^0>ZnHDVP^fzUDnhneKEC;?t6QAQv+*G~R=>5obZ^efJ;^dvp)tkRSIL7{VAB z7=-Ub^kv43B<=zPar|6 z_5_l+jG=tDCy<~Geges^aZeyYo(2^!cmfI0>L-wv&)+AI#Hv^S6cTjCPa#2K`4r-l z@TU-;q(6luCXhPN=vBv4NT2TZQ;0+LoobVOfzKcgihc%(+O%hoG*j~o z5&{dJL2^y~{%4Sa+ z`!%G<7J3bd8uQnX#OL!G5~a1T85rt8t6!(Th9s7SuOSVHHLoGr@g!8^*Vhn>x!ypc zMC1*mdi8z-aY*(Xhy&`N^wc+yR`r@Upde;oxCW)~y@5p8vo{d?zQ19pXIKJS`SccI z@bb5ixV-lk5>&6>GBCJ;M#J7h9AN(rQo?z@gM?7ZJ4h-ncn8TvE$<*9*!2$Lpjq!A ziE!gPh(q5&^)bGOgbeR{=#;6^dq@;my@w>iy!VjY(DEK);DYxM12?>f_~7_^NYvbT z4{54Bd=Cj?{tu9#SNQ<(i1r7FLoGf)#+F^6{QVyw9z0$D0g~@;et@)Azkh)A;}t$a zd=&E$;_{@AkTg*G5fTFJA0ZA|^bumv=8q7E9{dQY#4dhhU~p$(VEFM7;t+>VkdX5I z1o2?vCx{2?%RfO3YWM^R;)$Oi7R>$xanQC;kTKo+pCE}x^fM&&yM2aO82TCF^VH7} z3#vXt9Mtz2;;}iOAr9L084~9YKSM&~&1bNO>KT4~hFHw?1!9267f29le1Z5}{|h9Q zJAHu|6!is?s2aaO9MJg%k{D-xf#mC*Q2m#_Kzw-f3&g@lU%(bJyn~v<@D&sipz{AK zByMfLLKKF4g*YVPE5uo2CH{a^Qj2~- zvgN5Cka56oKOn>EYCj>hS?N!RzO6qYiTT-2NQo!)3ldVczaSyx`wOBj?H2<>J!nhB z^k0y1`K`YoA;It)5(47CA&F4?H^c{qzac?t0p&aXh8XDa8!}Ij2$fIy4T3=F-$A-QVtZ%EqM{~NUb1GMwuHzcUI{y>6U^$#S@_5VN&aQ_1_Fa}De|A7Q~ z5tMHD14$EoQ1#RPKt{t?|A9o=g1?ZV*-d{T4%Yt%5%&PCbO3D-i24VKyWD?}psIn= zJ^vsD#hibTI6nwgcL^&0@E;^7KmLP+jM9II!?piI)I0x&glNcrNC;&Ahj^&*Kconr zRu5IU0jl62)PUF;M)0ne z%?ym-%_k=q7{NOzE<^dZ7#P93V4gzN)iX0Pg7@o4FfuYs0d2QoWCZVQC}4tE(8$CH z-mTKj#0cKQF^dV}kOfSP;3m}uCPwfS&3z_D@b(;SW<~~E1_lOiW{872nHd?jFfcIe zVP*uc6)j|81kV?oWMKp?_p4_xV1*bI!O93;r`OKP$PfXVuY-!~voV5q!^E*Mg4YQ( zu`x3AGB7Z#W`pRnWM>5L8_Hm3WB_f`nZpio;BIz^{AqSZ@a~yk?2O>~zbp<$aGP^4 z2P1Q2P1e#6B8#Rcrm&JCnN;aI2pm4Ma(%F!Mk5vI2pk^BlbhpX>&o;S#m)_ z$cqc2K9UO(1!-K2;2l%dT#Vq|F3Y$W8FCmH7-!bA&F0z5xfViKo}B~8-*FcTd|G_LxTE+Fe7-+*mq%w z52ZvH!TX04MIa8+5`iRMBN0f5+K50BW3C7z!%7AQh6PadUZVAk33v>7#SEoGcYj7GBYsz zVPs%nVrF32!N|aH8)|0#Ymh<)28MLdekle9hV6_D4BAW#483vdGBGe1 zFf%aRgIWYK3p5iB+SdnSzhGowNM>SS5M^XwxXQ%9z{w1$@oq6NFl=FDU`S_TU|7n; z04|t7>OuH20|UcGs3$=D-;4|l8<-dvw3!(g{9xjs{11|pV}#63?q+0QsAFPaFlU0S z>jKI7GcqttVq{=Y1O-1M1H&<>BS9O`K=N+P3=I20>X{iBniv=uDj69VIGG@ej6w2G zm>3wk7#SEIFhSM>=`u4g3v5nIUy_ z8Z$#ZxVY+o8ukvfAcvWO;TBX=4-*5!E(QjMg`l1T69dC}kcpr*a!`3FmqCqzfx#3i z*2x5EL&-5QF#KR-VA##Tz>vYnz`zVmF@B5;4E)Rt49gf97~U||GcdeiWMBwkVqjPg z8l+=lVDNw%^bwSt85tNhGcqt7WME*BhKf&SVgPUQyvM}A-~viLP{)5}WMG)iz`#%g zN{&nn4BMdUL5^I_$iSckbpVJT3)Lf7&&a^=0VD#_2-R=}$_KUjdzly*7BMj}oPlZx zV`gB80r`N5f#C#bMJW>lLmDVWfo2dvAp=zh+QhLJY97cq&_+N|We%#qL3?vSlf`OG z3=H+PPz`ZRkQSmS)RhuYaTZ1fhHs1v3|$Ni3_{Ed4DQU3VT*g9?X4h_85kJuFfcIW zFflNwGcz#Qf;Q}ec7%df41u<~Le0};W?*1pVqgenWMF7vVqka%aa=vaS4IYKWg5lE zz~Ictz)%P(x)>N3nm|5eVqoZmIs{}FXwPc^L?eg`ZWkQ_l@3T^w-^~1WSAKkUNbQ; ztN|5k%#bXFekXgB~LTgDVrF3Y3v(R<1A`0HBcMisDOAsMP^~eCiGg7QsCr>!VDM*RVA#XR!0?Wdfgzq5 zvMP)P=3-_BhK*2-AD9@x?I)P|zd-dURBkF01H&s&8NkHA&1}XA z#d(>b@xK(bNgL`ykfEUE>+*~Y46#tlL1G}hijjdqgAp<C%Q7#SE=FfcG&W@KRCgDL>6kK#Q{&85rc585mrk27}x?kAZ<9i4n3$%Zw2+7z7drP3#9VGcYU$ z6~zpYB@gF8tA@@pF)%D+f-EsS$;7~L5@Z=O1H*A928MV>28OjzOOHS;31VVk(1(hF z4Bo`Z!0?Qbf#Ek)j2%i>FfuTlVPIgWgX+7($iTn~^%O{-FcSlV0x14j7#J9=7#SD@ z7#SF(p^8BYRGY zHGs^_V}z_Ax(+IenHd;lq4HNitqukT1`cKh1_wsSI1G6GiXbxsgE1omLlsovFDA$k z2FN3i7$}|+I~M1R8)jALlzZ+#Dy6d7|IwK z7`j3A6Vw1UP|PqgF!X}TB~a4=>c}K!28Jv~1_m!?$Y4Sx69dCfsGKL1ZU!Yikinqy zA($8#-h(P$C_ft=0~??{BjA2INaPb} zg(6hbO9lppR7M7dFeV0uKB$;8DE2_5Ix_jI4jA!aVqi!IHJ(6CZ$<`&BcKpqVqloV0GYNk z0|!4tJwp(vSYTveNQ4M5cr!6Dd}o48kqJP>J~A>eOa)aX3=9m`ph}LBfuR-ZkO!bd z31x#EWe;kOgBVbJor!_rGZOzltOmJ`k%8ec zsL{*Fz)%75F(U)RA*g0vP&0sufnf&|1H%C($gwP-4(cUnC`^RXsZ0zE4;dI31VL&+ zXMTX15X=k=ix?Rgav34BX0t%e22i$!IRHe@XJTMz2GzKXkSX-93=9mmP|HE`*BKcY zJV6Ww28I_*3=9*Q7#OyKT4hWO3}Q?S4F8!RGv6R3Jy6FyW?*1g4`qYI=P^N6K7!cw zBA_k;h{eFbkig8qaEFP3Ap*%l&;}%sG$SJeg8>r*gE!P5(8L5t9EATcFfb&7+B*yk z42u~U7#x`y7(lb*lNlHo9)c=OMh1q73=9lQ7#SFZpk}u+GB7lN4w#q*H4t=a4ahJN zCI*JfP(@Q185p9WX~3A7fngh{;|W#&64dx%WMBwqh71-KgET{N8&nOH%OC|c55%`( zW?=Zm$iOfcELP9JFd3@Y6>8A|Mh1ojAeEpqTtKxd0|Uc-P>&U?0V2^1>ia|a{frC@ z=NK6nWSJNkPC?BAopb}5q~>B~V3+~X!XOVa3)F^z+VhWrfgunS|A|Zt3~f+FYRn7_ z<)DHEYS0VNP#dWK$IQSW#>l|%5o)O$Xjv9B$_JoTW1g-RG182*Dqp!gya1A`{iP*r9IhIXj91*qg>f((_%F)}c` zXM`-JE@fa~_{+$^u#AC$fsvVkfe|zi!NkC@iUD%aP#~y}1L`6&F)-W*ohbti1<)dA zhUK6x0@ShqP*Z^cvOx@F=Uxy2I&g@IfuRLdt1~e$WI)w|q&k=w7>Vqh?4 zVqmxc^)2Xtp-#~524)6^wTui5bD-iNeV|p*pxyP5CF~#(1_p-RpynR~1H)FR!tF>F z-DZMJK%{|M>r4y`am)-1@1gp3GBGeHGBYr+Zf^AmVPj0(e9NzZbMo?jp~({iBquX% zlinO1;U~nJQ<7R#ym?ucCVrfZ6evv|XMrLw`LSj*Bo_dKwK~ZXPYF>##Mty2gs-A*tMP_jc z$Q^L~V7KJumnbBqD&&`?7L^xemXxIC=`r}^Q`N=sSe=}dpP!Ax!6dqO@{OX^+y#m0 zsR{+9NjaIxn`?`C_`?&6K%OlwNh~QXwt|OqK~ZK|Vo54Id>Mi>a3};DrBI$(lA(~D zS_#*%xvl9Jt8!5yC@2xes%k()kYa9gWyb}!`qVsy%KTD=+{Elu5Ti%|;!cPwbQDT5 zQWf%ZQb0B+l;`I?YM5D~ke*qVs*sqRoLXEAN+BR6U`>g6mAUz#m~>RgOD%_J0i~v- zRE6ZC)Wnk16ot$*u!&&hnZ*kEc_PWF3W@27nRyDii7D{#aqSNm<}fr+Fto5TwAj34 zQ6Go4f?sM$Re5SrwnAxMVp7K8C3)$Y>8V9J3dN~8NyQ}!pyZL5Q<7SeS~NL%wT@m2 zD52#gW|ZXQ7c1mumVnY}YEf#Qf>UZ}#N_oCQX71!ae)bM<8_M$Y z6rA$&v%@Qka&7bz?GzGAi%Swqi<2`_^AxfZ^YV&IbQCg+OBAwFQ&JV2^K)}c^D;{+ zH=C`w2FY**Yh_qK`D8QWwls0pOi-5FoO(8nm02Mtaq@{vv6D|;Qr_%&c|J3j56IUp zi6yCdlb>JHsCP*$R`5$q&d5njNzGFLxdSYxP@Y+oqL7-Im#Pq!T9lNTmr|OSu25A9 zPc^u6XK7keVrgogLTO%#!r?thsYL}vhxeqV<|*VSDR}0kr;yq zKo&cemgE;Hq!y(gUXoW;qEMb%1QN~8&&w-G%~MFpOjXFpOf6E#%TLZw$jeO5C{ZZO zFUrYGO;63!Q*cTxE=kQu%}Yr|vjA!gL<86@#mN~(nW;&jEDiQ~{lIx04`ZEo_WOzL8bnDXB#YpgfJ_Fon{*^uv2{N;1>+6kId&6!KC_Q;U%0AvvX} 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 `LmkSKHRW?(qVz`zjL4e^M04`c*Xsiz*IpsoiJ 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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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 VvwyiJn`d5Ta%TSK8!sNa0RW0ifMNgu delta 7410 zcmdmWpJn%bmJK{|^@fZL3`+YL7$g}O7((_lFo-iSFy!rLU{GLSU})RVz!1j3z_5Hj z1A{CB1H-@l3=A3!3=A>{7#O4&7#Lg+FfgbvFfb$>U|>*UU|?uHz`!8Qz`(HL00VB-tF)%RfItWpC z^dJL+4g&+jje`sfd<+Z>tcM^D5IMxa(8a*OV04Iqp_hSyVecV`1H2D2Fc>p1FcchS zU?^f>U|4dPfguNE(GdoQd096!dukjB8kpmH1{-+dgS@#%2}27QpvPe2@6dV+zWhJk^h;{?RP ztS1>5>_HAZ$-q#~z`#&+l7T^)fq~)GNd^Wl1_lPcQw$8P3=9mBry%n8>rX)}3_s1l zAi%)Du;nxZg98Ht!_m_W40a3*3~Xm0K5{(+@#&5;3=D=03=DVAFfgz(Ffj0+WnkcB zU|33H3kL-gYyuJ!p}o|o_-z@VtMBwAyNXS>lqkY&oeN{FfcGoI}h>M=JN~; z)(i{`$Ide_STZm$FkOJqHWwgqS$2VeL5zWcVb%pmRBgNfN$sC5K!RTAA|&XgEa}N!x2yr zUWWMa=w(O{UbxJ_z|FwGaQ`v`0}lfO!|Tfs2mH7U@rc9~h`i|)NUm|b0x>rpN~d3e zgh>7s28Mc2J}tWfF<{yih!3}2fyCLZE0C!905y>5DkLiSu0njMd==s|ovV<UJHHHhix`qA2}3!~s>;AtBd%9b)k0>kJHv3=9mjq4ImLLmYPO zIs=100|UdY>kJG53=9lfHy|NdeWM-{M_o4{K{fjZ#OFJ2KrB9g17h&C8xVu;-GDgo z(+x1!~+$#AyLtA z8g{RgU!;|?SWr0zfpEUh~b4`tqA zV8~@)V3=_SQkSsZg*a6GF2r1;yWkM5XK=g=abf6Ph!0}#LM+UODr~q53G#j@e+g86 z^IZl87El3n7ZM^Tq2iD4LLBtvE(3!)sM5IyNh><{AU-#}2XTNin677F2)YM}^Tc}) zi^}go4CuKBarvBkkX*6%9wg2lLg^p(AhjX?eMlW(aUT+-Tkk_GI(Q#q@%j4@kKMQr z@#rfk|I>X221`)>XL$e#8apWM`2Z5DV}1y+koO@Z*N8rZI7s6mB#jt8WMHTVRSNzOA^A1zAtY$>9)jbB zq4pu9KA-pyV)5FC5FhS>@{d93%MT$wegL)T9aNn05k#Et5yW9Kk01^)g^GJTVyFi< z7{VSwir6Bkf;EpIKHmQb(y(|5rFkAh9H##mQh+!=hBzqWF~or-k0Bw`_!y#Z@?%KU zZhH*z$eG8G5P0zzlEywhu7~)T=?Nrz2tI)rB>n`VK;;S4#ZMqbtH%>akfuV_=RScL zSPa!y^9174&L@x%UGxMJmAjrm65|o5{x?q`4*gOOwTSI0Bu>PiLJTy03W;00rx2e+ zJcT%@`YFV~o~MwInD!JB_p6>l3apb)AwItFlz}0Ffq~)KQ%FeJKZ7LRlxL7~rurGg z{Q7B7#)fAQgHJt!`1r~*h(XVvK@#WRXOLXM@f@N~;yJ{jO3xu7qx~Eb#2(Kf`ck0s zRnH;0su{|k@f_ljh0nnbsAt&p91>(_pb}4?LoE9C91*1xcLGS#9yEa#9u-R7PXfU zA8JEsla~+!ZK1UDO9lpS1_lPtmyk3u^(7>z=R(yVg3_m7f_=(x*FHh{I;Sf%tUA z8&J?OFl=}O3Axj6Ai3t<8wLhdQ04W8fx&=*fkE*t#9={iA?8QFg+y85TS!z^yk)2d zH#WQ8LR>cIEySRWZy^@$dkeAfEYzT@Zy|~E-djjL|M4xPdKG@hzz_;*^}b^OxBWWb zLDX${2MM9W?;vU7{5yyT-#}@G_w^7LioA!!jqH1f3w7T^TxjwhlD*vCL!uxRDxd!z z;^4CPki^;j9^&xD?;#XGjP|kT|#a3NgsxDU4gC*t7Q=1A{F?Jp;qZ zZxDmoze8xX?+^oBze9pD?mHxk=6;9d@3r3{?Se~C@z38OeLm(N5Pi-+Abq`<9}En- zpx*NjkVOm(SARgv5&jAGIfL>~1_nt`{x|#yiEHnlkhqQd35lx&sCYV5Lm8Cc@)Ht5 zlcDNn|Ab`MML!uB`WYA)*8XGw_o{7wLCh)n1yNu93zBP^e?c6w^cMp|J*bbi^%o?F zPyK@AhP%HYJ)3907#MsR7#P%lLxQaIHzepAq5SUOkW@b%D!$}5Br4bah9u?#zab&@ z;5Q^H8UH|1zw{qS;?()WP!H~{I{sl`&;k{ue;`3v@`nN3cI*8E=~i$31M%UbKM)7J z{R2s~-~T}Jv(R6NkJbJ{5^wBZh()D;Ar5N$3-Q>DzYud4Le;JLTMx1D$X^BqD^R!k zFC?fW{y~CH;U7e!`aekSF!%>?fG<=${2wF)68=F_ckVw(o3I(Ge$78fqCEKzV)282 zkSKor4^qc`tcMDGgBtkfAH)Hy{~Lcx45pgP0h>J*g}vi22i?^n50WhgUFx%&TW$*v7;N9;rCU#0XA|*O(Z= zmC`*XMur&-3=AKb7{U3tlNn;rb|`&-nGxIpImyfj?p&T@hUk}LfjC5s1)|=L1>!(= z7D$LjK>6`3j10V>{9nMr2p(3eV}V$_oCOjRJ6RYRK<)a&Q1M4Bj0`rQ@d7B{kQL%^ zXI6;52v$fCXR(5VmZ6aq;-D$4jNo4J9H_c|tPqD>U}a>e2aU^JXNAP!D^^DEsMj}E zNF2wqF@lHRa@imT*RVlCVlo>eg9T^=gAJnZ7aPREZ0wBSK_~%sh=nTbkf3&BX9N#a zgs?L*m@_aiB(g)yoypEv4<1Nd!OjTo;T&dX1owvDvO^4(;eZ6C1_vYv9XKFC8pr{0 zP!tEm;zABa2GB5DH3uYZ%;#VP59vJQU<420{NsR_YrzRIH=PsW!D7yOh>M#!AwfBv zlMy_UxrP&xy3cb$eDVUSfr|^`5GgK*545=;4zl8c1i3R8Bxu99Am+w$K@xKz7bAGw zu$K!GC3~Ut(R!%Hvrr8Wpb}r82L0iJxR{w6;$nVoND#_%LvlqpH`D@dh{3(w5Qk0W zhB#~qH^jkfxgk-o4=R3|n-SbUsJ{YLpvwbEM0QX*fCm!vNj!|;fyOExNE9{jFoK8S zR`Ea#e!#;B9`XFh!^rTBfq}u0myscefq_AT50X}@q4Y{VNC;o&gJjD$eBg4SoEXEIsyC!~!f+PHpp#Q+n2u>qH0*nk-85kIJ1t4+HEC`{c1R23&#fDIRoFF5E z9|HqJsURfx91(>}# z7^IMa;iWJmcr^U8FvI{a5lGYoi$LN&9?CBgfmm1v<@bp&f=57Si9kHG0V;nZ+=6)=fH43rQBl}ro_Dx#1m&=-X`%v}@`htZ-C3o=9@aa|$G$ncJVfuS8LUM9xK zPzf5o7lT;LAP$LIF>#2)HN+Xgtz<)SMuvLOP-%oX#K3x}!hUf`+$|J``0PAX<0ElM zNW2z@q=m0gzPtp)0!;~sytM=*ZMaH6;yg@(5nP>TOF$evSpt%H7fCSIgM(&|1f-z2 z1l9NeYT!o+h|ifNAr29jgoKcmBqW5)Bq2U@l!W*!ToRJ+6C}Zji=h^(ez7FPgX<+B zX<$E8{J3O2BY0-xvLqy~KT0w(%x7R=;E-Zum;;(1kb-D*m4^5%R2t%=cxgzkD3OLZ zyh@r8Jf_y)bma1jNmz< zOX?7Z>T57EI599VlxaW`;Z6-k1|J3nhC><<3;8t}8A2Es7?d<24ldV(IQXz8BZCnr z{|jkBBwV!^8NwMD7$#~#iqMx@5Q}ZJA=T|9ZAfZAtqp1UJk*Bxgh>Zd`w8nn9AK^k z$t4at5D)q2KoV)V4kQhw>OivhBppVE`gsft3&LNusO?n2`6LfX8zF2@f-%03Wg?D z2IiYzZJEf)o}8aoQk0)FxoMvsPfBJ{YH~?pZfagh>g2uqa+y+6H*4-+p~>ozpPpE> J`TC2;ZUDv~fO-G` 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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 E04F77t^fc4 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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⪚&# zGBYs5GBYszVPIg;XNC+&Mlmrks4_7yWH3Solcs{qW`xWYv@$a=u!C|s69Ypa#N2v@ zSB#LwVIck^Mh1q{pv?tL3=A^N3=CR~3=AgB3=IE3trw6%3=9k*P#UBjv^X6^Ph(Qa2a-R=#K7PTDr`X!$jrcSk^!<? z1On)23>8KOhQ&+_49}op#|x@17#SEiLCpY028PXy3=CgDCNnTFcrY?BWHUkr6G6vp z>_Bp03Nr(P2h>qe?U&@OinlaGmkVKu0YzYSQ36_64&~P{F)+*ponFAqz_1#mk%57s4%9S&>JtQoGE^;8njxJDl!+J^7|a5L2vnxLwHnSsH8nSmjak%7UF8L~$A7f1o<><-X& zTBv0pp+Hc2fcg}~pU%X0tLo}!yV`ivlcn3NRhKYe88PrZ-WMDW0 zI?V#415_F?GB8*(Lsmb5jzp;hwSpNL7?_|IfewlRbxNVi85)=v7!EQqF!+Je15}M4 zBLl-cs6!+`c0d&?fm(o|_y_UlFf%atfZCbN3=I9u3=9uJr3NG9WScus%^-Ck?8eBz zAcrKjijjdKlbL}*nvnrK8Uj)S!k|NIEEpLWikKM~^g(?9s2(?F28INvT2u^Tg3f0F9j~*EiGg7W69a=UBLl-pCI*HEMg|5mMh1ozpaWz; zYdxWH91d#FKrI33*Mo{b193nrrx_U-c7d7}P(H&f5Qm9@;S8ugfeOB0gsjUx%>-Gc z*a3AMJ2L~r6-EXIK_&(UPbLP28BmMj85tO+LfJe}wW6Rpiiv?ijfsI_160h8k%3_^ z69dC?X!>KwW`+!bzhPuxU}I!p5Q7?00BZDriZNye20dm51{bISAotB@WMGH`wYZ=@ z+rtD|&9)4baG_$|%nS_tj0_A)P<^1a~Q+e z$iVP|2{OcP1S-*(85j;TF)-X_Vqg$vWMF7!VqnN&WMC*^VqoB4hAb?b%*?>>5pNCPoIN9us~ z{V^~w*h3AdVrF1i0%hwkF)(OD*{?zE6h;OHMJ5J@i=ZYVsMW{Fz~I8nz`)4Jzz_ne zaiC^`sQTMbjq=P444P1OD$q2FUX5YDNYITTuQ7DKG{F9}{Gn1;j4|wZs`g z>n|7>l%bCJ1u7k(@%91KJ!WQLSPbgjGBPkMWMp8t$^==a4Vth39VinB)mH=R3NSD* zykuZtSP0es4=UFUYMFu7_kt`1;a*T331ToXFnnQTV0gg5z~BbzYcMk~q=T9y3=9lq zp!0s91|>2wF!(~*pz*wejF5E!)0i0;-b2OrK`q+=YMC)W7OQ13GB8vyGcYuQ@;_+w zc^;@+z`(%J0BTDzFfbftVqiGO0GZd31@%*)hJf5Q8I=E-85p*L`uPl?St3xtw3rwe;+Y}Kr`Vtdfb5zCss}(lc2FEMLgsU4gX$8fSzJsE47V5<80IoE zFwB992}9EmsK{YZ0M*l=f`kFGPZwk;=-e(QP-+Er6_^+pW`P`sWN9!X14AOHoChfe zjczbAFxY|;B$WRj)Cgo?V6bFjVAugVbc}(4A)bkWVLd3FfDRXfn&k{C|J#@u7$!47 z=I}z985mNal4n6XR~Q)>{FxXSK7%wv#aA#gFzklE9%LH$%vQw!ukE(HXb z{C=`bePUjULSjm8W?p7-Nl{`+eo?VPc4}&YLPD# zYF=7?QF1C+flZ=9Mp0^-tx|G+a(qEzNrsYLa(+sxLVlV;a(-S)X>y5;exjWY#DLV| zg8aM`h4PHlJcZKY)S_aAqSONA{Gt+t;)29nu$rXA6osVJjKs3c{31QLQ#WV${AR7s zELJE;EGhw+ZIha7=aiqH9bQ?KYoni<3$j5WFSVpRzbG3dpP84ET9BHTlA2edqfnfh zlct-JS(KVwlA5BBoS&OpnwMFUnOdxnmS3b$l$w~5T2!p35T22lld4deU#gItn5U4L zSCU$km|UVzoSK-MlUiJyBT=bPo>`Isb$Mc5WqC$wQK~{_-sFF?#bUDZGxL)2^Rvq< zi*ogn^KlE_y6jU`pu^OM3n479utj91pFhU{+hq;->sH)YA6~I;` zrRL<9rKW(5)PaObVxB@`S!z*YI?P^>wW=BrH)s|sGvfVxi_na ze&d)d9+$}u2~(@hm2nc1LY^gwIhl!h`3f3PmgeRO<$qXQQcFOQQv^w?#SFfwxk;cT zl%J*m4!HE9{L%t&)Fl_CCYGcsfCY4uON$ag(Vml8TvDtzxwA%n^0FF736wy9Sg%l? zm{&46J5o^_M`)B}fIOL3sgPfiky-@yyx!)AHD{Rki;A-qH2m_5%2U%b6Z14Tuc|-6 zVU?0osi3Nnl384klUNB2ZiST0l)Og`GfNcGGV?NvGZbJEQ>>5)ikZsP#3Ie&&G{Ww z%$y2ksYS(^`FU2GA9M>a@s}i)loqEJD-`4xm!zgxZGP8V#8#h}oDB&SP$~vz&XUBO zY=y)mP;i4HyjVw}ya<$ui&D!nQ_G7XIWZ-(I61#8wMd~nBe6uGBp;j!6!KClO7s*Q zbIKDdixm=6bkmAbQ$gxWGIf*liwg2V0SV$G@=$%HZhlc_YF|QQZC71XsBRdVP#^z`RUrZjP+cO3c2|ypt2+L z@a8;)R7iRSm#xWQk(5-_Or?;VpP7;fQdyB&T#}iemzbxJ4=Q;x^A*ZdlXMi)67v+2 zOLGf~GK&>H&1}mmZ6G7VZKv7qO?6Z_aM0nv$ z6Znd1u+tHKO0?6FR!A)_NdyH^XsJUgQ~ zC&wPj77T@@q{QTs%(BE{tIfv`-Iu{ulrO!{&o=qYSy^}gVujq)+@zv>P+S*-%j?pD zd~mepDS(RbA_Y*Homi}ZNG0Iv5mb4Dk}W80rs_@J{8VxBiKlU(YAl3sz<^Q?B5+dk z6mn9F6i^ZjTJF@_tolrvS)`~mHNEuk%3_pa-uC4*E?bNuJ}*B{p(r&su_V6~6rLap zK<%c(yYiqB4~|u6Nq^}x8;fWdsGtWG7Ag7g($Z@4_3u_p!mh<7i7ENT3I(M}Ihn~I zrqyPFUnkh=gHkKNWeUjgC5LxGvq@=DVzCY=Wr6CBM1{oU)S~1>1&{&YG*_&nkXoEv zl$iu77m`!+ia`ZZu>vUX7AKd2%7B8R!<#EIbCHbGQwUDYEdUh{sd-RmWTqt6r-1Ts z9-?Z1rr}ftNQID?lCN-hAyOtmsvi!og!@t<5#*r6oJ0k1jgbhhBT^4<1ZgiwEJ{=; zPAyU>0G0lE`3kAf5+O%VA-FyjR0tG->cgV^g8ai9Q;QVx^2-v771C0RiooR-C?qmL zP1W4QB2Yx6CFbPh7wag18hH6RiAniIiA7}B80PRQBRM~>BrzFWAml0J9o}3FEqGH> cGb<7m@(-^qQb<$)#gIZ-ewE(V>x{3Z0QHLP2mk;8 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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 gfHGGiDDCH!WP*YN6x@jlW%i_@% delta 19940 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\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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 ad0nV^Jgbp`m4W5vS6fbTY(Bj&Cj|huB+PsO delta 20508 zcmexykY)QZmil`_EK?a67#J2aGcd?7Fff?NGB7-3VPNpF0*Nv(T<~RJIK{xgaM726 zL5qQbVU8aIgD3+7!*M?b23ZCMhP!?Y3{DIT48Q#t7;G3A80`ER81xtz7^?jl7{VAB z7*_c+FvK%3Ffax%FdSlFU`PyLV0gvAz@QSyz#z@QP|v_0#K2(0z`&p#1hF74h=Dkl?S3Ls*!!xMF$8ZJ) zRZvhxFfi~jFfgb`fP;v^EP{a{i-Cb5D1w2Z8DwDu1A{UH1A}8EB;-;f85r^z7#LsDcwvgDxa7 zFffCBki@_s1WN5m3=CWh3=AKV7#Mg!sUE71BbkALlYxOjFc}iZ(#eo0)P{;%L1~v{ zhWCjKS1_p*SsD|=n1_o{h28Om|h{Gl&GcXu3Ffc4hhWPLrRQ=s#h|k_7 zLqg;m)WAPbb2w8VAt8|h@ql6q#DS_%T0aHi(0a=hh)X!7#PA*AQrZzKoZxE z6i6z5odO8~##BgDiKIf}*eeyHKRXo?v+rz%Vlvl3Q5QAm*y4 zfz{VDM5RG|l99&104j+J(ij*PF)%Q&r9)i2G93~ko1y&u>5z~(nGSK#g>;C8kJBMR z`zf7)L4tvS;cq&`T(JxYEtkQ-z{0@5pq2sgkah;h;q?p*ju{XQei@J;NzVYgjG-K= zp)~{IfUXQkP)~yzI0ve3Nd_dUHf2B@as;aHat0)7Z)89m_A&$F;4c{r44}f5J(GbU z5|sa)G9eo0WHK;J0Hyj&h($J85OJq0hy{UJ5b@+JkjohuGNJskEQpV4vLGQdDGTC} znOO`B<_ruBE3+6FEEpIV9%ey2CY24*uaV8bP!CGgrr8jedSpW^h|Go<6rT+-C=DuK zmJJEY_H0Pv>W9)ZvLR8m5Gubq8{**2*$@klLg~v;@rT(A3{ngX44<cQEHF9#Ad zia87n{h&%H2V&8Y9EbzXXaxf3#fQNYy5535PnEN3Q5@JmC`H;lHlMiv3IFzrF4{@PBly934ahOLwBo&9} zLn@<~e2Bveq3Ub%A!(sIA7b%BsJ<0Y^S49QAA#zxzW|kZ3N_$UKBP8eD1hV&i2_K} z7#2WW?ot4$l)?%a7*ZJ+7>WuY9=K5e@xbE(h)+KhK%(qN0VFCo3n5X-UkFKz@`d0K zsAq_PFc^{wAsTZEA#q$%2q`dX3n3vfA8No_D1UDuBu-C5`S+pnZwnzl|62%g5K9rn zT)`qpqLVCwgrG?gD5UBc7%Yn*KJzbv1Z83oL}P9d*o6#LP`afE;?q7TebGGAwlF<4ABr$42kQMVn`4c7ejp1QVeOL zbr(ZIXhku^fg6htfkeeTD7~o!62!+!Ai3Z)RR3$J{AZ~7 z?4=C#;3kwvDa40nrI5sDTMDUMLQ5eIDl3Ip*jfq+k-kz;+%YiBhw9r}3UR=mQU-=_ z1_p);r3?%z3=9k!We^YemO*@+R0c`ZMP(56-DUL*aUu{gOLlBmn;%OMuDLItLj zLxOk_)PNP`5DRygL#oZ=<&cp2RSxkPV+F*aVik}^szL=M={1D7-Un5JL!_P|vl8OM>Pkq#(q0J(%EgrshitBd1nHhi28Lq{3=Bu0 z>bt8T^3$sz>K9Z&qGCf8*kFcZRS*krR6#=c8C3i$R2_RY$bt0?46@Y_g?iPHptOO~ zZq*Qt0o4$n#aBZtN~?whU0F56Vcpe`=J@1l1_pHo28Qj`khs5J4RPS7YDkp)hT6kW z1F?^cRFAPTi>AQqU^Kpf&y11WI)Y9JvLSp)G|DpXy04FiK80|P^Q4J4ag z0~yG`!0-*Kp0ySdB7(ILed@K4ptr1rI4Gc&fuSDM*bIdVB-TPKOsj?Xys#GH(uP_{ z8tAKqq~0mDkPui=3vuY)T1b!Rcr63N22j_lmVsd%0|UeCI*2|mXe}F14>32U9ulJ2 z_0aZzQ9Yy!)d|gxE9xN{H$XLRgYpm6Lo7Z4ZMNU72gM-+!~1$jONXHWlGrR7Al0#J z10;${8XzH1(*UUh`Whft^>AVD0}1PS`Q zCWywGCPsy*32Fz)O7`VO}(hoS;3~|^;sQ7Ov&D#P=jPfmzB3ioz;$xo{NcTOl1roG9Ef5E+ zXn~k}yai(3O{n_EE#RoBXZXn5Z6HxjRRNtL8h=ZTBK@!)eHb~I&wnL&)wH*=ymQcQTJH)*Bb_NDX zQ2tMAhq$nzoq<6E)KzL{V9;h@U^vtcvG83x#3w)6AtCY?N^^BU>ICr)NECQ=Ks*xP z0daUblrDgZS9Uvg1SWJaFw}zv92P(o9D~y5pc=1rKwN&m1LBa69T1oQ?tr8L zrcOxO;p>D{w~C#RxOeM>Sdi2S$t^`ty0#M%H65K0bNV_N>cRc>shtoX&Vx!U?u7Vc zRVT#7n>ra7tQi;>4no!a?SzB`Qx_!Y`MV%|*)E8BtuBZIEW04)ctYg^yC6d|aZr5~ zUC@%K4Jy#v1##JIr~!+h{7q2)&Mrt$pX`E!z&$AcRTso(|DozxyCHP~Pd7xpK{q5< zxpqTBw6q)Iu=e_HNL=-ILlV!7ZpaA8=59#YeYYDD^q;#SBOrgfA!$XW2jT$R9*B=U zp>#wKq+XM0OE~vo49tMU!1_p+6J&>`T*j|W1 zT~K;bFQi{Ts~0lfH?J2Gb+>yVsr^AO#DXuq5C{J1g_zIQ2Z<8iK1c}2_JPZfdIo){ zKtLbFg-LyoAj|KA7|_xO$(9qK@<;k0KEBuoiTekA5R2bI)id=&9K_cT8BG)Jhp4yg zhj_%JA7W2HKgc8X3=FaT3=FxTk;#5YP@RX;H~Jwie%KGmmLK~e1CCM?AU^b-05LFd z0wfniP5>1s3=BCFAW>EerQ0WfeabL#0>nd`CO|y6Zvq2@3Ml_yo&a&_52%516CplR zn+S2a$wY|5oF_tp&SxUTg1Cv0)SNL9G6dT+5z+uTIuTNSyqyRs>m?^a9BMNOqR(X# z#G!tZ7#Qk7<9YFuAU-Xe1gS(CCqWt%GbTau?~X|jmmi)4aoBmNfp?+$o=$?q@mDDS z&m>3*$TJy|XjLXd9N;|};*sFV5c^^#Gt`4ezjB}wwUZ$RwM~Y&v==HqeKI6fFPIF; z6^AB6a?1^g8;R!Jnb@@7WM@nCC#Ur|=wze)Tz! z5H^7D>lxhVKnw_g2rxv=fy7Pn9EbshQ1Qk&5DU7X@{{H;FdPNV56pr1G;J>~zG#`?91?NK?pgy00fftnjZRSHXdd-K# zZ46XF{(MN#wakY^(F`cP1gd_+e2Bvj&4;9!)AJ$O?d5!k&jl7hLPmB0#3LFDAR(x? z08(z4Enr}%2hHUKEPxEVr7d7!mGOUe3T!#K6F? zZ#g898Loh+>smEHb9C_=8cdbSJ?>R8*PO6FnA-xA(0y)A(jLc&)Nt{ zBLz@;&PE1?Nem1OC&23K85p8BL8ik}HbD~G{!Ng$dAkXcO}=b`OrP;>h8Uc`88X{d zzL|lcmVtp`&1Q(jT3aBr@fL`KZMHxXtN#{Axl*`=f#EYF1H+Up3=DS|7#KRXF)(O= z@_*`fNNVic4zY02c1Vcq*$xR}!5xq|4&DKoN^RQ#nU;IDgMr~80|SG{P6mcg3=9lf zyC5Z;>~4s9%iWNm&e;tqaOUoYG}AZjhGg68yBQej?HCvs`1U~J+;7{nME7?$mY_8C4HJDh+ce-|qlq!ZP6i#DRMcKpLZG z4?q$h*FlK5*g=RzYEZuCK}ZNk9)#q&;)C@J3~it(*n^PvdhQ`e_L+EyfuRI6>3oO* zG!V{UahQRj5Hyu?7!n22M;?uupAuS`0 zbC96sh0>DeAU;<;2T^Z*4$`FaItK~zN+`Yd93)pfJjcKw49fqE=OOu3^gLw9#N#|9 z1k%q#3@SMfaw!8t^LdEHz2_l`a?*K7gM|44#3Jnr5C=tFfJ9B&1qOyX1_p-w3k(c1 z7#JAdLB-oILd>6Vk%6HeG;KcjBE*6v7a>8o?jpn|`!7O5;Oa$iTroVp2nm6IPy;wG zK|)OI5~LiEy95bI^GlFy=XnWYP7aiAx&-mSj7yL-G4~R*|G(rC#Kmi&25h?oap8$e z5C>ho1nR3XFg&{ialorf5C?y~1aa8^OAHLQ3=9lXmmx)Y#AS#>HeY67n8LuoaP%_7 z!l)|{a}%#X(p=sZX#c zs_3hbrdZZhNMh@_3i0uRs}OUSUWM4R2C9Bn{Z)uhPF{uh>@w8AdsiVr`wB{bx(X>L zenB+~UV~Vua1G*9{cDhraD?(>u0eu6?-~QcECvRKmTM66$#ZHNUGP=4!ehy{JOAr6^)8xo|8Z$ny2TW&)_<}H-|3Z?(vhD06f9Y|}K z=MF@j(H#bcdeD+7t2+=MdEJ4yEbI;>D6{WC98!4)VnEX!h=rX{17_WUbUqhB`TOrc ze0uy2B=Oz914(3G??9rK{Vv2Fsk;!5soiC$2d{K8z6VeA7hl;Pg3kljicOmlt*X}|b%y$psAklk}M6G)d62-RnAR!QVuO8AQio6F&Om+7l ziKgQo#O0IkLFAX-gII9t9whrbfy)1f8Yp-lqEGccB*YBvLoBeo53$%0N(bJDl>LcN z^^NuSA#vFQ)i~)s#38fqLwvgQJ|xI@+=uw+0OE4JhY)eU zhmfF5d>eN+v#nIA{)3eDNcQecK*^ z(n>u8!y%}FzaBwSEz@I2&`3OnG^dpwLqf#vF~kQhk0CzreGDnvqaH&X8vhs)#Q9M9 zNl^LuP<>0F^jfHS+dwoZ|L=JW8I?Np7~)fzClG^FowoEItpVuRn#91NWaovd@>N zkf7#y28jaMXAp}Go^US#Ql3K`mh~Kx2CAP!9Mt<9;()nO`IXNh z9^3_`4?TxC=+txQ1mabw#%IqN7(78EAkQH|?eGGUCZb#OIe^L45k;6(p!Xyn^KSpRXVt8R6FupS!+>$osyAs1JJ$ zF{eK1HN*iKuOV?-`x@fouGf$Of(20dYp)@R>Gf+!Vw8CU(WmwXVxjdLNXUe~f#jNk zHxLK*yn&cE_YGu#a`PLA#oyk59aPWo=M5ytSl>bn7I+IWSn4e#QR%;h7~uStfuRC4 z0s{B3QnjfuZglB=NPp zgZO0eJBWpQq5RA5AP#x^4w5Yy-$TZDRo+7^^m`AP+lhV;(ck?ZQX(#e(tF-Ry4#oE zLlP&~2Z;Gn9~ceTp5T6Krg!ok9 zBg8_jkC3=^{0ND2-;dxRW(bAy<32(hoCeib{1LkTr}iTx3RxqSNRUnb3`tZgKSK(VU7sOwe-dioozIYvdJNUa@dZ+TsCjcUm*^8^%YW&|AK0e`37-- z={JZ2+@ZApH%Qcke}h;U`wil-6sUauH;BdMP`VLnPWLy+GM@Um-ypTvvu}_ncnwwf z2g2(j8F#q3;lfU4pLWFAAN^ZO6)%%K`s9S5(R-jAo|mOKrAl! z0m?g!QEk7YX z===!@k^Y~MsGIW>;;&HAu{_n zq+D4Ft9G(;{OY=NA@qIAk+EFP!HbQ5&RcoK|54I?_Y?I=KO_Z z!*zcl799NxNlX|1Lb};EpyJ>DLV}+0A7oTZ@*gD5UH(BVF8BvAukIhjLlgc%qF}+l zdWcWg{Db)Xz&{B8>^}wuH_(#le+=L?T^j#EjYS5Afd7ze+3_EueifA7{vVQdjzHjNmO4j*N^9A`A=+p^Oj%vlt-`DQ1MYw3(3+yi~i7krBMLVj&|Vc%#C4Mn>?S zj@^um;GtYmCPwh?7d(URYTf z!5bPPSt05>SsB3_mX@+IGHd}2?XrR#T+hHz!Nv&Q(KL~b5ggac*&rIuvoV4<8og$N zgpdt8BnSi8AyE^{4vDf9D4hcpFJXt6SIy4Ikj%)yFcGTnD+eP3XafQhCnI?K4Lc_z z11Bi|Cvif8Du)viw6#!vH%I|!zYbJ<87CwSY~cjCoPpsOCnSpQb3%Of9;%O*3le2= zT#&@3$puko%mvZ!43!V%Vq~ZXZIemhf;b?LixIqTubvBHpdL3Pc>j+NH^hK-+>j91 z#|=rer@0|fa*Lah0kn7QFE_+uDIN%|$^$XSfCm!AemoEdMM33Lco^%!sW6`hk~n7b zKoa2+D1Rpp#KnhrAQoQXVFb??K86~|#0!ZkK3+(OXz@ZUa^{8T^XG*m+C*N6xh1@i zsO*HQo6B1dap_84NC<4!h4y%Jz#SPn8+5Tfp&AS4@#2th(9Plyq`tFBjwkpVQtb3lj@ zJU{SX2$E}Dg&D!SXG^BY57=K@^hedqg4fi$ozIby*bRvHPNs#Qg>;{!5e*G&o()z$V5B-bm0Y z2GQ_Z3=$RJ#UK`Ph(ipJ5QjKKRh$vLX53sHqApUL5xl!COB_<-ofc;VPt{x$X9RcU zoFyPW?v;Rq^ezcVT01BKDkth07*0t*^0}NOBq;MG8Nr*;4oNbCr&NDPGJ^N({g#AS zU?2sd&7>d>w2^`s>?6ep-l`QW1@TC$6eD>5;6y1#a9y$kO8=K)1W$6iNi#BdgYtie zG$VsM0|UbqX-4o?N*NhQB8-;-xsZV&T?Ud!cgrw>cf}o(VFb?wi^)RxDY6iYx5zRw zfVSH`lVt>NVAPg_c&tGV!oMg7@tB%CBv-`9GcweJb};74L*izlJS4HrmxuW9fIP$@ z$Ds5%D1A*H5~TO!A&HS&fstVu0|SGV0wk&)Dlmd~Jib$aq#SqT#N_mm)U|3QfnyuM#ZnUR4JvQL#E6UJa* zU7=oA~lLR1hRx?8C?NCMr zh8v*ybdVru7b|GKmWhF30W$+b5fcLg7c&DxFK9gg0|Uc;CI*H}ObiUCm>3w`nISEn z%}fjoQ;_s$LD`d_j(pC@z%U;q28w^sl8Z(L28LQD28Lx&1=1i%sO4Xg*dU=AM#w~R z3j+hgX3(}w&<;o@28P$5$!L%QD1HH&4}`LLnHU(pGeYJLS(q3Yb}~U$({nzCT9`4p z(OOuQm6?Gd5gI@$%nS@1P}u@TNWZ0+k%1w7@3wWm>C$BLPP5t6QqX&GB}@!fk76e25JFF ztO8^K)T_4`85q)_`ap6DObiTPm>3wU85kJeGcqv9GchpqGcqt-XMi;0RKR5?XjK#g zq;J255z-4vnf%a3xIO`D&2~lx26H9`hQo{u4F5ppGB7YaV1mpb{RVB=Wn^FwU}Rw6 zW@2Dq1X<6_z_1*u7qqe43&%w3_(l`3_MJbH4>Rj3=Hp}dO=&CLHc(>^(!+oFdS!MU=U(rV0a8# z2EoL@AjJsXQvq6(2T}~ecbOO%G?*9|l%WRcgIo=gU|?X7V1{gCJI}gcF*2l!aZ~>GdKvBsI>4Sm9b3mSDU|^_!1advpvOORf zkRUSyLmD#!LliS)ppS!zfkB;#fguQ#a+nwxelamHSTiy(EMQ__&|zd?C}n0~;ALcB z*u=!ZAOJP1m4Shw2OPu<4022i3`tCo1t4pg7#NzNp`r^ZK^Yhhf;Q(dGB6l0F)%EG z8qm%J8BKh|z`(E+lpmmu3u9tnc*6kM9o_~t2r9)83DwIAT7?LTV`;0msK91qV5ozt_k{YqmYIRUfr)|PEE5AmBQpa-7pPojg!IutZYc%X zpUcR=Fc)gjSCA-ZPc;(*gE12WLkTkj!%fisc_s!1S0>0>n>tV`2L(0Mk}_rnhD)G< zUm<06^RcObiUW7#SGO zPwsUTuLo`M2Z`PTZTV+_jHZD2oQw<%-5t%*?=G$i%>4%f!H71~pj}6iLjG-ZjYVV~h+8w?IW169a=O69a<<=-diM28R2L z3=CFG3=B@p3=H={8|uL&u{JXU!$bxK1|voWhT{wj40D+o7#4txVS=nq12JbZF)(}t z)i8_<46@7&3_Q>z@QsmyVGGn1KbRO8yg;jCnHU(hg32>cNzDW~H3MV@41;<>F!lu| zaI=qr;U*(we&;?D1H%eXwr5~q5NBdwxB}WL#l*l+4z)0!k%7U6k%6HfYUxo%28QX( z3=AJY74GB(jw~Qt&&KMV{E`pl38e^E>f45~~F3>l1&v687Evl$`7AFa#`4D6tM&BVYE2r;*w;T0nT zgCs~10|Ub&Mh1q{pxpvY3=A^N3=CR~3=AgB3=IE3%@L@Y5GW1O4_a*wqNg!2Fhnyk zFla#?7s1HD;KK+Rv;oNZK!&PS z7#SEAGchncgN7Y1sB&OrVBiGR@{9}&n;97xzJN>yRTQ9-i;;mLg9&nO#ttM0rZ6)w zct9NmRn9O4DsKTY8&tR~WME)81!~_gGB7-cs_KW*d`t`st3hQm)R5UAO$-bSfuMo| zv{D?(uVG?fm~L58mhMr)DD2^69k1as0jk)gOsGh3Kw%m1_nb=Jc3dWBLl;1 zP+`LaIba2(a5^IcgC?llXJ%k9U}j*5WMp9QV+Lh828LfC1)#$?K>K5n3=agQ2dGa$ zN~SY0Ff3$dU=U$qU|7k(zz_{8w3r#{8Qy_TcVS`xk8RX5GJqC>F)RV;0A+th1_o

    G# z25CkHh6s=XC^iC}D#OUYP{ho@pbu))L-n{ZGcY7T9rq68W6(q#NKXti14AcNQ9DQg zROLcx(19zUfx2x>3=B({7#MsR85mA7F)%bRGBB7iGJr<~K%KQlXnF_-wO*i>fQ-Jre`N8BpZ`6@0-6S!jKl39>@81L`<-W(I~Uj0_Bd zObiU3ObiS&pcch5GB8YqvU#9tML`u369a=969dBrsF)oi1H)b>2GEEDDE%`qWHUp? zwBIl?Ft9N)Fo;17DFC%_K*bm{1A`tj1A`0H0Fe9UGcqv5ftpuPpY35{U|7n)z_1LI zaG_$|%nS_tj0_A)P<^1q;JQo<41b~W;MBm)$iUFY%)rnAwe$xAWXsZjMh1o#Opp;{ zBT$LP%)oG%iGkrZ69a=VBLhP-69YpIBLhPT69WSWGi0IWWM&42kDwD`pcY0lGcare zxfYZ)85tNHq2k_5kX6H7^~?+mKS2ct)N+to(D_Cn+MNlq+7rYEouf08fq}suYCsh; z1H%$1TZf5(K^w|`4QiAyGB7AIF)&;NwFg0MJVpiv7iIQsPIJ5-?vC?_#OP9FgY zIWjXaWE*U(h(YO zA3*(GW(J1EpzbOo1H(c_28OFlki~kSb96u_!~{b1)i6Nz&c0+|U|0y%{|_qH%~a38 z&;ha$ihDtIB$WMyk%8d>0|SE_sAIv*z>p4VgD^nW$=-w-l*q`y;0tB2PzHuLBY<Vz+ekXkWl`AP^*uDfx(iAfnf*e6fp({ zhIl3hhV`Iy0y-@WYL+vo{BL7sV3^DRnS>8zW?)ExN}dI6MPX!M@MmIR_zcnv6<@)~ zz_1(YlPSy$3`U?rhM9q(iGhLPBO?QYCsZyKN-qKxXrNXRBLl;21_p+gP;(|QGB7*@ z#eXUj1H(j6O9#}phiU?OqztMM#0FtQ(2xPB9)|{B6`Fhul3sZv_5&!}9;$C6BLjGV z(20?OA@&Lr1A`_r14AeiWDm?_Mh1qB43J%7AWK0T@5PxJ80IlEFbIR1tsp@t=457I z*v`Pf&<#3{jEMm}4+1)@Ef>@&1vRxc@AW;&R-aj{P>@(uqL81aV3V3_=aiqH9bQ?K zYoni8=2$jnJqsLU@_NKVXC$jmEAElNx-Q7BGL&CN+IF3wS_ zR4C6Z$xtXQPAw`{NX)A&&qyswRmjX!D9K1wut`+NC`wJURhoQvrlfafUU5lcUUF)& zzLG*oVo`c(iLFw6QchxCwi4XkF!$Q%C)(*Klw@QU!`)V?kXfuynwMEvnyRBAv-ZoAsZ4#ATfpF!#i?w4(})~QOHeA zQAjFMD9r|WJEJVWNTE1CS0N)cr?^BR6Ey$=hz$U+GgC_-VUU}er;t&WT2umeTWS#~ O7_v+BHrMW{P5}T@mWRp! 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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 SMGE<)WuQ>rK8caBN*VwU*yY3k delta 19783 zcmaEGg{5Z~OZ`0|mZ=O33=ET*85m?37#Oz5FfbfvVPNpF1c@>*WcV;JXfZG_Wcn~L zh%zuROz~l0kY!+CSmndO;KabdaKeXy!G?i>f!mjXL63of!NZq3?Ka%7^E2(81DEpFc>i~)HD3>hghH;z`!8Jz`zg|z`&ry zz`&3jz`$V4z`!sefPuk*fq~&j00Tn+0|NtVAOnK|NL?TUgFFKRLwg_t13v=;!}34| z25|-khV6k23L$tLW3acvVuS!sb^ql3SwXgVPIfb z5X8Ws#=yYv6)eHPAQKGHU=<8;kbf`(gCYY1Ls2jTgB&O%f*~QYIhcV#l7WHYB$WR+ zn1LaNfq~&?FvMYDAq)&A3=9luAq)&$3=9mjLm=YILKqlS>lqjrwuLY-@PUFP1QIl_ zLl_v885kJYL%~7BpdHGhMAEJ z47v;q48J287z7y@7&N087)lu!7_6fh7<3pI7&b;hd~h#{fgy{5fk8ML62x`U3=A#| z3=H$585pV<7#N;JLoAGsfkfHP7)X@u2^_uYv4BQM13>NVa z2f4&EFc^XoZ#=|f9raKR{qYbVEr^GNz>0W?gVsR}+8qxGfm87iA6$-yIPf}@ei#pN z=xeCH-|-9#`V0&V90?E$EfOGUDJubzXy+zCLZE(g0wivZB|zfzPXfeZ*+fWCYb8Q_ zVvz{3*gcVfA)A4L!8;L>8@4Ax4893f&yxi4h*S~-1E^q8N@8GG#K6F?BMIW*=wwKU zq$Y#;^$dl{kf5kehPbFH8DinoWJu61NoHV>U|?WapA0eh1eCsz%)r3Hz`$@L8RDb6 z$qv6o`YDr7$p9F)%RfOo62SFHn7csSFGg7#J90Q$ZFnFuY5JnD-?WVm@;k z0|P54|BI$UTrLd~U|?X-NQ3xDFAWkhE@_as^-g18FlS(3h)!c*umBa=X%L^Cf$G1N z2652yG>AigLCxb%hnORn4lzd}9U`xh&cIL)%0`yyki_K(rM=R@al;Ut4hfmqbcl;n z(;*g?L+Mti_~dj31}O#xhNbBc2ONOXm(v*-`WYA)odT<|o1o&;q579(Lu$KC*^pdxDjO0-kFy~Tum6?}sdPAU7#LC+7#LJ? zAU^2Ifmkp#2jbI3IgmJ8l>>>2-8qoBJeUJXj2CktA;6Ujp+#~b`s8vUX-h2^QeNoi zLOd3j3)WxH5Dyi|&xJ%mEtEeIqJUw3F2v{Sb0H4e1~vF_E+o;N&V_{Fvs_3>z0QUB zj4=-qlEQfqee!t_hv`6RvpkST>lqjvpaR}dg`r>x28JXkoeLGO$OF5Wp%p4V6>7nP zJcvWqcpfB#Ky@~#0AkCBM44DVBm`CSAs#ZzXJC*4<$v3JNDxKkLtL1g4+*;5 zd`OU$=0oCadOjqLtb+3Q=Rmvh${*pxu6zmz+9;O(gKJDI}0EVK2`wn;fn%D;(K2J zsax0!At9kr2(iz+kf9!2T{;v(;x4cdqA|S?;()wD28M7328O0W1_l)d28LUO5Fh+6 zg!ovb2$HH*iXiH3iy%G=EP|wg$Rdck>>`NAs*4~FXod2p6xBn5a2`}*RT0D?JE0oS zLk+xN1c`#@MG%+&f?B{_46#_W7?P?riy;=6L-}sSkhBm|4ACD|46!e_7*cCi))zy3 zyrvl9v(3d2m!2pFwN4orE)_$9{sUC}E7XAhP;u@Oh{XaW5dCr`5DSb;Ao}b}AP#nc z(!M1S2ZcfD`j`?11`kl9u>|6f)g_QP+XUsGg3=dDAgT982_&vxLM{GQ0%_y1ltO}B zx)kC7-BL)oVp$4_g3wZkLsCm2QIuE8z;F!I{x5@Suq}fq@GOI92r7d_MN%2W;EFPc zPrJ$>K|BL0z8tD>9yq$2knNcI|VkFf#GsF!~u`XK?My1!`pI5 z$owdWc!;Hffq@^C|HUd882lI*7}P2t*{ieyV&K#Yh=wHh;$ZnoNZjjILK3ZUB?Ch}s7vHt32|vmC8Vd5R>{Dyfq{Xc zvyy>f9RmY{RTV_z%PNS2-d8~k{#^wLO0H^%g9NJ~JtK{3NJzR@L-hGqL-d70`H9t# z5KpgWs0VjAYN{b|*H;Z`;mogwB(m$(kZSk|)Ii}HNC-&RK#E-58b~7ZsDX4|Q)(bl z)d;1#p!DP#NQlg-fn>wwP5p}gAZM(0hAvZ816vnHw}<9@uvae5Z*?}cz|dlq;u)n z2(h565#q4PjS!1xLFpxp5PjDOB{K^z#=#K54zz`&5*#K52p>i;)EEIiNz_6ftOCP-R252f!kLCW}-O^~!D z(+qKtVKcZ*8{twgv+^r1t;C{Sx zD@22GDSt;wL!9zcpD^0-P<5OjBJC1Kw=vt@np3@Mlf32AVu=}Hb~GPZG#M8oNt4q zm2Yhj2k^H;LP#1)Yqdkl14X>{*$K&xs+|z|$WDk)(>fthSK0}&xEZQ`dMCs|i#s8SdIdy% zJ;S+9h!5^U4SL!M@xiA~28LV)28M5)kPu4gg3!5L5C@laL9%087i2teeHX-s54s@c zJ?ny`{&!uFa)hxP5>-M_TBaN1(Rv03wQh)y+`Az@4DN0U@SweE#D*sT}hprBrefeF13eHp!wxUGQl>w6(3UVkqn zkuHa-KiA8^P!Aeby9QNwzZc@8_fP|V^g@E{KUAEv50ZL?`XH&_qz{rSy!s#xNbQ3- zD7O!yueuN7pw>P}8kyP$F@I4XWTa$uA45HOJdd>>5~RZY5QR$p5TEP!Lo~ScLuxJm zen^p8)ekXvZ9fA8Xq1_p-jQ2xmYkZj645mKw_PK1O&^hAhw@kCJEGce4Z zSkJ)V#lXO@Zz6=|oCK+*LMB0)-_4UC8W&DtVAup2d5nF?`nD^$LBDg(n&&}jBlhz}E|K?ap`ra|}G)U$1VHzZ4 zc&3Bxt!Gf24sn_GbVyK|KqMH#r$d4)aXKW((x*eRQyx_PwCRvsGat&|FddS6c20++ zrPEOJZbA8fr$Z7g&kTqIlxBb&TF<~>J_DlBbp|9(!=VbYW4 zKpehz1|+QW(9#NhN2|>-7kaEIsCIf>gDF1uUgbb4<&SYSi z2AU$7333?&L&q#|5HU=f1&N9Uvmgd-m<5sFHj9D53^X$`3owd}c$2bW3JK za?PsQkmmf=*^n8LwmA$8aSRL$m*+4r)PrU+jOIeJRp49(21f=4hL*Vu3_%PG49Dg| zvXA6ENCD(N50d}W=RwB%JLf@4HkSF2BG_O)B#0B|LmXT_A5wz0&xbg0?R-cs`!^pF zvYrbV>cJBXu?rwU*0lfI%RLKZ{1YKx%!kBcE8XTOAjfeF-9TLKwwFI@sjOUsu)%-OXB5+VndK+?>GC6Fk( zS-%A0GXABI+Dv9C!~)l)kf55fl!3vSfq~)vQiubTmqGZ2%OFv;bs5CK@5>k%yg@T| z%ON4)vmD}~2q?XDIYj=`at841ncWJ=)J=W<3P_M_fzq5SA(KjRD5+Kz%U6kvjS0H&k(j6GFuhD z8j{#{t%k(Si`9^9@_sdBc8hZj#Nezokjbc`H4F^3pn1PF5Q|mULTJ6U5C@yDg(Oz5 zwUBZpXDtH*6B7eN|5}KHCanjR1N96H`_@BJ>E-p1k&vJ385rCd7#N&3K(bfY1_p)* z1_p+M8yFZ085kI(HZm~mV_;zD*~q}~4m1<83DSeI+6-}6%K!CSAQHE?KpGxGTcJMK3dts3TOkEY+*U~1Xx$14`YTZRuUjFN z6z4XGxZ*ZQc5{OACvSsm876ShNG;;MyIK+%sVZq-fr~17hBp9gybss~wOwBi~L2 zhH_8{?_{V4=j&ZN85jx}7#MVSLDIs!U62{epSvJ4mSMXg4TfF2A^Bfq4@ACT4+BFI z0|Ud^J&;LfgS`;(_Pvm_^kgr@VM6;D7@8Ou7*zK`a@mS~kUr$aef5wy71|GRVat9< z+^pEoz|g?J!0=^1B<@QOFfiDGX0s1~5)A_b??Fh9N9iDB_B-w%#DTL9LgM=CK}cGV zJ_N}f0f!(_8FmPohz~&$c~Si#Naa%rRoD%cmH5lF$~egtB0@DYdubB{nmp!^7=typ^mV&9A-;Bus%VFgsd zHmJlND1GJ##KJpAAP)L<1d`}@k3uYTISS#|9EGIr%|{_2dF?2qP59y{M8DE8hyxss zL4w@v7{md-$3PCQXJCju2ATQDJO*j|oj(RC`Tju_njeS6nfq}DhItGO4F1O%7}hW_ zFuXes@!{+f5CfN`R`O_013mF)GpMc~x_LB?@T=k%FzmpJ` z8=i!?(D@`pf!9fh!I>u^iL>$~#Gtt+AyKm#WB_Oh#z{!xx_lB+0zN+pao7i_x?d+D zQOkb{qEGG=Bt(o)F)-AFrdBOaK@vyMDM%YF`4j_#Cj$dR{V7OxI(Z6WvD#?{hLxb{ z_tOxEK06JG>$j&NQN(@*QkhAefrzW0f%w=F%J)43abWrxaNIK#oMEU37qxX~AVu%7 zGfiK&O%)7dlq7G(pg9lXP$*vTzD1|0xf4D7R)#camYd_z3wa|YIdK6 zgv_zCkOJ<)*?NdYAJ0NUfbkrJ7CHw}pnMME6PI(4kcm47Ndr~qAO=aEhd4m_Jj4NJ z=OGq(orgFi^gP78xbqP6^3Owx_zCAB&HJtO=OJ;i>pUc=4nXNM=OICK1Im8}<$r?m z87@H7^FV0{D6MhFi4o11q5#`!7M#!2C;)G_mCpBzs-H1hL@5C5VImUxKuPg)cKO zRDc$-T!w_ymdlVdao{qU z5mfyBRR)H7(7gR$r~-*=5SOc8gQRxrYmkr#zXoy8#A}cspK%Qm6gus5NLFcYR(#YHE5C<^dfaE6b8xVbhP+IB+M4j>th&`4!AR+Dx8qEf+`3k=Q zF`(`S#HDRFAP$*v1Csw&Ks6kK^3U9WR65U~>Nsyg43xYH(WiV9;#1?BkdOd;i2pXk0HxcI^1%EyBr$p1h6Hig zZAg&D+=fI+(QQatX}k^b@ouR8L$@L3U%w3r$%jz=zaexz1LGZtLF{)R4v@VAF;Mpo zqyVwG193p;9Z12Fb_e3qY$#oF2jZYwDBXOAfx#6td36Wkkn?vS{eWwCAR+k!s*m9= zD8xat9(N%YtK5YIy~$lj3FQq|z`#&+7viAayO6%#9H_eUcOgD|b{7&dAMP?RoM2#J z_;(lLz~lEI7GAgq@xYCHkPvuz50b5!?=vt+gYv)heMnrJ--onVyzhft#=wwyAL5{v z`;fSweIF9H>+VD1e%F17!;apESa{_=#Dcr`A=&UdR9yT4q&2MY0MhgEdjJWUss{`V z^`KR5jSnCW=zai+iun&97H@q3vGB|TNC@3{0P)d_2M`NCJb)y|pAR4o=6(qAfZ9Vy zN5$nK#37R(Ld@O#5E4=+A3~z``a_0#@H)Q_46N8LWEyh=JiC0|Ue6$B;Br`lKEbH`Pxd zKJ0k{alo7>5CaxJft2yPonWtb5PJp*GSg>}R2%vX;;`~(ki^ywr6)dvM9u7H5DS+- zgE;u`Gf3jP^$ZdspPoTH!2TTKU;`*^_Z*_X-sd^Q2NBO9E{=mrR6K_`q~$pzu9rNA z_+agGh`|S+L!#o^bBKlSp)~soh=uY{+T#U8f8h&ABev=V#N2r=z#&%8u0!4K_1H<%JkZd#$s$lIaNYLyCD_~$a{t6OT=Uzdw-L+ScHDM25 zL3+EsuOVrp;x)wJ+SiaMX?_iH!2H*cT(bT(B+(vx4GEDeuNfGuK>7dfYsi3u#2bjk z32z{Aodc!I-hf=nz|impqOtuAB+*WI0|}XhZy@c4{cj*q_}~r1!e4J7A;$9-;sK?% z5cOJbAyMb?mVu!jw8A0rEhNY~-$H!2^)1Ar18*TdISJ)IeGBPwy?YC>Nc9~gP1wJK zq>12n5Pcc%ARZ}v2eGL39Yp=KcaWadhIbHqUcO_f2e0q_@($wT-%x{C-$N8gy@wd6 z`X16A(0dQ@k@b5>A`5&ENh4KI@##?YYoYqLy@y1}K`8$?RQ}R?NQm5i4_*KB7%K4o zJtSzqzlT&J93LQY>-PZ?m%$$(^2tzs$p=WbYxw|)+u0u=9$EJR;_w|GAa%(>sQ3%0 z_@@sL5B{$I0Et_+kB~Uy{RnZH{6~mI>K`FKw)hCq;P(*{gW9gi5iJdkhD;*@(GfioIXJukpBr{QR62_GrH#!B>Qan1j#;^ zKS4s`A(a033DTos{0#B2+GmJ<{m&5fR-Yjr@%Ri$3z1NDMG*OVhU(9dQSZ*r&|2yX z#2`N?9sUIphY4RGA(i$866Cp1@s=+Ti@Lr*LS)7lNK`EP0&(cpFOa6%(Jv4WzJSud zzJN+t&?<(n5Etrwg^W(wL;1yDAqKU4g;+5CE5zcZUm@kip0ALoI{g(AMVF!KUqZ$I zK+R$K22m&a4YE96_8TNIH+_Sy|LOk*37YxeAR(~h8)R_!8C0XpcSw+`e1|wl|2rhr zJAH>ZEdD#hz})YU>{<04k{vgGhm?@VzC%jLXWt~L%$$t=kzZ~>c0dPzXw{i0$R)Q{1+r{g?~d*yVh@rfu6r14hZ}W zaZtiB|Aq`i_CV#||Au5!hCdLWi~NCvi25Ih104TA9PV5H2QpAt z{s&^?{$(?@~81^zSF#P%h8Smfm7qUR%&tFK%r}Gcu;Lv{%e$GFL!>9g(=-=`W zG79ur&96{(oXm_2d<^vr45G{s3ssmI8D29mFc>m3 zf;SS$vM_@75HOgsFoJhJ&0>N0Xafr)cq7qasQ3*Qh{NBpKpgZBO7pWaf)}kSutGfI z3Z?y7At4dT%E+J%s{d11Awf8S72?C0P=%{mAr^0Cg}D4QDEJx)gO{NNN$M(`}yK~6>nd(a** zE=KSWtSc8Ic;4U>7b8On0|P@cHzaM`;AR9b-TckX2;M27%)>@8Cc()oWAH=7Me2n0|9(sI`w2{fj2p%at z#|KF>68wzdDOm%4NQkBLLwsHcrE8&dCqE-Y83O~u)OvnK(B2^i9s!8L905q2RR}c^+bSVO@SN{|Ax7|iz93;n@Qh}^Fe7+x*d$?y0SBP;abZXz zJ0}eB>3v~F@GiHPP`;c9Bm^}?7{L>hF(QoM{emk*7#Too#a@drg0|g6hvNK8WKXG(vWf^UYe01gMope zM4FL-1C;;oN<)I`nKUCq9cY442I8QZGLUj%l?)^VHp@U9cvJ?G%3sPbGBASn_c1Uq zq%bltd}d@|IL-uVJG3$|Ff=kjCMuRNF)#!$LF$QMMg|5YCI*JjpxJ6r`46fD9xyR5 z$S^T5#4|B4e1}SaeB{K)z~IWn01j5r-11CD$l|jYsG3e@1_lu(28PRw3=I5GvGt4$ z3{ROD800`MV}Mk z%)r2q!OXyrz{J2XiHU*XBO?PtEfWKS4b*aVCI*I=ObiUC7#SFJnHd=BBbgvGpdbhA zW@KRKW@cb`%D}+T%fP^3#LU3J$;iNP8S2_7W(Ed+W(EdtW(I~ZsDYwTdIxA@8k8*n zRiDbpz#zuRz)-{t8GZ?3VqnW2TIZ$j0_A3 z%#bx*psjUI%nS^FnHU%>m>^T@Ajg96KB$Fjp%zL*`9(|&453U648_b0427U50y!MC zViv0I0BF{YiGiUJv^*MQ5NN+HJ0k;wH4_8FV+IBWS4IYgM5tj|OpsYGR;Xr>dVfX+ zhGifI0|SE?G%

    *Pv=rm>3w^85tP*p=La1VqiGT2$|#tsRLn4Mh1p`pqp#X!^Bs~H&>l9?ebLP;hDhHgd% z1|6t9AP0c<+JXuR5S!sTXbl9I1tF$0LY9z#)<#@oWMGhHVqjPWHGB`0z6nvv(8<8S za0u#Ps1U;q1_p*|Mg|5pW(J0LP&v>BZ+$3Rml4z!V_?_{%B0l{koGNTc~S-=14AR! z6j>(7styo$3uuK90|UcdMh1ows3AL;7#MDYQVqygpkxRYU&P43pvK6+@D@ZfGcc@T zU|^78W?=ASVgNS+>zNoB{FxXS(m|OYlu6SW85kxrGBB(L6{O4z48~9&USwooIK#xi zaDs_}p_Y+>;XY`0FH|lQO2>jM2f2`ef#C&cKLs-b!#zgGrf!h%Ll6PQc8m-RE1~)V znHU&OGBPmKheHKGizdvN7#OUX85rh*%1mZZAC`gP7F52LnSo&q69dCTCI*JdOrX-0 zf#Dky149BM1H&UG28IGA28MiQ$nNof3=9mr86cwo+n|<%7K11-GBD&ZGJrObFnj^+ zItNvoyPy`ZKxxpzTyc;>CI*HSW(I~VXs~W(U|^_WW?+zmsuN;jU?^vrywFj2@&-p1 zP-WM_#K3TtiGiVpk%3_nGi0ARsH4-&$iOfIYRV!e28LfyCxNKhj0_Ax%nS_k85tOC znHU)MFfuUIFhRD4#WOQ7oM2>NSPr!@8C2##*}}|_fiVwe28OGkZRH@teljvJC@?{K zN1n{cPO}F^F;Z0RXJlY70Hq~n2GCX|h90Qg5hezPE(Qh$5k>|Eai~>Op-xw2VqjPY z6$9Cp#mvA^0hOzV>IZF~2Fa;2GBCu$v7P`muXSPZ0z0kTL4#QXqNyMU2_;UlPs zbwM(GD^&73BLl-M2FOA_VI~HKN+t#d6R0{4W(EcosJdT_3=Gqm7#JonGcc@xih(To z$H>5N4|LE2BLhPYGXrQa0=#5y9}@#;{QyV_!zGA$^$f{O3=DUWG^a8%FdSlHV90|8 z8#glp!*xamhCrwqCs3gWI)wt1;FuT~7?~hzw?L*QGBYqN0hQQLy&$nn1_p)#W(Ecg zh=mLrm>3w|f|gW*8VI0X851)DgEUlwK2#A%Bk0JANJa(*W2oFuP@b*V0afv!1`Mc{ zWnf^K#>Bv&&&4C}n0~Xkcbw5M+dm^4Kv$4nqL7@?Ffd$&s__98=%AtqYPdQy zEZLbE7~Gi|7*v@V7z!8}7%nS_Mpb9~1{z5GUu@^H!2G0J1IG{sNpmN8U7#R4N85piGK?YBGm>3x9m>3w= zLgn9rk~1hzF+nEK9y2j8W?}RQ?>?|V#gBLRcgDEp)%+rsNf#E;YtUplt zG!p|u3)CH;S0lg@wS$@or z0X>FdCI*HEP%+8Kz#z!Xz;GFK;sdzRmc+=wFc%aLP%WUNS-2P(82A_&7_^ue80IiB zFw6(-BV&Lpa0S^c$i%>KjsY^%_lA*y;TA{`l)4!i7#1@yFl++VjG(q9GXujiCdgU> z4@L$C2T((RnSr61iGiUS)E!`EsAt&7#K7Rm$iNWC#K2$+YWYD815pBu3=ED;3=F$K zIhcWgAp+E2U|?W)3~IuFyu!f1@P~fq~&Y0|P@HH1Nw985o!u85n$_`axzfGchpuFflN&fjTxInvsEF6(eM? z>P;rd*mNhT1qa$y3(^3?CLq^=&W%Abj2Bcnf{ttfH6ox2xj|J9Gh|@&G$Uk*rxG&* z!we<{1~;f05H$-FouJAZ)HeY&1Q{6^grH{E&jrN;s6WWW0PgR{Ff%ZGgeF%DW(Edj zX2@D`kU`Tyo7+KMJWw=%LIxy=gwH_P_Rvr?qp1R3ZC8F3espP-hWWMW`&h31J&P+|p@P#{H)jF8O-y-W-YMNq{X85kJcK&1=R zH{#3;3>}~-U}9iUWPL}3gToS0; z#>BuN50wY0KM!Sp0C5-?zyqA1MHHVvEd;3Cdr;dOw3WjbYS9$XC<@eIkiI@91_m=m z28Il%JV>k^RB|veFkE9`VCZ0k4Ewhr$+LqR{vd@6kRg5nPzwMmzYJ=z9wTJd?gbP0 zgea(L2FTK!gG`X4xL$+C92gX*G@u3^2bCYp3=Gep7D1)K zlnkhS169`ys+1!@XDWf#+?g{mFgQSEjxjPYOkreTc*DTJaEgh6;VWoV3e@z1%7cvp zt;t|wU^v1ES>FvBl>Q8r2xewrn7qMHbn^zkXRMpog|27X>=Vh&IXN~ddGom>LCMXZ zs(-UgHfdCuoYZK(nYrm0)8^YPM>#g%?JZ~CoHmi2X>;A=0=CVmvl}E?4UDWzjW@sA zvX*gk#ozZaPxgrv+bnQ6fOB%%nV8L2&K#EAy!sU{+hoy?3X>f_dT;*mF`0RD g-d91c&8Pnhvuyv&%;?Fq-J6Z^BHQ-oe2kUS01nISga7~l 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 zcmZ3zlV!(Imil`_EK?a67#QX-Gcd?7Ffja)VPLq*!oYCH5+usNVBpKZpvAzzVCc)h zAj-hN5aY|hAj`nOP~^+N;KabdFu|9B!G?i>;j%9SgB}9|gMc3cLl^@CgS{UELp%cm z!!$nzhC>Vt4Bz}17^E2(7i~FkJNqn_JJo5x~G8#=yW}9KgV!#K6Gd6~Mq? z%)r2q8^FNez`($;Fo1y}fPsPGQ2+yj0Z3gS1A{yR14Bw60|P$;14Bz71A{mN1H+U+ z1_lKN28K0(3=BRD3=C(X;!;5j4C0Io3`Ri=3?d-&gCXkUgFzmtXJ9A~W?%?mU|^UU z%)p?=z`*bdEWyAa7y{9t9|CchO9%slA_D_MdI$r990LPGX9y%jR)jDxNHQ=m?1S=e zgfK9~FfcH@3xPP$JCuRJgn@w}I+THd3lw6Z5b@ce3=FFE3=9mbLm3$O7#J8XhC+hq zK_~-*GAJrSAwi`O#=wxzz`zg;r4NTOFyw(kBAkICn1O*|Q8)ub0w{>X85mL+7#PAM z7#N}$7#Q|MFfc?iFffQmLL5{W$-t1zz`$@Wl7S(bfq}s&ih-d%k%57sFN%Rdmw|!d zLlgspAOiz~Tr>kiDFXw8K{Nw{4g&+jvS^48E=MykWHB%>aKu1@x;Tb`!37lbF$@e< z3=9l6V;~lW#6qHOT`VMO-^VgAm@+Uhu*ESjXfiM`*u*g~_%kptq{T7Rg9Wz5L4y84 z90LO@0|NtlJcQ*>XJFu9U|`UTXJFuEU|=whXJBAwU|?{C z%KJk3Ay9ryJj6rEQ1zuy`DUm&-SPDd49p-O#4|7mF)%R9h=;_{>UahQ9tH-6ZBT`W z;~5w@85kJO#6#llT0A7moQA>gZxp5N2 zCyq%FivyAv7_u1{7($XDx#K_*#NbCz^`glTk0>WIFn|gg?PLaqMGOoK2a~}Lu4hO| zfdolj3Rr-lDg_b}Eh!KOb*DfqoR9;QG% z^ehG9@IO%XoT-oyQA&k)#3&V{zMg@>Ar;~P*HlPQ2c|*{4u>j?Pld!)ZYsnf^!|CJ#C(wqh&fUj3=H+4B2+O0qQEc%;&Z1ANaFH>(!m*!sEL8fr)5AKoReJl)jU}z|haY!0;YwPJJdrJ-7^S&xAN&dM3o;6`2r+Y|Mm& z#Li5JkB?YTo0aX9m97yfAI|q`B>M!R&;^<8d#O42UAeE3{E(1d<0|SF@F2o0u zb0HSY%Z2!KbuJ{zHs?a3;z%weicaN166390NC*h$L1@`Lh(7f^NEGYmfy;|}28%q1 z&!X}m24q0_6?u>-XoK=+LFHHEL43X=58|NxP=n9pK@#1SJV*$>&x3^2mpq8axbh(( zDU%P;r;!hGSUm%SDVV{)V4n~1sV9^l0#z6X70-s!Wl-_Pe29blpyKnO7Oc#NIAm)+ zBqT26LqdqN0HU7101{>L1q=)Vp!}~_0P&H10i+4$Rsad2JQqE@*@5Uj~(52esf(A;iJw3n3o-SO`gcKMEmri$D=W zJ-Fp#SOl@qp$L+wJc}T47gYq&SWpCUKzR`ZLpTEiLw6Aag9-x!!{Z`I2yhfbf>yQ| zlB#u!A?n?VAs&k=hNOWcsJfD3h{sxr>mhN`2NjrG3<<*J#Srn$#Sn)af@-`0HSk3- zBnmzhLmbXr04L|mj4VzFc?M8A3|#C#j5yhka-!M;$sKCBet zqIf8sTFSuS!N93FJoXh#=yW(57ppS4pzVrR1VP)T@Hzg>~e^~jpY!Z zPA-Q8@j|Hh2B^A2hAwMT!-Wpfjw1ILxgA z(j51zU|>)O^?WKIaW|_1;=r{Pkf7gI0ddf7D18!a0RzKzsJdrR^WRrM9P+<{fq@H@ z|2ZomK_pTM@tHy;#34qN3=Dn@3=B?{kZd-w669hAhK*452Pz>Uat5mJQ6(hkzf?jT z#9ak3SD*^Qm#KmjaEetBb9Aa080taIXzMCS8t|-wq+b6jNC+fXL0no<1?d4bRWUGZ zU|?WaTE)Pyj)8$8tQw+^wFY7lcMZf~@ft{os?|Uoq+0{&F}c)0LNvJsqA$CKp&r~E zE`$oy)<7(7u7QNaj2cKBuBw5wbavN365Hn*NOjCm3o%f?7NXv~7E<(j)}-PzB#=Awl%N7UFZRI!IiLKxy?lhy$&lw0|AMf|NRl z!y2J^g`~m)1c-c6A*jjqHc&J6m4|iJMn-kfQQ^9mFSs^$?4d>mfmC1}&(3 z>mflIQxEB~RYN_nvK|seo9ZFi^(s{V+j@w33=NR>zfc3jVNMMY@p>O9Bd!4whXoCg zvbm-K;?ube;C?#8rUpom-fe(5;3rg{L?gsNtwxA?lSW9Ccs4?O9@q#;3*n6rpT{*q zLMo>b9P;%Hl~4^$P=mT45)4xsA)U>+jgYwJXo47M-UJCT+a^d^@6-gzEzwXqy9pA< z)lCqG^fW=n6Q(plI;AI?z!o!bHiH}n3Z`a=4EZ#6cTcATHklr4K^IPqjd@-K7>tNIYy|U{GaXVE71?7jK2= zmv4pWS8s(l+@O_#p&rz$b!r6#1p|XmD1|(g*ceGjiH{wnt_2qs12gfuMH9s!EKPBPk{3C z+8`RL+aM0;YJ>P_7F2#w8zjirL-n0(gLvpVlz$J(e*@M38OmpFuZI}O)eZ@2sdh*R z=tKF|?GT>@v_lLGYlqYYu~7NOc1X6G)(#2MW9<-!-Drmd^@Dau+IiUy8Tnx8fE3w! z9gsBOQr`g?`S9z2B$m<+hy(gMAU>W2rB`-9%7+~t5DRW~KrDFF0SU3!9T129fb#!! zKpf2736U4-WMJrHU|^8%gbeAd>x7t7e;dkp+zIK=zwU%Y#rsZ3D*w_6F_@zZ;xN80 zh`~}_kdRaCg81C93sP=4L-{FP5R1#YAR*ff)jy*Pk{y>oV3N*K8WdtSd`KY@jziW14AwY14C&yB!nJA={MaF2Y>B` zWJlH>(0F1!1A|@<#E0=c5Cc4Rk3Gkp+;U+;s~|Bs;t zeuQfL*$0VZ&VGnN0{xJZPoW=@SS|V?4v6oE_#_>wuAm>{kOrvu#D0i5v-%+pT?iFl z-4993TlyL5!Gp@z`XSlm4b))v36LP;p8(M)I|1Sl^$C!;HlF~o*kuA_h{YGGe)$AQ z5O0O5J2C+h0vDm`Urc~hW*;X&N?4hR(ERT|k%0j;;2l4af#D(p1H()xKYJ1+-!7d5 zscz3tf`r6hsJQ54NLsL;%)sEqz`&3IrB_deR9fFALz?ZXQy}`Br!X*V0*wVvfutF} z`l*n_raToAw`Nlz4T{LAkTg&>6{2wGR7l*Nn+i#+H>W~^_Wo2zR6K)fg zA;vHbl6wTEF))NOFffQtgM?f*l&&vXN4$eIC(^9m^4Is;M}O_~7-nRPQD4nI5tV!_!NkdV9v75_N{5@O6VAtA;&6OyY0 zW`fk$GcZ`pgrr(WumA%?&`d}+ik=BcOt~{52G&6N^JhZJ@O3jG4mdIs;?SE=ea~k? zqVy+Jo@W*$

    K?qQ(?TJI;dUf8SXkmoPBI&w?bDj9HLu);0^`^R=@eA+u{1#3x5* zL4xq~EJ%5Ac^1S$Z)ZV<*O+HBfTEpY@@$C1wB|rU$YKs8DxBs(%n6zU&HoW|7#Pez zBa?F=Q!R7nK!WJq97r=+Y%V0*_{@d0|I6nxfTvhA<}onDfr{FBkT&6!d5~=Nc^(6U zBLf42+I$9vAO;48jQNn7*zeSKV zc5YEUM4{GVNKlzBhQzt^Vu;3|#Sn+YErz(fWHH2oDT^U=T}7fT>f_HGFSgD+^RW(lNg=Tg5EA~1O=BJI9%$74SI5RLXG%knOcNEI6 z7hVC0tMC;N181&aVDJV_Dy@Koz`GR?AN_*T?kgekQ&vKv>cL9L9FX8DNQi_%>D8+s zlT!?25=)+c@qOeC1|Q=6J&Pn<|YP)yP)>J|7J+`(cJ=a5d(wI7D&)GZh;uQ zX$vIvAKwDWrf;`E3|83+84b(X3JKyPTOmRFcPqrWr6X0MI+L#9l-_CwB+`gZh34Ar8qq1c|zHhah!~Sp8v0_R}~F z$wpa+A*p!%VMv^E9f5>|^ASky$c56yM<7vEc?6Q0Cmw;M_L)Z@1}}iB+XNNgaRidM z_d~@`9D$Ua_2-U264@iD!tX~QQSt8xq|)F#3h9^#ABBW~&QXZP_E3KKQAiYJ9fc&e z>Z6dfG!-ho2C8l^l)eC^A4ANoXZUs$()Qy&2C+cv7{nmkV~{bQ@MDmIsQ(zm;@QU_ z4%>VT5+Zw#LG&L!21!)+j)4mnhIhvxEuTM7amM2idBNk5M5%ZjWM4f4gVS+HwhKKD z3Gyx|efT&ezyCQ7u~_~DWG=}31SGo_oq&YY#1jw)&N%@I(iJBlLA~b$1497=1H;i1 zkhY-NNk}=6dJ^K0g(n#p*g^S!<4FdF^`NB@Cm9&dGcYh@o`M)`c^ab7=7n zIPo+jn`NDb#C6+gNQlfh4ap^opz8NS<X#0AwGW!HJ9xS14BJ%o=)rxB+d-a zK=QT68HfYo&Om&Wc?M!}?HPzgZD$}MG671jfT}xi1`;J#&OoB@))`3J_yRSb^(>_F zkvR*=U0G)t>cMll$Imh_Y-C_ycyJct(n;qaiE`#Shy&K0gIIj%9K^sg=O7Nedk#|M zzBmVQpul;E2PDrkFnBUBFzBC$)P9xcA=Ubk^N-P!$LB%gKMV{Ef6qfK7PtV( zPU06piGzVb{sP1SMi(F!xLtra#Qy>$N+K^n9FhhVFT4N=;_3?!ht7f0YcD`@(Y_0i zkiLEa;(&Mc7a)m@<01pYHU z%{7QcJFY>Z=IAw$!3+%Nu0f*g0hIsx8l;c;7b+I-~`YcpYLv z|8h;idNC-TFs{42y;())`A-RX`2E<(H8xW7F-hhOR%MD2O^}fNt zP!C$~lY9dbH>EcqQP6q=;-hI$@x@U7W+;8&1|-DJ-hlY@HdOpARQwmz0*;#yd4-!0 z^+q=#1((B3NJzxoWT*$P>zM|Xn0phF{dV4jxbWajh>LIDgfzh(+=PS#(=A9yh~9#z z*SrPsq2Vn^+6cG>(Vq!b*LVx!!Kt?(9$R_~V(z9}(Bbo)w;(}z2ufeP1<95VpbD99 zL$VXsZAcIcKxxU_5Qiv1X|vmqMCx@Ll2-h0LmXIs8xj)rw;>@s@iqf^wcH|*00(I8 z*KJ6FaO*b2;xABz;&&j4NaGH~=f-y+K6SeT@j>bxhy!x&Kw2~ncOW5k2P*#W4y1Mz zx(g|IbnimcyWE91tUdxNkZ>2`!jiiX3)`UliFYABUJRwz+=V2rt#=^>&nYPXHB_GA z9z>q=9whO}-Gi8`aS!4FE2zBhJ+MRS8ItZn;->5#B#7JYLGowMJxG)+x(7)t8}C7U z{2FS&C#VJN_aPxCcpsu)8%i7Ahv+xI5AmtneTW16?nBZ@;(bt}tY=`Tx(|u7j{6Xw z_Co1tP=n?}>81A}mC0(Tf#2>!s@s21zVri#e&q*{RIc*?;xP{>9q|CtTF!vV_dkHH z|5^P2()Zi-01`)UA3%bRVs`2I{h>u=Bf&|@{ zN07wH{um;z^%#-{j2}Z%bI47>z_mV?=PQ2;!^$vM5DnAhy%=CK%&O;1;l~D zFCacmdI3rGl`kOuhRIO%H(o%Z;`IxNPo-W$$_vGp5QjUwgcM9kP=0;aONha1UP9t_ z_e)4BzxNVivF0lXZTt#S8QDVlp06Md2z~`|Q0^;8k=ybL5>j(sK|*HZD@ah^dIj;| z3#d6iUx7VZ&%pW`QbKXRh6I(`Ylus&UPIDA%xj22sjnfay6-i_g5|Fv*>BHlh{ZRd z>OQ_^V6bOkV32wP(I52&5+ccOAm&bb1F>(*8<4~685qvLfwcRdy@AA${9A~@`fnjE z8K1WhA7s6S3^G-`g*asCTS#|&-&=^mU*AHiZSi-IsB?V>F)!jBB(5{wLCooR2lhF` zw08^)Y@qi4oOh5YSPWIL=^Z4f4}cVa7M;F>h@ey;$`R5R0=uK;pa%N;iCf zII!yjMB~g4khom*0TNQ1KR|lD7e0W3l!4*P2Z)8-A0ZaXeuQ|y_#>peu>J^%f|!pC z_24Dd$_hd9{B(@@7EVderNg$@rV|bHvS4RuioY>Bm{h* z0>NJ)4oUtBaY*)8NYK}Og@nk&uaImy=PSgb4N!X5R|fFv`6FK;+41#P$Pf+lH;8)k zZxH?7-yl8@`vy*=^$bbhAaURD4PxQiZx9FV`vwW(qu(Hj>)kg<_7VCHF;L+<#3GaL zko@iQ9pc04?+}Nze21v-`wlU8&UZ-Et^E%1;NkC}D6MB;IQ^Z0VIBhm!;SBd{9FD5 zV$f13z3vAjTW$XVaoFA;5CcjfLR`4`C!`&)1 z!~;#gAm(;M)y??@8F*X*6_@%AUH_~78xl0uzadc(_#2YV>V88k*!mk1q+gJkQJe-L{b|3S)+DgU6$X4d_KWQU9YATEFS4-&+m{y`kX_#Yz9^&gT3r2j*r zM(IB!O3eO48mYejAtBZdrThOwESwHizv@3Er1t%Xn0vbZKg7jXpaKv6L-OlOsKJ5^ zjNolK8Vrn(oem6);1!d;42qv=#0cKHA;HWD?#VbYLkup2^4pjh!P|7UGBbkbimoyKPWWKwNT|g^}SL0|Uc77Dn)#@LEY;&kCOvpo-hZ* z!3rFV48oxNZ_WX+(3=Ai72zC=;LRv$9E=RF7#J8TIT*pYB!!a^yrrs!6T-j42?_Eq zoDc&!xfsFgeiXPE!9}qf7sQ-gDBZvXiK@w5khE}!i;-O_$D5R!FzZhaetNvV&PRDNEAHc zfrJ1fFC#+_XjYAvkzqb)PZ=-79!I`2zL3|X!2T3eBd=Li}@iBt8Ry6Q2f~U`S z@-c$ffb#P*f_J@{^D}~HPD}V18TNviELKQ(ZL*n?CI3$Q!BpAWF+M*;F83I9@NF*4+o5vU=8Npk%%p@7X`v9#Z z!3Hp7OF}Fvl7u**LJ|_Cosy7(Y>Fhr{F9Q95WFnO2%eT>mSSXZ0_A^iDMs-8T%Qyp zc)9HWA89L-3LAqa#5xj%(k{rY*pXC_A`v6(wA=yzw9+D^x zp?rHN-$R}eyhSri9+Dj!Zn)Oh1ehQ4>Nv?1Oi2POsNQgXEU}UHVZKZsx07||o72hZVdVT24GUxq6D$;7~5#K^#K1j_GXU|{e7O^ZYM zAS#8CfkBj!fngZ~1H*Dg$l6XXMg|6DCdiDM1ZZC$NFf6Q!!afX25}}x12mACf#Dt# z1H)0UOY0dJ7Bes~xG*v>Ok#vAkpXR)%mqs_FieITz|73Ru$+N`VLQ|j%~0Bx8Qh9x zaA#y-xCT`VqFAB&lNlKp!a=@fW?-;_>H)0*ZD(X)Xk=z!-~g5XTR_`onHdH}@xSjoUp z58hz<2r7Az2{IKA<$|e4P=i3L7q2ifFkAtPGB8{K8Op@KV9LzEFo~Igp@Nx#;U5D7 z!&j($J=7vwCI*J*ObiUkP|wU@U|{$MHS+)yX#NMPa2X>5gCf$46($CT zNJa*5p#&0_XJTNO3)S1sz`#%q8lq!lU`Sg0FqAMdF!(b<<_1Aqvbdp! zY=x=?IR><)8btdsLYCx!HXO%+;uoqGv_E(@69a<;BLl-PkU|CqhQmyt@COZ*FflMh zGcz!_GchoH1MOU9WMBwpWMKG!WWhs51_nhY$grC|BLjm3lAH#}@u0ol%#f84AoFdQ z85p)OF)+MgVqlof$iQ$4G%XL3U|?W)1Eqx+8R{7_nHU%zFfuUAU}RvhV1#rmniv=u zPC$eG7?cL-ImpPsP|U!<@R^Z;L5>;H>)`+eH!}kRGa~~73lpTTXu!n45YGr1gaGLS z6=K3rb3hA{%9t4#vY8kdK7!(ZB2?lDBLjmG69a=flFvYz`Iwg*cxUAhDMM^&}MWd1_nVU28O?&bi>HN(9OWWkPq?% zGXrR09K#Y&{3|grFa$C&FdTwfV9m_H-~fs%s3A6>>;{cT(DnA z#Y_wgPEdJ}+&m@*h6F|ihG<3xhFwey;1v=-85kJkp=vxB85mYFGBD_a(g#Qb4689Q zFa$6&Fc?BZ#Eyx9VJDRR3+lKMCI*IbP@FO|Fk~<@F#LsT1{GvSm>3xLF)}c;FfuSK zWMW`g3Dsl8$iQ%!k%1wWnSmjliGkrJBV>`&E>Qe~^s_TEFi0~pFi0^nFz_=oFkEG1 zV5nwhV0g{M!0;cmSs0{<0kZ2I#I#|6tcsWe%0eLDgUSsi1_lnOV|^GI7!shqy~f1A z@EsIg3=9nYj0_BHP&J@sp32Pi3=Ef;7#PB#g0mPI7@C+F7+x?iFl+<`F9QREGZO>D zUM2>HC?*DmC7|2_HMkSx641E;P)YmgyWny4B!vtB1#0FaY50L<=Wmw0^z+evLpJ!xX2xDYmxC)kGU?^c`U@%~2 zV3@+pz|h0Yz+eXz{{SjHm>3vjpcX;3GjKxr*FkXvbsV_B1DzJ(02TPdz`)P}%0r;! z$;7~LjuCQP#S$h4hBi>m!N9=K11hW;85q7o_1tD;V2EdCU|0>ReV7;+3ZWK3-NW!6 zw15~?j50BRyS$)dF+g%BK`j+nwFDAiXJ%jsWn^IRW@KRKgc=SK?}oBNm>C$_p@zFc zY0!!ikeUW4AH)V>P@mkG5wgr_2O|S`l`&{dXCxB?gDevRgB>#iLn~-|T^ln4!(32R z#K6Gt5~P!XfgzcRfkA+gfq@H@{}>q<{(_>2k%2*t88W;9QU+Q*=no59kN^V%g9fPH zg|e%e7#KQ19%6zl{Cf;_-~%QGhFeSw44jM%4F5n4zV}QF3?j@749^%Dz#|Hv#lN6M znILmmpgsq&=QA-dd}3r^n9j_=09vKC3e=DTNiZ-l?1rk70ktlmY>?C?(Aq30{}0pw z5zLSkj3D_lpawsPF@=$Vp_Z9}!5$Pmj0_BS7#SEMnHd=3pqiF}XhsHxw;&p{mxh6X z;Q(kc50sw;r9oy@F)}ceGcqttU}j*D1J%<|xd>1}4`qL4VqjPeD#tD7#g5vflixHg|b2F>p_RS%wuF=_`wJn(h6f{U|0b0;m|sU~5LmFlrf8k2ezoLnb2wgBT+N zgDWEg!)uTtQ2zVR#K7PU)mR9nD;XIWte6=XT9_CZVi_42=0JT2I&THEu3nUxf#D?+ z14A09l?h6Cj0_ALplZsXG(Qsq!)7MPy4y`m3=9*Q85m}Q%64W3hU*}Gj0_BXpaLIs z2m{D54?v4EK^j244Q2+0n@kK0Nl*uYhLcPT49(C`+t0wjzzWI*p!CGd zzz_g+oG%k(MfxUCh0n#zz`)1E!0>{Jfnh3C0jOu62{i=d7SM4Phe6#L5C@7cGBPkc z0!0aw52HW}$6)MxP{t=H{Tb8{WMW`2huV_`ivKxKNd-`a0%hL?oeTt3RLsc0pu)_+ za33lMI=09R)Gz=wj~Eyj-a(@XDj-ld2dX}efq|io zk%7UDnSo&eBV?%?$T61~85jx~85kCU8h)S#A1DN&dO-3ZT>plVfuWayfnh1ga0Uj3 zCQ!k`#K3SGRQ5A4F#G~F)|eO=6hUP>$Uu-T1_p+;P)C8dGnp9}1eqBa)-W(I@IuAC zKw^xLVek%6HU=q#;$}t$hEgU5h83Xr2d%T+0kRM(nS|s*b!G+zUL-!~c#{}VmCVS% z5X8&?J~;+-0ue~-aRvs491sJPwU`+gbU+mr0|UbP=}?0n!1b(3>(4b z)-y2Vf>I+BWS1CdeDww+1H*qt$hupQd2XNM_By>UaSXFV$96Iu$zH_ArVym zGchnshHB1+T2>0p72BbFkRH(9>vtdq6gPlY9xyO4%x7d^hym3Z%nS?#%nS?*L1_wf z`VgpV1vR(6pNWCt9;jMnWMJ6M#K2&}%)l^}nSsHKiGkrQ0|Ub|CI$vQsNxq;OM96a z7_^}d(PLy_aAss+xD5(^s5&kv4RTK^sF4p!7ob9liGe|hnSo(1BLf2`M1MWQWT>Ij zK#2mRgMop8g_(iD7NUTG2^5#i3=DZtLyMr|HBhz6j0_ABP&v?XR-hT|JW#h6REIDy zfX87Im>3uqLe+z)8KAlaYz|ue3tD&E3aXtL85r1^7#JLw85nXv^*Klv0|SE=sPVzX zz~ITqz|aMCcnipPpj{*k3=9iEWjqrD!&A_B3RE7Xbpj&;12Yq3QFsLtWYPC&CI*HZ zpu#|fkpVnP%)!jSU;_0?J`)2&4U`Q!O$=m6DI){JH%11A1E8TU(D_`T^_5UHHcXrE zc?+@DXBI0IBo>t@zOIR~F^k=%?n|=_n*Bwc6iSOzi;5Kz^D4_TQj1a*GV><$ z&k~Et%FoP8%FoX(uPn;dOU}>L&&(?>Nz6-5E!J03C`l|zPc5-kiciW(%*$4SJ00d^ z8~sE(9fgvN%wo9nDitz|6-x6m3rkb=Ha`qF$vt^VOeQ#5{$7e6VC{ajGT* zlnqjtlCR)YlvtdZqoCnblvtGsayhcv&9@u0I5`!{Qj3Z+^Yg4W|LGK9;x9=oDJ@Pd zRw&3XE=f(X+RW9X&CQuusZf%yke;u&*?9Us5mqBZD?^jb-&Pl}*QX^`ffG=wLP|ci z6jYjYpPZPIsF0UmtdNtMS(0CrTCAtw znpaqwm{*doP>>JN0!lsUnMDf8`FSOod8LWDsr7j!U~?5pOEPmZs}fT{Iu#1?ixf)o zQ}Pw^6><_&@)hzD6>Jg}GKx~uY?U%fN(zdt^z}(fTR|WnIOXT(f>I(RVWk$ABq}6} zZ$V&=`S1KIdm6w^EsJA(Ma~2P4aDGxz>f{6avqVCX-IiFAS(aaHwOR8(qnIQp zofYLn(pyn}u|i@&PG)jqN`CR?mDfJA3q#WwBDLjfZk~Nll`YpfKQANo@bW~3{9;g; z6@#>bQeI|pNf9Ir82pPBa#M4YK&Gao7K4*qX#pfCa}|<{G82mwK*=t#7?NfoIzhaG z)V#!Eg@V+ae1-I)(t>=w$@`xua{A_{q=Jp!eE-Q8X2E<|5-m*yCrZuD7hfnb`#_T6 znWka|4QM({1#ut=wG>z4genCk*(7j!P0cLI*WCQ!wHLQYSZY!6;l=r&)K#3HR#Ki= zlxnrv@_RdzuxoJ%D5Mk$N|T_0X0>_$&;L9Ej>W~9xuEDMEKOB7yi#%dUN%NI5uW@~ cg+zti)RIJnl+@`0(u^7yB4XR4r5OVl0nloUXaE2J delta 19744 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 UlsH{Zkx>IvNNjtCB4Yp}06YxDS^xk5 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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 RPCc+ASixGR7l<>~006;QDqsKr delta 19279 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 DZ1UMv 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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 QG9kl?S3Ls*!!xMF$8ZJ) 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 E04_@Rt^fc4 diff --git a/locale/es_ES/LC_MESSAGES/django.po b/locale/es_ES/LC_MESSAGES/django.po index 47f966134..8262bd0ad 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 19:01+0000\n" -"PO-Revision-Date: 2022-01-11 17:29\n" +"POT-Creation-Date: 2022-01-12 18:37+0000\n" +"PO-Revision-Date: 2022-01-12 21:26\n" "Last-Translator: Mouse Reeve \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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 delta 20488 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 diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po index c1c67dccc..3930960a4 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 19:01+0000\n" -"PO-Revision-Date: 2022-01-09 21:14\n" +"POT-Creation-Date: 2022-01-12 18:37+0000\n" +"PO-Revision-Date: 2022-01-13 11:32\n" "Last-Translator: Mouse Reeve \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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 KrccsfOaTDCe_AmB delta 20328 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\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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

    Vp8g78NM$YlNpCde{I z(6JUE@iU;N3MlP@I3Uc$%)k)N$iU#s$iUDIH5??~%Ltjx4`*gz=!6>X0i{9foIq-t zpnMP;gh5NtOhHirI(2}Nfnh6Xp(g_aLktrGg8~x+gCjEoLkFmb&O z2t_kPW{p6K&Vxn>K#XaO3=9p-3=B@7gu}?daF3CJA%>ZOArY!+1rq}U6C(q|dno@i z0|Uch1_p-XP<}3y2ANgE$iPs^$iOg}nSnupk%8eNR4xis&_mfjm>3w=f(mj_2?5ds z!+nel4Cn;vO-Vt`0-c|s0cC^KgGUG!FfuUw1{Jmp3=EOX3=FG5YvC9f zz)RFX8}iyfSq8Lz4(fW4Moy?9E=&vzn?Q9R69YpPR173<%LrM-vlptzkBNaH8+0%W zs2pWvV0a5s1j>I*%nS^EP>m%}x|)%J!IqhUp^b@wAs*CYfcg-0E(&NJtprqE1|ww9 zR*R8=VG~qM1(X(IVqnT_3^y1d zi?@CV`!Kd7}}tr209Ul1C$FG7#Lib85n}0jtgL7 zV3-No>dMGa&%n#fz#z!P!0?KRfnhpS0W&iLLk`pskXt}U4;^KMteph$LHIHw1H%(g zlz=!$cncEy0qA5QW(I~YP_b{IrVtYYgB8@CTu}Vahe|3lLzWnVxc5N^@qm2A$iPqv z%96|s3=csPpcE7#J8nKtly8&2XLxvVgCVnSsF_RBnJm1=L<OosmI~W-lJee677BNB=Zi5_ig^_`wn2~{D2_pl;UIqpRMNlCJ)dP|T z;rjQCkmE^~gA8Y2U|7V&z;Kd@f#EDDdw@3IgBoj03=AsF3=CDERl*=$3=9nGp^gG^ z=P)xch%hrStY=_g;D?I)g4zn8Yz#_2Opx`oAhjUe%E-V_!NkC@3KajKV<&cj+5jLK z1_p*yBo}HiGcX7s@j<%=<3KGyP?rQ$O@of8g6abuV+A@V3B>haW?;}`giOkMsBzB7z_1x?E@+1+69dBxCI*HA&{;{KRLsc0zyxaHflLDJb6{d%aAja% zcnCGX9(4Q^s9=HeLCVg9hA$W(Q&b>6Xvpg!69YpnBLjmC*dmZ91A_n~1H*qt28IGq zRDpzG3=9Iy z3=BJ%7#LKU85s71+7=M~^$egvc#y&wphN*;fZBn~3=9qs1q`gr3=I0r3=D-(LrbCJ zu#i(_WMGJf%7MniK^waYK+QKs$UNEs1_p*?CI*HjP_seQY-R?AcCa}xQ$V5&kj+}{ zj0_C#7#SG2m>3wGK|Mo8$SQA;5?y8n24zr?GBPmqKtrP)lXRZS28KE)TN-2n=%g=3 z28N%E3=D@rgDVUS44*(l*ibe0o6q|G=bzjk&9~VsPLO}IUv8WH<_W#Q>TE^|hL%>Q en_q4@E;PA6ns>A031OklhPPx?w@NVP=l}o!^}jp- delta 20448 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 F0|3>c5`zE$ 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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 diff --git a/locale/lt_LT/LC_MESSAGES/django.po b/locale/lt_LT/LC_MESSAGES/django.po index 64b22bd3f..27db16f7b 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 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: 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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 w@{HHmlTy5Cel4 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\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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 ZH5sQ*jytY5IqtZwA<2%P{#TPR835LCTMYmJ delta 20348 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 R@#yrU`iv8%KQdrU0svOiBaQ$7 diff --git a/locale/pt_BR/LC_MESSAGES/django.po b/locale/pt_BR/LC_MESSAGES/django.po index db9559dee..1f04c27ba 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 19:01+0000\n" -"PO-Revision-Date: 2022-01-09 23:27\n" +"POT-Creation-Date: 2022-01-12 18:37+0000\n" +"PO-Revision-Date: 2022-01-12 21:26\n" "Last-Translator: Mouse Reeve \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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�tRXch#$wm!0;Z)=lVLA%IRv04*>8B~Atgh74u~hNp}S z40eo=wqgv_AtF$EGXn#I6x8x0s2FJfe>g}Cl>U>M7#Ola(Et))U;wvXbeS0#PBJkt ztc7YYU}9i62xWtO^qrA`!4%5>2x?3)LpC4BGeXApL2Bkg%~N4!U{GLYU^oKW^UuV< zP|w7`@SBN&p#>De{ZK>HpuPra1f60~$;bdcx4{A`4_YU59?Di@WMI%?W?--Z)s!Hg zL&euHLOLETpftqDz|ac9P;(oh^dyi43=9ktm>3wggJL)dv~Gu)f#DC-ki$?{Gcz+V zFf%eRTwsE9(QiY=uQD(&$TKo9L@+Zjlru6gNPy}DsNOaP28PF=(v%s}p;2dMV31^D zVDJSsPM~TofVSyF9Z?F3|Er)Z$H>6&50q#?sTAr`keWV5$kwSxj0_A$%nYD$3Xm`g z=3{1H=w*b=bbuu6nHd-^F)}b*WMp6v1GW1=f(#4{I~f@mwnIH(52}Pf@}T$!$**H# zV0g^Hz%Yl2fng&9149oejzDWWnHd-ype_d;p3=Fdv z85q7YGBErHEx&}S-3qm|g@J*=o(ZzxQ5h;%pU1?&5Y5cMz{SMCz|O?Lz{m{gp%j9$ z6sSZ4rD|pd1|CKRhIVGisz#85K^xNDpawq#IU1BT85tN-nHd<285tN{L5)mi28L`# z28P#63=HB>N3LOl^#4I;gMi8(hGk5UMdeOV!$5{FXJTLoVFGUuVtB#?IjsUD4#LYA z7#Q|~7z~i*w;(1vRBr<#14AJr14AXK{9uIi9kUo27*;bdFkE9`V0a3uc0tWDCI$v> zMh1rWp!PrLun;DY51APltU#?4kk1(z800~r0yP+9$qWVth9yi43}uWA49}Su7_6ak zj!X;;QPAMDg8DLtnSr4PqzMUoGBGenGBYsjVq#z@0=1YK85nMX+W+lL3=B7+8aWvm z7>b!07*e48Rw#X&iGjfmWEj+i9Xk%hv*u}`e;10GJau5M1{V^;Dom#`hz@P|f(LyzqKn;A)#K4dV zDhWZU9h9x0njN6@Jy7!<)LLR-U^oob(*~*;L1~JSfguu3wIf#MLVFoqGbh7Y88HX{QAE2y{22w7tNk%5816sis+{{ocS85tNRf*K)=3=B-5 zHa;T*!(s-=2#WzoKNDnb0Hhv-!$IZ$T~PlX)TjiBfP4sA7!Dr!U|=}N2pN_IosRSe zRMRmtFuY@8Ul`hl?k##0yOds+HCR)lqEss z2@?ZD0Z0wh>`hDz^$h1385ou@GBEfuGcYV*Vqkax8VzA&U^oCZR13*rAbsl@85sIO zX@!A-!3)&d0mU&?tq&su!)MUuGbkUV{tgoZ!%9X5h6V-(hGmQl3@Ol%2FcZf`u`vX z41-R%$prZrYCsp1_6Bt#7#SGefD|$@Fl=LBV7SS^zz_v>+&NHN9?A{@HRVB}1l0@D z0>agx4lDx$LoTR@2Zb7_WejSIRYF}P2MQig%M{87X(|MD$(R@z{xUK!2th3XiG%PG z&|y;`2B?DxN{oyQ3>u)|XJlYF4{9YbFfiDFs&_^PhM!P%6B!v8I*`mUeZa`T@Pmng z;S?hSLohP~gBGY;40XUqP%Q_FYp748nHd;#nHU(fHtTvj@l3C0W@Mk7u~l=ib2$HI zn>157F@^jz1tnFDr2PEs_>#<$oK($XB?XPij?2XjG_4d=HHuQpGE>W8QVc<0E>2An z_M~aTuwip%ONAt<8 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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 delta 12679 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 MhG&~wYj+3&07Rz@qyPW_ 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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 A6#xJL delta 17402 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 Vw\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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 S>Co=U27RL2U$Zlw(*ppyz(tq< delta 10214 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 PhjwEzV*4|8#*2CY3c5Re 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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\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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

    Vp8g78NM$YlNpCde{I z(6JUE@iU;N3MlP@I3Uc$%)k)N$iU#s$iUDIH5??~%Ltjx4`*gz=!6>X0i{9foIq-t zpnMP;gh5NtOhHirI(2}Nfnh6Xp(g_aLktrGg8~x+gCjEoLkFmb&O z2t_kPW{p6K&Vxn>K#XaO3=9p-3=B@7gu}?daF3CJA%>ZOArY!+1rq}U6C(q|dno@i z0|Uch1_p-XP<}3y2ANgE$iPs^$iOg}nSnupk%8eNR4xis&_mfjm>3w=f(mj_2?5ds z!+nel4Cn;vO-Vt`0-c|s0cC^KgGUG!FfuUw1{Jmp3=EOX3=FG5YvC9f zz)RFX8}iyfSq8Lz4(fW4Moy?9E=&vzn?Q9R69YpPR173<%LrM-vlptzkBNaH8+0%W zs2pWvV0a5s1j>I*%nS^EP>m%}x|)%J!IqhUp^b@wAs*CYfcg-0E(&NJtprqE1|ww9 zR*R8=VG~qM1(X(IVqnT_3^y1d zi?@CV`!Kd7}}tr209Ul1C$FG7#Lib85n}0jtgL7 zV3-No>dMGa&%n#fz#z!P!0?KRfnhpS0W&iLLk`pskXt}U4;^KMteph$LHIHw1H%(g zlz=!$cncEy0qA5QW(I~YP_b{IrVtYYgB8@CTu}Vahe|3lLzWnVxc5N^@qm2A$iPqv z%96|s3=csPpcE7#J8nKtly8&2XLxvVgCVnSsF_RBnJm1=L<OosmI~W-lJee677BNB=Zi5_ig^_`wn2~{D2_pl;UIqpRMNlCJ)dP|T z;rjQCkmE^~gA8Y2U|7V&z;Kd@f#EDDdw@3IgBoj03=AsF3=CDERl*=$3=9nGp^gG^ z=P)xch%hrStY=_g;D?I)g4zn8Yz#_2Opx`oAhjUe%E-V_!NkC@3KajKV<&cj+5jLK z1_p*yBo}HiGcX7s@j<%=<3KGyP?rQ$O@of8g6abuV+A@V3B>haW?;}`giOkMsBzB7z_1x?E@+1+69dBxCI*HA&{;{KRLsc0zyxaHflLDJb6{d%aAja% zcnCGX9(4Q^s9=HeLCVg9hA$W(Q&b>6Xvpg!69YpnBLjmC*dmZ91A_n~1H*qt28IGq zRDpzG3=9Iy z3=BJ%7#LKU85s71+7=M~^$egvc#y&wphN*;fZBn~3=9qs1q`gr3=I0r3=D-(LrbCJ zu#i(_WMGJf%7MniK^waYK+QKs$UNEs1_p*?CI*HjP_seQY-R?AcCa}xQ$V5&kj+}{ zj0_C#7#SG2m>3wGK|Mo8$SQA;5?y8n24zr?GBPmqKtrP)lIQP-BD~Gs6uEeyC51m>3x9ploT7380g{ z7#SFTGBPk60u8P(Ffe=q4Piso*fVWz^Gguj%$L%pw)tq+UZ%~H`o8mR-ZHnJadW`@ z>AaJ@)@E#$T-VOJ`S0dH#>s299+-T2TifIh+c&ToDHvK>nQmUTLr-!u+ojJkT%mcH z#mSi^nF@)UncuGwU`kJ)yz#&IRslv~=Iu@_j0J+*pNKNPVBCINoH3h!`U-W%jP1=D djBIS%-{>(WGEQG>!1!W1n-Sy0=^Dn2i2ymp=*R#7 diff --git a/locale/it_IT/LC_MESSAGES/django.po b/locale/it_IT/LC_MESSAGES/django.po index c6df35483..c63d61ebf 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-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-16 19:12\n" "Last-Translator: Mouse Reeve \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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\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 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 delta 20560 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 J@x#vmZ2%!YO4tAZ 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 zcmX@|h~>~DmJMHo>pd747@YeU7}yyY7 z?)EV-2s1D+JnCa$U}a!n_}0h3z|FwG@TZS~fsKKIfuo;+fuDhafxn-DL6CugLB5}X zL4kpR!4S$1>Sti!VPIfL>1SXNVPIe=>}RM48_?Fzz+lY4z%U7_;8;Hc10Mqe!{vSk z240Yb{Sb>k^g}FUnE-K+zyt;cRR#tI(FqXs))OEe@tOd!C};x2Bk>a$7;+gH7?LM2 zFmNz1FkFPvwT>N+f1A_(w1H#HW)dLL9hdBE*LWCNeOnFfcG&od|L0FQ|D6lOP_`sGkIJ zx!EL$%UmZxg3fOe#DauL3=EPC3=CP57#N%w7#Lb6F)*kzFfbgS#K54lyl?5;LbTFeoxGFf5wFz#z)Nz;I*=1A`O;1H&z-!C$999QGHY zk%4+*z`)QBV3<6efkBsnfno1- zNJzYfiZjoEqy^m>3=Ccj3=DoydgcrU20aD_h9@%^7-Sh37=&jsFo@TKvd2sYhD{6% z44yL~iRRBtNMaM51&LdgSquy^3=9nJvmj|8Wfnx;@>!6m+cOK2SdY(w1nt>bkf^u< z6~8kJ619(JF))-dGBCWG1@U0&90rDZP`)mm!@v;Az`#&72NHxAp!7{B{b&w2t{7g= zff)Q1O8=b$F^F|8Bzua^h3MCu3khN)DBp7~M1K&JA2SycHK}tM>cIs@@mxq0G(#1v zn+vgMJ5=HRxeN?P85kJO&V~4R@;nBHXa)v`dGjC!{h9|!103@qwCH>W25ANc1|=xp zZayT$yyrt4k}x0Q(5(6OkRUFGN=%y%3CacYAwjupJ|w%Xg=)AuACj8yLHY0JL$cS8 z`H)1$wE$wCw$3_?p8800`@|59*nt7n+7l!3vK zfq~)hQU-<~1_lP!WsqzYu?$i|wJn2`3(J-5=3G#SXZDL>uW?*1Q-^9RR!N9<< zdlSS*Up7ICR`$)1DA3pp;hSxS_%wVo#38YpAt9Is70=rYNi!vz85m+f4H_u_@8)_2 zhDi(z44PXY8ux5rV2A>x)-8}ksIV21YW=oC;%@C$NH*HCm4P9Ffq~)NR)|IV+ZY&3 z7#JALw=poJGB7aYY-3=kWnf^qv<+fzz;;NKMQ&$cNCvgEwnM}})NhCQ?B{k!D(Be& zDM0jgFfcGNF)#$~U|@L3z`zi)3*rO2-H?JLYd0j7*Y9Rv05##3?q*w;Pf@ z&Gs-bL@+Qg;{%Xv_U!6y=zkPa z##bGM7}$LjV!+Cy3=Dk?3=Fcz7#Nfp7#P+ZgEU$%9AjW8XJBApIS$F!HOCnk3P4S> zB*!we(s1iQQz|g?Jzz}~Hk`^AEWni#lU|_I3 z2T4N}=NK63tr-{?de1@H`6tgoT*h`D688z`A!(!SJS2PVhSCSmgX50j_<2a`zkME( zJ072h)M~Gw>i$5*nJz%oabAF!BX|K4!r~Vg>cJfajSCP1tS&$*A4e$deF2i)LN7oJ z&c6VO)5Z&sxSS3(XgO4T2UPtzsQilykRtlW1xN_8UxfHv>LMh~>0hje#IgHDNd8Q{ z2vIoWBE;g=7a17LLFK_kNQw3rD$aQc;!x#F5FhDYVgNT*jW0nQ=64BFK*d4jbD-iy zP`c?7#NJ8ummn5yxCBX+hc7`a`~~G3U52Fo%*&7v=(!AOl+L>hG2q5!hy%V|hJ@gs z%Mb@JUx7GS_zI*zlD`6Je70VJl&D*-K-AU0y#k4wzgHL-=7Fl;s|*Zl7#J9qT!r{B z@ESy6^fgd+VPMF<22o#j4bmvBy9SAp+1DTzZoCG`j(ef%?_7g8{P{JA1Ajv08LorP zt!I$G4oS88*C7T4Ux&m|=5>gLb=M(@t@Aph$eeo};;>~yYZ_a?;0-=TcwTM!4z-h#xv+ATj*--d*M)oq9cezzeG35U`tw;>@_cpDNjHMb!pVB2ko zMayqPLSQ?TJ^_`#d7FWu9@M$~bsG{iB6lEZz~BzVp!0Vi4!C&-;(#}IAQmy)g*b%! zF2rDwyATUi??UPVx4V$;dG=jM2o*r-n!AvY>45U5-DRi;_wN@$1vWtGJy7}tl)eJh z_~0(YNAK=3Fn|iKe|I6N+Ug#pf1h~|QgB_r2MNKy_aF{sy$^9H-+f33%io72O11m- z5D5#YfaiUPPowWcT$+C$k~V7ZLwq#(J|t1ixDScTjrSoAI&dFSDP6b^vG_Yw|9>dW z`v78|^aF@_nhzlQ?CT#u;@h6)A-hSv`u zL7Vark`@XcLVQ~L5aP48hY+96fb!=*gp?Z_A3_}X`XMAL>pwq)#PvU@0UVDYm5bmb zNOf!V2$BW@A3+?F@(5DWRXlyIIc{Pklk7tmA zE#esiLp^8|s|YGk^9)kiOoJ-i`3z#e*sCv`=RoeUO=Mg`HOl;V*2p{62xpTAwkdc z5)vg!FCmG=@Fm2@*)JguD0&I8p#3EzC?~#z=wA(`H$u(X{u1JVvrzNyzJ!z?Z(c$i zz*_$bQm}}v_HwY`D_V8%Vz1{05TEPQQUf(epQuhRW|Z5Qj;=h1g^A791t@4Bl@caU1s* z68BkeAucO@3$d`}EyRM}w~%bO94dbNEu?jP;Vqxh3F5(kPZ0AGK0)-S ze_~*$2aS5yeS##yfNM~2_3v~R?`U@n8y}v*P6wcfPD1JHUm@l_{aO$4;m5BK zAAN^P2!4aORQ4MrE!cj8_|WYe#NeoJkT}l&2C=vUN-y{Zv2X{JehAgi^&Qg475)w} z*ZeyqM8oU9Ln@!r?~oSFr0HmNj6!QZz7+v!N5`xQq zKyt&uACNTk_6Ni~hM$lq5cmlR3H_fCkJsD&gd_^*pO9?l1yvCF6B0z}Q2FAYkT|XS z3CX5SKOsTg`xDY@{`nJZ?HxN7FB`v($qrhgzlO#B0}DCZBvC#6vS#6OU(+N?hi zi!T0wq>a~qAZg=2RGr9Qh(~1qf-GWS(EJNg@AMba1&jI1z`zB{|5N`$e74{(#K+73 zLJZmnQUDse`3rH##lMgS#I3&&A3gsINo;@rLeh}hKZv;VKZyFse-Mu({ewhFE|gyk zm9P89z)%mG_iO(LacTcQND$5b2MOB6{~(plmVc1A{q+wLm;e7kCL;L%L(~QRhlnTt zhh)d%|ByKD`VaBY-2V^9Mum5ML2hYbn{10*ItN)OY`1&6bcYppv9K^@K z2%dHmV_*c&4XHCQf+wwP85qG6k{%3<;OV#+D4oW@2%eNGU|i@$~&j_A?WM^cA%*ik^f(M5U85zL?6LE|XiwYPS!P9QljEoGR(d)&GjNp#T zAx1{<1jYp@{eY1XJm2?$krC`MQ6`9fIVOmDO(uv(%$XR$ol}o`CWyjBsDdmeMuu~s z5m6>aa4*%J86rOsO3z|u1W&y#W@ZErrLJUV1W&zwWo87=>-~Ys3$s8hlw^T~j5-S= zxTR&t0&%bl3nO^mus(zZ;?r^{-O0iTo`##v0&(eH7Dn*Y>^Uf(i4|gyFe}6YHCBkl zCajF$DO+z=M(|v66e}dElA!7>D9UH{FKWvQP2@6hkM)0Jw z13M#l<};L?kwKH8o`Ip1oe@0$H=i96RHxV>iRKDB#NapVkSO>MHGqQyqE40rVxc+* zBZDmi1A_|(BylxyK+@104o2|g^hpkggWf~wzfg7DoQw?8p!~1O39-nL6JkIJCnRq2 zI3Xc1krNVR3ppV{yonRypo38UDNcw_Z*oE`dd3NH*cVQa4;dH)xga5C%>|Kn=7NMo zAQvM;J!qOejSFI6DHkL$)p0>`MJrT%A{QfgvUwI4B(9HfL2|)esKI}@AP!^UhL|JF z4RNpxH^gDO+>GG$16JIO;0X$QsQe;s#(Hr6-OLRMf#cke5V*w+aljXDhz}Te7{SBq zT09T~<9QgtBcC}uj0}4j7#P;_FoGv2vUwR9^cff!*7GtlfEqUUc_9ww;Dhkx`5+GW z;DhK-=c{LA08Oi};De;{*L;wmm*-~$kLNk@GcufFU|@*lhZv+G0P&f<0HlBk5P*o6 z3owEwo%;kJ9(W-Di8>}hNYD!jLPADL5R!J31tHm3w_Xt9b7Mh9hEt3T3~quD0|kX4 zsar#s5j>7>4CVI-LqcY{FvNnz!jKTzEDSOD0F*u@49V74gdrY!CJb>nrwAkjq(mU* z)LV)`G`fmF4DuI&I3Pv@QnVI}K#INFHiG~Oy*PIiDWanq1 zko@m02Jv8`7$nh^h(W|VA>#E6^Ti-O*(3&W;UOq}SqxH?J`saBkW(B&3yVWSMphh> zC^f_(K^r0t@o_9vUA{QPqDpayNBYGf*?h4$!~^HVLAj)!f#EKg!NBkfDj_Zbafq4( z#6WWihyk7w5TC?KK(bK*R9&3}B*gk9AP!t60ZBU>BpAW-1gD|m?0a`F135ly(DTo1`QV<7Ck%A%q0$Bn3#~xuXCntG_5ff>K)%;&W3d?FglP6&V@I7#J8L z6&V@g85kHYK*bG|AW>$c1PLiWB}m$eRDy(TrV^y=Z&HGU*dnERM(}*!1|>*Paw|g& z7F1>gPpfq(GlJJ_TvUdXj0`FepRlVy^1Fx%BY18%PlXXYd3{)g5xinbOqCHlH5;r7 zsl38e8NsvPEvgW69z*F@^{SA>_E8n$V0fNRVz+V+7axPt_m= zm!Uc%cqFt$oe@0EzCoRl0W_QbR~-`9_8O4HR<8kZV7mq+gl=gtf@fIk-)Jy`Czl;G zAqMnoLZaY~CL=>2XqAc!>!w zL(jA!ssFn+!~xPekPueZfkdgM4mb+x8BBE`iO5+8Vo{zBB*;$bFfz;mO~30vvfWf& zM)1_>3SEdij~*mQt@I!vG*b^!z%15dWXND(VA!DtDHjy=At9%w4@q=!`iu;9p!Ej& zAcq<=FgO`N3=B4a7}#h4(fGgs5>zh@AU^qR0LdNln{QfWGcr{(O?IWM|A=5z;LM)v7vm>4y1%NjE?YGRQE N*&@1qDl_AHT>#9QZ!Z7< delta 10219 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 Oht-7b6POt{=>h\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 @@