diff --git a/bookwyrm/static/css/bookwyrm.css b/bookwyrm/static/css/bookwyrm.css index f8d3b5316..5ea65d225 100644 --- a/bookwyrm/static/css/bookwyrm.css +++ b/bookwyrm/static/css/bookwyrm.css @@ -30,6 +30,9 @@ button { /* Corrects inability to style clickable `input` types in iOS */ -webkit-appearance: none; + + /* Generalizes pointer cursor */ + cursor: pointer; } button::-moz-focus-inner { @@ -64,6 +67,14 @@ button::-moz-focus-inner { overflow-x: auto; } +.modal-card { + pointer-events: none; +} + +.modal-card > * { + pointer-events: all; +} + /* stylelint-disable no-descending-specificity */ .modal-card:focus { outline-style: auto; @@ -148,6 +159,30 @@ button::-moz-focus-inner { display: inline !important; } +button .button-invisible-overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + padding: 1rem; + box-sizing: border-box; + display: flex; + align-items: center; + flex-direction: column; + justify-content: center; + background: rgba(0, 0, 0, 0.66); + color: white; + opacity: 0; + transition: opacity 0.2s ease; +} + +button:hover .button-invisible-overlay, +button:active .button-invisible-overlay, +button:focus-visible .button-invisible-overlay { + opacity: 1; +} + /** File input styles ******************************************************************************/ @@ -429,6 +464,8 @@ details.dropdown .dropdown-menu a:focus-visible { display: flex; align-items: center; justify-content: center; + flex-direction: column; + gap: 1em; white-space: initial; text-align: center; } @@ -695,11 +732,7 @@ ol.ordered-list li::before { @media only screen and (min-width: 769px) { .books-grid { gap: 1.5rem; - grid-template-columns: repeat(auto-fit, minmax(10em, 1fr)); - } - - .books-grid > .is-big { - padding: 1.5rem 1.5rem 0; + grid-template-columns: repeat(auto-fill, minmax(8em, 1fr)); } } diff --git a/bookwyrm/static/js/block_href.js b/bookwyrm/static/js/block_href.js deleted file mode 100644 index ac10b6deb..000000000 --- a/bookwyrm/static/js/block_href.js +++ /dev/null @@ -1,21 +0,0 @@ -/* exported BlockHref */ - -let BlockHref = new (class { - constructor() { - document - .querySelectorAll("[data-href]") - .forEach((t) => t.addEventListener("click", this.followLink.bind(this))); - } - - /** - * Follow a fake link - * - * @param {Event} event - * @return {undefined} - */ - followLink(event) { - const url = event.currentTarget.dataset.href; - - window.location.href = url; - } -})(); diff --git a/bookwyrm/templates/annual_summary/layout.html b/bookwyrm/templates/annual_summary/layout.html index 6a4ec5746..b5ba9cc78 100644 --- a/bookwyrm/templates/annual_summary/layout.html +++ b/bookwyrm/templates/annual_summary/layout.html @@ -249,7 +249,7 @@
{% for book in books %} - {% if book.id in best_ratings_books_ids %} + {% if books_total > 12 and book.id in best_ratings_books_ids %} {% include 'snippets/book_cover.html' with book=book cover_class='is-w-auto' size='xxlarge' %} diff --git a/bookwyrm/templates/book/book.html b/bookwyrm/templates/book/book.html index 27d061a28..4903da874 100644 --- a/bookwyrm/templates/book/book.html +++ b/bookwyrm/templates/book/book.html @@ -61,24 +61,48 @@
- {% include 'snippets/book_cover.html' with size='xxlarge' size_mobile='medium' book=book cover_class='is-h-m-mobile' %} + {% if not book.cover %} + {% if user_authenticated %} + + {% include 'book/cover_add_modal.html' with book=book controls_text="add_cover" controls_uid=book.id %} + {% if request.GET.cover_error %} +

{% trans "Failed to load cover" %}

+ {% endif %} + {% else %} + {% include 'snippets/book_cover.html' with book=book cover_class='is-h-m-mobile' %} + {% endif %} + {% endif %} + + {% if book.cover %} + + {% include 'book/cover_show_modal.html' with book=book id="cover_show_modal" %} + {% endif %} + {% include 'snippets/rate_action.html' with user=request.user book=book %}
{% include 'snippets/shelve_button/shelve_button.html' %}
- {% if user_authenticated and not book.cover %} -
- {% trans "Add cover" as button_text %} - {% include 'snippets/toggle/toggle_button.html' with text=button_text controls_text="add_cover" controls_uid=book.id focus="modal_title_add_cover" class="is-small" %} - {% include 'book/cover_modal.html' with book=book controls_text="add_cover" controls_uid=book.id %} - {% if request.GET.cover_error %} -

{% trans "Failed to load cover" %}

- {% endif %} -
- {% endif %} -
{% with book=book %}
diff --git a/bookwyrm/templates/book/cover_modal.html b/bookwyrm/templates/book/cover_add_modal.html similarity index 100% rename from bookwyrm/templates/book/cover_modal.html rename to bookwyrm/templates/book/cover_add_modal.html diff --git a/bookwyrm/templates/book/cover_show_modal.html b/bookwyrm/templates/book/cover_show_modal.html new file mode 100644 index 000000000..f244aa535 --- /dev/null +++ b/bookwyrm/templates/book/cover_show_modal.html @@ -0,0 +1,12 @@ +{% load i18n %} +{% load static %} + + diff --git a/bookwyrm/templates/components/new_modal.html b/bookwyrm/templates/components/new_modal.html new file mode 100644 index 000000000..c4927e52e --- /dev/null +++ b/bookwyrm/templates/components/new_modal.html @@ -0,0 +1,31 @@ +{% load i18n %} + + diff --git a/bookwyrm/templates/feed/summary_card.html b/bookwyrm/templates/feed/summary_card.html index 02718cdd9..e76bef912 100644 --- a/bookwyrm/templates/feed/summary_card.html +++ b/bookwyrm/templates/feed/summary_card.html @@ -1,29 +1,31 @@ -{% extends 'components/card.html' %} {% load i18n %} -{% block card-header %} -

- - - {% blocktrans %}{{ year }} in the books{% endblocktrans %} -

+
+
+

+ + + {% blocktrans %}{{ year }} in the books{% endblocktrans %} +

-
- {% trans "Dismiss message" as button_text %} - -
-{% endblock %} +
+ {% trans "Dismiss message" as button_text %} + +
+
-{% block card-content %} -

-{% blocktrans %}The end of the year is the best moment to take stock of all the books read during the last 12 months. How many pages have you read? Which book is your best-rated of the year? We compiled these stats, and more!{% endblocktrans %} -

+
+

+ {% blocktrans %}The end of the year is the best moment to take stock of all the books read during the last 12 months. How many pages have you read? Which book is your best-rated of the year? We compiled these stats, and more!{% endblocktrans %} +

-

- - {% blocktrans %}Discover your stats for {{ year }}!{% endblocktrans %} - -

-{% endblock %} +

+ + {% blocktrans %}Discover your stats for {{ year }}!{% endblocktrans %} + +

+
+ +
diff --git a/bookwyrm/templates/lists/curate.html b/bookwyrm/templates/lists/curate.html index 13de89c16..927fb5b6a 100644 --- a/bookwyrm/templates/lists/curate.html +++ b/bookwyrm/templates/lists/curate.html @@ -1,72 +1,74 @@ {% extends 'lists/layout.html' %} {% load i18n %} + +{% block breadcrumbs %} + +{% endblock %} + {% block panel %} -
-
-
-

{% trans "Pending Books" %}

-
- -

{% trans "Go to list" %}

-
+

{% trans "Pending Books" %}

{% if not pending.exists %} -

{% trans "You're all set!" %}

+

{% trans "You're all set!" %}

{% else %} -
+
{% for item in pending %} - {% with book=item.book %} -
-
-
- -
- {% trans "Suggested by" %} - - - {{ item.user.display_name }} - -
- -
-
- {% csrf_token %} - - - -
-
- {% csrf_token %} - - - -
-
+

+
- {% endwith %} +
+ +
+
+
+ {% csrf_token %} + + + +
+
+ {% csrf_token %} + + + +
+
+
+ {% endwith %} {% endfor %} - +
{% endif %} {% endblock %} diff --git a/bookwyrm/templates/lists/delete_list_modal.html b/bookwyrm/templates/lists/delete_list_modal.html index ee7a33935..7861e78c6 100644 --- a/bookwyrm/templates/lists/delete_list_modal.html +++ b/bookwyrm/templates/lists/delete_list_modal.html @@ -1,4 +1,4 @@ -{% extends 'components/modal.html' %} +{% extends 'components/new_modal.html' %} {% load i18n %} {% block modal-title %}{% trans "Delete this list?" %}{% endblock %} @@ -14,8 +14,9 @@ - {% trans "Cancel" as button_text %} - {% include 'snippets/toggle/toggle_button.html' with text=button_text controls_text="delete_list" controls_uid=list.id %} + {% endblock %} diff --git a/bookwyrm/templates/lists/edit_form.html b/bookwyrm/templates/lists/edit_form.html index def47f063..f136cd875 100644 --- a/bookwyrm/templates/lists/edit_form.html +++ b/bookwyrm/templates/lists/edit_form.html @@ -9,5 +9,5 @@
{% include 'lists/form.html' %}
-{% include "lists/delete_list_modal.html" with controls_text="delete_list" controls_uid=list.id %} +{% include "lists/delete_list_modal.html" with id="delete_list" %} {% endblock %} diff --git a/bookwyrm/templates/lists/form.html b/bookwyrm/templates/lists/form.html index 03e4d8cf8..c8383d9c8 100644 --- a/bookwyrm/templates/lists/form.html +++ b/bookwyrm/templates/lists/form.html @@ -114,21 +114,20 @@
-
-
-
-
- {% include 'snippets/privacy_select.html' with current=list.privacy %} -
-
- -
-
-
+
{% if list.id %} -
- {% trans "Delete list" as button_text %} - {% include 'snippets/toggle/toggle_button.html' with class="is-danger" text=button_text icon_with_text="x" controls_text="delete_list" controls_uid=list.id focus="modal_title_delete_list" %} +
+
{% endif %} +
+
+ {% include 'snippets/privacy_select.html' with current=list.privacy %} +
+
+ +
+
diff --git a/bookwyrm/templates/lists/layout.html b/bookwyrm/templates/lists/layout.html index 6e772221a..c194e2f5f 100644 --- a/bookwyrm/templates/lists/layout.html +++ b/bookwyrm/templates/lists/layout.html @@ -11,6 +11,7 @@ {% include 'lists/created_text.html' with list=list %}

+
{% if request.user == list.user %} {% trans "Edit List" as button_text %} @@ -20,6 +21,8 @@
+{% block breadcrumbs %}{% endblock %} +
{% include 'snippets/trimmed_text.html' with full=list.description %}
diff --git a/bookwyrm/templates/lists/list.html b/bookwyrm/templates/lists/list.html index aeabfaaf8..880413cdb 100644 --- a/bookwyrm/templates/lists/list.html +++ b/bookwyrm/templates/lists/list.html @@ -4,6 +4,19 @@ {% load bookwyrm_group_tags %} {% load markdown %} +{% block breadcrumbs %} + +{% endblock %} + {% block panel %} {% if request.user == list.user and pending_count %}
diff --git a/bookwyrm/templates/notifications/items/item_layout.html b/bookwyrm/templates/notifications/items/item_layout.html index 8db68dafb..506bda8dd 100644 --- a/bookwyrm/templates/notifications/items/item_layout.html +++ b/bookwyrm/templates/notifications/items/item_layout.html @@ -1,12 +1,15 @@ {% load bookwyrm_tags %} {% related_status notification as related_status %} -
+
- {% block icon %}{% endblock %} + + {% block icon %}{% endblock %} +
+
-
+ + {% if related_status %}
{% block preview %}{% endblock %} diff --git a/bookwyrm/templates/notifications/notifications_page.html b/bookwyrm/templates/notifications/notifications_page.html index dc6acbdb3..c6a2c3ed5 100644 --- a/bookwyrm/templates/notifications/notifications_page.html +++ b/bookwyrm/templates/notifications/notifications_page.html @@ -46,7 +46,3 @@ {% endif %}
{% endblock %} - -{% block scripts %} - -{% endblock %} diff --git a/bookwyrm/templates/snippets/status/headers/generatednote.html b/bookwyrm/templates/snippets/status/headers/generatednote.html index 58a65adbe..cc684a5f2 100644 --- a/bookwyrm/templates/snippets/status/headers/generatednote.html +++ b/bookwyrm/templates/snippets/status/headers/generatednote.html @@ -1,11 +1,9 @@ {% if status.content == 'wants to read' %} {% include 'snippets/status/headers/to_read.html' with book=status.mention_books.first %} -{% endif %} - -{% if status.content == 'finished reading' %} +{% elif status.content == 'finished reading' %} {% include 'snippets/status/headers/read.html' with book=status.mention_books.first %} -{% endif %} - -{% if status.content == 'started reading' %} +{% elif status.content == 'started reading' %} {% include 'snippets/status/headers/reading.html' with book=status.mention_books.first %} +{% else %} + {{ status.content }} {% endif %} diff --git a/bookwyrm/templates/snippets/status/headers/goal.html b/bookwyrm/templates/snippets/status/headers/goal.html deleted file mode 100644 index e31dec2a7..000000000 --- a/bookwyrm/templates/snippets/status/headers/goal.html +++ /dev/null @@ -1,5 +0,0 @@ -{% spaceless %} -{% load i18n %}{% load humanize %} - -{{ status.content }} -{% endspaceless %} diff --git a/bookwyrm/tests/importers/test_storygraph_import.py b/bookwyrm/tests/importers/test_storygraph_import.py index 09cf32dc1..8db459dc5 100644 --- a/bookwyrm/tests/importers/test_storygraph_import.py +++ b/bookwyrm/tests/importers/test_storygraph_import.py @@ -48,7 +48,9 @@ class StorygraphImport(TestCase): self.local_user, self.csv, False, "public" ) - import_items = models.ImportItem.objects.filter(job=import_job).all() + import_items = ( + models.ImportItem.objects.filter(job=import_job).order_by("index").all() + ) self.assertEqual(len(import_items), 2) self.assertEqual(import_items[0].index, 0) self.assertEqual(import_items[0].normalized_data["title"], "Always Coming Home") diff --git a/bookwyrm/tests/templatetags/__init__.py b/bookwyrm/tests/templatetags/__init__.py new file mode 100644 index 000000000..b6e690fd5 --- /dev/null +++ b/bookwyrm/tests/templatetags/__init__.py @@ -0,0 +1 @@ +from . import * diff --git a/bookwyrm/tests/templatetags/test_bookwyrm_tags.py b/bookwyrm/tests/templatetags/test_bookwyrm_tags.py new file mode 100644 index 000000000..04f6a5d4d --- /dev/null +++ b/bookwyrm/tests/templatetags/test_bookwyrm_tags.py @@ -0,0 +1,101 @@ +""" style fixes and lookups for templates """ +from unittest.mock import patch + +from django.test import TestCase + +from bookwyrm import models +from bookwyrm.templatetags import bookwyrm_tags + + +@patch("bookwyrm.activitystreams.add_status_task.delay") +@patch("bookwyrm.activitystreams.remove_status_task.delay") +class BookWyrmTags(TestCase): + """lotta different things here""" + + def setUp(self): + """create some filler objects""" + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ): + self.user = models.User.objects.create_user( + "mouse@example.com", + "mouse@mouse.mouse", + "mouseword", + local=True, + localname="mouse", + ) + with patch("bookwyrm.models.user.set_remote_server.delay"): + self.remote_user = models.User.objects.create_user( + "rat", + "rat@rat.rat", + "ratword", + remote_id="http://example.com/rat", + local=False, + ) + self.book = models.Edition.objects.create(title="Test Book") + + def test_get_user_rating(self, *_): + """get a user's most recent rating of a book""" + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + models.Review.objects.create(user=self.user, book=self.book, rating=3) + self.assertEqual(bookwyrm_tags.get_user_rating(self.book, self.user), 3) + + def test_get_user_rating_doesnt_exist(self, *_): + """there is no rating available""" + self.assertEqual(bookwyrm_tags.get_user_rating(self.book, self.user), 0) + + def test_get_book_description(self, *_): + """grab it from the edition or the parent""" + work = models.Work.objects.create(title="Test Work") + self.book.parent_work = work + self.book.save() + + self.assertIsNone(bookwyrm_tags.get_book_description(self.book)) + + work.description = "hi" + work.save() + self.assertEqual(bookwyrm_tags.get_book_description(self.book), "hi") + + self.book.description = "hello" + self.book.save() + self.assertEqual(bookwyrm_tags.get_book_description(self.book), "hello") + + def test_get_next_shelf(self, *_): + """self progress helper""" + self.assertEqual(bookwyrm_tags.get_next_shelf("to-read"), "reading") + self.assertEqual(bookwyrm_tags.get_next_shelf("reading"), "read") + self.assertEqual(bookwyrm_tags.get_next_shelf("read"), "complete") + self.assertEqual(bookwyrm_tags.get_next_shelf("blooooga"), "to-read") + + @patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async") + def test_load_subclass(self, *_): + """get a status' real type""" + review = models.Review.objects.create(user=self.user, book=self.book, rating=3) + status = models.Status.objects.get(id=review.id) + self.assertIsInstance(status, models.Status) + self.assertIsInstance(bookwyrm_tags.load_subclass(status), models.Review) + + quote = models.Quotation.objects.create( + user=self.user, book=self.book, content="hi" + ) + status = models.Status.objects.get(id=quote.id) + self.assertIsInstance(status, models.Status) + self.assertIsInstance(bookwyrm_tags.load_subclass(status), models.Quotation) + + comment = models.Comment.objects.create( + user=self.user, book=self.book, content="hi" + ) + status = models.Status.objects.get(id=comment.id) + self.assertIsInstance(status, models.Status) + self.assertIsInstance(bookwyrm_tags.load_subclass(status), models.Comment) + + def test_related_status(self, *_): + """gets the subclass model for a notification status""" + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + status = models.Status.objects.create(content="hi", user=self.user) + notification = models.Notification.objects.create( + user=self.user, notification_type="MENTION", related_status=status + ) + + result = bookwyrm_tags.related_status(notification) + self.assertIsInstance(result, models.Status) diff --git a/bookwyrm/tests/templatetags/test_interaction.py b/bookwyrm/tests/templatetags/test_interaction.py new file mode 100644 index 000000000..d32548e4c --- /dev/null +++ b/bookwyrm/tests/templatetags/test_interaction.py @@ -0,0 +1,53 @@ +""" style fixes and lookups for templates """ +from unittest.mock import patch + +from django.test import TestCase + +from bookwyrm import models +from bookwyrm.templatetags import interaction + + +@patch("bookwyrm.activitystreams.add_status_task.delay") +@patch("bookwyrm.activitystreams.remove_status_task.delay") +class InteractionTags(TestCase): + """lotta different things here""" + + def setUp(self): + """create some filler objects""" + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ): + self.user = models.User.objects.create_user( + "mouse@example.com", + "mouse@mouse.mouse", + "mouseword", + local=True, + localname="mouse", + ) + with patch("bookwyrm.models.user.set_remote_server.delay"): + self.remote_user = models.User.objects.create_user( + "rat", + "rat@rat.rat", + "ratword", + remote_id="http://example.com/rat", + local=False, + ) + self.book = models.Edition.objects.create(title="Test Book") + + def test_get_user_liked(self, *_): + """did a user like a status""" + status = models.Review.objects.create(user=self.remote_user, book=self.book) + + self.assertFalse(interaction.get_user_liked(self.user, status)) + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + models.Favorite.objects.create(user=self.user, status=status) + self.assertTrue(interaction.get_user_liked(self.user, status)) + + def test_get_user_boosted(self, *_): + """did a user boost a status""" + status = models.Review.objects.create(user=self.remote_user, book=self.book) + + self.assertFalse(interaction.get_user_boosted(self.user, status)) + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + models.Boost.objects.create(user=self.user, boosted_status=status) + self.assertTrue(interaction.get_user_boosted(self.user, status)) diff --git a/bookwyrm/tests/templatetags/test_markdown.py b/bookwyrm/tests/templatetags/test_markdown.py new file mode 100644 index 000000000..ba283a4f2 --- /dev/null +++ b/bookwyrm/tests/templatetags/test_markdown.py @@ -0,0 +1,15 @@ +""" style fixes and lookups for templates """ +from django.test import TestCase +from bookwyrm.templatetags import markdown + + +class MarkdownTags(TestCase): + """lotta different things here""" + + def test_get_markdown(self): + """mardown format data""" + result = markdown.get_markdown("_hi_") + self.assertEqual(result, "

hi

") + + result = markdown.get_markdown("_hi_") + self.assertEqual(result, "

hi

") diff --git a/bookwyrm/tests/templatetags/test_status_display.py b/bookwyrm/tests/templatetags/test_status_display.py new file mode 100644 index 000000000..b3eaeab87 --- /dev/null +++ b/bookwyrm/tests/templatetags/test_status_display.py @@ -0,0 +1,90 @@ +""" style fixes and lookups for templates """ +from unittest.mock import patch + +from django.test import TestCase +from django.utils import timezone + +from bookwyrm import models +from bookwyrm.templatetags import status_display + + +@patch("bookwyrm.activitystreams.add_status_task.delay") +@patch("bookwyrm.activitystreams.remove_status_task.delay") +class StatusDisplayTags(TestCase): + """lotta different things here""" + + def setUp(self): + """create some filler objects""" + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ): + self.user = models.User.objects.create_user( + "mouse@example.com", + "mouse@mouse.mouse", + "mouseword", + local=True, + localname="mouse", + ) + with patch("bookwyrm.models.user.set_remote_server.delay"): + self.remote_user = models.User.objects.create_user( + "rat", + "rat@rat.rat", + "ratword", + remote_id="http://example.com/rat", + local=False, + ) + self.book = models.Edition.objects.create(title="Test Book") + + @patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async") + def test_get_replies(self, *_): + """direct replies to a status""" + parent = models.Review.objects.create( + user=self.user, book=self.book, content="hi" + ) + first_child = models.Status.objects.create( + reply_parent=parent, user=self.user, content="hi" + ) + second_child = models.Status.objects.create( + reply_parent=parent, user=self.user, content="hi" + ) + third_child = models.Status.objects.create( + reply_parent=parent, + user=self.user, + deleted=True, + deleted_date=timezone.now(), + ) + + replies = status_display.get_replies(parent) + self.assertEqual(len(replies), 2) + self.assertTrue(first_child in replies) + self.assertTrue(second_child in replies) + self.assertFalse(third_child in replies) + + def test_get_parent(self, *_): + """get the reply parent of a status""" + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + parent = models.Review.objects.create( + user=self.user, book=self.book, content="hi" + ) + child = models.Status.objects.create( + reply_parent=parent, user=self.user, content="hi" + ) + + result = status_display.get_parent(child) + self.assertEqual(result, parent) + self.assertIsInstance(result, models.Review) + + def test_get_boosted(self, *_): + """load a boosted status""" + with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): + status = models.Review.objects.create(user=self.remote_user, book=self.book) + boost = models.Boost.objects.create(user=self.user, boosted_status=status) + boosted = status_display.get_boosted(boost) + self.assertIsInstance(boosted, models.Review) + self.assertEqual(boosted, status) + + def test_get_mentions(self, *_): + """list of people mentioned""" + status = models.Status.objects.create(content="hi", user=self.remote_user) + result = status_display.get_mentions(status, self.user) + self.assertEqual(result, "@rat@example.com ") diff --git a/bookwyrm/tests/templatetags/test_utilities.py b/bookwyrm/tests/templatetags/test_utilities.py new file mode 100644 index 000000000..f40d24dcf --- /dev/null +++ b/bookwyrm/tests/templatetags/test_utilities.py @@ -0,0 +1,52 @@ +""" style fixes and lookups for templates """ +import re +from unittest.mock import patch + +from django.test import TestCase + +from bookwyrm import models +from bookwyrm.templatetags import utilities + + +@patch("bookwyrm.activitystreams.add_status_task.delay") +@patch("bookwyrm.activitystreams.remove_status_task.delay") +class UtilitiesTags(TestCase): + """lotta different things here""" + + def setUp(self): + """create some filler objects""" + with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( + "bookwyrm.activitystreams.populate_stream_task.delay" + ): + self.user = models.User.objects.create_user( + "mouse@example.com", + "mouse@mouse.mouse", + "mouseword", + local=True, + localname="mouse", + ) + with patch("bookwyrm.models.user.set_remote_server.delay"): + self.remote_user = models.User.objects.create_user( + "rat", + "rat@rat.rat", + "ratword", + remote_id="http://example.com/rat", + local=False, + ) + self.book = models.Edition.objects.create(title="Test Book") + + def test_get_user_identifer_local(self, *_): + """fall back to the simplest uid available""" + self.assertNotEqual(self.user.username, self.user.localname) + self.assertEqual(utilities.get_user_identifier(self.user), "mouse") + + def test_get_user_identifer_remote(self, *_): + """for a remote user, should be their full username""" + self.assertEqual( + utilities.get_user_identifier(self.remote_user), "rat@example.com" + ) + + def test_get_uuid(self, *_): + """uuid functionality""" + uuid = utilities.get_uuid("hi") + self.assertTrue(re.match(r"hi[A-Za-z0-9\-]", uuid)) diff --git a/bookwyrm/tests/test_templatetags.py b/bookwyrm/tests/test_templatetags.py deleted file mode 100644 index ed4466f58..000000000 --- a/bookwyrm/tests/test_templatetags.py +++ /dev/null @@ -1,183 +0,0 @@ -""" style fixes and lookups for templates """ -import re -from unittest.mock import patch - -from django.test import TestCase -from django.utils import timezone - -from bookwyrm import models -from bookwyrm.templatetags import ( - bookwyrm_tags, - interaction, - markdown, - status_display, - utilities, -) - - -@patch("bookwyrm.activitystreams.add_status_task.delay") -@patch("bookwyrm.activitystreams.remove_status_task.delay") -class TemplateTags(TestCase): - """lotta different things here""" - - def setUp(self): - """create some filler objects""" - with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch( - "bookwyrm.activitystreams.populate_stream_task.delay" - ): - self.user = models.User.objects.create_user( - "mouse@example.com", - "mouse@mouse.mouse", - "mouseword", - local=True, - localname="mouse", - ) - with patch("bookwyrm.models.user.set_remote_server.delay"): - self.remote_user = models.User.objects.create_user( - "rat", - "rat@rat.rat", - "ratword", - remote_id="http://example.com/rat", - local=False, - ) - self.book = models.Edition.objects.create(title="Test Book") - - def test_get_user_rating(self, *_): - """get a user's most recent rating of a book""" - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - models.Review.objects.create(user=self.user, book=self.book, rating=3) - self.assertEqual(bookwyrm_tags.get_user_rating(self.book, self.user), 3) - - def test_get_user_rating_doesnt_exist(self, *_): - """there is no rating available""" - self.assertEqual(bookwyrm_tags.get_user_rating(self.book, self.user), 0) - - def test_get_user_identifer_local(self, *_): - """fall back to the simplest uid available""" - self.assertNotEqual(self.user.username, self.user.localname) - self.assertEqual(utilities.get_user_identifier(self.user), "mouse") - - def test_get_user_identifer_remote(self, *_): - """for a remote user, should be their full username""" - self.assertEqual( - utilities.get_user_identifier(self.remote_user), "rat@example.com" - ) - - @patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async") - def test_get_replies(self, *_): - """direct replies to a status""" - parent = models.Review.objects.create( - user=self.user, book=self.book, content="hi" - ) - first_child = models.Status.objects.create( - reply_parent=parent, user=self.user, content="hi" - ) - second_child = models.Status.objects.create( - reply_parent=parent, user=self.user, content="hi" - ) - third_child = models.Status.objects.create( - reply_parent=parent, - user=self.user, - deleted=True, - deleted_date=timezone.now(), - ) - - replies = status_display.get_replies(parent) - self.assertEqual(len(replies), 2) - self.assertTrue(first_child in replies) - self.assertTrue(second_child in replies) - self.assertFalse(third_child in replies) - - def test_get_parent(self, *_): - """get the reply parent of a status""" - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - parent = models.Review.objects.create( - user=self.user, book=self.book, content="hi" - ) - child = models.Status.objects.create( - reply_parent=parent, user=self.user, content="hi" - ) - - result = status_display.get_parent(child) - self.assertEqual(result, parent) - self.assertIsInstance(result, models.Review) - - def test_get_user_liked(self, *_): - """did a user like a status""" - status = models.Review.objects.create(user=self.remote_user, book=self.book) - - self.assertFalse(interaction.get_user_liked(self.user, status)) - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - models.Favorite.objects.create(user=self.user, status=status) - self.assertTrue(interaction.get_user_liked(self.user, status)) - - def test_get_user_boosted(self, *_): - """did a user boost a status""" - status = models.Review.objects.create(user=self.remote_user, book=self.book) - - self.assertFalse(interaction.get_user_boosted(self.user, status)) - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - models.Boost.objects.create(user=self.user, boosted_status=status) - self.assertTrue(interaction.get_user_boosted(self.user, status)) - - def test_get_boosted(self, *_): - """load a boosted status""" - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - status = models.Review.objects.create(user=self.remote_user, book=self.book) - boost = models.Boost.objects.create(user=self.user, boosted_status=status) - boosted = status_display.get_boosted(boost) - self.assertIsInstance(boosted, models.Review) - self.assertEqual(boosted, status) - - def test_get_book_description(self, *_): - """grab it from the edition or the parent""" - work = models.Work.objects.create(title="Test Work") - self.book.parent_work = work - self.book.save() - - self.assertIsNone(bookwyrm_tags.get_book_description(self.book)) - - work.description = "hi" - work.save() - self.assertEqual(bookwyrm_tags.get_book_description(self.book), "hi") - - self.book.description = "hello" - self.book.save() - self.assertEqual(bookwyrm_tags.get_book_description(self.book), "hello") - - def test_get_uuid(self, *_): - """uuid functionality""" - uuid = utilities.get_uuid("hi") - self.assertTrue(re.match(r"hi[A-Za-z0-9\-]", uuid)) - - def test_get_markdown(self, *_): - """mardown format data""" - result = markdown.get_markdown("_hi_") - self.assertEqual(result, "

hi

") - - result = markdown.get_markdown("_hi_") - self.assertEqual(result, "

hi

") - - def test_get_mentions(self, *_): - """list of people mentioned""" - status = models.Status.objects.create(content="hi", user=self.remote_user) - result = status_display.get_mentions(status, self.user) - self.assertEqual(result, "@rat@example.com ") - - def test_related_status(self, *_): - """gets the subclass model for a notification status""" - with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - status = models.Status.objects.create(content="hi", user=self.user) - notification = models.Notification.objects.create( - user=self.user, notification_type="MENTION", related_status=status - ) - - result = bookwyrm_tags.related_status(notification) - self.assertIsInstance(result, models.Status) - - def test_get_next_shelf(self, *_): - """self progress helper""" - self.assertEqual(bookwyrm_tags.get_next_shelf("to-read"), "reading") - self.assertEqual(bookwyrm_tags.get_next_shelf("reading"), "read") - self.assertEqual(bookwyrm_tags.get_next_shelf("read"), "complete") - self.assertEqual(bookwyrm_tags.get_next_shelf("blooooga"), "to-read") diff --git a/bookwyrm/tests/views/test_list.py b/bookwyrm/tests/views/test_list.py index 3d9b6d241..dc764326f 100644 --- a/bookwyrm/tests/views/test_list.py +++ b/bookwyrm/tests/views/test_list.py @@ -347,9 +347,12 @@ class ListViews(TestCase): """there are so many views, this just makes sure it LOADS""" view = views.Curate.as_view() with patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"): - models.List.objects.create(name="Public list", user=self.local_user) - models.List.objects.create( - name="Private list", privacy="direct", user=self.local_user + models.ListItem.objects.create( + user=self.local_user, + book_list=self.list, + book=self.book, + approved=False, + order=1, ) request = self.factory.get("") request.user = self.local_user diff --git a/bookwyrm/views/list.py b/bookwyrm/views/list.py index b29a5b133..e04f6df4d 100644 --- a/bookwyrm/views/list.py +++ b/bookwyrm/views/list.py @@ -264,10 +264,10 @@ class EmbedList(View): return TemplateResponse(request, "lists/embed-list.html", data) +@method_decorator(login_required, name="dispatch") class Curate(View): """approve or discard list suggestsions""" - @method_decorator(login_required, name="dispatch") def get(self, request, list_id): """display a pending list""" book_list = get_object_or_404(models.List, id=list_id) @@ -280,8 +280,6 @@ class Curate(View): } return TemplateResponse(request, "lists/curate.html", data) - @method_decorator(login_required, name="dispatch") - # pylint: disable=unused-argument def post(self, request, list_id): """edit a book_list""" book_list = get_object_or_404(models.List, id=list_id) diff --git a/locale/de_DE/LC_MESSAGES/django.mo b/locale/de_DE/LC_MESSAGES/django.mo index b86acb87b..7cf62013b 100644 Binary files a/locale/de_DE/LC_MESSAGES/django.mo and b/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/locale/de_DE/LC_MESSAGES/django.po b/locale/de_DE/LC_MESSAGES/django.po index 1b06c1712..a4a2d55f4 100644 --- a/locale/de_DE/LC_MESSAGES/django.po +++ b/locale/de_DE/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-28 15:00+0000\n" -"PO-Revision-Date: 2021-12-28 16:03\n" +"POT-Creation-Date: 2021-12-28 20:12+0000\n" +"PO-Revision-Date: 2021-12-28 21:17\n" "Last-Translator: Mouse Reeve \n" "Language-Team: German\n" "Language: de\n" @@ -263,76 +263,78 @@ msgstr "" msgid "Share this page" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:61 +#: bookwyrm/templates/annual_summary/layout.html:67 msgid "Copy address" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:61 +#: bookwyrm/templates/annual_summary/layout.html:68 #: bookwyrm/templates/lists/list.html:194 msgid "Copied!" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:69 +#: bookwyrm/templates/annual_summary/layout.html:77 msgid "Sharing status: public with key" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:70 +#: bookwyrm/templates/annual_summary/layout.html:78 msgid "The page can be seen by anyone with the complete address." msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:75 +#: bookwyrm/templates/annual_summary/layout.html:83 msgid "Make page private" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:81 +#: bookwyrm/templates/annual_summary/layout.html:89 msgid "Sharing status: private" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:82 +#: bookwyrm/templates/annual_summary/layout.html:90 msgid "The page is private, only you can see it." msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:87 +#: bookwyrm/templates/annual_summary/layout.html:95 msgid "Make page public" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:91 +#: 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 "" -#: bookwyrm/templates/annual_summary/layout.html:104 +#: bookwyrm/templates/annual_summary/layout.html:112 #, python-format msgid "Sadly %(display_name)s didn’t finish any book in %(year)s" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:110 +#: bookwyrm/templates/annual_summary/layout.html:118 #, python-format -msgid "In %(year)s, %(display_name)s read %(books_total)s books
for a total of %(pages_total)s pages!" -msgstr "" +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] "" +msgstr[1] "" -#: bookwyrm/templates/annual_summary/layout.html:112 +#: bookwyrm/templates/annual_summary/layout.html:124 msgid "That’s great!" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:115 +#: bookwyrm/templates/annual_summary/layout.html:127 #, python-format msgid "That makes an average of %(pages)s pages per book." msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:120 +#: bookwyrm/templates/annual_summary/layout.html:132 #, python-format msgid "(%(no_page_number)s book doesn’t have pages)" msgid_plural "(%(no_page_number)s books don’t have pages)" msgstr[0] "" msgstr[1] "" -#: bookwyrm/templates/annual_summary/layout.html:136 +#: bookwyrm/templates/annual_summary/layout.html:148 msgid "Their shortest read this year…" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:143 -#: bookwyrm/templates/annual_summary/layout.html:164 -#: bookwyrm/templates/annual_summary/layout.html:204 +#: bookwyrm/templates/annual_summary/layout.html:155 +#: bookwyrm/templates/annual_summary/layout.html:176 +#: bookwyrm/templates/annual_summary/layout.html:220 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/landing/large-book.html:25 @@ -340,33 +342,35 @@ msgstr "" msgid "by" msgstr "von" -#: bookwyrm/templates/annual_summary/layout.html:149 -#: bookwyrm/templates/annual_summary/layout.html:170 +#: bookwyrm/templates/annual_summary/layout.html:161 +#: bookwyrm/templates/annual_summary/layout.html:182 #, python-format msgid "%(pages)s pages" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:157 +#: bookwyrm/templates/annual_summary/layout.html:169 msgid "…and the longest" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:187 +#: bookwyrm/templates/annual_summary/layout.html:199 #, python-format -msgid "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s" -msgstr "" +msgid "%(display_name)s left %(ratings_total)s rating,
their average rating is %(rating_average)s" +msgid_plural "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s" +msgstr[0] "" +msgstr[1] "" -#: bookwyrm/templates/annual_summary/layout.html:197 +#: bookwyrm/templates/annual_summary/layout.html:213 msgid "Their best rated review" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:210 +#: bookwyrm/templates/annual_summary/layout.html:226 #, python-format msgid "Their rating: %(rating)s" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:227 +#: bookwyrm/templates/annual_summary/layout.html:243 #, python-format -msgid "All the books %(display_name)s read in 2021" +msgid "All the books %(display_name)s read in %(year)s" msgstr "" #: bookwyrm/templates/author/author.html:18 diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index 8de2afe9c..ccc82bf8e 100644 --- a/locale/en_US/LC_MESSAGES/django.po +++ b/locale/en_US/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-28 20:12+0000\n" +"POT-Creation-Date: 2021-12-29 21:32+0000\n" "PO-Revision-Date: 2021-02-28 17:19-0800\n" "Last-Translator: Mouse Reeve \n" "Language-Team: English \n" @@ -61,7 +61,7 @@ msgstr "" msgid "Rating" msgstr "" -#: bookwyrm/forms.py:473 bookwyrm/templates/lists/list.html:110 +#: bookwyrm/forms.py:473 bookwyrm/templates/lists/list.html:121 msgid "Sort By" msgstr "" @@ -145,7 +145,7 @@ msgstr "" msgid "%(value)s is not a valid username" msgstr "" -#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:173 +#: bookwyrm/models/fields.py:183 bookwyrm/templates/layout.html:170 #: bookwyrm/templates/ostatus/error.html:29 msgid "username" msgstr "" @@ -269,7 +269,7 @@ msgid "Copy address" msgstr "" #: bookwyrm/templates/annual_summary/layout.html:68 -#: bookwyrm/templates/lists/list.html:194 +#: bookwyrm/templates/lists/list.html:217 msgid "Copied!" msgstr "" @@ -520,7 +520,7 @@ msgstr "" #: bookwyrm/templates/book/readthrough.html:76 #: bookwyrm/templates/groups/form.html:24 #: bookwyrm/templates/lists/bookmark_button.html:15 -#: bookwyrm/templates/lists/form.html:75 +#: bookwyrm/templates/lists/form.html:124 #: bookwyrm/templates/preferences/edit_user.html:124 #: bookwyrm/templates/settings/announcements/announcement_form.html:76 #: bookwyrm/templates/settings/federation/edit_instance.html:82 @@ -642,7 +642,7 @@ msgstr "" msgid "Places" msgstr "" -#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:77 +#: bookwyrm/templates/book/book.html:320 bookwyrm/templates/layout.html:74 #: bookwyrm/templates/lists/lists.html:5 bookwyrm/templates/lists/lists.html:12 #: bookwyrm/templates/search/layout.html:25 #: bookwyrm/templates/search/layout.html:50 @@ -656,7 +656,7 @@ msgstr "" #: bookwyrm/templates/book/book.html:341 #: bookwyrm/templates/book/cover_modal.html:31 -#: bookwyrm/templates/lists/list.html:182 +#: bookwyrm/templates/lists/list.html:195 #: bookwyrm/templates/settings/email_blocklist/domain_form.html:24 #: bookwyrm/templates/settings/ip_blocklist/ip_address_form.html:31 msgid "Add" @@ -940,8 +940,8 @@ msgstr "" #: bookwyrm/templates/components/modal.html:11 #: bookwyrm/templates/components/tooltip.html:7 #: bookwyrm/templates/feed/layout.html:71 -#: bookwyrm/templates/get_started/layout.html:20 -#: bookwyrm/templates/get_started/layout.html:53 +#: bookwyrm/templates/get_started/layout.html:25 +#: bookwyrm/templates/get_started/layout.html:58 #: bookwyrm/templates/search/book.html:49 #: bookwyrm/templates/snippets/announcement.html:18 msgid "Close" @@ -1017,7 +1017,7 @@ msgstr "" #: bookwyrm/templates/directory/directory.html:4 #: bookwyrm/templates/directory/directory.html:9 -#: bookwyrm/templates/layout.html:103 +#: bookwyrm/templates/layout.html:100 msgid "Directory" msgstr "" @@ -1137,7 +1137,7 @@ msgstr "" #: bookwyrm/templates/discover/discover.html:4 #: bookwyrm/templates/discover/discover.html:10 -#: bookwyrm/templates/layout.html:80 +#: bookwyrm/templates/layout.html:77 msgid "Discover" msgstr "" @@ -1260,12 +1260,12 @@ msgid "%(site_name)s home page" msgstr "" #: bookwyrm/templates/embed-layout.html:34 -#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:232 +#: bookwyrm/templates/landing/about.html:7 bookwyrm/templates/layout.html:229 #, python-format msgid "About %(site_name)s" msgstr "" -#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:236 +#: bookwyrm/templates/embed-layout.html:40 bookwyrm/templates/layout.html:233 msgid "Contact site admin" msgstr "" @@ -1279,7 +1279,7 @@ msgid "Direct Messages with
%(username)s" msgstr "" #: bookwyrm/templates/feed/direct_messages.html:10 -#: bookwyrm/templates/layout.html:113 +#: bookwyrm/templates/layout.html:110 msgid "Direct Messages" msgstr "" @@ -1332,7 +1332,7 @@ msgstr "" msgid "Updates" msgstr "" -#: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:108 +#: bookwyrm/templates/feed/layout.html:12 bookwyrm/templates/layout.html:105 msgid "Your Books" msgstr "" @@ -1409,7 +1409,7 @@ msgid "What are you reading?" msgstr "" #: bookwyrm/templates/get_started/books.html:9 -#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:138 +#: bookwyrm/templates/layout.html:47 bookwyrm/templates/lists/list.html:149 msgid "Search for a book" msgstr "" @@ -1429,7 +1429,7 @@ msgstr "" #: bookwyrm/templates/get_started/users.html:19 #: bookwyrm/templates/groups/group.html:19 #: bookwyrm/templates/groups/group.html:20 bookwyrm/templates/layout.html:53 -#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:142 +#: bookwyrm/templates/layout.html:54 bookwyrm/templates/lists/list.html:153 #: bookwyrm/templates/search/layout.html:4 #: bookwyrm/templates/search/layout.html:9 msgid "Search" @@ -1445,12 +1445,12 @@ msgid "Popular on %(site_name)s" msgstr "" #: bookwyrm/templates/get_started/books.html:58 -#: bookwyrm/templates/lists/list.html:155 +#: bookwyrm/templates/lists/list.html:166 msgid "No books found" msgstr "" #: bookwyrm/templates/get_started/books.html:63 -#: bookwyrm/templates/get_started/profile.html:51 +#: bookwyrm/templates/get_started/profile.html:64 msgid "Save & continue" msgstr "" @@ -1459,33 +1459,33 @@ msgstr "" msgid "Welcome" msgstr "" -#: bookwyrm/templates/get_started/layout.html:15 +#: bookwyrm/templates/get_started/layout.html:20 #, python-format msgid "Welcome to %(site_name)s!" msgstr "" -#: bookwyrm/templates/get_started/layout.html:17 +#: bookwyrm/templates/get_started/layout.html:22 msgid "These are some first steps to get you started." msgstr "" -#: bookwyrm/templates/get_started/layout.html:31 +#: bookwyrm/templates/get_started/layout.html:36 #: bookwyrm/templates/get_started/profile.html:6 msgid "Create your profile" msgstr "" -#: bookwyrm/templates/get_started/layout.html:35 +#: bookwyrm/templates/get_started/layout.html:40 msgid "Add books" msgstr "" -#: bookwyrm/templates/get_started/layout.html:39 +#: bookwyrm/templates/get_started/layout.html:44 msgid "Find friends" msgstr "" -#: bookwyrm/templates/get_started/layout.html:45 +#: bookwyrm/templates/get_started/layout.html:50 msgid "Skip this step" msgstr "" -#: bookwyrm/templates/get_started/layout.html:49 +#: bookwyrm/templates/get_started/layout.html:54 msgid "Finish" msgstr "" @@ -1494,29 +1494,29 @@ msgstr "" msgid "Display name:" msgstr "" -#: bookwyrm/templates/get_started/profile.html:21 +#: bookwyrm/templates/get_started/profile.html:29 #: bookwyrm/templates/preferences/edit_user.html:47 msgid "Summary:" msgstr "" -#: bookwyrm/templates/get_started/profile.html:22 +#: bookwyrm/templates/get_started/profile.html:34 msgid "A little bit about you" msgstr "" -#: bookwyrm/templates/get_started/profile.html:30 +#: bookwyrm/templates/get_started/profile.html:43 #: bookwyrm/templates/preferences/edit_user.html:27 msgid "Avatar:" msgstr "" -#: bookwyrm/templates/get_started/profile.html:39 +#: bookwyrm/templates/get_started/profile.html:52 msgid "Manually approve followers:" msgstr "" -#: bookwyrm/templates/get_started/profile.html:45 +#: bookwyrm/templates/get_started/profile.html:58 msgid "Show this account in suggested users:" msgstr "" -#: bookwyrm/templates/get_started/profile.html:49 +#: bookwyrm/templates/get_started/profile.html:62 msgid "Your account will show up in the directory, and may be recommended to other BookWyrm users." msgstr "" @@ -1908,7 +1908,7 @@ msgid "Login" msgstr "" #: bookwyrm/templates/landing/login.html:7 -#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:181 +#: bookwyrm/templates/landing/login.html:36 bookwyrm/templates/layout.html:178 #: bookwyrm/templates/ostatus/error.html:37 msgid "Log in" msgstr "" @@ -1917,7 +1917,7 @@ msgstr "" msgid "Success! Email address confirmed." msgstr "" -#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:172 +#: bookwyrm/templates/landing/login.html:21 bookwyrm/templates/layout.html:169 #: bookwyrm/templates/ostatus/error.html:28 #: bookwyrm/templates/snippets/register_form.html:4 msgid "Username:" @@ -1925,12 +1925,12 @@ msgstr "" #: bookwyrm/templates/landing/login.html:27 #: bookwyrm/templates/landing/password_reset.html:26 -#: bookwyrm/templates/layout.html:176 bookwyrm/templates/ostatus/error.html:32 +#: bookwyrm/templates/layout.html:173 bookwyrm/templates/ostatus/error.html:32 #: bookwyrm/templates/snippets/register_form.html:20 msgid "Password:" msgstr "" -#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:178 +#: bookwyrm/templates/landing/login.html:39 bookwyrm/templates/layout.html:175 #: bookwyrm/templates/ostatus/error.html:34 msgid "Forgot your password?" msgstr "" @@ -1962,19 +1962,19 @@ msgstr "" msgid "Search for a book, user, or list" msgstr "" -#: bookwyrm/templates/layout.html:63 bookwyrm/templates/layout.html:64 +#: bookwyrm/templates/layout.html:63 msgid "Main navigation menu" msgstr "" -#: bookwyrm/templates/layout.html:74 +#: bookwyrm/templates/layout.html:71 msgid "Feed" msgstr "" -#: bookwyrm/templates/layout.html:118 +#: bookwyrm/templates/layout.html:115 msgid "Settings" msgstr "" -#: bookwyrm/templates/layout.html:127 +#: bookwyrm/templates/layout.html:124 #: bookwyrm/templates/settings/invites/manage_invite_requests.html:15 #: bookwyrm/templates/settings/invites/manage_invites.html:3 #: bookwyrm/templates/settings/invites/manage_invites.html:15 @@ -1982,46 +1982,46 @@ msgstr "" msgid "Invites" msgstr "" -#: bookwyrm/templates/layout.html:134 +#: bookwyrm/templates/layout.html:131 msgid "Admin" msgstr "" -#: bookwyrm/templates/layout.html:141 +#: bookwyrm/templates/layout.html:138 msgid "Log out" msgstr "" -#: bookwyrm/templates/layout.html:149 bookwyrm/templates/layout.html:150 +#: bookwyrm/templates/layout.html:146 bookwyrm/templates/layout.html:147 #: bookwyrm/templates/notifications/notifications_page.html:5 #: bookwyrm/templates/notifications/notifications_page.html:10 msgid "Notifications" msgstr "" -#: bookwyrm/templates/layout.html:177 bookwyrm/templates/ostatus/error.html:33 +#: bookwyrm/templates/layout.html:174 bookwyrm/templates/ostatus/error.html:33 msgid "password" msgstr "" -#: bookwyrm/templates/layout.html:189 +#: bookwyrm/templates/layout.html:186 msgid "Join" msgstr "" -#: bookwyrm/templates/layout.html:223 +#: bookwyrm/templates/layout.html:220 msgid "Successfully posted status" msgstr "" -#: bookwyrm/templates/layout.html:224 +#: bookwyrm/templates/layout.html:221 msgid "Error posting status" msgstr "" -#: bookwyrm/templates/layout.html:240 +#: bookwyrm/templates/layout.html:237 msgid "Documentation" msgstr "" -#: bookwyrm/templates/layout.html:247 +#: bookwyrm/templates/layout.html:244 #, python-format msgid "Support %(site_name)s on %(support_title)s" msgstr "" -#: bookwyrm/templates/layout.html:251 +#: bookwyrm/templates/layout.html:248 msgid "BookWyrm's source code is freely available. You can contribute or report issues on GitHub." msgstr "" @@ -2097,56 +2097,56 @@ msgstr "" msgid "List curation:" msgstr "" -#: bookwyrm/templates/lists/form.html:22 +#: bookwyrm/templates/lists/form.html:31 msgid "Closed" msgstr "" -#: bookwyrm/templates/lists/form.html:23 +#: bookwyrm/templates/lists/form.html:34 msgid "Only you can add and remove books to this list" msgstr "" -#: bookwyrm/templates/lists/form.html:27 +#: bookwyrm/templates/lists/form.html:48 msgid "Curated" msgstr "" -#: bookwyrm/templates/lists/form.html:28 +#: bookwyrm/templates/lists/form.html:51 msgid "Anyone can suggest books, subject to your approval" msgstr "" -#: bookwyrm/templates/lists/form.html:32 +#: bookwyrm/templates/lists/form.html:65 msgctxt "curation type" msgid "Open" msgstr "" -#: bookwyrm/templates/lists/form.html:33 +#: bookwyrm/templates/lists/form.html:68 msgid "Anyone can add books to this list" msgstr "" -#: bookwyrm/templates/lists/form.html:37 +#: bookwyrm/templates/lists/form.html:82 msgid "Group" msgstr "" -#: bookwyrm/templates/lists/form.html:38 +#: bookwyrm/templates/lists/form.html:85 msgid "Group members can add to and remove from this list" msgstr "" -#: bookwyrm/templates/lists/form.html:41 +#: bookwyrm/templates/lists/form.html:90 msgid "Select Group" msgstr "" -#: bookwyrm/templates/lists/form.html:45 +#: bookwyrm/templates/lists/form.html:94 msgid "Select a group" msgstr "" -#: bookwyrm/templates/lists/form.html:56 +#: bookwyrm/templates/lists/form.html:105 msgid "You don't have any Groups yet!" msgstr "" -#: bookwyrm/templates/lists/form.html:58 +#: bookwyrm/templates/lists/form.html:107 msgid "Create a Group" msgstr "" -#: bookwyrm/templates/lists/form.html:81 +#: bookwyrm/templates/lists/form.html:130 msgid "Delete list" msgstr "" @@ -2163,62 +2163,62 @@ msgstr "" msgid "Added by %(username)s" msgstr "" -#: bookwyrm/templates/lists/list.html:76 +#: bookwyrm/templates/lists/list.html:82 msgid "List position" msgstr "" -#: bookwyrm/templates/lists/list.html:82 +#: bookwyrm/templates/lists/list.html:88 msgid "Set" msgstr "" -#: bookwyrm/templates/lists/list.html:92 +#: bookwyrm/templates/lists/list.html:103 #: bookwyrm/templates/snippets/remove_from_group_button.html:19 msgid "Remove" msgstr "" -#: bookwyrm/templates/lists/list.html:106 -#: bookwyrm/templates/lists/list.html:123 +#: bookwyrm/templates/lists/list.html:117 +#: bookwyrm/templates/lists/list.html:134 msgid "Sort List" msgstr "" -#: bookwyrm/templates/lists/list.html:116 +#: bookwyrm/templates/lists/list.html:127 msgid "Direction" msgstr "" -#: bookwyrm/templates/lists/list.html:130 +#: bookwyrm/templates/lists/list.html:141 msgid "Add Books" msgstr "" -#: bookwyrm/templates/lists/list.html:132 +#: bookwyrm/templates/lists/list.html:143 msgid "Suggest Books" msgstr "" -#: bookwyrm/templates/lists/list.html:143 +#: bookwyrm/templates/lists/list.html:154 msgid "search" msgstr "" -#: bookwyrm/templates/lists/list.html:149 +#: bookwyrm/templates/lists/list.html:160 msgid "Clear search" msgstr "" -#: bookwyrm/templates/lists/list.html:154 +#: bookwyrm/templates/lists/list.html:165 #, python-format msgid "No books found matching the query \"%(query)s\"" msgstr "" -#: bookwyrm/templates/lists/list.html:182 +#: bookwyrm/templates/lists/list.html:197 msgid "Suggest" msgstr "" -#: bookwyrm/templates/lists/list.html:191 +#: bookwyrm/templates/lists/list.html:208 msgid "Embed this list on a website" msgstr "" -#: bookwyrm/templates/lists/list.html:194 +#: bookwyrm/templates/lists/list.html:216 msgid "Copy embed code" msgstr "" -#: bookwyrm/templates/lists/list.html:194 +#: bookwyrm/templates/lists/list.html:218 #, python-format msgid "%(list_name)s, a list by %(owner)s on %(site_name)s" msgstr "" @@ -2697,7 +2697,7 @@ msgstr "" msgid "Edit Announcement" msgstr "" -#: bookwyrm/templates/settings/announcements/announcement.html:35 +#: bookwyrm/templates/settings/announcements/announcement.html:34 msgid "Visible:" msgstr "" @@ -2709,19 +2709,19 @@ msgstr "" msgid "False" msgstr "" -#: bookwyrm/templates/settings/announcements/announcement.html:47 +#: bookwyrm/templates/settings/announcements/announcement.html:46 #: bookwyrm/templates/settings/announcements/announcement_form.html:44 #: bookwyrm/templates/settings/dashboard/dashboard.html:71 msgid "Start date:" msgstr "" -#: bookwyrm/templates/settings/announcements/announcement.html:54 +#: bookwyrm/templates/settings/announcements/announcement.html:51 #: bookwyrm/templates/settings/announcements/announcement_form.html:54 #: bookwyrm/templates/settings/dashboard/dashboard.html:77 msgid "End date:" msgstr "" -#: bookwyrm/templates/settings/announcements/announcement.html:60 +#: bookwyrm/templates/settings/announcements/announcement.html:55 #: bookwyrm/templates/settings/announcements/announcement_form.html:64 msgid "Active:" msgstr "" @@ -4284,7 +4284,7 @@ msgstr "" msgid "Not a valid csv file" msgstr "" -#: bookwyrm/views/landing/login.py:69 +#: bookwyrm/views/landing/login.py:70 msgid "Username or password are incorrect" msgstr "" diff --git a/locale/es_ES/LC_MESSAGES/django.mo b/locale/es_ES/LC_MESSAGES/django.mo index 1169b92fe..dcbbaf95e 100644 Binary files a/locale/es_ES/LC_MESSAGES/django.mo and b/locale/es_ES/LC_MESSAGES/django.mo differ diff --git a/locale/es_ES/LC_MESSAGES/django.po b/locale/es_ES/LC_MESSAGES/django.po index a59ef61ae..d5b073536 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: 2021-12-28 15:00+0000\n" -"PO-Revision-Date: 2021-12-28 17:59\n" +"POT-Creation-Date: 2021-12-28 20:12+0000\n" +"PO-Revision-Date: 2021-12-28 22:55\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Spanish\n" "Language: es\n" @@ -263,76 +263,78 @@ msgstr "El año de lectura de %(display_name)s" msgid "Share this page" msgstr "Compartir esta página" -#: bookwyrm/templates/annual_summary/layout.html:61 +#: bookwyrm/templates/annual_summary/layout.html:67 msgid "Copy address" msgstr "Copiar dirección" -#: bookwyrm/templates/annual_summary/layout.html:61 +#: bookwyrm/templates/annual_summary/layout.html:68 #: bookwyrm/templates/lists/list.html:194 msgid "Copied!" msgstr "¡Copiado!" -#: bookwyrm/templates/annual_summary/layout.html:69 +#: bookwyrm/templates/annual_summary/layout.html:77 msgid "Sharing status: public with key" msgstr "Nivel de compartido: público con llave" -#: bookwyrm/templates/annual_summary/layout.html:70 +#: bookwyrm/templates/annual_summary/layout.html:78 msgid "The page can be seen by anyone with the complete address." msgstr "La página puede ser vista por cualquier persona que tenga la dirección completa." -#: bookwyrm/templates/annual_summary/layout.html:75 +#: bookwyrm/templates/annual_summary/layout.html:83 msgid "Make page private" msgstr "Hacer privada la página" -#: bookwyrm/templates/annual_summary/layout.html:81 +#: bookwyrm/templates/annual_summary/layout.html:89 msgid "Sharing status: private" msgstr "Nivel de compartido: privado" -#: bookwyrm/templates/annual_summary/layout.html:82 +#: bookwyrm/templates/annual_summary/layout.html:90 msgid "The page is private, only you can see it." msgstr "La página es privada, solo tú puedes verla." -#: bookwyrm/templates/annual_summary/layout.html:87 +#: bookwyrm/templates/annual_summary/layout.html:95 msgid "Make page public" msgstr "Hacer pública la página" -#: bookwyrm/templates/annual_summary/layout.html:91 +#: 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 "Una vez que haces privada tu página, la clave antigua ya no dará acceso a la página. Si la página se vuelve a hacer pública se creará una nueva clave." -#: bookwyrm/templates/annual_summary/layout.html:104 +#: bookwyrm/templates/annual_summary/layout.html:112 #, python-format msgid "Sadly %(display_name)s didn’t finish any book in %(year)s" msgstr "Lamentablemente, %(display_name)s no terminó ningún libro en %(year)s" -#: bookwyrm/templates/annual_summary/layout.html:110 +#: bookwyrm/templates/annual_summary/layout.html:118 #, python-format -msgid "In %(year)s, %(display_name)s read %(books_total)s books
for a total of %(pages_total)s pages!" -msgstr "En %(year)s %(display_name)s ha leĂ­do %(books_total)s libros
¡haciendo un total de %(pages_total)s páginas!" +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] "En %(year)s %(display_name)s ha leĂ­do %(books_total)s libro
¡haciendo un total de %(pages_total)s páginas!" +msgstr[1] "En %(year)s %(display_name)s ha leído %(books_total)s libros
¡haciendo un total de %(pages_total)s páginas!" -#: bookwyrm/templates/annual_summary/layout.html:112 +#: bookwyrm/templates/annual_summary/layout.html:124 msgid "That’s great!" msgstr "¡Eso es genial!" -#: bookwyrm/templates/annual_summary/layout.html:115 +#: bookwyrm/templates/annual_summary/layout.html:127 #, python-format msgid "That makes an average of %(pages)s pages per book." msgstr "Eso hace un promedio de %(pages)s páginas por libro." -#: bookwyrm/templates/annual_summary/layout.html:120 +#: bookwyrm/templates/annual_summary/layout.html:132 #, python-format msgid "(%(no_page_number)s book doesn’t have pages)" msgid_plural "(%(no_page_number)s books don’t have pages)" msgstr[0] "(%(no_page_number)s libro no tiene páginas)" msgstr[1] "(%(no_page_number)s libros no tienen páginas)" -#: bookwyrm/templates/annual_summary/layout.html:136 +#: bookwyrm/templates/annual_summary/layout.html:148 msgid "Their shortest read this year…" msgstr "Su lectura más corta de este año…" -#: bookwyrm/templates/annual_summary/layout.html:143 -#: bookwyrm/templates/annual_summary/layout.html:164 -#: bookwyrm/templates/annual_summary/layout.html:204 +#: bookwyrm/templates/annual_summary/layout.html:155 +#: bookwyrm/templates/annual_summary/layout.html:176 +#: bookwyrm/templates/annual_summary/layout.html:220 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/landing/large-book.html:25 @@ -340,34 +342,36 @@ msgstr "Su lectura más corta de este año…" msgid "by" msgstr "por" -#: bookwyrm/templates/annual_summary/layout.html:149 -#: bookwyrm/templates/annual_summary/layout.html:170 +#: bookwyrm/templates/annual_summary/layout.html:161 +#: bookwyrm/templates/annual_summary/layout.html:182 #, python-format msgid "%(pages)s pages" msgstr "%(pages)s páginas" -#: bookwyrm/templates/annual_summary/layout.html:157 +#: bookwyrm/templates/annual_summary/layout.html:169 msgid "…and the longest" msgstr "… y la más larga" -#: bookwyrm/templates/annual_summary/layout.html:187 +#: bookwyrm/templates/annual_summary/layout.html:199 #, python-format -msgid "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s" -msgstr "%(display_name)s dio %(ratings_total)s valoraciones,
su valoraciĂłn media es %(rating_average)s" +msgid "%(display_name)s left %(ratings_total)s rating,
their average rating is %(rating_average)s" +msgid_plural "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s" +msgstr[0] "%(display_name)s dio %(ratings_total)s valoraciĂłn,
su valoraciĂłn media es %(rating_average)s" +msgstr[1] "%(display_name)s dio %(ratings_total)s valoraciones,
su valoración media es %(rating_average)s" -#: bookwyrm/templates/annual_summary/layout.html:197 +#: bookwyrm/templates/annual_summary/layout.html:213 msgid "Their best rated review" msgstr "Su mejor valoración" -#: bookwyrm/templates/annual_summary/layout.html:210 +#: bookwyrm/templates/annual_summary/layout.html:226 #, python-format msgid "Their rating: %(rating)s" msgstr "Su valoración: %(rating)s" -#: bookwyrm/templates/annual_summary/layout.html:227 +#: bookwyrm/templates/annual_summary/layout.html:243 #, python-format -msgid "All the books %(display_name)s read in 2021" -msgstr "Todos los libros que ha leído %(display_name)s en 2021" +msgid "All the books %(display_name)s read in %(year)s" +msgstr "Todos los libros que ha leído %(display_name)s en %(year)s" #: bookwyrm/templates/author/author.html:18 #: bookwyrm/templates/author/author.html:19 diff --git a/locale/fr_FR/LC_MESSAGES/django.mo b/locale/fr_FR/LC_MESSAGES/django.mo index bf14adb82..bbac096ea 100644 Binary files a/locale/fr_FR/LC_MESSAGES/django.mo and b/locale/fr_FR/LC_MESSAGES/django.mo differ diff --git a/locale/fr_FR/LC_MESSAGES/django.po b/locale/fr_FR/LC_MESSAGES/django.po index 2710a8b9c..199a0de68 100644 --- a/locale/fr_FR/LC_MESSAGES/django.po +++ b/locale/fr_FR/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-28 15:00+0000\n" -"PO-Revision-Date: 2021-12-28 16:59\n" +"POT-Creation-Date: 2021-12-28 20:12+0000\n" +"PO-Revision-Date: 2021-12-28 21:17\n" "Last-Translator: Mouse Reeve \n" "Language-Team: French\n" "Language: fr\n" @@ -263,76 +263,78 @@ msgstr "l’année de lecture de %(display_name)s" msgid "Share this page" msgstr "Partager cette page" -#: bookwyrm/templates/annual_summary/layout.html:61 +#: bookwyrm/templates/annual_summary/layout.html:67 msgid "Copy address" msgstr "Copier l’adresse" -#: bookwyrm/templates/annual_summary/layout.html:61 +#: bookwyrm/templates/annual_summary/layout.html:68 #: bookwyrm/templates/lists/list.html:194 msgid "Copied!" msgstr "Copié!" -#: bookwyrm/templates/annual_summary/layout.html:69 +#: bookwyrm/templates/annual_summary/layout.html:77 msgid "Sharing status: public with key" msgstr "Statut de partage : public avec clé" -#: bookwyrm/templates/annual_summary/layout.html:70 +#: bookwyrm/templates/annual_summary/layout.html:78 msgid "The page can be seen by anyone with the complete address." msgstr "La page peut être consultée par toute personne ayant l'adresse complète." -#: bookwyrm/templates/annual_summary/layout.html:75 +#: bookwyrm/templates/annual_summary/layout.html:83 msgid "Make page private" msgstr "Rendre cette page privée" -#: bookwyrm/templates/annual_summary/layout.html:81 +#: bookwyrm/templates/annual_summary/layout.html:89 msgid "Sharing status: private" msgstr "Statut de partage : privé" -#: bookwyrm/templates/annual_summary/layout.html:82 +#: bookwyrm/templates/annual_summary/layout.html:90 msgid "The page is private, only you can see it." msgstr "La page est privée, seulement vous pouvez la voir." -#: bookwyrm/templates/annual_summary/layout.html:87 +#: bookwyrm/templates/annual_summary/layout.html:95 msgid "Make page public" msgstr "Rendre cette page publique" -#: bookwyrm/templates/annual_summary/layout.html:91 +#: 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 "Lorsque vous rendez votre page privée, l’ancienne clé ne donnera plus accès à la page. Une nouvelle clé sera créée si la page est à nouveau rendue publique." -#: bookwyrm/templates/annual_summary/layout.html:104 +#: bookwyrm/templates/annual_summary/layout.html:112 #, python-format msgid "Sadly %(display_name)s didn’t finish any book in %(year)s" msgstr "Malheureusement, %(display_name)s n’a terminé aucun livre en %(year)s" -#: bookwyrm/templates/annual_summary/layout.html:110 +#: bookwyrm/templates/annual_summary/layout.html:118 #, python-format -msgid "In %(year)s, %(display_name)s read %(books_total)s books
for a total of %(pages_total)s pages!" -msgstr "En %(year)s, %(display_name)s a lu %(books_total)s livres
pour un total de %(pages_total)s pages !" +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] "En %(year)s, %(display_name)s a lu %(books_total)s livre
pour un total de %(pages_total)s pages !" +msgstr[1] "En %(year)s, %(display_name)s a lu %(books_total)s livres
pour un total de %(pages_total)s pages !" -#: bookwyrm/templates/annual_summary/layout.html:112 +#: bookwyrm/templates/annual_summary/layout.html:124 msgid "That’s great!" msgstr "C’est génial !" -#: bookwyrm/templates/annual_summary/layout.html:115 +#: bookwyrm/templates/annual_summary/layout.html:127 #, python-format msgid "That makes an average of %(pages)s pages per book." msgstr "Ce qui fait en moyenne %(pages)s pages par livre." -#: bookwyrm/templates/annual_summary/layout.html:120 +#: bookwyrm/templates/annual_summary/layout.html:132 #, python-format msgid "(%(no_page_number)s book doesn’t have pages)" msgid_plural "(%(no_page_number)s books don’t have pages)" msgstr[0] "(%(no_page_number)s livre n’a pas de pages)" msgstr[1] "(%(no_page_number)s livres n’ont pas de pages)" -#: bookwyrm/templates/annual_summary/layout.html:136 +#: bookwyrm/templates/annual_summary/layout.html:148 msgid "Their shortest read this year…" msgstr "Sa lecture la plus courte l’année…" -#: bookwyrm/templates/annual_summary/layout.html:143 -#: bookwyrm/templates/annual_summary/layout.html:164 -#: bookwyrm/templates/annual_summary/layout.html:204 +#: bookwyrm/templates/annual_summary/layout.html:155 +#: bookwyrm/templates/annual_summary/layout.html:176 +#: bookwyrm/templates/annual_summary/layout.html:220 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/landing/large-book.html:25 @@ -340,34 +342,36 @@ msgstr "Sa lecture la plus courte l’année…" msgid "by" msgstr "de" -#: bookwyrm/templates/annual_summary/layout.html:149 -#: bookwyrm/templates/annual_summary/layout.html:170 +#: bookwyrm/templates/annual_summary/layout.html:161 +#: bookwyrm/templates/annual_summary/layout.html:182 #, python-format msgid "%(pages)s pages" msgstr "%(pages)s pages" -#: bookwyrm/templates/annual_summary/layout.html:157 +#: bookwyrm/templates/annual_summary/layout.html:169 msgid "…and the longest" msgstr "…et sa plus longue lecture" -#: bookwyrm/templates/annual_summary/layout.html:187 +#: bookwyrm/templates/annual_summary/layout.html:199 #, python-format -msgid "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s" -msgstr "%(display_name)s a laissé %(ratings_total)s notes,
sa note moyenne est %(rating_average)s" +msgid "%(display_name)s left %(ratings_total)s rating,
their average rating is %(rating_average)s" +msgid_plural "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s" +msgstr[0] "%(display_name)s a laissé %(ratings_total)s critique,
sa note moyenne est %(rating_average)s" +msgstr[1] "%(display_name)s a laissé %(ratings_total)s critiques,
sa note moyenne est %(rating_average)s" -#: bookwyrm/templates/annual_summary/layout.html:197 +#: bookwyrm/templates/annual_summary/layout.html:213 msgid "Their best rated review" msgstr "Son avis le mieux noté" -#: bookwyrm/templates/annual_summary/layout.html:210 +#: bookwyrm/templates/annual_summary/layout.html:226 #, python-format msgid "Their rating: %(rating)s" msgstr "Sa note : %(rating)s" -#: bookwyrm/templates/annual_summary/layout.html:227 +#: bookwyrm/templates/annual_summary/layout.html:243 #, python-format -msgid "All the books %(display_name)s read in 2021" -msgstr "Tous les livres que %(display_name)s a lus" +msgid "All the books %(display_name)s read in %(year)s" +msgstr "Tous les livres que %(display_name)s a lus en %(year)s" #: bookwyrm/templates/author/author.html:18 #: bookwyrm/templates/author/author.html:19 diff --git a/locale/gl_ES/LC_MESSAGES/django.mo b/locale/gl_ES/LC_MESSAGES/django.mo index d6d47d04b..d0e70f055 100644 Binary files a/locale/gl_ES/LC_MESSAGES/django.mo and b/locale/gl_ES/LC_MESSAGES/django.mo differ diff --git a/locale/gl_ES/LC_MESSAGES/django.po b/locale/gl_ES/LC_MESSAGES/django.po index 5f114c51f..eeccd7f09 100644 --- a/locale/gl_ES/LC_MESSAGES/django.po +++ b/locale/gl_ES/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-28 15:00+0000\n" -"PO-Revision-Date: 2021-12-28 16:03\n" +"POT-Creation-Date: 2021-12-28 20:12+0000\n" +"PO-Revision-Date: 2021-12-29 06:07\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Galician\n" "Language: gl\n" @@ -263,76 +263,78 @@ msgstr "Un ano de lecturas de %(display_name)s" msgid "Share this page" msgstr "Comparte esta páxina" -#: bookwyrm/templates/annual_summary/layout.html:61 +#: bookwyrm/templates/annual_summary/layout.html:67 msgid "Copy address" msgstr "Copiar enderezo" -#: bookwyrm/templates/annual_summary/layout.html:61 +#: bookwyrm/templates/annual_summary/layout.html:68 #: bookwyrm/templates/lists/list.html:194 msgid "Copied!" msgstr "Copiado!" -#: bookwyrm/templates/annual_summary/layout.html:69 +#: bookwyrm/templates/annual_summary/layout.html:77 msgid "Sharing status: public with key" msgstr "Compartir estado: público con chave" -#: bookwyrm/templates/annual_summary/layout.html:70 +#: bookwyrm/templates/annual_summary/layout.html:78 msgid "The page can be seen by anyone with the complete address." msgstr "Esta páxina será visible para calquera que teña o enderezo completo." -#: bookwyrm/templates/annual_summary/layout.html:75 +#: bookwyrm/templates/annual_summary/layout.html:83 msgid "Make page private" msgstr "Facer privada a páxina" -#: bookwyrm/templates/annual_summary/layout.html:81 +#: bookwyrm/templates/annual_summary/layout.html:89 msgid "Sharing status: private" msgstr "Compartir estado: privado" -#: bookwyrm/templates/annual_summary/layout.html:82 +#: bookwyrm/templates/annual_summary/layout.html:90 msgid "The page is private, only you can see it." msgstr "Esta páxina é privada só ti podes vela." -#: bookwyrm/templates/annual_summary/layout.html:87 +#: bookwyrm/templates/annual_summary/layout.html:95 msgid "Make page public" msgstr "Facer pública a páxina" -#: bookwyrm/templates/annual_summary/layout.html:91 +#: 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 "Cando fas privada unha páxina, a chave antiga non dará acceso á mesma nunca máis. Crearase unha nova chave se volves a facer pública a páxina." -#: bookwyrm/templates/annual_summary/layout.html:104 +#: bookwyrm/templates/annual_summary/layout.html:112 #, python-format msgid "Sadly %(display_name)s didn’t finish any book in %(year)s" msgstr "Unha mágoa, pero %(display_name)s aínda non rematou ningún libro en %(year)s" -#: bookwyrm/templates/annual_summary/layout.html:110 +#: bookwyrm/templates/annual_summary/layout.html:118 #, python-format -msgid "In %(year)s, %(display_name)s read %(books_total)s books
for a total of %(pages_total)s pages!" -msgstr "En %(year)s, %(display_name)s leu %(books_total)s libros
cun total de %(pages_total)s páxinas!" +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] "En %(year)s, %(display_name)s leu %(books_total)s libro
cun total de %(pages_total)s páxinas!" +msgstr[1] "En %(year)s, %(display_name)s leu %(books_total)s libros
cun total de %(pages_total)s páxinas!" -#: bookwyrm/templates/annual_summary/layout.html:112 +#: bookwyrm/templates/annual_summary/layout.html:124 msgid "That’s great!" msgstr "Está moi ben!" -#: bookwyrm/templates/annual_summary/layout.html:115 +#: bookwyrm/templates/annual_summary/layout.html:127 #, python-format msgid "That makes an average of %(pages)s pages per book." -msgstr "" +msgstr "Esto fai unha media de %(pages)s páxinas por libro." -#: bookwyrm/templates/annual_summary/layout.html:120 +#: bookwyrm/templates/annual_summary/layout.html:132 #, python-format msgid "(%(no_page_number)s book doesn’t have pages)" msgid_plural "(%(no_page_number)s books don’t have pages)" msgstr[0] "(%(no_page_number)s libro non ten páxinas)" msgstr[1] "(%(no_page_number)s libros non teñen páxinas)" -#: bookwyrm/templates/annual_summary/layout.html:136 +#: bookwyrm/templates/annual_summary/layout.html:148 msgid "Their shortest read this year…" msgstr "A lectura máis curta deste ano…" -#: bookwyrm/templates/annual_summary/layout.html:143 -#: bookwyrm/templates/annual_summary/layout.html:164 -#: bookwyrm/templates/annual_summary/layout.html:204 +#: bookwyrm/templates/annual_summary/layout.html:155 +#: bookwyrm/templates/annual_summary/layout.html:176 +#: bookwyrm/templates/annual_summary/layout.html:220 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/landing/large-book.html:25 @@ -340,34 +342,36 @@ msgstr "A lectura máis curta deste ano…" msgid "by" msgstr "por" -#: bookwyrm/templates/annual_summary/layout.html:149 -#: bookwyrm/templates/annual_summary/layout.html:170 +#: bookwyrm/templates/annual_summary/layout.html:161 +#: bookwyrm/templates/annual_summary/layout.html:182 #, python-format msgid "%(pages)s pages" msgstr "%(pages)s páxinas" -#: bookwyrm/templates/annual_summary/layout.html:157 +#: bookwyrm/templates/annual_summary/layout.html:169 msgid "…and the longest" msgstr "…e a máis longa" -#: bookwyrm/templates/annual_summary/layout.html:187 +#: bookwyrm/templates/annual_summary/layout.html:199 #, python-format -msgid "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s" -msgstr "%(display_name)s escribiu %(ratings_total)s valoraciĂłns,
a media das sĂşas valoraciĂłns Ă© %(rating_average)s" +msgid "%(display_name)s left %(ratings_total)s rating,
their average rating is %(rating_average)s" +msgid_plural "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s" +msgstr[0] "%(display_name)s fixo %(ratings_total)s valoraciĂłn,
cunha media de %(rating_average)s" +msgstr[1] "%(display_name)s fixo %(ratings_total)s valoraciĂłns,
cunha puntuación media de %(rating_average)s" -#: bookwyrm/templates/annual_summary/layout.html:197 +#: bookwyrm/templates/annual_summary/layout.html:213 msgid "Their best rated review" msgstr "A súa recensión máis valorada" -#: bookwyrm/templates/annual_summary/layout.html:210 +#: bookwyrm/templates/annual_summary/layout.html:226 #, python-format msgid "Their rating: %(rating)s" msgstr "Valoración: %(rating)s" -#: bookwyrm/templates/annual_summary/layout.html:227 +#: bookwyrm/templates/annual_summary/layout.html:243 #, python-format -msgid "All the books %(display_name)s read in 2021" -msgstr "Tódolos libros lidos por %(display_name)s en 2021" +msgid "All the books %(display_name)s read in %(year)s" +msgstr "Tódolos libros que %(display_name)s leu en %(year)s" #: bookwyrm/templates/author/author.html:18 #: bookwyrm/templates/author/author.html:19 diff --git a/locale/lt_LT/LC_MESSAGES/django.mo b/locale/lt_LT/LC_MESSAGES/django.mo index d4cb5e29b..21cce6fa7 100644 Binary files a/locale/lt_LT/LC_MESSAGES/django.mo and b/locale/lt_LT/LC_MESSAGES/django.mo differ diff --git a/locale/lt_LT/LC_MESSAGES/django.po b/locale/lt_LT/LC_MESSAGES/django.po index 61c42289a..6a0971a34 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: 2021-12-28 15:00+0000\n" -"PO-Revision-Date: 2021-12-28 16:03\n" +"POT-Creation-Date: 2021-12-28 20:12+0000\n" +"PO-Revision-Date: 2021-12-28 21:17\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Lithuanian\n" "Language: lt\n" @@ -263,63 +263,67 @@ msgstr "" msgid "Share this page" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:61 +#: bookwyrm/templates/annual_summary/layout.html:67 msgid "Copy address" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:61 +#: bookwyrm/templates/annual_summary/layout.html:68 #: bookwyrm/templates/lists/list.html:194 msgid "Copied!" msgstr "Nukopijuota" -#: bookwyrm/templates/annual_summary/layout.html:69 +#: bookwyrm/templates/annual_summary/layout.html:77 msgid "Sharing status: public with key" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:70 +#: bookwyrm/templates/annual_summary/layout.html:78 msgid "The page can be seen by anyone with the complete address." msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:75 +#: bookwyrm/templates/annual_summary/layout.html:83 msgid "Make page private" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:81 +#: bookwyrm/templates/annual_summary/layout.html:89 msgid "Sharing status: private" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:82 +#: bookwyrm/templates/annual_summary/layout.html:90 msgid "The page is private, only you can see it." msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:87 +#: bookwyrm/templates/annual_summary/layout.html:95 msgid "Make page public" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:91 +#: 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 "" -#: bookwyrm/templates/annual_summary/layout.html:104 +#: bookwyrm/templates/annual_summary/layout.html:112 #, python-format msgid "Sadly %(display_name)s didn’t finish any book in %(year)s" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:110 +#: bookwyrm/templates/annual_summary/layout.html:118 #, python-format -msgid "In %(year)s, %(display_name)s read %(books_total)s books
for a total of %(pages_total)s pages!" -msgstr "" +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] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: bookwyrm/templates/annual_summary/layout.html:112 +#: bookwyrm/templates/annual_summary/layout.html:124 msgid "That’s great!" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:115 +#: bookwyrm/templates/annual_summary/layout.html:127 #, python-format msgid "That makes an average of %(pages)s pages per book." msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:120 +#: bookwyrm/templates/annual_summary/layout.html:132 #, python-format msgid "(%(no_page_number)s book doesn’t have pages)" msgid_plural "(%(no_page_number)s books don’t have pages)" @@ -328,13 +332,13 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: bookwyrm/templates/annual_summary/layout.html:136 +#: bookwyrm/templates/annual_summary/layout.html:148 msgid "Their shortest read this year…" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:143 -#: bookwyrm/templates/annual_summary/layout.html:164 -#: bookwyrm/templates/annual_summary/layout.html:204 +#: bookwyrm/templates/annual_summary/layout.html:155 +#: bookwyrm/templates/annual_summary/layout.html:176 +#: bookwyrm/templates/annual_summary/layout.html:220 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/landing/large-book.html:25 @@ -342,33 +346,37 @@ msgstr "" msgid "by" msgstr " " -#: bookwyrm/templates/annual_summary/layout.html:149 -#: bookwyrm/templates/annual_summary/layout.html:170 +#: bookwyrm/templates/annual_summary/layout.html:161 +#: bookwyrm/templates/annual_summary/layout.html:182 #, python-format msgid "%(pages)s pages" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:157 +#: bookwyrm/templates/annual_summary/layout.html:169 msgid "…and the longest" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:187 +#: bookwyrm/templates/annual_summary/layout.html:199 #, python-format -msgid "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s" -msgstr "" +msgid "%(display_name)s left %(ratings_total)s rating,
their average rating is %(rating_average)s" +msgid_plural "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" -#: bookwyrm/templates/annual_summary/layout.html:197 +#: bookwyrm/templates/annual_summary/layout.html:213 msgid "Their best rated review" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:210 +#: bookwyrm/templates/annual_summary/layout.html:226 #, python-format msgid "Their rating: %(rating)s" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:227 +#: bookwyrm/templates/annual_summary/layout.html:243 #, python-format -msgid "All the books %(display_name)s read in 2021" +msgid "All the books %(display_name)s read in %(year)s" msgstr "" #: bookwyrm/templates/author/author.html:18 diff --git a/locale/pt_BR/LC_MESSAGES/django.mo b/locale/pt_BR/LC_MESSAGES/django.mo index ef3d0c170..3862e0bb9 100644 Binary files a/locale/pt_BR/LC_MESSAGES/django.mo and b/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/locale/pt_BR/LC_MESSAGES/django.po b/locale/pt_BR/LC_MESSAGES/django.po index a2d20005c..f8bbf8ec9 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: 2021-12-28 15:00+0000\n" -"PO-Revision-Date: 2021-12-28 16:59\n" +"POT-Creation-Date: 2021-12-28 20:12+0000\n" +"PO-Revision-Date: 2021-12-29 00:08\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt\n" @@ -263,76 +263,78 @@ msgstr "O ano de leitura de %(display_name)s" msgid "Share this page" msgstr "Compartilhe esta página" -#: bookwyrm/templates/annual_summary/layout.html:61 +#: bookwyrm/templates/annual_summary/layout.html:67 msgid "Copy address" msgstr "Copiar endereço" -#: bookwyrm/templates/annual_summary/layout.html:61 +#: bookwyrm/templates/annual_summary/layout.html:68 #: bookwyrm/templates/lists/list.html:194 msgid "Copied!" msgstr "Copiado!" -#: bookwyrm/templates/annual_summary/layout.html:69 +#: bookwyrm/templates/annual_summary/layout.html:77 msgid "Sharing status: public with key" msgstr "Compartilhamento: público com chave" -#: bookwyrm/templates/annual_summary/layout.html:70 +#: bookwyrm/templates/annual_summary/layout.html:78 msgid "The page can be seen by anyone with the complete address." msgstr "Esta página pode ser vista por qualquer pessoa que tenha seu link." -#: bookwyrm/templates/annual_summary/layout.html:75 +#: bookwyrm/templates/annual_summary/layout.html:83 msgid "Make page private" msgstr "Tornar a página particular" -#: bookwyrm/templates/annual_summary/layout.html:81 +#: bookwyrm/templates/annual_summary/layout.html:89 msgid "Sharing status: private" msgstr "Compartilhamento: particular" -#: bookwyrm/templates/annual_summary/layout.html:82 +#: bookwyrm/templates/annual_summary/layout.html:90 msgid "The page is private, only you can see it." msgstr "A página é particular, só você pode vê-la." -#: bookwyrm/templates/annual_summary/layout.html:87 +#: bookwyrm/templates/annual_summary/layout.html:95 msgid "Make page public" msgstr "Tornar a página pública" -#: bookwyrm/templates/annual_summary/layout.html:91 +#: 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 "Ao tornar a página particular, a chave antiga passa a não funcionar mais. Uma nova chave será gerada quando a página for tornada pública novamente." -#: bookwyrm/templates/annual_summary/layout.html:104 +#: bookwyrm/templates/annual_summary/layout.html:112 #, python-format msgid "Sadly %(display_name)s didn’t finish any book in %(year)s" msgstr "Infelizmente %(display_name)s não terminou nenhum livro em %(year)s" -#: bookwyrm/templates/annual_summary/layout.html:110 +#: bookwyrm/templates/annual_summary/layout.html:118 #, python-format -msgid "In %(year)s, %(display_name)s read %(books_total)s books
for a total of %(pages_total)s pages!" -msgstr "Em %(year)s, %(display_name)s leu %(books_total)s livros,
um total de %(pages_total)s páginas!" +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] "Em %(year)s, %(display_name)s leu %(books_total)s livro,
um total de %(pages_total)s páginas!" +msgstr[1] "Em %(year)s, %(display_name)s leu %(books_total)s livros,
um total de %(pages_total)s páginas!" -#: bookwyrm/templates/annual_summary/layout.html:112 +#: bookwyrm/templates/annual_summary/layout.html:124 msgid "That’s great!" msgstr "Muito legal!" -#: bookwyrm/templates/annual_summary/layout.html:115 +#: bookwyrm/templates/annual_summary/layout.html:127 #, python-format msgid "That makes an average of %(pages)s pages per book." msgstr "Isso dá uma média de %(pages)s páginas por livro." -#: bookwyrm/templates/annual_summary/layout.html:120 +#: bookwyrm/templates/annual_summary/layout.html:132 #, python-format msgid "(%(no_page_number)s book doesn’t have pages)" msgid_plural "(%(no_page_number)s books don’t have pages)" msgstr[0] "(%(no_page_number)s livro não tem páginas cadastradas)" msgstr[1] "(%(no_page_number)s livros não têm páginas cadastradas)" -#: bookwyrm/templates/annual_summary/layout.html:136 +#: bookwyrm/templates/annual_summary/layout.html:148 msgid "Their shortest read this year…" msgstr "A leitura mais curta do ano…" -#: bookwyrm/templates/annual_summary/layout.html:143 -#: bookwyrm/templates/annual_summary/layout.html:164 -#: bookwyrm/templates/annual_summary/layout.html:204 +#: bookwyrm/templates/annual_summary/layout.html:155 +#: bookwyrm/templates/annual_summary/layout.html:176 +#: bookwyrm/templates/annual_summary/layout.html:220 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/landing/large-book.html:25 @@ -340,34 +342,36 @@ msgstr "A leitura mais curta do ano…" msgid "by" msgstr "de" -#: bookwyrm/templates/annual_summary/layout.html:149 -#: bookwyrm/templates/annual_summary/layout.html:170 +#: bookwyrm/templates/annual_summary/layout.html:161 +#: bookwyrm/templates/annual_summary/layout.html:182 #, python-format msgid "%(pages)s pages" msgstr "%(pages)s páginas" -#: bookwyrm/templates/annual_summary/layout.html:157 +#: bookwyrm/templates/annual_summary/layout.html:169 msgid "…and the longest" msgstr "…e a mais longa" -#: bookwyrm/templates/annual_summary/layout.html:187 +#: bookwyrm/templates/annual_summary/layout.html:199 #, python-format -msgid "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s" -msgstr "%(display_name)s fez %(ratings_total)s avaliações,
e sua nota média é %(rating_average)s" +msgid "%(display_name)s left %(ratings_total)s rating,
their average rating is %(rating_average)s" +msgid_plural "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s" +msgstr[0] "%(display_name)s fez %(ratings_total)s avaliação,
com uma média de %(rating_average)s" +msgstr[1] "%(display_name)s fez %(ratings_total)s avaliações,
com uma média de %(rating_average)s" -#: bookwyrm/templates/annual_summary/layout.html:197 +#: bookwyrm/templates/annual_summary/layout.html:213 msgid "Their best rated review" msgstr "Sua melhor avaliação" -#: bookwyrm/templates/annual_summary/layout.html:210 +#: bookwyrm/templates/annual_summary/layout.html:226 #, python-format msgid "Their rating: %(rating)s" msgstr "Avaliação: %(rating)s" -#: bookwyrm/templates/annual_summary/layout.html:227 +#: bookwyrm/templates/annual_summary/layout.html:243 #, python-format -msgid "All the books %(display_name)s read in 2021" -msgstr "Todos os livros que %(display_name)s leu em 2021" +msgid "All the books %(display_name)s read in %(year)s" +msgstr "Todos os livros lidos por %(display_name)s em %(year)s" #: bookwyrm/templates/author/author.html:18 #: bookwyrm/templates/author/author.html:19 diff --git a/locale/zh_Hans/LC_MESSAGES/django.mo b/locale/zh_Hans/LC_MESSAGES/django.mo index bbfee4c5f..fdd768973 100644 Binary files a/locale/zh_Hans/LC_MESSAGES/django.mo and b/locale/zh_Hans/LC_MESSAGES/django.mo differ diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index 501db0b89..08559cd89 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: 2021-12-28 15:00+0000\n" -"PO-Revision-Date: 2021-12-28 16:03\n" +"POT-Creation-Date: 2021-12-28 20:12+0000\n" +"PO-Revision-Date: 2021-12-28 21:17\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Simplified\n" "Language: zh\n" @@ -263,75 +263,76 @@ msgstr "" msgid "Share this page" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:61 +#: bookwyrm/templates/annual_summary/layout.html:67 msgid "Copy address" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:61 +#: bookwyrm/templates/annual_summary/layout.html:68 #: bookwyrm/templates/lists/list.html:194 msgid "Copied!" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:69 +#: bookwyrm/templates/annual_summary/layout.html:77 msgid "Sharing status: public with key" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:70 +#: bookwyrm/templates/annual_summary/layout.html:78 msgid "The page can be seen by anyone with the complete address." msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:75 +#: bookwyrm/templates/annual_summary/layout.html:83 msgid "Make page private" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:81 +#: bookwyrm/templates/annual_summary/layout.html:89 msgid "Sharing status: private" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:82 +#: bookwyrm/templates/annual_summary/layout.html:90 msgid "The page is private, only you can see it." msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:87 +#: bookwyrm/templates/annual_summary/layout.html:95 msgid "Make page public" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:91 +#: 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 "" -#: bookwyrm/templates/annual_summary/layout.html:104 +#: bookwyrm/templates/annual_summary/layout.html:112 #, python-format msgid "Sadly %(display_name)s didn’t finish any book in %(year)s" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:110 +#: bookwyrm/templates/annual_summary/layout.html:118 #, python-format -msgid "In %(year)s, %(display_name)s read %(books_total)s books
for a total of %(pages_total)s pages!" -msgstr "" +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] "" -#: bookwyrm/templates/annual_summary/layout.html:112 +#: bookwyrm/templates/annual_summary/layout.html:124 msgid "That’s great!" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:115 +#: bookwyrm/templates/annual_summary/layout.html:127 #, python-format msgid "That makes an average of %(pages)s pages per book." msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:120 +#: bookwyrm/templates/annual_summary/layout.html:132 #, python-format msgid "(%(no_page_number)s book doesn’t have pages)" msgid_plural "(%(no_page_number)s books don’t have pages)" msgstr[0] "" -#: bookwyrm/templates/annual_summary/layout.html:136 +#: bookwyrm/templates/annual_summary/layout.html:148 msgid "Their shortest read this year…" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:143 -#: bookwyrm/templates/annual_summary/layout.html:164 -#: bookwyrm/templates/annual_summary/layout.html:204 +#: bookwyrm/templates/annual_summary/layout.html:155 +#: bookwyrm/templates/annual_summary/layout.html:176 +#: bookwyrm/templates/annual_summary/layout.html:220 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/landing/large-book.html:25 @@ -339,33 +340,34 @@ msgstr "" msgid "by" msgstr "作者" -#: bookwyrm/templates/annual_summary/layout.html:149 -#: bookwyrm/templates/annual_summary/layout.html:170 +#: bookwyrm/templates/annual_summary/layout.html:161 +#: bookwyrm/templates/annual_summary/layout.html:182 #, python-format msgid "%(pages)s pages" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:157 +#: bookwyrm/templates/annual_summary/layout.html:169 msgid "…and the longest" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:187 +#: bookwyrm/templates/annual_summary/layout.html:199 #, python-format -msgid "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s" -msgstr "" +msgid "%(display_name)s left %(ratings_total)s rating,
their average rating is %(rating_average)s" +msgid_plural "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s" +msgstr[0] "" -#: bookwyrm/templates/annual_summary/layout.html:197 +#: bookwyrm/templates/annual_summary/layout.html:213 msgid "Their best rated review" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:210 +#: bookwyrm/templates/annual_summary/layout.html:226 #, python-format msgid "Their rating: %(rating)s" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:227 +#: bookwyrm/templates/annual_summary/layout.html:243 #, python-format -msgid "All the books %(display_name)s read in 2021" +msgid "All the books %(display_name)s read in %(year)s" msgstr "" #: bookwyrm/templates/author/author.html:18 diff --git a/locale/zh_Hant/LC_MESSAGES/django.mo b/locale/zh_Hant/LC_MESSAGES/django.mo index 4b754cce9..fcfea5706 100644 Binary files a/locale/zh_Hant/LC_MESSAGES/django.mo and b/locale/zh_Hant/LC_MESSAGES/django.mo differ diff --git a/locale/zh_Hant/LC_MESSAGES/django.po b/locale/zh_Hant/LC_MESSAGES/django.po index d5c5d0680..15bd82c07 100644 --- a/locale/zh_Hant/LC_MESSAGES/django.po +++ b/locale/zh_Hant/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: bookwyrm\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-12-28 15:00+0000\n" -"PO-Revision-Date: 2021-12-28 16:03\n" +"POT-Creation-Date: 2021-12-28 20:12+0000\n" +"PO-Revision-Date: 2021-12-28 21:17\n" "Last-Translator: Mouse Reeve \n" "Language-Team: Chinese Traditional\n" "Language: zh\n" @@ -263,75 +263,76 @@ msgstr "" msgid "Share this page" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:61 +#: bookwyrm/templates/annual_summary/layout.html:67 msgid "Copy address" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:61 +#: bookwyrm/templates/annual_summary/layout.html:68 #: bookwyrm/templates/lists/list.html:194 msgid "Copied!" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:69 +#: bookwyrm/templates/annual_summary/layout.html:77 msgid "Sharing status: public with key" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:70 +#: bookwyrm/templates/annual_summary/layout.html:78 msgid "The page can be seen by anyone with the complete address." msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:75 +#: bookwyrm/templates/annual_summary/layout.html:83 msgid "Make page private" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:81 +#: bookwyrm/templates/annual_summary/layout.html:89 msgid "Sharing status: private" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:82 +#: bookwyrm/templates/annual_summary/layout.html:90 msgid "The page is private, only you can see it." msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:87 +#: bookwyrm/templates/annual_summary/layout.html:95 msgid "Make page public" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:91 +#: 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 "" -#: bookwyrm/templates/annual_summary/layout.html:104 +#: bookwyrm/templates/annual_summary/layout.html:112 #, python-format msgid "Sadly %(display_name)s didn’t finish any book in %(year)s" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:110 +#: bookwyrm/templates/annual_summary/layout.html:118 #, python-format -msgid "In %(year)s, %(display_name)s read %(books_total)s books
for a total of %(pages_total)s pages!" -msgstr "" +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] "" -#: bookwyrm/templates/annual_summary/layout.html:112 +#: bookwyrm/templates/annual_summary/layout.html:124 msgid "That’s great!" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:115 +#: bookwyrm/templates/annual_summary/layout.html:127 #, python-format msgid "That makes an average of %(pages)s pages per book." msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:120 +#: bookwyrm/templates/annual_summary/layout.html:132 #, python-format msgid "(%(no_page_number)s book doesn’t have pages)" msgid_plural "(%(no_page_number)s books don’t have pages)" msgstr[0] "" -#: bookwyrm/templates/annual_summary/layout.html:136 +#: bookwyrm/templates/annual_summary/layout.html:148 msgid "Their shortest read this year…" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:143 -#: bookwyrm/templates/annual_summary/layout.html:164 -#: bookwyrm/templates/annual_summary/layout.html:204 +#: bookwyrm/templates/annual_summary/layout.html:155 +#: bookwyrm/templates/annual_summary/layout.html:176 +#: bookwyrm/templates/annual_summary/layout.html:220 #: bookwyrm/templates/book/book.html:47 #: bookwyrm/templates/discover/large-book.html:22 #: bookwyrm/templates/landing/large-book.html:25 @@ -339,33 +340,34 @@ msgstr "" msgid "by" msgstr "作者" -#: bookwyrm/templates/annual_summary/layout.html:149 -#: bookwyrm/templates/annual_summary/layout.html:170 +#: bookwyrm/templates/annual_summary/layout.html:161 +#: bookwyrm/templates/annual_summary/layout.html:182 #, python-format msgid "%(pages)s pages" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:157 +#: bookwyrm/templates/annual_summary/layout.html:169 msgid "…and the longest" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:187 +#: bookwyrm/templates/annual_summary/layout.html:199 #, python-format -msgid "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s" -msgstr "" +msgid "%(display_name)s left %(ratings_total)s rating,
their average rating is %(rating_average)s" +msgid_plural "%(display_name)s left %(ratings_total)s ratings,
their average rating is %(rating_average)s" +msgstr[0] "" -#: bookwyrm/templates/annual_summary/layout.html:197 +#: bookwyrm/templates/annual_summary/layout.html:213 msgid "Their best rated review" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:210 +#: bookwyrm/templates/annual_summary/layout.html:226 #, python-format msgid "Their rating: %(rating)s" msgstr "" -#: bookwyrm/templates/annual_summary/layout.html:227 +#: bookwyrm/templates/annual_summary/layout.html:243 #, python-format -msgid "All the books %(display_name)s read in 2021" +msgid "All the books %(display_name)s read in %(year)s" msgstr "" #: bookwyrm/templates/author/author.html:18